--- /dev/null
+/**
+ * @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(tabContext => $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));