@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.28.0 → 4.28.1
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/dpr/DprClientClass.js +43 -0
- package/dpr/DprClientClass.js.map +7 -0
- package/dpr/{DprClientClass.mjs → DprClientClass.ts} +1 -0
- package/dpr/DprFormValidationClass.js +157 -0
- package/dpr/DprFormValidationClass.js.map +7 -0
- package/dpr/{DprFormValidationClass.mjs → DprFormValidationClass.ts} +2 -1
- package/dpr/DprGenericFormClass.js +66 -0
- package/dpr/DprGenericFormClass.js.map +7 -0
- package/dpr/{DprGenericFormClass.mjs → DprGenericFormClass.ts} +2 -1
- package/dpr/DprLoadingHelper.js +51 -0
- package/dpr/DprLoadingHelper.js.map +7 -0
- package/dpr/{DprLoadingHelper.mjs → DprLoadingHelper.ts} +1 -0
- package/dpr/DprPollingStatusClass.js +79 -0
- package/dpr/DprPollingStatusClass.js.map +7 -0
- package/dpr/{DprPollingStatusClass.mjs → DprPollingStatusClass.ts} +2 -1
- package/dpr/DprQueryParamClass.js +231 -0
- package/dpr/DprQueryParamClass.js.map +7 -0
- package/dpr/{DprQueryParamClass.mjs → DprQueryParamClass.ts} +2 -1
- package/dpr/DprSyncLoading.js +44 -0
- package/dpr/DprSyncLoading.js.map +7 -0
- package/dpr/{DprSyncLoading.mjs → DprSyncLoading.ts} +2 -1
- package/dpr/all.js +111 -0
- package/dpr/all.js.map +7 -0
- package/dpr/{all.mjs → all.ts} +29 -28
- package/dpr/assets/app.js +1 -1
- package/dpr/assets/app.js.map +2 -2
- package/dpr/components/_async/async-filters-form/clientClass.js +76 -0
- package/dpr/components/_async/async-filters-form/clientClass.js.map +7 -0
- package/dpr/components/_async/async-filters-form/{clientClass.mjs → clientClass.ts} +3 -2
- package/dpr/components/_async/async-filters-form/sortByTemplate.js.map +1 -1
- package/dpr/components/_async/async-filters-form/types.d.js.map +1 -1
- package/dpr/components/_async/async-filters-form/utils.js.map +1 -1
- package/dpr/components/_async/async-polling/clientClass.js +78 -0
- package/dpr/components/_async/async-polling/clientClass.js.map +7 -0
- package/dpr/components/_async/async-polling/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_catalogue/catalogue/types.js.map +1 -1
- package/dpr/components/_catalogue/catalogue/utils.js.map +1 -1
- package/dpr/components/_catalogue/catalogue-filter-by-type/clientClass.js +94 -0
- package/dpr/components/_catalogue/catalogue-filter-by-type/clientClass.js.map +7 -0
- package/dpr/components/_catalogue/catalogue-filter-by-type/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_catalogue/catalogue-filters/clientClass.js +70 -0
- package/dpr/components/_catalogue/catalogue-filters/clientClass.js.map +7 -0
- package/dpr/components/_catalogue/catalogue-filters/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_catalogue/catalogue-list/utils.js.map +1 -1
- package/dpr/components/_catalogue/catalogue-search/clientClass.js +106 -0
- package/dpr/components/_catalogue/catalogue-search/clientClass.js.map +7 -0
- package/dpr/components/_catalogue/catalogue-search/{clientClass.mjs → clientClass.ts} +3 -2
- package/dpr/components/_catalogue/catalogue-unauthorised-toggle/clientClass.js +135 -0
- package/dpr/components/_catalogue/catalogue-unauthorised-toggle/clientClass.js.map +7 -0
- package/dpr/components/_catalogue/catalogue-unauthorised-toggle/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_charts/chart/Chart.js.map +1 -1
- package/dpr/components/_charts/chart/ChartColours.js.map +1 -1
- package/dpr/components/_charts/chart/ChartTimeseries.js.map +1 -1
- package/dpr/components/_charts/chart/bar/BarChart.js.map +1 -1
- package/dpr/components/_charts/chart/bar/clientClass.js +98 -0
- package/dpr/components/_charts/chart/bar/clientClass.js.map +7 -0
- package/dpr/components/_charts/chart/bar/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_charts/chart/bar/types.js.map +1 -1
- package/dpr/components/_charts/chart/bar/validate.js.map +1 -1
- package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js.map +1 -1
- package/dpr/components/_charts/chart/bar-timeseries/types.js.map +1 -1
- package/dpr/components/_charts/chart/bar-timeseries/validate.js.map +1 -1
- package/dpr/components/_charts/chart/buckets/Buckets.js.map +1 -1
- package/dpr/components/_charts/chart/buckets/types.js.map +1 -1
- package/dpr/components/_charts/chart/buckets/validate.js.map +1 -1
- package/dpr/components/_charts/chart/chart-config.js.map +1 -1
- package/dpr/components/_charts/chart/clientClass.js +136 -0
- package/dpr/components/_charts/chart/clientClass.js.map +7 -0
- package/dpr/components/_charts/chart/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_charts/chart/doughnut/DoughnutChart.js.map +1 -1
- package/dpr/components/_charts/chart/doughnut/clientClass.js +170 -0
- package/dpr/components/_charts/chart/doughnut/clientClass.js.map +7 -0
- package/dpr/components/_charts/chart/doughnut/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_charts/chart/doughnut/types.js.map +1 -1
- package/dpr/components/_charts/chart/doughnut/validate.js.map +1 -1
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +1 -1
- package/dpr/components/_charts/chart/heatmap/clientClass.js +118 -0
- package/dpr/components/_charts/chart/heatmap/clientClass.js.map +7 -0
- package/dpr/components/_charts/chart/heatmap/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_charts/chart/heatmap/types.js.map +1 -1
- package/dpr/components/_charts/chart/heatmap/validate.js.map +1 -1
- package/dpr/components/_charts/chart/line/LineChart.js.map +1 -1
- package/dpr/components/_charts/chart/line/clientClass.js +93 -0
- package/dpr/components/_charts/chart/line/clientClass.js.map +7 -0
- package/dpr/components/_charts/chart/line/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_charts/chart/line/types.js.map +1 -1
- package/dpr/components/_charts/chart/line/validate.js.map +1 -1
- package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js.map +1 -1
- package/dpr/components/_charts/chart/line-timeseries/types.js.map +1 -1
- package/dpr/components/_charts/chart/line-timeseries/validate.js.map +1 -1
- package/dpr/components/_charts/utils.js.map +1 -1
- package/dpr/components/_dashboards/dashboard-list/types.js.map +1 -1
- package/dpr/components/_dashboards/dashboard-list/utils.js.map +1 -1
- package/dpr/components/_dashboards/dashboard-list/validate.js.map +1 -1
- package/dpr/components/_dashboards/dashboard-visualisation/Validate.js.map +1 -1
- package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +1 -1
- package/dpr/components/_dashboards/scorecard/Scorecard.js.map +1 -1
- package/dpr/components/_dashboards/scorecard/clientClass.js +50 -0
- package/dpr/components/_dashboards/scorecard/clientClass.js.map +7 -0
- package/dpr/components/_dashboards/scorecard/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_dashboards/scorecard/types.js.map +1 -1
- package/dpr/components/_dashboards/scorecard/utils.js.map +1 -1
- package/dpr/components/_dashboards/scorecard/validate.js.map +1 -1
- package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js.map +1 -1
- package/dpr/components/_dashboards/scorecard-group/types.js.map +1 -1
- package/dpr/components/_dashboards/scorecard-group/validate.js.map +1 -1
- package/dpr/components/_filters/filter-input/enum.js.map +1 -1
- package/dpr/components/_filters/filter-input/filters.js.map +1 -1
- package/dpr/components/_filters/filter-input/types.d.js.map +1 -1
- package/dpr/components/_filters/filters-form/clientClass.js +104 -0
- package/dpr/components/_filters/filters-form/clientClass.js.map +7 -0
- package/dpr/components/_filters/filters-form/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_filters/filters-interactive/clientClass.js +55 -0
- package/dpr/components/_filters/filters-interactive/clientClass.js.map +7 -0
- package/dpr/components/_filters/filters-interactive/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_filters/filters-selected/clientClass.js +396 -0
- package/dpr/components/_filters/filters-selected/clientClass.js.map +7 -0
- package/dpr/components/_filters/filters-selected/{clientClass.mjs → clientClass.ts} +7 -7
- package/dpr/components/_filters/filters-selected/utils.js.map +1 -1
- package/dpr/components/_filters/filtersTypeEnum.js.map +1 -1
- package/dpr/components/_filters/types.d.js.map +1 -1
- package/dpr/components/_filters/utils.js.map +1 -1
- package/dpr/components/_inputs/autocomplete-text-input/clientClass.js +153 -0
- package/dpr/components/_inputs/autocomplete-text-input/clientClass.js.map +7 -0
- package/dpr/components/_inputs/autocomplete-text-input/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_inputs/autocomplete-text-input/utils.js.map +1 -1
- package/dpr/components/_inputs/date-input/clientClass.js +109 -0
- package/dpr/components/_inputs/date-input/clientClass.js.map +7 -0
- package/dpr/components/_inputs/date-input/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_inputs/date-input/utils.js.map +1 -1
- package/dpr/components/_inputs/date-range/clientClass.js +206 -0
- package/dpr/components/_inputs/date-range/clientClass.js.map +7 -0
- package/dpr/components/_inputs/date-range/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_inputs/date-range/types.js.map +1 -1
- package/dpr/components/_inputs/date-range/utils.js.map +1 -1
- package/dpr/components/_inputs/granular-date-range/clientClass.js +245 -0
- package/dpr/components/_inputs/granular-date-range/clientClass.js.map +7 -0
- package/dpr/components/_inputs/granular-date-range/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_inputs/granular-date-range/types.js.map +1 -1
- package/dpr/components/_inputs/granular-date-range/utils.js.map +1 -1
- package/dpr/components/_inputs/multi-select/utils.js.map +1 -1
- package/dpr/components/_inputs/start-end-date/utils.js.map +1 -1
- package/dpr/components/_reports/report-actions/actionsTemplate.js.map +1 -1
- package/dpr/components/_reports/report-actions/clientClass.js +103 -0
- package/dpr/components/_reports/report-actions/clientClass.js.map +7 -0
- package/dpr/components/_reports/report-actions/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_reports/report-actions/types.d.js.map +1 -1
- package/dpr/components/_reports/report-actions/utils.js.map +1 -1
- package/dpr/components/_reports/report-columns-form/clientClass.js +76 -0
- package/dpr/components/_reports/report-columns-form/clientClass.js.map +7 -0
- package/dpr/components/_reports/report-columns-form/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_reports/report-columns-form/types.d.js.map +1 -1
- package/dpr/components/_reports/report-columns-form/utils.js.map +1 -1
- package/dpr/components/_reports/report-data-table/clientClass.js +80 -0
- package/dpr/components/_reports/report-data-table/clientClass.js.map +7 -0
- package/dpr/components/_reports/report-data-table/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_reports/report-data-table/types.d.js.map +1 -1
- package/dpr/components/_reports/report-data-table/utils.js.map +1 -1
- package/dpr/components/_reports/report-download-message/clientClass.js +42 -0
- package/dpr/components/_reports/report-download-message/clientClass.js.map +7 -0
- package/dpr/components/_reports/report-download-message/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_reports/report-pagination/clientClass.js +61 -0
- package/dpr/components/_reports/report-pagination/clientClass.js.map +7 -0
- package/dpr/components/_reports/report-pagination/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/_reports/report-pagination/types.d.js.map +1 -1
- package/dpr/components/_reports/report-pagination/utils.js.map +1 -1
- package/dpr/components/_reports/report-totals/utils.js.map +1 -1
- package/dpr/components/bookmark-toggle/clientClass.js +111 -0
- package/dpr/components/bookmark-toggle/clientClass.js.map +7 -0
- package/dpr/components/bookmark-toggle/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/card-group/clientClass.js +53 -0
- package/dpr/components/card-group/clientClass.js.map +7 -0
- package/dpr/components/card-group/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/card-group/utils.js.map +1 -1
- package/dpr/components/report-list/defaultTokenProvider.js.map +1 -1
- package/dpr/components/report-list/types.d.js.map +1 -1
- package/dpr/components/report-list/utils.js.map +1 -1
- package/dpr/components/show-more/clientClass.js +63 -0
- package/dpr/components/show-more/clientClass.js.map +7 -0
- package/dpr/components/show-more/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/show-more/utils.js.map +1 -1
- package/dpr/components/user-reports/bookmarks/utils.js.map +1 -1
- package/dpr/components/user-reports/requested/clientClass.js +132 -0
- package/dpr/components/user-reports/requested/clientClass.js.map +7 -0
- package/dpr/components/user-reports/requested/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/user-reports/requested/utils.js.map +1 -1
- package/dpr/components/user-reports/types.d.js.map +1 -1
- package/dpr/components/user-reports/utils.js.map +1 -1
- package/dpr/components/user-reports/viewed/clientClass.js +102 -0
- package/dpr/components/user-reports/viewed/clientClass.js.map +7 -0
- package/dpr/components/user-reports/viewed/{clientClass.mjs → clientClass.ts} +2 -1
- package/dpr/components/user-reports/viewed/utils.js.map +1 -1
- package/dpr/data/agentConfig.js.map +1 -1
- package/dpr/data/dashboardClient.js.map +1 -1
- package/dpr/data/dprReportingClient.js.map +1 -1
- package/dpr/data/missingReportClient.js.map +1 -1
- package/dpr/data/productCollectionClient.js.map +1 -1
- package/dpr/data/reportDataStore.js.map +1 -1
- package/dpr/data/reportingClient.js.map +1 -1
- package/dpr/data/restClient.js.map +1 -1
- package/dpr/data/types.d.js.map +1 -1
- package/dpr/middleware/reportAuthoriser.js.map +1 -1
- package/dpr/middleware/setUpDprResources.js.map +1 -1
- package/dpr/middleware/setUpNestedRoute.js.map +1 -1
- package/dpr/routes/index.js.map +1 -1
- package/dpr/routes/journeys/api-failures.cy.js.map +1 -1
- package/dpr/routes/journeys/download-report/controller.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/controller.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/routes.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/controller.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/routes.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/routes.js.map +1 -1
- package/dpr/routes/journeys/download-report/request-download/service.js.map +1 -1
- package/dpr/routes/journeys/download-report/routes.js.map +1 -1
- package/dpr/routes/journeys/download-report/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/download-report/utils.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/list/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/list/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/service.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/my-reports/bookmarks/utils.js.map +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/recently-viewed/service.js.map +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/controller.js.map +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/routes.js.map +1 -1
- package/dpr/routes/journeys/my-reports/requested-reports/service.js.map +1 -1
- package/dpr/routes/journeys/my-reports/routes.js.map +1 -1
- package/dpr/routes/journeys/product-collection/routes.js.map +1 -1
- package/dpr/routes/journeys/product-collection/selected/controller.js.map +1 -1
- package/dpr/routes/journeys/product-collection/selected/routes.js.map +1 -1
- package/dpr/routes/journeys/product-collection/selected/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/product-collection/selected/validation.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/form/controller.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/form/routes.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/form/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/form/validation.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/routes.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/submitted/controller.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/submitted/routes.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/submitted/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/request-missing-report/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/request-report/controller.js.map +1 -1
- package/dpr/routes/journeys/request-report/filters/controller.js.map +1 -1
- package/dpr/routes/journeys/request-report/filters/routes.js.map +1 -1
- package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/request-report/filters/utils.js.map +1 -1
- package/dpr/routes/journeys/request-report/routes.js.map +1 -1
- package/dpr/routes/journeys/request-report/status/controller.js.map +1 -1
- package/dpr/routes/journeys/request-report/status/routes.js.map +1 -1
- package/dpr/routes/journeys/request-report/status/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/request-report/status/utils.js.map +1 -1
- package/dpr/routes/journeys/request-report/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/controller.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/controller.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/report/controller.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/report/report-variants.cy.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/report/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/report/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/report/types.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/report/utils.js.map +1 -1
- package/dpr/routes/journeys/view-report/async/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/controller.js.map +2 -2
- package/dpr/routes/journeys/view-report/controller.ts +1 -1
- package/dpr/routes/journeys/view-report/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/dashboard/controller.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/dashboard/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/dashboard/utils.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/load-report/controller.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/load-report/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/report/controller.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/report/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/report/utils.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/routes.js.map +1 -1
- package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +1 -1
- package/dpr/routes/journeys/view-report/utils.js.map +1 -1
- package/dpr/services/dashboardService.js.map +1 -1
- package/dpr/services/defaultFilterValuesService.js.map +1 -1
- package/dpr/services/featureFlagService.js.map +1 -1
- package/dpr/services/featureFlags.cy.js.map +1 -1
- package/dpr/services/index.js.map +1 -1
- package/dpr/services/missingReport/missingReportService.js.map +1 -1
- package/dpr/services/productCollection/productCollectionService.js.map +1 -1
- package/dpr/services/productCollection/productCollectionStoreService.js.map +1 -1
- package/dpr/services/reportStoreService.js.map +1 -1
- package/dpr/services/reportingService.js.map +1 -1
- package/dpr/setUpNunjucksFilters.js.map +1 -1
- package/dpr/types/AsyncReportUtils.js.map +1 -1
- package/dpr/types/Bookmark.js.map +1 -1
- package/dpr/types/Charts.js.map +1 -1
- package/dpr/types/Download.js.map +1 -1
- package/dpr/types/DprConfig.js.map +1 -1
- package/dpr/types/DprUser.js.map +1 -1
- package/dpr/types/EmbeddedReportUtils.js.map +1 -1
- package/dpr/types/ExecutionData.d.js.map +1 -1
- package/dpr/types/Metrics.js.map +1 -1
- package/dpr/types/ReportQuery.js.map +1 -1
- package/dpr/types/ReportStore.js.map +1 -1
- package/dpr/types/Services.d.js.map +1 -1
- package/dpr/types/Templates.d.js.map +1 -1
- package/dpr/types/UserReports.js.map +1 -1
- package/dpr/types/api.d.js.map +1 -1
- package/dpr/types/index.d.js.map +1 -1
- package/dpr/utils/CollatedSummaryBuilder/CollatedSummaryBuilder.js.map +1 -1
- package/dpr/utils/CreateDprServices.js.map +1 -1
- package/dpr/utils/DataTableBuilder/DataTableBuilder.js.map +1 -1
- package/dpr/utils/DataTableBuilder/types.d.js.map +1 -1
- package/dpr/utils/DateMapper/DateMapper.js.map +1 -1
- package/dpr/utils/DateMapper/types.d.js.map +1 -1
- package/dpr/utils/ErrorHandler.js.map +1 -1
- package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js.map +1 -1
- package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +1 -1
- package/dpr/utils/Personalisation/personalisationUtils.js.map +1 -1
- package/dpr/utils/Personalisation/types.d.js.map +1 -1
- package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js.map +1 -1
- package/dpr/utils/SectionedDataTableBuilder/types.d.js.map +1 -1
- package/dpr/utils/SectionedFieldsTableBuilder/SectionedFieldsTableBuilder.js.map +1 -1
- package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js.map +1 -1
- package/dpr/utils/UserStoreItemBuilder.js.map +1 -1
- package/dpr/utils/arrayUtils.js.map +1 -1
- package/dpr/utils/datasetHelper.js.map +1 -1
- package/dpr/utils/definitionUtils.js.map +1 -1
- package/dpr/utils/index.js.map +1 -1
- package/dpr/utils/indexedAccesHelper.js.map +1 -1
- package/dpr/utils/localsHelper.js.map +1 -1
- package/dpr/utils/logger.js.map +1 -1
- package/dpr/utils/reportListsHelper.js.map +1 -1
- package/dpr/utils/reportStoreHelper.js.map +1 -1
- package/dpr/utils/requestStatusHelper.js.map +1 -1
- package/dpr/utils/sanitisedError.js.map +1 -1
- package/dpr/utils/urlHelper.js.map +1 -1
- package/dpr/validation/validate.js.map +1 -1
- package/package.json +11 -6
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var clientClass_exports = {};
|
|
30
|
+
__export(clientClass_exports, {
|
|
31
|
+
SelectedFilters: () => SelectedFilters,
|
|
32
|
+
default: () => clientClass_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(clientClass_exports);
|
|
35
|
+
var import_clientClass = __toESM(require("../filters-form/clientClass"));
|
|
36
|
+
class SelectedFilters extends import_clientClass.default {
|
|
37
|
+
static getModuleName() {
|
|
38
|
+
return "selected-filters";
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Initialises the Interactive selected filter button events
|
|
42
|
+
*
|
|
43
|
+
* - Updates the query parameter in the url
|
|
44
|
+
* - Reloads the page to create the selected filter data server side
|
|
45
|
+
* - selected filter data is passed to the render function
|
|
46
|
+
*
|
|
47
|
+
* @memberof SelectedFilters
|
|
48
|
+
*/
|
|
49
|
+
initInteractiveSelectedFilterButtonsEvents() {
|
|
50
|
+
if (this.selectedFiltersButtons) {
|
|
51
|
+
this.selectedFiltersButtons.forEach((button) => {
|
|
52
|
+
button.addEventListener("click", (e) => {
|
|
53
|
+
e.preventDefault();
|
|
54
|
+
const target = e.target.matches(".interactive-remove-filter-button") ? e.target : e.target.closest(".interactive-remove-filter-button");
|
|
55
|
+
const keys = JSON.parse(target.getAttribute("data-query-param-key")) || [];
|
|
56
|
+
const values = JSON.parse(target.getAttribute("data-query-param-value")) || [];
|
|
57
|
+
let constraints = target.getAttribute("data-query-constraint-values");
|
|
58
|
+
constraints = constraints ? JSON.parse(target.getAttribute("data-query-constraint-values")) : void 0;
|
|
59
|
+
keys.forEach((key) => {
|
|
60
|
+
values.forEach((value) => {
|
|
61
|
+
this.updateQueryParam(key, value, "delete");
|
|
62
|
+
});
|
|
63
|
+
if (constraints) {
|
|
64
|
+
const constraint = constraints.find((con) => con.key === key);
|
|
65
|
+
if (constraint) {
|
|
66
|
+
this.updateQueryParam(key, constraint.value);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
this.updateQueryParam("selectedPage", 1);
|
|
71
|
+
this.updateQueryParam("preventDefault", true);
|
|
72
|
+
window.location.reload();
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
initSelectedFiltersButtons() {
|
|
78
|
+
if (this.selectedFiltersWrapper) {
|
|
79
|
+
let selectedFilterData = this.getSelectedFilterData();
|
|
80
|
+
selectedFilterData = this.setPresetDateRangeSelectedFilter(selectedFilterData);
|
|
81
|
+
selectedFilterData = this.setMultiselectSelectedFilterValue(selectedFilterData);
|
|
82
|
+
selectedFilterData = this.setGranularDateRangeSelectedFilter(selectedFilterData);
|
|
83
|
+
this.createSelectedFilterElements(selectedFilterData);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Initialises the input change event
|
|
88
|
+
*
|
|
89
|
+
* @param {NodeList} elements
|
|
90
|
+
* @memberof SelectedFilters
|
|
91
|
+
*/
|
|
92
|
+
initInputEventsForSelectedFilters(elements) {
|
|
93
|
+
Array.from(elements).forEach((input) => {
|
|
94
|
+
input.addEventListener("change", () => {
|
|
95
|
+
this.initSelectedFiltersButtons();
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Creates the selected filter data and buttons
|
|
101
|
+
*
|
|
102
|
+
* @memberof SelectedFilters
|
|
103
|
+
*/
|
|
104
|
+
getSelectedFilterData() {
|
|
105
|
+
this.queryParams = new URLSearchParams(window.location.search);
|
|
106
|
+
this.selectedFiltersWrapper.innerHTML = "";
|
|
107
|
+
const selectedFilterData = [];
|
|
108
|
+
this.queryParams.forEach((value, key) => {
|
|
109
|
+
let displayName = key;
|
|
110
|
+
let displayValue = value;
|
|
111
|
+
if (key.includes("filters.")) {
|
|
112
|
+
const inputs = document.getElementsByName(key);
|
|
113
|
+
if (inputs.length) {
|
|
114
|
+
displayName = this.getDisplayName(inputs[0]);
|
|
115
|
+
displayValue = this.getInputDisplayValue(inputs);
|
|
116
|
+
const index = selectedFilterData.findIndex((s) => s.key === key);
|
|
117
|
+
if (index === -1) {
|
|
118
|
+
if (displayValue) {
|
|
119
|
+
selectedFilterData.push({
|
|
120
|
+
displayName,
|
|
121
|
+
displayValue,
|
|
122
|
+
key,
|
|
123
|
+
name: key.split(".")[1],
|
|
124
|
+
value: [value],
|
|
125
|
+
type: inputs[0]
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
} else {
|
|
129
|
+
selectedFilterData[index] = {
|
|
130
|
+
...selectedFilterData[index],
|
|
131
|
+
displayValue: selectedFilterData[index].displayValue,
|
|
132
|
+
value: selectedFilterData[index].value
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
return selectedFilterData;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Creates the selected filters
|
|
142
|
+
*
|
|
143
|
+
* @param {NodeList} selectedFilters
|
|
144
|
+
* @memberof SelectedFilters
|
|
145
|
+
*/
|
|
146
|
+
createSelectedFilterElements(selectedFilters) {
|
|
147
|
+
if (selectedFilters.length) {
|
|
148
|
+
selectedFilters.forEach((selectedFilterData) => {
|
|
149
|
+
this.createSelectedFilterElement(selectedFilterData);
|
|
150
|
+
this.initSelectedButtonEvent();
|
|
151
|
+
});
|
|
152
|
+
} else {
|
|
153
|
+
this.createNoFiltersSelectedMessageEl();
|
|
154
|
+
}
|
|
155
|
+
this.createResetButtonEl();
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Gets the display value for a selected input
|
|
159
|
+
*
|
|
160
|
+
* @param {*} inputs
|
|
161
|
+
* @return {string} the input diap
|
|
162
|
+
* @memberof SelectedFilters
|
|
163
|
+
*/
|
|
164
|
+
getInputDisplayValue(inputs) {
|
|
165
|
+
let displayValue;
|
|
166
|
+
switch (inputs[0].type) {
|
|
167
|
+
case "text":
|
|
168
|
+
displayValue = inputs[0].value;
|
|
169
|
+
break;
|
|
170
|
+
case "radio": {
|
|
171
|
+
const checkedInput = Array.from(inputs).find((i) => i.checked);
|
|
172
|
+
displayValue = checkedInput ? checkedInput.labels[0].innerText : "";
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
case "select-one":
|
|
176
|
+
displayValue = inputs[0].options[inputs[0].selectedIndex].text;
|
|
177
|
+
break;
|
|
178
|
+
case "checkbox": {
|
|
179
|
+
const checkedInputs = Array.from(inputs).filter((i) => i.checked);
|
|
180
|
+
displayValue = checkedInputs.map((i) => {
|
|
181
|
+
return ` ${i.labels[0].innerText}`;
|
|
182
|
+
});
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
default:
|
|
186
|
+
displayValue = inputs[0].value;
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
return displayValue;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Initialises the request selected filter button events
|
|
193
|
+
*
|
|
194
|
+
* - Updates the corresponding input value to null
|
|
195
|
+
* - Dispatches an input change event to update to update the corresponding url search param
|
|
196
|
+
*
|
|
197
|
+
* @memberof SelectedFilters
|
|
198
|
+
*/
|
|
199
|
+
initSelectedButtonEvent() {
|
|
200
|
+
if (this.selectedFiltersWrapper) {
|
|
201
|
+
Array.from(this.selectedFiltersWrapper.children).forEach((button) => {
|
|
202
|
+
button.addEventListener("click", (e) => {
|
|
203
|
+
e.preventDefault();
|
|
204
|
+
const dataQueryParamKeyString = e.target.dataset.dataQueryParamKey;
|
|
205
|
+
const dataQueryParamKeyArray = JSON.parse(dataQueryParamKeyString);
|
|
206
|
+
let inputs;
|
|
207
|
+
if (dataQueryParamKeyArray.length > 1) {
|
|
208
|
+
inputs = dataQueryParamKeyArray.map((inputName) => {
|
|
209
|
+
return document.getElementsByName(inputName)[0];
|
|
210
|
+
});
|
|
211
|
+
} else {
|
|
212
|
+
inputs = document.getElementsByName(dataQueryParamKeyArray[0]);
|
|
213
|
+
}
|
|
214
|
+
if (inputs.length) {
|
|
215
|
+
inputs.forEach((input) => {
|
|
216
|
+
switch (input.type) {
|
|
217
|
+
case "checkbox":
|
|
218
|
+
case "radio": {
|
|
219
|
+
input.checked = false;
|
|
220
|
+
const changeEvent2 = new Event("change");
|
|
221
|
+
input.dispatchEvent(changeEvent2);
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
case "search":
|
|
225
|
+
input.value = "";
|
|
226
|
+
input.staticOptionNameValue = "";
|
|
227
|
+
break;
|
|
228
|
+
default:
|
|
229
|
+
input.value = "";
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
const changeEvent = new Event("change");
|
|
233
|
+
input.dispatchEvent(changeEvent);
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Creates the selected input element
|
|
242
|
+
*
|
|
243
|
+
* @param {string} displayName
|
|
244
|
+
* @param {string} displayValue
|
|
245
|
+
* @param {string} key
|
|
246
|
+
* @param {string} value
|
|
247
|
+
* @return {element}
|
|
248
|
+
* @memberof SelectedFilters
|
|
249
|
+
*/
|
|
250
|
+
createSelectedFilterElement(selectedData) {
|
|
251
|
+
const { displayName, displayValue, key, value } = selectedData;
|
|
252
|
+
const selectedItem = document.createElement("a");
|
|
253
|
+
selectedItem.classList = "govuk-link govuk-body interactive-remove-filter-button";
|
|
254
|
+
selectedItem.href = "#";
|
|
255
|
+
selectedItem.dataset.dataQueryParamKey = Array.isArray(key) ? JSON.stringify(key) : `[ "${key}" ]`;
|
|
256
|
+
selectedItem.dataset.dataQueryParamValue = Array.isArray(value) ? JSON.stringify(value) : `[ "${value}" ]`;
|
|
257
|
+
const contentField = document.createTextNode(`${displayName}: `);
|
|
258
|
+
selectedItem.appendChild(contentField);
|
|
259
|
+
const selectedItemValue = document.createElement("span");
|
|
260
|
+
selectedItemValue.classList = "dpr-selected-filter__value";
|
|
261
|
+
const contentValue = document.createTextNode(displayValue);
|
|
262
|
+
selectedItemValue.appendChild(contentValue);
|
|
263
|
+
selectedItem.appendChild(selectedItemValue);
|
|
264
|
+
this.selectedFiltersWrapper.appendChild(selectedItem);
|
|
265
|
+
}
|
|
266
|
+
createNoFiltersSelectedMessageEl() {
|
|
267
|
+
const noneSelectedMessage = document.createElement("p");
|
|
268
|
+
noneSelectedMessage.classList = "govuk-body-s govuk-!-margin-top-2 govuk-!-margin-bottom-0";
|
|
269
|
+
const content = document.createTextNode("No filters selected");
|
|
270
|
+
noneSelectedMessage.appendChild(content);
|
|
271
|
+
this.selectedFiltersWrapper.appendChild(noneSelectedMessage);
|
|
272
|
+
}
|
|
273
|
+
createResetButtonEl() {
|
|
274
|
+
const resetLink = document.createElement("a");
|
|
275
|
+
resetLink.classList = "govuk-body-s govuk-link govuk-link--no-visited-state dpr-reset-filters-button govuk-!-margin-bottom-0";
|
|
276
|
+
const content = document.createTextNode("Reset filters");
|
|
277
|
+
resetLink.appendChild(content);
|
|
278
|
+
resetLink.setAttribute("href", "#");
|
|
279
|
+
resetLink.setAttribute("id", "async-request-reset-filters-button");
|
|
280
|
+
this.selectedFiltersWrapper.appendChild(resetLink);
|
|
281
|
+
this.initResetButton("async-request-reset-filters-button");
|
|
282
|
+
}
|
|
283
|
+
// Specfic input type edge cases 👇🏽
|
|
284
|
+
/**
|
|
285
|
+
* Daterange
|
|
286
|
+
* Filters the selected filters buttons to include valid preset date range buttons
|
|
287
|
+
*
|
|
288
|
+
* @param {*} selectedFilters
|
|
289
|
+
* @return {*}
|
|
290
|
+
* @memberof SelectedFilters
|
|
291
|
+
*/
|
|
292
|
+
setPresetDateRangeSelectedFilter(selectedFilters) {
|
|
293
|
+
let updatedSelectedFilters = selectedFilters;
|
|
294
|
+
const presetRangeFilter = selectedFilters.find((sf) => sf.displayName === "Preset date range");
|
|
295
|
+
if (presetRangeFilter) {
|
|
296
|
+
updatedSelectedFilters = selectedFilters.filter((sf) => {
|
|
297
|
+
const key = sf.key.split(".");
|
|
298
|
+
return !sf.key.includes(`${key[0]}.${key[1]}`) || sf.key === presetRangeFilter.key;
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
return updatedSelectedFilters;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Multiselect
|
|
305
|
+
*
|
|
306
|
+
* @param {*} selectedFilters
|
|
307
|
+
* @return {*}
|
|
308
|
+
* @memberof SelectedFilters
|
|
309
|
+
*/
|
|
310
|
+
setMultiselectSelectedFilterValue(selectedFilters) {
|
|
311
|
+
let updatedSelectedFilters = selectedFilters;
|
|
312
|
+
updatedSelectedFilters = selectedFilters.map((sf) => {
|
|
313
|
+
if (Array.isArray(sf.displayValue) && sf.displayValue.length > 3) {
|
|
314
|
+
const dv = `${sf.displayValue[0]}, ${sf.displayValue[1]}, ${sf.displayValue[2]} + ${sf.displayValue.length - 3} more`;
|
|
315
|
+
return {
|
|
316
|
+
...sf,
|
|
317
|
+
displayValue: dv
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
return sf;
|
|
321
|
+
});
|
|
322
|
+
return updatedSelectedFilters;
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Daterange
|
|
326
|
+
* Filters the selected filters buttons to include valid preset date range buttons
|
|
327
|
+
*
|
|
328
|
+
* @param {*} selectedFilters
|
|
329
|
+
* @return {*}
|
|
330
|
+
* @memberof SelectedFilters
|
|
331
|
+
*/
|
|
332
|
+
setGranularDateRangeSelectedFilter(selectedFilters) {
|
|
333
|
+
this.queryParams = new URLSearchParams(window.location.search);
|
|
334
|
+
let updatedSelectedFilters = selectedFilters;
|
|
335
|
+
const quickFilterIndex = selectedFilters.findIndex((sf) => sf.key.includes("quick-filter"));
|
|
336
|
+
const granularityIndex = selectedFilters.findIndex((sf) => sf.key.includes("granularity"));
|
|
337
|
+
let granularFilterName;
|
|
338
|
+
let displayName;
|
|
339
|
+
if (quickFilterIndex !== -1 || granularityIndex !== -1) {
|
|
340
|
+
granularFilterName = updatedSelectedFilters[quickFilterIndex]?.name || updatedSelectedFilters[granularityIndex]?.name;
|
|
341
|
+
displayName = document.getElementById(`dpr-granular-date-range_${granularFilterName}`).dataset.fieldDisplayName;
|
|
342
|
+
}
|
|
343
|
+
if (granularFilterName) {
|
|
344
|
+
const keys = [];
|
|
345
|
+
const values = [];
|
|
346
|
+
let displayValue = "";
|
|
347
|
+
let granularityValue;
|
|
348
|
+
let quickFilterValue;
|
|
349
|
+
let startValue;
|
|
350
|
+
let endValue;
|
|
351
|
+
this.queryParams.forEach((value, key) => {
|
|
352
|
+
if (key.includes(granularFilterName)) {
|
|
353
|
+
keys.push(key);
|
|
354
|
+
values.push(value);
|
|
355
|
+
const selected = updatedSelectedFilters.find((s) => s.key === key);
|
|
356
|
+
if (key.includes("granularity")) {
|
|
357
|
+
granularityValue = selected.displayValue;
|
|
358
|
+
}
|
|
359
|
+
if (key.includes("quick-filter")) {
|
|
360
|
+
quickFilterValue = selected.displayValue;
|
|
361
|
+
}
|
|
362
|
+
if (key.includes("start")) {
|
|
363
|
+
startValue = selected.displayValue;
|
|
364
|
+
}
|
|
365
|
+
if (key.includes("end")) {
|
|
366
|
+
endValue = selected.displayValue;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
if (quickFilterValue && quickFilterValue !== "None") {
|
|
371
|
+
displayValue = `${quickFilterValue} : ${granularityValue}`;
|
|
372
|
+
} else if (startValue && endValue) {
|
|
373
|
+
displayValue = `${startValue} - ${endValue} : ${granularityValue}`;
|
|
374
|
+
}
|
|
375
|
+
updatedSelectedFilters = updatedSelectedFilters.filter((sf) => !sf.key.includes(granularFilterName));
|
|
376
|
+
if (displayValue) {
|
|
377
|
+
const granularSelected = {
|
|
378
|
+
displayName,
|
|
379
|
+
displayValue,
|
|
380
|
+
key: keys,
|
|
381
|
+
name: granularFilterName,
|
|
382
|
+
value: values,
|
|
383
|
+
type: "granular-date-picker"
|
|
384
|
+
};
|
|
385
|
+
updatedSelectedFilters.push(granularSelected);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
return updatedSelectedFilters;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
var clientClass_default = SelectedFilters;
|
|
392
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
393
|
+
0 && (module.exports = {
|
|
394
|
+
SelectedFilters
|
|
395
|
+
});
|
|
396
|
+
//# sourceMappingURL=clientClass.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../dpr/components/_filters/filters-selected/clientClass.ts"],
|
|
4
|
+
"sourcesContent": ["// @ts-nocheck\n/* eslint-disable no-param-reassign */\n/* eslint-disable class-methods-use-this */\nimport DprFiltersFormClass from '../filters-form/clientClass'\n\nclass SelectedFilters extends DprFiltersFormClass {\n static getModuleName() {\n return 'selected-filters'\n }\n\n /**\n * Initialises the Interactive selected filter button events\n *\n * - Updates the query parameter in the url\n * - Reloads the page to create the selected filter data server side\n * - selected filter data is passed to the render function\n *\n * @memberof SelectedFilters\n */\n initInteractiveSelectedFilterButtonsEvents() {\n if (this.selectedFiltersButtons) {\n this.selectedFiltersButtons.forEach((button) => {\n button.addEventListener('click', (e) => {\n e.preventDefault()\n const target = e.target.matches('.interactive-remove-filter-button')\n ? e.target\n : e.target.closest('.interactive-remove-filter-button')\n\n const keys = JSON.parse(target.getAttribute('data-query-param-key')) || []\n const values = JSON.parse(target.getAttribute('data-query-param-value')) || []\n\n let constraints = target.getAttribute('data-query-constraint-values')\n constraints = constraints ? JSON.parse(target.getAttribute('data-query-constraint-values')) : undefined\n\n keys.forEach((key) => {\n values.forEach((value) => {\n this.updateQueryParam(key, value, 'delete')\n })\n if (constraints) {\n const constraint = constraints.find((con) => con.key === key)\n if (constraint) {\n this.updateQueryParam(key, constraint.value)\n }\n }\n })\n\n this.updateQueryParam('selectedPage', 1)\n this.updateQueryParam('preventDefault', true)\n window.location.reload()\n })\n })\n }\n }\n\n initSelectedFiltersButtons() {\n if (this.selectedFiltersWrapper) {\n // init data from query params\n let selectedFilterData = this.getSelectedFilterData()\n\n // handle edgecases with specific input types\n selectedFilterData = this.setPresetDateRangeSelectedFilter(selectedFilterData)\n selectedFilterData = this.setMultiselectSelectedFilterValue(selectedFilterData)\n selectedFilterData = this.setGranularDateRangeSelectedFilter(selectedFilterData)\n\n // builds the elements and render\n this.createSelectedFilterElements(selectedFilterData)\n }\n }\n\n /**\n * Initialises the input change event\n *\n * @param {NodeList} elements\n * @memberof SelectedFilters\n */\n initInputEventsForSelectedFilters(elements) {\n Array.from(elements).forEach((input) => {\n input.addEventListener('change', () => {\n this.initSelectedFiltersButtons()\n })\n })\n }\n\n /**\n * Creates the selected filter data and buttons\n *\n * @memberof SelectedFilters\n */\n getSelectedFilterData() {\n this.queryParams = new URLSearchParams(window.location.search)\n this.selectedFiltersWrapper.innerHTML = ''\n\n const selectedFilterData = []\n this.queryParams.forEach((value, key) => {\n let displayName = key\n let displayValue = value\n\n if (key.includes('filters.')) {\n const inputs = document.getElementsByName(key)\n\n if (inputs.length) {\n displayName = this.getDisplayName(inputs[0])\n displayValue = this.getInputDisplayValue(inputs)\n\n const index = selectedFilterData.findIndex((s) => s.key === key)\n if (index === -1) {\n if (displayValue) {\n selectedFilterData.push({\n displayName,\n displayValue,\n key,\n name: key.split('.')[1],\n value: [value],\n type: inputs[0],\n })\n }\n } else {\n selectedFilterData[index] = {\n ...selectedFilterData[index],\n displayValue: selectedFilterData[index].displayValue,\n value: selectedFilterData[index].value,\n }\n }\n }\n }\n })\n\n return selectedFilterData\n }\n\n /**\n * Creates the selected filters\n *\n * @param {NodeList} selectedFilters\n * @memberof SelectedFilters\n */\n createSelectedFilterElements(selectedFilters) {\n if (selectedFilters.length) {\n selectedFilters.forEach((selectedFilterData) => {\n this.createSelectedFilterElement(selectedFilterData)\n this.initSelectedButtonEvent()\n })\n } else {\n this.createNoFiltersSelectedMessageEl()\n }\n this.createResetButtonEl()\n }\n\n /**\n * Gets the display value for a selected input\n *\n * @param {*} inputs\n * @return {string} the input diap\n * @memberof SelectedFilters\n */\n getInputDisplayValue(inputs) {\n let displayValue\n\n switch (inputs[0].type) {\n case 'text':\n displayValue = inputs[0].value\n break\n\n case 'radio': {\n const checkedInput = Array.from(inputs).find((i) => i.checked)\n displayValue = checkedInput ? checkedInput.labels[0].innerText : ''\n break\n }\n\n case 'select-one':\n displayValue = inputs[0].options[inputs[0].selectedIndex].text\n break\n\n case 'checkbox': {\n const checkedInputs = Array.from(inputs).filter((i) => i.checked)\n displayValue = checkedInputs.map((i) => {\n return ` ${i.labels[0].innerText}`\n })\n break\n }\n\n default:\n displayValue = inputs[0].value\n break\n }\n\n return displayValue\n }\n\n /**\n * Initialises the request selected filter button events\n *\n * - Updates the corresponding input value to null\n * - Dispatches an input change event to update to update the corresponding url search param\n *\n * @memberof SelectedFilters\n */\n initSelectedButtonEvent() {\n if (this.selectedFiltersWrapper) {\n Array.from(this.selectedFiltersWrapper.children).forEach((button) => {\n button.addEventListener('click', (e) => {\n e.preventDefault()\n\n const dataQueryParamKeyString = e.target.dataset.dataQueryParamKey\n const dataQueryParamKeyArray = JSON.parse(dataQueryParamKeyString)\n\n let inputs\n if (dataQueryParamKeyArray.length > 1) {\n inputs = dataQueryParamKeyArray.map((inputName) => {\n return document.getElementsByName(inputName)[0]\n })\n } else {\n inputs = document.getElementsByName(dataQueryParamKeyArray[0])\n }\n\n if (inputs.length) {\n inputs.forEach((input) => {\n switch (input.type) {\n case 'checkbox':\n case 'radio': {\n input.checked = false\n const changeEvent = new Event('change')\n input.dispatchEvent(changeEvent)\n break\n }\n case 'search':\n input.value = ''\n input.staticOptionNameValue = ''\n break\n\n default:\n input.value = ''\n break\n }\n\n const changeEvent = new Event('change')\n input.dispatchEvent(changeEvent)\n })\n }\n })\n })\n }\n }\n\n /**\n * Creates the selected input element\n *\n * @param {string} displayName\n * @param {string} displayValue\n * @param {string} key\n * @param {string} value\n * @return {element}\n * @memberof SelectedFilters\n */\n createSelectedFilterElement(selectedData) {\n const { displayName, displayValue, key, value } = selectedData\n const selectedItem = document.createElement('a')\n selectedItem.classList = 'govuk-link govuk-body interactive-remove-filter-button'\n selectedItem.href = '#'\n\n selectedItem.dataset.dataQueryParamKey = Array.isArray(key) ? JSON.stringify(key) : `[ \"${key}\" ]`\n selectedItem.dataset.dataQueryParamValue = Array.isArray(value) ? JSON.stringify(value) : `[ \"${value}\" ]`\n\n const contentField = document.createTextNode(`${displayName}: `)\n selectedItem.appendChild(contentField)\n\n const selectedItemValue = document.createElement('span')\n selectedItemValue.classList = 'dpr-selected-filter__value'\n const contentValue = document.createTextNode(displayValue)\n selectedItemValue.appendChild(contentValue)\n selectedItem.appendChild(selectedItemValue)\n\n this.selectedFiltersWrapper.appendChild(selectedItem)\n }\n\n createNoFiltersSelectedMessageEl() {\n const noneSelectedMessage = document.createElement('p')\n noneSelectedMessage.classList = 'govuk-body-s govuk-!-margin-top-2 govuk-!-margin-bottom-0'\n const content = document.createTextNode('No filters selected')\n noneSelectedMessage.appendChild(content)\n this.selectedFiltersWrapper.appendChild(noneSelectedMessage)\n }\n\n createResetButtonEl() {\n const resetLink = document.createElement('a')\n resetLink.classList =\n 'govuk-body-s govuk-link govuk-link--no-visited-state dpr-reset-filters-button govuk-!-margin-bottom-0'\n const content = document.createTextNode('Reset filters')\n resetLink.appendChild(content)\n resetLink.setAttribute('href', '#')\n resetLink.setAttribute('id', 'async-request-reset-filters-button')\n this.selectedFiltersWrapper.appendChild(resetLink)\n this.initResetButton('async-request-reset-filters-button')\n }\n\n // Specfic input type edge cases \uD83D\uDC47\uD83C\uDFFD\n\n /**\n * Daterange\n * Filters the selected filters buttons to include valid preset date range buttons\n *\n * @param {*} selectedFilters\n * @return {*}\n * @memberof SelectedFilters\n */\n setPresetDateRangeSelectedFilter(selectedFilters) {\n let updatedSelectedFilters = selectedFilters\n const presetRangeFilter = selectedFilters.find((sf) => sf.displayName === 'Preset date range')\n if (presetRangeFilter) {\n updatedSelectedFilters = selectedFilters.filter((sf) => {\n const key = sf.key.split('.')\n return !sf.key.includes(`${key[0]}.${key[1]}`) || sf.key === presetRangeFilter.key\n })\n }\n return updatedSelectedFilters\n }\n\n /**\n * Multiselect\n *\n * @param {*} selectedFilters\n * @return {*}\n * @memberof SelectedFilters\n */\n setMultiselectSelectedFilterValue(selectedFilters) {\n let updatedSelectedFilters = selectedFilters\n updatedSelectedFilters = selectedFilters.map((sf) => {\n if (Array.isArray(sf.displayValue) && sf.displayValue.length > 3) {\n const dv = `${sf.displayValue[0]}, ${sf.displayValue[1]}, ${sf.displayValue[2]} + ${sf.displayValue.length - 3\n } more`\n return {\n ...sf,\n displayValue: dv,\n }\n }\n return sf\n })\n return updatedSelectedFilters\n }\n\n /**\n * Daterange\n * Filters the selected filters buttons to include valid preset date range buttons\n *\n * @param {*} selectedFilters\n * @return {*}\n * @memberof SelectedFilters\n */\n setGranularDateRangeSelectedFilter(selectedFilters) {\n this.queryParams = new URLSearchParams(window.location.search)\n let updatedSelectedFilters = selectedFilters\n\n const quickFilterIndex = selectedFilters.findIndex((sf) => sf.key.includes('quick-filter'))\n const granularityIndex = selectedFilters.findIndex((sf) => sf.key.includes('granularity'))\n\n // Get the granular filter field name\n // If granularity, or quick-filter are set then its a granular filter\n let granularFilterName\n let displayName\n if (quickFilterIndex !== -1 || granularityIndex !== -1) {\n granularFilterName =\n updatedSelectedFilters[quickFilterIndex]?.name || updatedSelectedFilters[granularityIndex]?.name\n displayName = document.getElementById(`dpr-granular-date-range_${granularFilterName}`).dataset.fieldDisplayName\n }\n\n if (granularFilterName) {\n const keys = []\n const values = []\n let displayValue = ''\n let granularityValue\n let quickFilterValue\n let startValue\n let endValue\n\n this.queryParams.forEach((value, key) => {\n if (key.includes(granularFilterName)) {\n keys.push(key)\n values.push(value)\n\n const selected = updatedSelectedFilters.find((s) => s.key === key)\n if (key.includes('granularity')) {\n granularityValue = selected.displayValue\n }\n if (key.includes('quick-filter')) {\n quickFilterValue = selected.displayValue\n }\n if (key.includes('start')) {\n startValue = selected.displayValue\n }\n if (key.includes('end')) {\n endValue = selected.displayValue\n }\n }\n })\n\n // Set the display valiue\n if (quickFilterValue && quickFilterValue !== 'None') {\n displayValue = `${quickFilterValue} : ${granularityValue}`\n } else if (startValue && endValue) {\n displayValue = `${startValue} - ${endValue} : ${granularityValue}`\n }\n\n // Remove seperate selected filters buttons \n updatedSelectedFilters = updatedSelectedFilters.filter(sf => !sf.key.includes(granularFilterName))\n\n if (displayValue) {\n // create consolidated button\n const granularSelected = {\n displayName,\n displayValue,\n key: keys,\n name: granularFilterName,\n value: values,\n type: 'granular-date-picker',\n }\n\n updatedSelectedFilters.push(granularSelected)\n }\n }\n\n return updatedSelectedFilters\n }\n}\n\nexport { SelectedFilters }\nexport default SelectedFilters\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["DprFiltersFormClass", "changeEvent"]
|
|
7
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
1
2
|
/* eslint-disable no-param-reassign */
|
|
2
3
|
/* eslint-disable class-methods-use-this */
|
|
3
|
-
import DprFiltersFormClass from '../filters-form/clientClass
|
|
4
|
+
import DprFiltersFormClass from '../filters-form/clientClass'
|
|
4
5
|
|
|
5
6
|
class SelectedFilters extends DprFiltersFormClass {
|
|
6
7
|
static getModuleName() {
|
|
@@ -325,9 +326,8 @@ class SelectedFilters extends DprFiltersFormClass {
|
|
|
325
326
|
let updatedSelectedFilters = selectedFilters
|
|
326
327
|
updatedSelectedFilters = selectedFilters.map((sf) => {
|
|
327
328
|
if (Array.isArray(sf.displayValue) && sf.displayValue.length > 3) {
|
|
328
|
-
const dv = `${sf.displayValue[0]}, ${sf.displayValue[1]}, ${sf.displayValue[2]} + ${
|
|
329
|
-
|
|
330
|
-
} more`
|
|
329
|
+
const dv = `${sf.displayValue[0]}, ${sf.displayValue[1]}, ${sf.displayValue[2]} + ${sf.displayValue.length - 3
|
|
330
|
+
} more`
|
|
331
331
|
return {
|
|
332
332
|
...sf,
|
|
333
333
|
displayValue: dv,
|
|
@@ -376,7 +376,7 @@ class SelectedFilters extends DprFiltersFormClass {
|
|
|
376
376
|
if (key.includes(granularFilterName)) {
|
|
377
377
|
keys.push(key)
|
|
378
378
|
values.push(value)
|
|
379
|
-
|
|
379
|
+
|
|
380
380
|
const selected = updatedSelectedFilters.find((s) => s.key === key)
|
|
381
381
|
if (key.includes('granularity')) {
|
|
382
382
|
granularityValue = selected.displayValue
|
|
@@ -399,9 +399,9 @@ class SelectedFilters extends DprFiltersFormClass {
|
|
|
399
399
|
} else if (startValue && endValue) {
|
|
400
400
|
displayValue = `${startValue} - ${endValue} : ${granularityValue}`
|
|
401
401
|
}
|
|
402
|
-
|
|
402
|
+
|
|
403
403
|
// Remove seperate selected filters buttons
|
|
404
|
-
updatedSelectedFilters = updatedSelectedFilters.filter(sf => !sf.key.includes(granularFilterName)
|
|
404
|
+
updatedSelectedFilters = updatedSelectedFilters.filter(sf => !sf.key.includes(granularFilterName))
|
|
405
405
|
|
|
406
406
|
if (displayValue) {
|
|
407
407
|
// create consolidated button
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../../dpr/components/_filters/filters-selected/utils.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { FilterType } from '../filter-input/enum'\nimport {\n FilterValue,\n DateRange,\n DateFilterValue,\n DateRangeFilterValue,\n FilterValueWithOptions,\n GranularDateRangeFilterValue,\n MultiselectFilterValue,\n} from '../types'\nimport DateRangeFilterUtils from '../../_inputs/date-range/utils'\nimport DateMapper from '../../../utils/DateMapper/DateMapper'\nimport Dict = NodeJS.Dict\n\nexport const getSelectedFilters = (filters: FilterValue[], prefix: string) => {\n const emptyValues: (string | undefined | null)[] = [undefined, null, '']\n\n return filters\n .filter((f) => {\n return (\n (f.value &&\n Object.prototype.hasOwnProperty.call(f.value, 'start') &&\n !emptyValues.includes((<DateRange>f.value).start)) ||\n (f.value &&\n Object.prototype.hasOwnProperty.call(f.value, 'end') &&\n !emptyValues.includes((<DateRange>f.value).end)) ||\n (f.value &&\n !Object.prototype.hasOwnProperty.call(f.value, 'start') &&\n !Object.prototype.hasOwnProperty.call(f.value, 'end'))\n )\n })\n .filter((f) => {\n return f.value && f.value !== 'no-filter'\n })\n .map((f) => {\n let displayValue = `${f.value}`\n let value: (string | DateRange)[] = [`\"${displayValue}\"`]\n let key: string[] = [`${prefix}${f.name}`]\n let cantRemoveClass = ''\n let disabled = false\n let constraints: { key: string; value: string }[] | undefined\n\n if (f.type.toLowerCase() === FilterType.dateRange.toLowerCase()) {\n ;({ key, value, disabled, cantRemoveClass, displayValue, constraints } = setSelectedDateRange(\n <DateRangeFilterValue>f,\n prefix,\n ))\n }\n\n if (f.type.toLowerCase() === FilterType.granularDateRange.toLowerCase()) {\n ;({ key, value, disabled, cantRemoveClass, displayValue, constraints } = setSelectedGranularDateRange(\n <GranularDateRangeFilterValue>f,\n prefix,\n ))\n }\n\n if (f.type.toLowerCase() === FilterType.date.toLowerCase()) {\n ;({ key, value, disabled, cantRemoveClass, displayValue, constraints } = getSelectedDate(\n <DateFilterValue>f,\n prefix,\n ))\n }\n\n if (\n f.type.toLowerCase() === FilterType.autocomplete.toLowerCase() ||\n f.type.toLowerCase() === FilterType.radio.toLowerCase() ||\n f.type.toLowerCase() === FilterType.select.toLowerCase()\n ) {\n ;({ key, value, displayValue } = getOptionsValue(<FilterValueWithOptions>f, prefix))\n }\n\n if (f.type.toLowerCase() === FilterType.multiselect.toLowerCase()) {\n ;({ key, value, displayValue } = getMultiselectValues(<FilterValueWithOptions>f, prefix))\n }\n\n let ariaLabel\n if (disabled) {\n ariaLabel = `Selected Filter: ${f.text}: ${displayValue}. This filter cant be removed. Update the filter input to change the value`\n } else {\n ariaLabel = `Selected Filter: ${f.text}: ${displayValue}. Click to clear this filter`\n }\n\n return {\n text: f.text,\n displayValue,\n key: JSON.stringify(key),\n value,\n disabled,\n constraints,\n classes: `interactive-remove-filter-button${cantRemoveClass}`,\n attributes: {\n 'aria-label': ariaLabel,\n },\n }\n })\n}\n\nexport const setDateDisplayFormat = (dateValue: string) => {\n const dateMapper = new DateMapper()\n const type = dateMapper.getDateType(dateValue)\n if (type !== 'none') {\n dateValue = dateMapper.toDateString(dateValue, 'local-date') || dateValue\n }\n return dateValue\n}\n\nexport const setSelectedDateRange = (f: DateRangeFilterValue, prefix: string) => {\n const startValue = (<DateRange>f.value).start || 'Open start'\n const endValue = (<DateRange>f.value).end || 'Open end'\n const value = [`\"${startValue}\"`, `\"${endValue}\"`]\n const name = `${prefix}${f.name}`\n const key = [`${name}.start`, `${name}.end`]\n\n const displayStartValue = setDateDisplayFormat(startValue)\n const displayEndValue = setDateDisplayFormat(endValue)\n let displayValue = `${displayStartValue} - ${displayEndValue}`\n const { relative } = <DateRange>f.value\n if (relative) {\n key.push(`${name}.relative-duration`)\n value.push(`\"${relative}\"`)\n displayValue = DateRangeFilterUtils.mapRelativeValue(relative)\n }\n\n const constraints = setMinMaxContraints(f, key)\n const { disabled, cantRemoveClass, displayValue: disabledDisplayValue } = disabledDateRange(f, value, displayValue)\n\n return {\n key,\n value,\n displayValue: disabledDisplayValue || displayValue,\n disabled,\n cantRemoveClass,\n constraints,\n }\n}\n\nexport const setMinMaxContraints = (f: DateFilterValue | DateRangeFilterValue, key: string[], singleDate = false) => {\n const constraints: { key: string; value: string }[] = []\n const { min, max } = f\n if (min) {\n constraints.push({\n key: key[0],\n value: min,\n })\n }\n if (max && !singleDate) {\n constraints.push({\n key: key[1],\n value: max,\n })\n }\n return constraints.length ? constraints : undefined\n}\n\nexport const getOptionsValue = (f: FilterValueWithOptions, prefix: string) => {\n const displayOption = f.options.find((opt) => opt.value === f.value)\n const displayValue = displayOption ? displayOption.text : ''\n const key = [`${prefix}${f.name}`]\n const value = [`\"${f.value}\"`]\n\n return {\n key,\n value,\n displayValue,\n }\n}\n\nexport const getMultiselectValues = (f: FilterValueWithOptions, prefix: string) => {\n const MAX_VALUES = 3\n const splitValues = (<string>f.value).split(',')\n let displayValue = splitValues\n .map((v) => {\n const displayOption = f.options.find((opt) => opt.value === v)\n return displayOption ? displayOption.text : ''\n })\n .filter((_v, i) => {\n return i < MAX_VALUES\n })\n .join(', ')\n\n displayValue =\n splitValues.length > MAX_VALUES ? `${displayValue} + ${splitValues.length - MAX_VALUES} more` : displayValue\n\n const value = splitValues.map((v) => `\"${v}\"`)\n const key = [`${prefix}${f.name}`]\n\n return {\n key,\n value,\n displayValue,\n }\n}\n\nexport const setSelectedGranularDateRange = (f: GranularDateRangeFilterValue, prefix: string) => {\n const startValue = f.value.start || 'Open start'\n const endValue = f.value.end || 'Open end'\n const quickFilterValue = f.value.quickFilter?.value\n const quickFilterDisplay = f.value.quickFilter?.display\n const granularityValue = f.value.granularity.value\n const name = `${prefix}${f.name}`\n\n const key = [`${name}.start`, `${name}.end`, `${name}.granularity`]\n const value = [`\"${startValue}\"`, `\"${endValue}\"`, `\"${granularityValue}\"`]\n const constraints = setMinMaxContraints(f, key)\n\n let displayValue\n const granularityDisplay = f.value.granularity.display\n if (quickFilterValue && quickFilterValue !== 'none' && quickFilterDisplay) {\n key.push(`${name}.quick-filter`)\n value.push(`\"${quickFilterValue}\"`)\n displayValue = `${quickFilterDisplay}: ${granularityDisplay}`\n } else {\n const displayStartValue = setDateDisplayFormat(startValue)\n const displayEndValue = setDateDisplayFormat(endValue)\n displayValue = `${displayStartValue} - ${displayEndValue}: ${granularityDisplay}`\n }\n\n const { disabled, cantRemoveClass, displayValue: disabledDisplayValue } = disabledDateRange(f, value, displayValue)\n\n return {\n key,\n value,\n displayValue: disabledDisplayValue || displayValue,\n disabled,\n constraints,\n cantRemoveClass,\n }\n}\n\nexport const getSelectedDate = (f: DateFilterValue, prefix: string) => {\n const key = [`${prefix}${f.name}`]\n const value = [`\"${f.value}\"`]\n const displayValue = setDateDisplayFormat(<string>f.value)\n const constraints = setMinMaxContraints(f, key, true)\n\n const { disabled, cantRemoveClass, displayValue: disabledDisplayValue } = disabledDate(f, value, displayValue)\n return {\n key,\n value,\n displayValue: disabledDisplayValue || displayValue,\n disabled,\n constraints,\n cantRemoveClass,\n }\n}\n\nexport const disabledDateRange = (f: DateRangeFilterValue | DateFilterValue, value: string[], displayValue: string) => {\n const { min, max } = f\n if (min && (<string>value[0]).includes(min) && max && (<string>value[1]).includes(max)) {\n return {\n disabled: true,\n cantRemoveClass: ' interactive-remove-filter-button--disabled',\n displayValue: `${displayValue} (maximum range)`,\n }\n }\n return {\n disabled: false,\n cantRemoveClass: '',\n displayValue,\n }\n}\n\nexport const disabledDate = (f: DateFilterValue, value: (string | DateRange)[], displayValue: string) => {\n const { min, max } = <DateFilterValue>f\n\n if ((min && (<string>value[0]).includes(min)) || (max && (<string>value[0]).includes(max))) {\n let valueType\n if (min && (<string>value[0]).includes(min)) valueType = 'min'\n if (max && (<string>value[0]).includes(max)) valueType = 'max'\n\n return {\n disabled: true,\n cantRemoveClass: ' interactive-remove-filter-button--disabled',\n displayValue: `${displayValue} (${valueType} date)`,\n }\n }\n return {\n disabled: false,\n cantRemoveClass: '',\n displayValue,\n }\n}\n\nexport const getQuerySummary = (reqQuery: Dict<string>, filters: FilterValue[]) => {\n const prefix = 'filters.'\n\n return filters\n .filter(\n (f) => reqQuery[`filters.${f.name}`] || reqQuery[`filters.${f.name}.start`] || reqQuery[`filters.${f.name}.end`],\n )\n .map((f) => {\n let { value } = f\n\n if (f.type.toLowerCase() === FilterType.multiselect.toLowerCase()) {\n value = <string>getMultiselectValues(<MultiselectFilterValue>f, 'filters').displayValue\n }\n\n if (\n f.type.toLowerCase() === FilterType.autocomplete.toLowerCase() ||\n f.type.toLowerCase() === FilterType.radio.toLowerCase() ||\n f.type.toLowerCase() === FilterType.select.toLowerCase()\n ) {\n value = <string>getOptionsValue(<FilterValueWithOptions>f, prefix).displayValue\n }\n\n if (f.type.toLowerCase() === FilterType.date.toLowerCase()) {\n value = setDateDisplayFormat(<string>f.value)\n }\n\n if (f.type.toLowerCase() === FilterType.dateRange.toLowerCase()) {\n value = setSelectedDateRange(<DateRangeFilterValue>f, prefix).displayValue\n }\n\n if (f.type.toLowerCase() === FilterType.granularDateRange.toLowerCase()) {\n value = setSelectedGranularDateRange(<GranularDateRangeFilterValue>f, prefix).displayValue\n }\n\n return {\n id: f.name,\n name: f.text,\n value: <string>value,\n }\n })\n}\n\nexport default {\n getSelectedFilters,\n getQuerySummary,\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["DateMapper", "DateRangeFilterUtils"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/components/_filters/filtersTypeEnum.ts"],
|
|
4
4
|
"sourcesContent": ["export enum FiltersType {\n INTERACTIVE = 'interactive',\n REQUEST = 'request',\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAK,cAAL,kBAAKA,iBAAL;AACL,EAAAA,aAAA,iBAAc;AACd,EAAAA,aAAA,aAAU;AAFA,SAAAA;AAAA,GAAA;",
|
|
6
6
|
"names": ["FiltersType"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/components/_filters/types.d.ts"],
|
|
4
4
|
"sourcesContent": ["import { Granularity, QuickFilters } from '../_inputs/granular-date-range/types'\nimport { FilterType } from './filter-input/enum'\nimport RelativeDateRange from '../_inputs/date-range/types'\n\nexport interface FilterOption {\n value: string\n text: string\n disabled?: boolean\n selected?: boolean\n sortedAsc?: boolean\n}\n\nexport type FilterValue =\n | TextFilterValue\n | FilterValueWithOptions\n | MultiselectFilterValue\n | DateFilterValue\n | DateRangeFilterValue\n | GranularDateRangeFilterValue\n\nexport type FilterValueType = string | DateRange | GranularDateRange | null\nexport interface BaseFilterValue {\n text: string\n name: string\n type: FilterType\n value: FilterValueType\n mandatory?: boolean | undefined\n index?: number | undefined\n}\n\nexport interface TextFilterValue extends BaseFilterValue {\n minimumLength?: number | undefined\n pattern?: string | undefined\n}\n\nexport interface FilterValueWithOptions extends BaseFilterValue {\n options: Array<FilterOption>\n staticOptionNameValue?: string\n dynamicResourceEndpoint?: string\n}\n\nexport interface MultiselectFilterValue extends Omit<BaseFilterValue, 'value'>, FilterValueWithOptions {\n value: string | null\n values: string[]\n}\n\nexport interface DateFilterValue extends Omit<BaseFilterValue, 'value'> {\n value: string | null\n min?: string\n max?: string\n}\n\nexport interface DateRangeFilterValue extends Omit<BaseFilterValue, 'value'> {\n value: DateRange\n min?: string\n max?: string\n relativeOptions?: { value: string; text: string; disabled?: boolean }[]\n}\n\nexport interface GranularDateRangeFilterValue extends Omit<BaseFilterValue, 'value'> {\n value: GranularDateRange\n min?: string\n max?: string\n relativeOptions?: { value: string; text: string; disabled?: boolean }[]\n quickFilterOptions?: { value: string; text: string; disabled?: boolean }[]\n granularityOptions?: { value: string; text: string }[]\n}\n\nexport interface SelectedFilter {\n text: string\n href: string\n classes: string\n}\n\nexport interface DateRange {\n start: string\n end: string\n relative?: RelativeDateRange | undefined\n}\n\nexport interface GranularDateRange extends DateRange {\n granularity: GranularDateRangeGranularityValue\n quickFilter?: GranularDateRangeQuickFilterValue\n partialDate?: PartialDate\n}\n\nexport interface PartialDate {\n start: boolean\n end: boolean\n}\n\ninterface GranularDateRangeGranularityValue {\n value: Granularity\n display: string\n}\n\nexport interface GranularDateRangeQuickFilterValue {\n value: QuickFilters\n display: string\n}\n\nexport interface FilterOptions {\n filters: Array<FilterValue>\n selectedFilters: Array<SelectedFilter>\n urlWithNoFilters: string\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../dpr/components/_filters/utils.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Request, Response } from 'express'\nimport { GranularDateRangeQuickFilterValue } from './types'\nimport { FilterType } from './filter-input/enum'\nimport type { components } from '../../types/api'\nimport type { FilterOption } from './filter-input/types'\nimport type {\n DateFilterValue,\n FilterValueType,\n DateRangeFilterValue,\n FilterValue,\n MultiselectFilterValue,\n GranularDateRangeFilterValue,\n GranularDateRange,\n GranularDateRangeGranularityValue,\n FilterValueWithOptions,\n} from './types'\nimport ReportQuery, { DEFAULT_FILTERS_PREFIX } from '../../types/ReportQuery'\n\nimport SelectedFiltersUtils from './filters-selected/utils'\nimport DateRangeInputUtils from '../_inputs/date-range/utils'\nimport DateInputUtils from '../_inputs/date-input/utils'\nimport GranularDateRangeInputUtils from '../_inputs/granular-date-range/utils'\nimport AutocompleteUtils from '../_inputs/autocomplete-text-input/utils'\nimport MultiSelectUtils from '../_inputs/multi-select/utils'\nimport { Granularity, QuickFilters } from '../_inputs/granular-date-range/types'\nimport PersonalistionUtils from '../../utils/Personalisation/personalisationUtils'\nimport createUrlForParameters from '../../utils/urlHelper'\nimport { Services } from '../../types/Services'\nimport { FiltersType } from './filtersTypeEnum'\nimport LocalsHelper from '../../utils/localsHelper'\n\n/**\n * Given a FilterValue[], will update the values to match the req.query values if present\n *\n * @param {FilterValue[]} filters\n * @param {Request} req\n * @param {string} [prefix='filters.']\n * @return {*} {FilterValue[]}\n */\nexport const setFilterValuesFromRequest = (\n filters: FilterValue[],\n req: Request,\n prefix = 'filters.',\n): FilterValue[] => {\n const { preventDefault } = req.query\n\n if (Object.keys(req.query).every((key) => !key.includes(prefix)) && !preventDefault) {\n return filters\n }\n\n return filters.map((filter: FilterValue) => {\n let requestfilterValue: FilterValueType\n let requestfilterValues: string[] | undefined\n let requestOptionValue: string | undefined\n\n const type = filter.type.toLowerCase()\n switch (type) {\n case FilterType.dateRange.toLowerCase():\n requestfilterValue = DateRangeInputUtils.setValueFromRequest(<DateRangeFilterValue>filter, req, prefix)\n break\n\n case FilterType.granularDateRange.toLowerCase():\n requestfilterValue = GranularDateRangeInputUtils.setValueFromRequest(\n <GranularDateRangeFilterValue>filter,\n req,\n prefix,\n )\n break\n\n case FilterType.date.toLowerCase():\n requestfilterValue = DateInputUtils.setValueFromRequest(<DateFilterValue>filter, req, prefix)\n break\n\n case FilterType.multiselect.toLowerCase():\n ;({ requestfilterValue, requestfilterValues } = MultiSelectUtils.setValueFromRequest(\n <MultiselectFilterValue>filter,\n req,\n prefix,\n ))\n break\n\n case FilterType.autocomplete.toLowerCase(): {\n ;({ requestfilterValue, requestOptionValue } = AutocompleteUtils.setValueFromRequest(\n <FilterValueWithOptions>filter,\n req,\n prefix,\n ))\n break\n }\n\n default:\n requestfilterValue = <string>req.query[`${prefix}${filter.name}`]\n break\n }\n\n let value: FilterValueType = null\n if (requestfilterValue) {\n value = requestfilterValue\n } else if (preventDefault) {\n value = ''\n }\n\n return {\n ...filter,\n value,\n ...(requestfilterValues && { values: requestfilterValues }),\n ...(requestOptionValue && { staticOptionNameValue: requestOptionValue }),\n }\n })\n}\n\nexport const setFilterQueryFromFilterDefinition = (\n fields: components['schemas']['FieldDefinition'][],\n interactive?: boolean,\n) => {\n let filterFields: components['schemas']['FieldDefinition'][] = fields.filter((f) => f.filter)\n if (interactive) {\n filterFields = filterFields.filter(\n (f) => (<components['schemas']['FilterDefinition'] & { interactive?: boolean }>f.filter).interactive,\n )\n }\n\n return filterFields\n .filter((field) => field.filter !== undefined)\n .filter((field) => (<components['schemas']['FilterDefinition']>field.filter).defaultValue !== undefined)\n .map((field) => {\n const filter = <components['schemas']['FilterDefinition']>field.filter\n const type = filter.type.toLocaleLowerCase()\n\n switch (type) {\n case FilterType.dateRange.toLowerCase():\n return DateRangeInputUtils.getQueryFromDefinition(filter, field.name, DEFAULT_FILTERS_PREFIX)\n\n case FilterType.multiselect.toLowerCase():\n return MultiSelectUtils.getQueryFromDefinition(filter, field.name, DEFAULT_FILTERS_PREFIX)\n\n case FilterType.granularDateRange.toLowerCase(): {\n const startEndParams = DateRangeInputUtils.getQueryFromDefinition(filter, field.name, DEFAULT_FILTERS_PREFIX)\n return GranularDateRangeInputUtils.getQueryFromDefinition(\n filter as unknown as components['schemas']['FilterDefinition'] & {\n defaultGranularity: Granularity\n defaultQuickFilterValue: QuickFilters\n },\n field.name,\n DEFAULT_FILTERS_PREFIX,\n startEndParams,\n )\n }\n\n default:\n return `${DEFAULT_FILTERS_PREFIX}${field.name}=${filter.defaultValue}`\n }\n })\n .join('&')\n}\n\nexport const getFiltersFromDefinition = (\n fields: components['schemas']['FieldDefinition'][],\n interactive?: boolean,\n): FilterValue[] => {\n const filters = fields\n .filter((f) => f.filter)\n .filter((f) => {\n if (interactive !== undefined) {\n if (f.filter?.interactive === undefined) {\n return !interactive\n }\n return interactive === f.filter.interactive\n }\n return true\n })\n .map((f) => {\n const { display: text, name } = f\n const filter = <components['schemas']['FilterDefinition']>f.filter\n const { type, staticOptions, dynamicOptions, defaultValue, mandatory, pattern, index } = filter\n\n const options: FilterOption[] = staticOptions\n ? staticOptions.map((opt) => {\n return { value: opt.name, text: opt.display }\n })\n : []\n\n let filterData: FilterValue = {\n text,\n name,\n type: type as FilterType,\n value: defaultValue || null,\n mandatory: mandatory || false,\n minimumLength: dynamicOptions?.minimumLength,\n pattern,\n index,\n }\n\n const noFilterOption = {\n value: 'no-filter',\n text: 'None',\n disabled: false,\n }\n\n switch (type) {\n case FilterType.autocomplete.toLowerCase():\n filterData = {\n ...filterData,\n options,\n }\n break\n\n case FilterType.radio:\n if (!mandatory) options.unshift(noFilterOption)\n filterData = {\n ...filterData,\n options,\n }\n break\n\n case FilterType.select: {\n if (!mandatory) options.unshift(noFilterOption)\n options.unshift({\n value: '',\n text: 'Select your option',\n disabled: true,\n selected: true,\n })\n\n filterData = {\n ...filterData,\n options,\n }\n break\n }\n\n case FilterType.multiselect.toLowerCase():\n filterData = {\n ...filterData,\n options,\n values: defaultValue ? defaultValue.split(',') : [],\n }\n break\n\n case FilterType.dateRange.toLowerCase():\n filterData = DateRangeInputUtils.getFilterFromDefinition(filter, filterData)\n break\n\n case FilterType.date.toLowerCase():\n filterData = DateInputUtils.getFilterFromDefinition(filter, filterData)\n break\n\n case FilterType.granularDateRange.toLocaleLowerCase(): {\n filterData = GranularDateRangeInputUtils.getFilterFromDefinition(filter, filterData)\n break\n }\n\n default:\n break\n }\n\n return filterData\n })\n\n const orderedFilters = orderFilters(filters)\n return orderedFilters\n}\n\nconst orderFilters = (filterValues: FilterValue[]) => {\n const noIndexFilters = filterValues.filter((f) => f.index === undefined)\n const indexFilters = filterValues.filter((f) => f.index !== undefined)\n indexFilters.forEach((f) => {\n if (f.index !== undefined) noIndexFilters.splice(f.index, 0, f)\n })\n return noIndexFilters\n}\n\nexport const setRequestQueryFromFilterValues = (filterValues: FilterValue[], verbose = false) => {\n const requestQuery = filterValues\n .filter((fv) => fv.value)\n .reduce((acc, curr) => {\n const { value, name, type } = curr\n const filterPrefix = `filters.${name}`\n switch (type) {\n case FilterType.granularDateRange.toLowerCase():\n {\n const granularDateRangeValue = <GranularDateRange>value\n Object.keys(granularDateRangeValue).forEach((key) => {\n let v = granularDateRangeValue[key as keyof GranularDateRange]\n if (key.includes('partialDate')) {\n acc = {\n ...acc,\n }\n } else {\n if (key.includes('granularity') || key.includes('quickFilter')) {\n v = (<GranularDateRangeGranularityValue | GranularDateRangeQuickFilterValue>v).value\n }\n acc = {\n ...acc,\n [`${filterPrefix}.${key}`]: v,\n }\n }\n })\n }\n break\n case FilterType.dateRange.toLowerCase():\n if (value) {\n Object.keys(value).forEach((key) => {\n const attrKey = !verbose && key.includes('relative') ? undefined : `${filterPrefix}.${key}`\n const attrValue = value[key as keyof FilterValueType]\n if (attrKey) {\n acc = {\n ...acc,\n [`${attrKey}`]: attrValue,\n }\n }\n })\n }\n break\n case FilterType.multiselect.toLowerCase():\n acc = {\n ...acc,\n [`${filterPrefix}`]: (<string>value).split(','),\n }\n break\n default:\n acc = {\n ...acc,\n [`${filterPrefix}`]: value,\n }\n break\n }\n return acc\n }, {})\n\n return requestQuery\n}\n\nexport const redirectWithDefaultFilters = (\n reportQuery: ReportQuery,\n variantDefinition: components['schemas']['VariantDefinition'],\n response: Response,\n request: Request,\n) => {\n const defaultFilters: Record<string, string> = {}\n const { specification } = variantDefinition\n const fields = specification ? specification.fields : []\n const { preventDefault } = request.query\n const hasNoQueryFilters = Object.keys(reportQuery.filters).length === 0 && !preventDefault\n if (hasNoQueryFilters) {\n fields\n .filter((f) => f.filter && f.filter.defaultValue)\n .forEach((f) => {\n const { filter } = f\n if (filter) {\n if (filter.type.toLowerCase() === FilterType.dateRange.toLowerCase()) {\n const { defaultValue } = <components['schemas']['FilterDefinition']>filter\n const dates = defaultValue ? defaultValue.split(' - ') : ''\n\n if (dates.length >= 1) {\n // eslint-disable-next-line prefer-destructuring\n defaultFilters[`${DEFAULT_FILTERS_PREFIX}${f.name}.start`] = dates[0]\n\n if (dates.length >= 2) {\n // eslint-disable-next-line prefer-destructuring\n defaultFilters[`${DEFAULT_FILTERS_PREFIX}${f.name}.end`] = dates[1]\n }\n }\n } else {\n defaultFilters[`${DEFAULT_FILTERS_PREFIX}${f.name}`] = filter.defaultValue || ''\n }\n }\n })\n }\n\n if (Object.keys(defaultFilters).length > 0) {\n const querystring = createUrlForParameters(reportQuery.toRecordWithFilterPrefix(), defaultFilters, fields)\n response.redirect(`${request.baseUrl}${request.path}${querystring}`)\n return true\n }\n\n return false\n}\n\nexport const getPersonalisedFilters = async (\n filters: FilterValue[],\n req: Request,\n res: Response,\n services: Services,\n filtersType: FiltersType,\n) => {\n const { reportId, id } = req.params\n const { dprUser } = LocalsHelper.getValues(res)\n const defaultFilterValues = await services.defaultFilterValuesService.get(dprUser.id, reportId, id, filtersType)\n let defaultFilters = filters\n if (defaultFilterValues) {\n const personalisedFilters = PersonalistionUtils.setFilterValuesFromSavedDefaults(filters, [], defaultFilterValues)\n defaultFilters = personalisedFilters.filters\n }\n\n return { filters: defaultFilters, defaultFilterValues }\n}\n\nexport const getFilters = async ({\n fields,\n req,\n res,\n prefix = 'filters.',\n services,\n filtersType,\n}: {\n fields: components['schemas']['FieldDefinition'][]\n req: Request\n res?: Response | undefined\n prefix?: string\n services?: Services | undefined\n filtersType: FiltersType\n}) => {\n // 1. Set the filters from the product definition\n let filters = await getFiltersFromDefinition(fields, filtersType === FiltersType.INTERACTIVE)\n\n let hasDefaults\n let canSaveDefaults = false\n if (services && res && res.locals['saveDefaultsEnabled']) {\n // 2. If there are personalised filters, overwrite fiters with the personalised filter values.\n const { filters: personalisedFilterValues, defaultFilterValues } = await getPersonalisedFilters(\n filters,\n req,\n res,\n services,\n filtersType,\n )\n filters = personalisedFilterValues\n hasDefaults = defaultFilterValues && defaultFilterValues.length > 0\n canSaveDefaults = true\n }\n\n // If there is a request query, overwrite the filters with the query params\n if (req.query) {\n filters = setFilterValuesFromRequest(filters, req)\n }\n\n // Set the selected filters\n const selectedFilters = SelectedFiltersUtils.getSelectedFilters(filters, prefix)\n\n return {\n filters,\n selectedFilters,\n hasDefaults,\n canSaveDefaults,\n }\n}\n\nexport default {\n getFiltersFromDefinition,\n setFilterValuesFromRequest,\n getFilters,\n setFilterQueryFromFilterDefinition,\n redirectWithDefaultFilters,\n setRequestQueryFromFilterValues,\n getPersonalisedFilters,\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["import_utils", "DateRangeInputUtils", "GranularDateRangeInputUtils", "DateInputUtils", "MultiSelectUtils", "AutocompleteUtils", "createUrlForParameters", "LocalsHelper", "PersonalistionUtils", "SelectedFiltersUtils"]
|