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