@ministryofjustice/hmpps-digital-prison-reporting-frontend 6.2.3 → 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 (163) hide show
  1. package/_networkMocks/report/mockVariants/filter-input-examples/autocompleteMulti.d.ts +3 -0
  2. package/all.bundle.js +68 -5
  3. package/all.bundle.js.map +1 -1
  4. package/all.js +68 -5
  5. package/all.js.map +1 -1
  6. package/cjs/dpr/components/_catalogue/catalogue/utils.js +6 -3
  7. package/cjs/dpr/components/_catalogue/catalogue/utils.js.map +1 -1
  8. package/cjs/dpr/components/_filters/filter-input/enum.js +1 -0
  9. package/cjs/dpr/components/_filters/filter-input/enum.js.map +1 -1
  10. package/cjs/dpr/components/_filters/filters-applied/utils.js +2 -0
  11. package/cjs/dpr/components/_filters/filters-applied/utils.js.map +1 -1
  12. package/cjs/dpr/components/_filters/utils.js +7 -4
  13. package/cjs/dpr/components/_filters/utils.js.map +1 -1
  14. package/cjs/dpr/components/_reports/Report.js +1 -1
  15. package/cjs/dpr/components/_reports/Report.js.map +1 -1
  16. package/cjs/dpr/components/my-reports/utils.js +1 -1
  17. package/cjs/dpr/components/my-reports/utils.js.map +1 -1
  18. package/cjs/dpr/data/reportingClient.js +3 -3
  19. package/cjs/dpr/data/reportingClient.js.map +1 -1
  20. package/cjs/dpr/data/restClient.js +3 -3
  21. package/cjs/dpr/data/restClient.js.map +1 -1
  22. package/cjs/dpr/middleware/reportAuthoriser.js +6 -8
  23. package/cjs/dpr/middleware/reportAuthoriser.js.map +1 -1
  24. package/cjs/dpr/middleware/setUpActiveReport.js +3 -1
  25. package/cjs/dpr/middleware/setUpActiveReport.js.map +1 -1
  26. package/cjs/dpr/middleware/setUpDprResources.js +136 -53
  27. package/cjs/dpr/middleware/setUpDprResources.js.map +1 -1
  28. package/cjs/dpr/middleware/setupCurrentDefinition.js +30 -0
  29. package/cjs/dpr/middleware/setupCurrentDefinition.js.map +1 -0
  30. package/cjs/dpr/routes/journeys/request-report/filters/routes.js +0 -3
  31. package/cjs/dpr/routes/journeys/request-report/filters/routes.js.map +1 -1
  32. package/cjs/dpr/routes/journeys/request-report/filters/utils.js +9 -6
  33. package/cjs/dpr/routes/journeys/request-report/filters/utils.js.map +1 -1
  34. package/cjs/dpr/routes/journeys/request-report/routes.js +3 -2
  35. package/cjs/dpr/routes/journeys/request-report/routes.js.map +1 -1
  36. package/cjs/dpr/routes/journeys/view-report/async/dashboard/routes.js +1 -2
  37. package/cjs/dpr/routes/journeys/view-report/async/dashboard/routes.js.map +1 -1
  38. package/cjs/dpr/routes/journeys/view-report/async/dashboard/utils.js +6 -5
  39. package/cjs/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +1 -1
  40. package/cjs/dpr/routes/journeys/view-report/async/report/routes.js +1 -2
  41. package/cjs/dpr/routes/journeys/view-report/async/report/routes.js.map +1 -1
  42. package/cjs/dpr/routes/journeys/view-report/async/report/utils.js +2 -1
  43. package/cjs/dpr/routes/journeys/view-report/async/report/utils.js.map +1 -1
  44. package/cjs/dpr/routes/journeys/view-report/async/routes.js +2 -3
  45. package/cjs/dpr/routes/journeys/view-report/async/routes.js.map +1 -1
  46. package/cjs/dpr/routes/journeys/view-report/routes.js +5 -3
  47. package/cjs/dpr/routes/journeys/view-report/routes.js.map +1 -1
  48. package/cjs/dpr/routes/journeys/view-report/sync/dashboard/routes.js +1 -2
  49. package/cjs/dpr/routes/journeys/view-report/sync/dashboard/routes.js.map +1 -1
  50. package/cjs/dpr/routes/journeys/view-report/sync/load-report/controller.js +9 -5
  51. package/cjs/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +1 -1
  52. package/cjs/dpr/routes/journeys/view-report/sync/report/routes.js +1 -2
  53. package/cjs/dpr/routes/journeys/view-report/sync/report/routes.js.map +1 -1
  54. package/cjs/dpr/routes/journeys/view-report/sync/report/utils.js +2 -1
  55. package/cjs/dpr/routes/journeys/view-report/sync/report/utils.js.map +1 -1
  56. package/cjs/dpr/routes/journeys/view-report/sync/routes.js +2 -3
  57. package/cjs/dpr/routes/journeys/view-report/sync/routes.js.map +1 -1
  58. package/cjs/dpr/routes/journeys/view-report/utils.js +2 -1
  59. package/cjs/dpr/routes/journeys/view-report/utils.js.map +1 -1
  60. package/cjs/dpr/utils/definitionUtils.js +4 -3
  61. package/cjs/dpr/utils/definitionUtils.js.map +1 -1
  62. package/cjs/dpr/utils/filterDisplay.js +1 -0
  63. package/cjs/dpr/utils/filterDisplay.js.map +1 -1
  64. package/cjs/dpr/utils/localsHelper.js +5 -2
  65. package/cjs/dpr/utils/localsHelper.js.map +1 -1
  66. package/cjs/dpr/validation/filterValidators.js +1 -0
  67. package/cjs/dpr/validation/filterValidators.js.map +1 -1
  68. package/cypress-tests/mockApis/reporting.d.ts +1 -0
  69. package/dpr/all.scss +8 -13
  70. package/dpr/components/_async/async-filters-form/actions/reset-form-button/view.njk +9 -2
  71. package/dpr/components/_async/async-filters-form/actions/save-defaults/view.njk +1 -0
  72. package/dpr/components/_catalogue/catalogue/utils.js +6 -3
  73. package/dpr/components/_catalogue/catalogue/utils.js.map +1 -1
  74. package/dpr/components/_filters/filter-input/enum.js +1 -0
  75. package/dpr/components/_filters/filter-input/enum.js.map +1 -1
  76. package/dpr/components/_filters/filter-input/view.njk +5 -1
  77. package/dpr/components/_filters/filters-applied/utils.js +2 -0
  78. package/dpr/components/_filters/filters-applied/utils.js.map +1 -1
  79. package/dpr/components/_filters/filters-reset/view.njk +3 -1
  80. package/dpr/components/_filters/utils.js +7 -4
  81. package/dpr/components/_filters/utils.js.map +1 -1
  82. package/dpr/components/_inputs/autocomplete-multi/view.njk +58 -0
  83. package/dpr/components/_reports/Report.js +1 -1
  84. package/dpr/components/_reports/Report.js.map +1 -1
  85. package/dpr/components/my-reports/my-reports-list-item/my-reports-list-item-actions/remove-action/view.njk +1 -1
  86. package/dpr/components/my-reports/utils.js +1 -1
  87. package/dpr/components/my-reports/utils.js.map +1 -1
  88. package/dpr/data/reportingClient.js +3 -3
  89. package/dpr/data/reportingClient.js.map +1 -1
  90. package/dpr/data/restClient.js +3 -3
  91. package/dpr/data/restClient.js.map +1 -1
  92. package/dpr/middleware/reportAuthoriser.js +6 -8
  93. package/dpr/middleware/reportAuthoriser.js.map +1 -1
  94. package/dpr/middleware/setUpActiveReport.js +3 -1
  95. package/dpr/middleware/setUpActiveReport.js.map +1 -1
  96. package/dpr/middleware/setUpDprResources.d.ts +21 -1
  97. package/dpr/middleware/setUpDprResources.js +135 -54
  98. package/dpr/middleware/setUpDprResources.js.map +1 -1
  99. package/dpr/middleware/setupCurrentDefinition.js +25 -0
  100. package/dpr/middleware/setupCurrentDefinition.js.map +1 -0
  101. package/dpr/routes/journeys/request-report/filters/routes.js +0 -3
  102. package/dpr/routes/journeys/request-report/filters/routes.js.map +1 -1
  103. package/dpr/routes/journeys/request-report/filters/utils.js +9 -6
  104. package/dpr/routes/journeys/request-report/filters/utils.js.map +1 -1
  105. package/dpr/routes/journeys/request-report/routes.js +3 -2
  106. package/dpr/routes/journeys/request-report/routes.js.map +1 -1
  107. package/dpr/routes/journeys/view-report/async/dashboard/routes.js +1 -2
  108. package/dpr/routes/journeys/view-report/async/dashboard/routes.js.map +1 -1
  109. package/dpr/routes/journeys/view-report/async/dashboard/utils.js +6 -5
  110. package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +1 -1
  111. package/dpr/routes/journeys/view-report/async/report/routes.js +1 -2
  112. package/dpr/routes/journeys/view-report/async/report/routes.js.map +1 -1
  113. package/dpr/routes/journeys/view-report/async/report/utils.js +2 -1
  114. package/dpr/routes/journeys/view-report/async/report/utils.js.map +1 -1
  115. package/dpr/routes/journeys/view-report/async/routes.js +2 -3
  116. package/dpr/routes/journeys/view-report/async/routes.js.map +1 -1
  117. package/dpr/routes/journeys/view-report/routes.js +5 -3
  118. package/dpr/routes/journeys/view-report/routes.js.map +1 -1
  119. package/dpr/routes/journeys/view-report/sync/dashboard/routes.js +1 -2
  120. package/dpr/routes/journeys/view-report/sync/dashboard/routes.js.map +1 -1
  121. package/dpr/routes/journeys/view-report/sync/load-report/controller.js +9 -5
  122. package/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +1 -1
  123. package/dpr/routes/journeys/view-report/sync/report/routes.js +1 -2
  124. package/dpr/routes/journeys/view-report/sync/report/routes.js.map +1 -1
  125. package/dpr/routes/journeys/view-report/sync/report/utils.js +2 -1
  126. package/dpr/routes/journeys/view-report/sync/report/utils.js.map +1 -1
  127. package/dpr/routes/journeys/view-report/sync/routes.js +2 -3
  128. package/dpr/routes/journeys/view-report/sync/routes.js.map +1 -1
  129. package/dpr/routes/journeys/view-report/utils.js +2 -1
  130. package/dpr/routes/journeys/view-report/utils.js.map +1 -1
  131. package/dpr/types/DprConfig.d.ts +8 -0
  132. package/dpr/types/api.d.d.ts +10 -1
  133. package/dpr/types/api.d.ts +10 -1
  134. package/dpr/types/extraLocals.d.d.ts +10 -5
  135. package/dpr/types/extraLocals.d.ts +10 -5
  136. package/dpr/utils/definitionUtils.js +4 -3
  137. package/dpr/utils/definitionUtils.js.map +1 -1
  138. package/dpr/utils/filterDisplay.js +1 -0
  139. package/dpr/utils/filterDisplay.js.map +1 -1
  140. package/dpr/utils/localsHelper.js +5 -2
  141. package/dpr/utils/localsHelper.js.map +1 -1
  142. package/dpr/validation/filterValidators.js +1 -0
  143. package/dpr/validation/filterValidators.js.map +1 -1
  144. package/package.json +1 -1
  145. package/src/dpr/components/_filters/filter-input/enum.d.ts +2 -1
  146. package/src/dpr/components/_inputs/autocomplete-multi/clientClass.d.ts +14 -0
  147. package/src/dpr/middleware/setUpDprResources.d.ts +20 -0
  148. package/src/dpr/middleware/setupCurrentDefinition.d.ts +4 -0
  149. package/src/dpr/types/DprConfig.d.ts +8 -0
  150. package/src/dpr/utils/definitionUtils.d.ts +3 -2
  151. package/src/dpr/utils/localsHelper.d.ts +6 -0
  152. package/test-app/mocks/mockClients/reports/mockReportDefinition.d.ts +3 -0
  153. package/test-app/mocks/mockClients/reports/mockReportingClient.d.ts +6 -0
  154. package/test-app/mocks/mockClients/reports/mockVariants/filter-input-examples/establishmentsAutocompleteMulti.d.ts +29 -0
  155. package/test-app/routes/components/filters/autocompletemulti/controller.d.ts +4 -0
  156. package/test-app/routes/components/filters/autocompletemulti/routes.d.ts +2 -0
  157. package/test-app/routes/components/filters/autocompletemulti/tests.cy.d.ts +1 -0
  158. package/test-app/routes/integrationTests/appStateUtils.d.ts +1 -0
  159. package/cjs/dpr/middleware/loadReportDefinition.js +0 -29
  160. package/cjs/dpr/middleware/loadReportDefinition.js.map +0 -1
  161. package/dpr/middleware/loadReportDefinition.js +0 -27
  162. package/dpr/middleware/loadReportDefinition.js.map +0 -1
  163. package/src/dpr/middleware/loadReportDefinition.d.ts +0 -10
@@ -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
  ========================================================================== */
@@ -2165,17 +2225,19 @@ class DprMyReports extends PollingClientClass {
2165
2225
  if (this.removing)
2166
2226
  return;
2167
2227
  this.removing = true;
2168
- const body = this.maxRows !== undefined ? { maxRows: this.maxRows } : {};
2169
2228
  try {
2170
- // Fetch the updated list
2229
+ const formData = new URLSearchParams();
2230
+ if (this.maxRows !== undefined) {
2231
+ formData.append('maxRows', this.maxRows);
2232
+ }
2233
+ formData.append('_csrf', this.csrfToken);
2171
2234
  const res = await fetch(form.action, {
2172
2235
  method: 'POST',
2173
2236
  headers: {
2174
2237
  'X-Requested-With': 'XMLHttpRequest',
2175
- 'Content-Type': 'application/json',
2176
- 'CSRF-Token': this.csrfToken,
2238
+ 'Content-Type': 'application/x-www-form-urlencoded',
2177
2239
  },
2178
- body: JSON.stringify(body),
2240
+ body: formData.toString(),
2179
2241
  credentials: 'same-origin',
2180
2242
  });
2181
2243
  if (!res.ok) {
@@ -17691,6 +17753,7 @@ function initAll() {
17691
17753
  DprSyncLoading,
17692
17754
  GranularDateRange,
17693
17755
  MultiselectInput,
17756
+ AutoCompleteMulti,
17694
17757
  DprFiltersFormClass,
17695
17758
  DprSelectedAsyncFilters,
17696
17759
  DprAppliedFilters,