/**
* @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);