@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.
Files changed (43) hide show
  1. package/_networkMocks/report/mockVariants/filter-input-examples/autocompleteMulti.d.ts +3 -0
  2. package/all.bundle.js +61 -0
  3. package/all.bundle.js.map +1 -1
  4. package/all.js +61 -0
  5. package/all.js.map +1 -1
  6. package/cjs/dpr/components/_filters/filter-input/enum.js +1 -0
  7. package/cjs/dpr/components/_filters/filter-input/enum.js.map +1 -1
  8. package/cjs/dpr/components/_filters/filters-applied/utils.js +2 -0
  9. package/cjs/dpr/components/_filters/filters-applied/utils.js.map +1 -1
  10. package/cjs/dpr/components/_filters/utils.js +7 -4
  11. package/cjs/dpr/components/_filters/utils.js.map +1 -1
  12. package/cjs/dpr/routes/journeys/request-report/filters/utils.js.map +1 -1
  13. package/cjs/dpr/utils/definitionUtils.js +1 -0
  14. package/cjs/dpr/utils/definitionUtils.js.map +1 -1
  15. package/cjs/dpr/utils/filterDisplay.js +1 -0
  16. package/cjs/dpr/utils/filterDisplay.js.map +1 -1
  17. package/cjs/dpr/validation/filterValidators.js +1 -0
  18. package/cjs/dpr/validation/filterValidators.js.map +1 -1
  19. package/cypress-tests/mockApis/reporting.d.ts +1 -0
  20. package/dpr/components/_filters/filter-input/enum.js +1 -0
  21. package/dpr/components/_filters/filter-input/enum.js.map +1 -1
  22. package/dpr/components/_filters/filter-input/view.njk +5 -1
  23. package/dpr/components/_filters/filters-applied/utils.js +2 -0
  24. package/dpr/components/_filters/filters-applied/utils.js.map +1 -1
  25. package/dpr/components/_filters/utils.js +7 -4
  26. package/dpr/components/_filters/utils.js.map +1 -1
  27. package/dpr/components/_inputs/autocomplete-multi/view.njk +58 -0
  28. package/dpr/routes/journeys/request-report/filters/utils.js.map +1 -1
  29. package/dpr/types/api.d.d.ts +10 -1
  30. package/dpr/types/api.d.ts +10 -1
  31. package/dpr/utils/definitionUtils.js +1 -0
  32. package/dpr/utils/definitionUtils.js.map +1 -1
  33. package/dpr/utils/filterDisplay.js +1 -0
  34. package/dpr/utils/filterDisplay.js.map +1 -1
  35. package/dpr/validation/filterValidators.js +1 -0
  36. package/dpr/validation/filterValidators.js.map +1 -1
  37. package/package.json +1 -1
  38. package/src/dpr/components/_filters/filter-input/enum.d.ts +2 -1
  39. package/src/dpr/components/_inputs/autocomplete-multi/clientClass.d.ts +14 -0
  40. package/test-app/mocks/mockClients/reports/mockVariants/filter-input-examples/establishmentsAutocompleteMulti.d.ts +29 -0
  41. package/test-app/routes/components/filters/autocompletemulti/controller.d.ts +4 -0
  42. package/test-app/routes/components/filters/autocompletemulti/routes.d.ts +2 -0
  43. package/test-app/routes/components/filters/autocompletemulti/tests.cy.d.ts +1 -0
@@ -0,0 +1,3 @@
1
+ import { components } from 'src/dpr/types/api';
2
+ declare const autoCompleteMultiExample: components['schemas']['VariantDefinition'];
3
+ export default autoCompleteMultiExample;
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,