@ministryofjustice/hmpps-digital-prison-reporting-frontend 6.2.4 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_networkMocks/report/mockVariants/filter-input-examples/autocompleteMulti.d.ts +3 -0
- package/all.bundle.js +61 -0
- package/all.bundle.js.map +1 -1
- package/all.js +61 -0
- package/all.js.map +1 -1
- package/cjs/dpr/components/_filters/filter-input/enum.js +1 -0
- package/cjs/dpr/components/_filters/filter-input/enum.js.map +1 -1
- package/cjs/dpr/components/_filters/filters-applied/utils.js +2 -0
- package/cjs/dpr/components/_filters/filters-applied/utils.js.map +1 -1
- package/cjs/dpr/components/_filters/utils.js +7 -4
- package/cjs/dpr/components/_filters/utils.js.map +1 -1
- package/cjs/dpr/routes/journeys/request-report/filters/utils.js.map +1 -1
- package/cjs/dpr/utils/definitionUtils.js +1 -0
- package/cjs/dpr/utils/definitionUtils.js.map +1 -1
- package/cjs/dpr/utils/filterDisplay.js +1 -0
- package/cjs/dpr/utils/filterDisplay.js.map +1 -1
- package/cjs/dpr/validation/filterValidators.js +1 -0
- package/cjs/dpr/validation/filterValidators.js.map +1 -1
- package/cypress-tests/mockApis/reporting.d.ts +1 -0
- package/dpr/components/_filters/filter-input/enum.js +1 -0
- package/dpr/components/_filters/filter-input/enum.js.map +1 -1
- package/dpr/components/_filters/filter-input/view.njk +5 -1
- package/dpr/components/_filters/filters-applied/utils.js +2 -0
- package/dpr/components/_filters/filters-applied/utils.js.map +1 -1
- package/dpr/components/_filters/utils.js +7 -4
- package/dpr/components/_filters/utils.js.map +1 -1
- package/dpr/components/_inputs/autocomplete-multi/view.njk +58 -0
- package/dpr/routes/journeys/request-report/filters/utils.js.map +1 -1
- package/dpr/types/api.d.d.ts +10 -1
- package/dpr/types/api.d.ts +10 -1
- package/dpr/utils/definitionUtils.js +1 -0
- package/dpr/utils/definitionUtils.js.map +1 -1
- package/dpr/utils/filterDisplay.js +1 -0
- package/dpr/utils/filterDisplay.js.map +1 -1
- package/dpr/validation/filterValidators.js +1 -0
- package/dpr/validation/filterValidators.js.map +1 -1
- package/package.json +1 -1
- package/src/dpr/components/_filters/filter-input/enum.d.ts +2 -1
- package/src/dpr/components/_inputs/autocomplete-multi/clientClass.d.ts +14 -0
- package/test-app/mocks/mockClients/reports/mockVariants/filter-input-examples/establishmentsAutocompleteMulti.d.ts +29 -0
- package/test-app/routes/components/filters/autocompletemulti/controller.d.ts +4 -0
- package/test-app/routes/components/filters/autocompletemulti/routes.d.ts +2 -0
- package/test-app/routes/components/filters/autocompletemulti/tests.cy.d.ts +1 -0
package/all.bundle.js
CHANGED
|
@@ -2053,6 +2053,66 @@ class MultiselectInput extends DprClientClass {
|
|
|
2053
2053
|
}
|
|
2054
2054
|
}
|
|
2055
2055
|
|
|
2056
|
+
class AutoCompleteMulti extends DprClientClass {
|
|
2057
|
+
filterId;
|
|
2058
|
+
searchInput;
|
|
2059
|
+
searchInputValue;
|
|
2060
|
+
multiselectOptions;
|
|
2061
|
+
static getModuleName() {
|
|
2062
|
+
return 'autocomplete-multiselect-input';
|
|
2063
|
+
}
|
|
2064
|
+
initialise() {
|
|
2065
|
+
this.element = this.getElement();
|
|
2066
|
+
this.filterId = this.element.getAttribute('data-filter-id');
|
|
2067
|
+
// Search input
|
|
2068
|
+
this.searchInput = document.getElementById(`search.${this.filterId}`);
|
|
2069
|
+
this.multiselectOptions = Array.from(this.element.querySelectorAll('.govuk-checkboxes__input'));
|
|
2070
|
+
if (!this.searchInput || !this.multiselectOptions)
|
|
2071
|
+
return;
|
|
2072
|
+
this.initialiseCheckboxes();
|
|
2073
|
+
this.initSearchInputAction();
|
|
2074
|
+
}
|
|
2075
|
+
initialiseCheckboxes() {
|
|
2076
|
+
this.multiselectOptions.forEach((input) => {
|
|
2077
|
+
const wrapper = input.closest('.govuk-checkboxes__item');
|
|
2078
|
+
if (!wrapper)
|
|
2079
|
+
return;
|
|
2080
|
+
wrapper.classList.toggle('dpr-form--hidden', !input.checked);
|
|
2081
|
+
});
|
|
2082
|
+
}
|
|
2083
|
+
initSearchInputAction() {
|
|
2084
|
+
if (!this.searchInput)
|
|
2085
|
+
return;
|
|
2086
|
+
const input = this.searchInput;
|
|
2087
|
+
this.searchInput.addEventListener('keyup', (_event) => {
|
|
2088
|
+
this.searchInputValue = input.value;
|
|
2089
|
+
this.updateCheckboxes();
|
|
2090
|
+
});
|
|
2091
|
+
}
|
|
2092
|
+
updateCheckboxes() {
|
|
2093
|
+
const query = this.searchInputValue.toLowerCase().trim();
|
|
2094
|
+
const minLength = 3;
|
|
2095
|
+
this.multiselectOptions.forEach((input) => {
|
|
2096
|
+
const wrapper = input.closest('.govuk-checkboxes__item');
|
|
2097
|
+
if (!wrapper)
|
|
2098
|
+
return;
|
|
2099
|
+
// Always show selected items
|
|
2100
|
+
if (input.checked) {
|
|
2101
|
+
wrapper.classList.remove('dpr-form--hidden');
|
|
2102
|
+
return;
|
|
2103
|
+
}
|
|
2104
|
+
// Below threshold - hide unselected
|
|
2105
|
+
if (query.length < minLength) {
|
|
2106
|
+
wrapper.classList.add('dpr-form--hidden');
|
|
2107
|
+
return;
|
|
2108
|
+
}
|
|
2109
|
+
const labelText = input.labels?.[0]?.innerText.toLowerCase() ?? '';
|
|
2110
|
+
const matches = labelText.includes(query);
|
|
2111
|
+
wrapper.classList.toggle('dpr-form--hidden', !matches);
|
|
2112
|
+
});
|
|
2113
|
+
}
|
|
2114
|
+
}
|
|
2115
|
+
|
|
2056
2116
|
/* ==========================================================================
|
|
2057
2117
|
Shared value types
|
|
2058
2118
|
========================================================================== */
|
|
@@ -17693,6 +17753,7 @@ function initAll() {
|
|
|
17693
17753
|
DprSyncLoading,
|
|
17694
17754
|
GranularDateRange,
|
|
17695
17755
|
MultiselectInput,
|
|
17756
|
+
AutoCompleteMulti,
|
|
17696
17757
|
DprFiltersFormClass,
|
|
17697
17758
|
DprSelectedAsyncFilters,
|
|
17698
17759
|
DprAppliedFilters,
|