|
13 | 13 | }
|
14 | 14 |
|
15 | 15 | const sourceSelect = filterNode.querySelector('.ibexa-list-filters__item-content .ibexa-dropdown__source .ibexa-input--select');
|
16 |
| - const sourceSelectOptions = sourceSelect?.querySelectorAll('option'); |
17 | 16 | const checkboxes = filterNode.querySelectorAll(
|
18 | 17 | '.ibexa-list-filters__item-content .ibexa-input--checkbox:not([name="dropdown-checkbox"])',
|
19 | 18 | );
|
20 | 19 | const timePicker = filterNode.querySelector('.ibexa-date-time-picker__input');
|
21 | 20 |
|
22 | 21 | if (sourceSelect) {
|
| 22 | + const sourceSelectOptions = sourceSelect.querySelectorAll('option'); |
23 | 23 | sourceSelectOptions.forEach((option) => {
|
24 | 24 | option.selected = false;
|
25 | 25 | });
|
26 | 26 |
|
27 |
| - if (isNodeTimeFilter(filterNode)) { |
| 27 | + if (isTimeFilterNode(filterNode)) { |
28 | 28 | sourceSelectOptions[0].selected = true;
|
29 | 29 | }
|
30 | 30 | } else if (checkboxes.length) {
|
|
41 | 41 |
|
42 | 42 | searchForm.submit();
|
43 | 43 | };
|
44 |
| - const attachFilterEvents = (filterNode) => { |
| 44 | + const attachStatusFilterEvents = (filterNode) => { |
45 | 45 | if (!filterNode) {
|
46 | 46 | return;
|
47 | 47 | }
|
48 | 48 |
|
49 |
| - const sourceSelect = filterNode.querySelector('.ibexa-list-filters__item-content .ibexa-dropdown__source .ibexa-input--select'); |
50 | 49 | const checkboxes = filterNode.querySelectorAll(
|
51 | 50 | '.ibexa-list-filters__item-content .ibexa-input--checkbox:not([name="dropdown-checkbox"])',
|
52 | 51 | );
|
53 |
| - const picker = filterNode.querySelector('.ibexa-input--date'); |
54 |
| - |
55 |
| - picker?.addEventListener('change', filterChange, false); |
56 |
| - sourceSelect?.addEventListener('change', filterChange, false); |
57 | 52 | checkboxes.forEach((checkbox) => {
|
58 | 53 | checkbox.addEventListener('change', filterChange, false);
|
59 | 54 | });
|
60 | 55 | };
|
61 |
| - const isNodeTimeFilter = (filterNode) => { |
| 56 | + const attachTypeFilterEvents = (filterNode) => { |
| 57 | + if (!filterNode) { |
| 58 | + return; |
| 59 | + } |
| 60 | + |
| 61 | + const sourceSelect = filterNode.querySelector('.ibexa-list-filters__item-content .ibexa-dropdown__source .ibexa-input--select'); |
| 62 | + sourceSelect?.addEventListener('change', filterChange, false); |
| 63 | + }; |
| 64 | + const attachDateFilterEvents = (filterNode) => { |
| 65 | + if (!filterNode) { |
| 66 | + return; |
| 67 | + } |
| 68 | + |
| 69 | + const picker = filterNode.querySelector('.ibexa-input--date'); |
| 70 | + picker?.addEventListener('change', filterChange, false); |
| 71 | + }; |
| 72 | + |
| 73 | + const isTimeFilterNode = (filterNode) => { |
62 | 74 | return filterNode.classList.contains('ibexa-picker');
|
63 | 75 | };
|
64 | 76 | const hasFilterValue = (filterNode) => {
|
|
69 | 81 | const select = filterNode.querySelector('.ibexa-dropdown__source .ibexa-input--select');
|
70 | 82 | const checkedCheckboxes = filterNode.querySelectorAll('.ibexa-input--checkbox:checked');
|
71 | 83 |
|
72 |
| - if (isNodeTimeFilter(filterNode)) { |
| 84 | + if (isTimeFilterNode(filterNode)) { |
73 | 85 | const timePicker = filterNode.querySelector('.ibexa-date-time-picker__input');
|
74 | 86 |
|
75 | 87 | return !!timePicker.dataset.timestamp;
|
|
85 | 97 | return hasStatusFilterValue || hasTypeFilterValue || hasDatetimeFilterValue;
|
86 | 98 | };
|
87 | 99 | const attachInitEvents = () => {
|
88 |
| - attachFilterEvents(statusFilterNode); |
89 |
| - attachFilterEvents(typeFilterNode); |
90 |
| - datetimeFilterNodes.forEach((input) => attachFilterEvents(input)); |
| 100 | + attachStatusFilterEvents(statusFilterNode); |
| 101 | + attachTypeFilterEvents(typeFilterNode); |
| 102 | + datetimeFilterNodes.forEach((input) => attachDateFilterEvents(input)); |
91 | 103 | };
|
92 | 104 | const filterChange = () => {
|
93 | 105 | const hasFiltersSetValue = isSomeFilterSet();
|
|
0 commit comments