Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / language / language.admin.es6.js
diff --git a/web/core/modules/language/language.admin.es6.js b/web/core/modules/language/language.admin.es6.js
new file mode 100644 (file)
index 0000000..0c0bdf9
--- /dev/null
@@ -0,0 +1,39 @@
+/**
+ * @file
+ * Language admin behavior.
+ */
+
+(function ($, Drupal) {
+  /**
+   * Makes language negotiation inherit user interface negotiation.
+   *
+   * @type {Drupal~behavior}
+   *
+   * @prop {Drupal~behaviorAttach} attach
+   *   Attach behavior to language negotiation admin user interface.
+   */
+  Drupal.behaviors.negotiationLanguage = {
+    attach() {
+      const $configForm = $('#language-negotiation-configure-form');
+      const inputSelector = 'input[name$="[configurable]"]';
+      // Given a customization checkbox derive the language type being changed.
+      function toggleTable(checkbox) {
+        const $checkbox = $(checkbox);
+        // Get the language detection type such as Interface text language
+        // detection or Content language detection.
+        $checkbox.closest('.table-language-group')
+          .find('table, .tabledrag-toggle-weight')
+          .toggle($checkbox.prop('checked'));
+      }
+
+      // Bind hide/show and rearrange customization checkboxes.
+      $configForm.once('negotiation-language-admin-bind').on('change', inputSelector, (event) => {
+        toggleTable(event.target);
+      });
+      // Initially, hide language detection types that are not customized.
+      $configForm.find(`${inputSelector}:not(:checked)`).each((index, element) => {
+        toggleTable(element);
+      });
+    },
+  };
+}(jQuery, Drupal));