Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / locale / locale.admin.es6.js
diff --git a/web/core/modules/locale/locale.admin.es6.js b/web/core/modules/locale/locale.admin.es6.js
new file mode 100644 (file)
index 0000000..90b983e
--- /dev/null
@@ -0,0 +1,111 @@
+/**
+ * @file
+ * Locale admin behavior.
+ */
+
+(function ($, Drupal) {
+  /**
+   * Marks changes of translations.
+   *
+   * @type {Drupal~behavior}
+   *
+   * @prop {Drupal~behaviorAttach} attach
+   *   Attaches behavior to show the user if translations has changed.
+   * @prop {Drupal~behaviorDetach} detach
+   *   Detach behavior to show the user if translations has changed.
+   */
+  Drupal.behaviors.localeTranslateDirty = {
+    attach() {
+      const $form = $('#locale-translate-edit-form').once('localetranslatedirty');
+      if ($form.length) {
+        // Display a notice if any row changed.
+        $form.one('formUpdated.localeTranslateDirty', 'table', function () {
+          const $marker = $(Drupal.theme('localeTranslateChangedWarning')).hide();
+          $(this).addClass('changed').before($marker);
+          $marker.fadeIn('slow');
+        });
+        // Highlight changed row.
+        $form.on('formUpdated.localeTranslateDirty', 'tr', function () {
+          const $row = $(this);
+          const $rowToMark = $row.once('localemark');
+          const marker = Drupal.theme('localeTranslateChangedMarker');
+
+          $row.addClass('changed');
+          // Add an asterisk only once if row changed.
+          if ($rowToMark.length) {
+            $rowToMark.find('td:first-child .js-form-item').append(marker);
+          }
+        });
+      }
+    },
+    detach(context, settings, trigger) {
+      if (trigger === 'unload') {
+        const $form = $('#locale-translate-edit-form').removeOnce('localetranslatedirty');
+        if ($form.length) {
+          $form.off('formUpdated.localeTranslateDirty');
+        }
+      }
+    },
+  };
+
+  /**
+   * Show/hide the description details on Available translation updates page.
+   *
+   * @type {Drupal~behavior}
+   *
+   * @prop {Drupal~behaviorAttach} attach
+   *   Attaches behavior for toggling details on the translation update page.
+   */
+  Drupal.behaviors.hideUpdateInformation = {
+    attach(context, settings) {
+      const $table = $('#locale-translation-status-form').once('expand-updates');
+      if ($table.length) {
+        const $tbodies = $table.find('tbody');
+
+        // Open/close the description details by toggling a tr class.
+        $tbodies.on('click keydown', '.description', function (e) {
+          if (e.keyCode && (e.keyCode !== 13 && e.keyCode !== 32)) {
+            return;
+          }
+          e.preventDefault();
+          const $tr = $(this).closest('tr');
+
+          $tr.toggleClass('expanded');
+
+          // Change screen reader text.
+          $tr.find('.locale-translation-update__prefix').text(() => {
+            if ($tr.hasClass('expanded')) {
+              return Drupal.t('Hide description');
+            }
+
+            return Drupal.t('Show description');
+          });
+        });
+        $table.find('.requirements, .links').hide();
+      }
+    },
+  };
+
+  $.extend(Drupal.theme, /** @lends Drupal.theme */{
+
+    /**
+     * Creates markup for a changed translation marker.
+     *
+     * @return {string}
+     *   Markup for the marker.
+     */
+    localeTranslateChangedMarker() {
+      return `<abbr class="warning ajax-changed" title="${Drupal.t('Changed')}">*</abbr>`;
+    },
+
+    /**
+     * Creates markup for the translation changed warning.
+     *
+     * @return {string}
+     *   Markup for the warning.
+     */
+    localeTranslateChangedWarning() {
+      return `<div class="clearfix messages messages--warning">${Drupal.theme('localeTranslateChangedMarker')} ${Drupal.t('Changes made in this table will not be saved until the form is submitted.')}</div>`;
+    },
+  });
+}(jQuery, Drupal));