123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /**
- * @file
- * Views listing behaviors.
- */
- (function($, Drupal) {
- /**
- * Filters the view listing tables by a text input search string.
- *
- * Text search input: input.views-filter-text
- * Target table: input.views-filter-text[data-table]
- * Source text: [data-drupal-selector="views-table-filter-text-source"]
- *
- * @type {Drupal~behavior}
- *
- * @prop {Drupal~behaviorAttach} attach
- * Attaches the filter functionality to the views admin text search field.
- */
- Drupal.behaviors.viewTableFilterByText = {
- attach(context, settings) {
- const $input = $('input.views-filter-text').once('views-filter-text');
- const $table = $($input.attr('data-table'));
- let $rows;
- function filterViewList(e) {
- const query = $(e.target)
- .val()
- .toLowerCase();
- function showViewRow(index, row) {
- const $row = $(row);
- const $sources = $row.find(
- '[data-drupal-selector="views-table-filter-text-source"]',
- );
- const textMatch =
- $sources
- .text()
- .toLowerCase()
- .indexOf(query) !== -1;
- $row.closest('tr').toggle(textMatch);
- }
- // Filter if the length of the query is at least 2 characters.
- if (query.length >= 2) {
- $rows.each(showViewRow);
- } else {
- $rows.show();
- }
- }
- if ($table.length) {
- $rows = $table.find('tbody tr');
- $input.on('keyup', filterViewList);
- }
- },
- };
- })(jQuery, Drupal);
|