Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / text / text.es6.js
diff --git a/web/core/modules/text/text.es6.js b/web/core/modules/text/text.es6.js
new file mode 100644 (file)
index 0000000..6c11ada
--- /dev/null
@@ -0,0 +1,57 @@
+/**
+ * @file
+ * Text behaviors.
+ */
+
+(function ($, Drupal) {
+  /**
+   * Auto-hide summary textarea if empty and show hide and unhide links.
+   *
+   * @type {Drupal~behavior}
+   *
+   * @prop {Drupal~behaviorAttach} attach
+   *   Attaches auto-hide behavior on `text-summary` events.
+   */
+  Drupal.behaviors.textSummary = {
+    attach(context, settings) {
+      $(context).find('.js-text-summary').once('text-summary').each(function () {
+        const $widget = $(this).closest('.js-text-format-wrapper');
+
+        const $summary = $widget.find('.js-text-summary-wrapper');
+        const $summaryLabel = $summary.find('label').eq(0);
+        const $full = $widget.find('.js-text-full').closest('.js-form-item');
+        let $fullLabel = $full.find('label').eq(0);
+
+        // Create a placeholder label when the field cardinality is greater
+        // than 1.
+        if ($fullLabel.length === 0) {
+          $fullLabel = $('<label></label>').prependTo($full);
+        }
+
+        // Set up the edit/hide summary link.
+        const $link = $(`<span class="field-edit-link"> (<button type="button" class="link link-edit-summary">${Drupal.t('Hide summary')}</button>)</span>`);
+        const $button = $link.find('button');
+        let toggleClick = true;
+        $link.on('click', (e) => {
+          if (toggleClick) {
+            $summary.hide();
+            $button.html(Drupal.t('Edit summary'));
+            $link.appendTo($fullLabel);
+          }
+          else {
+            $summary.show();
+            $button.html(Drupal.t('Hide summary'));
+            $link.appendTo($summaryLabel);
+          }
+          e.preventDefault();
+          toggleClick = !toggleClick;
+        }).appendTo($summaryLabel);
+
+        // If no summary is set, hide the summary field.
+        if ($widget.find('.js-text-summary').val() === '') {
+          $link.trigger('click');
+        }
+      });
+    },
+  };
+}(jQuery, Drupal));