/** * @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); once( 'filter-status', '#filters-status-wrapper input.form-checkbox', context, ).forEach((checkbox) => { const $checkbox = $(checkbox); // 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( `[data-drupal-selector='${$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.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.checked ? Drupal.t('Enabled') : Drupal.t('Disabled'), ); } // Trigger our bound click handler to update elements to initial state. $checkbox.triggerHandler('click.filterUpdate'); }); }, }; })(jQuery, Drupal);