PluginProbe
ElasticPress / 4.3.1
ElasticPress v4.3.1
5.3.5 5.3.4 3.6.5 3.6.6 4.0.0 4.0.1 4.1.0 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.6.0 4.6.1 4.7.0 4.7.1 4.7.2 5.0.0 5.0.1 5.0.2 All 108 releases
elasticpress / assets / js / facets.js

facets.js in ElasticPress 4.3.1, at assets/js/facets.js

53 lines 1.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { debounce } from './utils/helpers';
2
3 /**
4 * Filters the facets to match the input search term when
5 * the number of terms exceeds the threshold determined
6 * by the ep_facet_search_threshold filter
7 *
8 * @param {event} event - keyup
9 * @param {Node} facetTerms - terms node
10 */
11 const handleFacetSearch = (event, facetTerms) => {
12 const { target } = event;
13 const searchTerm = target.value.toLowerCase();
14 const terms = facetTerms.querySelectorAll('.term');
15
16 terms.forEach((term) => {
17 const slug = term.getAttribute('data-term-slug');
18 const name = term.getAttribute('data-term-name');
19
20 if (name.includes(searchTerm) || slug.includes(searchTerm)) {
21 term.classList.remove('hide');
22 } else {
23 term.classList.add('hide');
24 }
25 });
26 };
27
28 /**
29 * Filter facet choices to match the search field term
30 */
31 const facets = document.querySelectorAll('.widget_ep-facet, .wp-block-elasticpress-facet');
32
33 facets.forEach((facet) => {
34 const facetSearchInput = facet.querySelector('.facet-search');
35
36 if (!facetSearchInput) {
37 return;
38 }
39
40 const facetTerms = facet.querySelector('.terms');
41
42 facet.querySelector('.facet-search').addEventListener(
43 'keyup',
44 debounce((event) => {
45 if (event.keyCode === 13) {
46 return;
47 }
48
49 handleFacetSearch(event, facetTerms);
50 }, 200),
51 );
52 });
53