/**
* @file
* Attaches administration-specific behavior for the Filter module.
*/
(function ($, Drupal) {
/**
* Displays and updates the status of filters on the admin page.
*
* @type {Drupal~behavior}
*
* @prop {Drupal~behaviorAttach} attach
* Attaches behaviors to the filter admin view.
*/
Drupal.behaviors.filterStatus = {
attach(context, settings) {
const $context = $(context);
$context
.find('#filters-status-wrapper input.form-checkbox')
.once('filter-status')
.each(function () {
const $checkbox = $(this);
// Retrieve the tabledrag row belonging to this filter.
const $row = $context
.find(`#${$checkbox.attr('id').replace(/-status$/, '-weight')}`)
.closest('tr');
// Retrieve the vertical tab belonging to this filter.
const $filterSettings = $context.find(
`#${$checkbox.attr('id').replace(/-status$/, '-settings')}`,
);
const filterSettingsTab = $filterSettings.data('verticalTab');
// Bind click handler to this checkbox to conditionally show and hide
// the filter's tableDrag row and vertical tab pane.
$checkbox.on('click.filterUpdate', () => {
if ($checkbox.is(':checked')) {
$row.show();
if (filterSettingsTab) {
filterSettingsTab.tabShow().updateSummary();
} else {
// On very narrow viewports, Vertical Tabs are disabled.
$filterSettings.show();
}
} else {
$row.hide();
if (filterSettingsTab) {
filterSettingsTab.tabHide().updateSummary();
} else {
// On very narrow viewports, Vertical Tabs are disabled.
$filterSettings.hide();
}
}
// Restripe table after toggling visibility of table row.
Drupal.tableDrag['filter-order'].restripeTable();
});
// Attach summary for configurable filters (only for screen readers).
if (filterSettingsTab) {
filterSettingsTab.details.drupalSetSummary(() =>
$checkbox.is(':checked')
? Drupal.t('Enabled')
: Drupal.t('Disabled'),
);
}
// Trigger our bound click handler to update elements to initial state.
$checkbox.triggerHandler('click.filterUpdate');
});
},
};
})(jQuery, Drupal);