@hmcts/rpx-xui-common-lib 2.0.19 → 2.0.21
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/README.md +1 -1
- package/esm2022/lib/components/accessibility/accessibility.component.mjs +725 -0
- package/esm2022/lib/components/checkbox-list/checkbox-list.component.mjs +232 -0
- package/esm2022/lib/components/contact-details/contact-details.component.mjs +104 -0
- package/esm2022/lib/components/cookie-banner/cookie-banner.component.mjs +151 -0
- package/esm2022/lib/components/due-date/due-date.component.mjs +141 -0
- package/esm2022/lib/components/exui-main-wrapper/exui-page-wrapper.component.mjs +80 -0
- package/esm2022/lib/components/find-location/find-location.component.mjs +220 -0
- package/esm2022/lib/components/find-person/find-person.component.mjs +234 -0
- package/esm2022/lib/components/find-service/find-service.component.mjs +193 -0
- package/{esm2020 → esm2022}/lib/components/find-task-name/find-task-name.component.mjs +53 -53
- package/{esm2020 → esm2022}/lib/components/generic-filter/generic-filter-utils.mjs +1 -1
- package/esm2022/lib/components/generic-filter/generic-filter.component.mjs +1184 -0
- package/esm2022/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.mjs +56 -0
- package/esm2022/lib/components/invite-user-form/invite-user-form.component.mjs +51 -0
- package/esm2022/lib/components/invite-user-permissions/invite-user-permission.component.mjs +54 -0
- package/esm2022/lib/components/loading-spinner/loading-spinner.component.mjs +33 -0
- package/esm2022/lib/components/pagination/pagination.component.mjs +92 -0
- package/esm2022/lib/components/search-judicials/search-judicials.component.mjs +185 -0
- package/esm2022/lib/components/search-location/search-location.component.mjs +237 -0
- package/esm2022/lib/components/search-service/search-service.component.mjs +83 -0
- package/esm2022/lib/components/search-venue/search-venue.component.mjs +190 -0
- package/esm2022/lib/components/selected-case/selected-case.component.mjs +379 -0
- package/esm2022/lib/components/selected-case-confirm/selected-case-confirm.component.mjs +135 -0
- package/esm2022/lib/components/selected-case-list/selected-case-list.component.mjs +98 -0
- package/esm2022/lib/components/service-message/service-message.component.mjs +51 -0
- package/esm2022/lib/components/service-messages/service-messages.component.mjs +76 -0
- package/esm2022/lib/components/share-case/share-case.component.mjs +420 -0
- package/esm2022/lib/components/share-case-confirm/share-case-confirm.component.mjs +85 -0
- package/esm2022/lib/components/tab/tab.component.mjs +40 -0
- package/esm2022/lib/components/tc-confirm/tc-confirm.component.mjs +66 -0
- package/esm2022/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.mjs +17 -0
- package/esm2022/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.mjs +17 -0
- package/esm2022/lib/components/terms-and-conditions/terms-and-conditions.component.mjs +58 -0
- package/esm2022/lib/components/user-details/user-details.component.mjs +273 -0
- package/esm2022/lib/components/user-list/user-list.component.mjs +100 -0
- package/esm2022/lib/components/user-select/user-select.component.mjs +94 -0
- package/esm2022/lib/components/write-address/write-address.component.mjs +342 -0
- package/esm2022/lib/components/write-address-inputs/write-address-inputs.component.mjs +165 -0
- package/esm2022/lib/directives/feature-toggle/feature-toggle.directive.mjs +41 -0
- package/{esm2020 → esm2022}/lib/directives/let/let.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/exui-common-lib.module.mjs +15 -15
- package/esm2022/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.mjs +55 -0
- package/esm2022/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.mjs +137 -0
- package/esm2022/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.mjs +121 -0
- package/esm2022/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.mjs +46 -0
- package/esm2022/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.mjs +79 -0
- package/esm2022/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.mjs +79 -0
- package/esm2022/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.mjs +45 -0
- package/esm2022/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.mjs +71 -0
- package/esm2022/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.mjs +84 -0
- package/esm2022/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.mjs +48 -0
- package/esm2022/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.mjs +42 -0
- package/esm2022/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.mjs +80 -0
- package/esm2022/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.mjs +185 -0
- package/esm2022/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.mjs +57 -0
- package/esm2022/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.mjs +111 -0
- package/esm2022/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.mjs +140 -0
- package/esm2022/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.mjs +34 -0
- package/esm2022/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.mjs +129 -0
- package/esm2022/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.mjs +204 -0
- package/esm2022/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.mjs +60 -0
- package/esm2022/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.mjs +58 -0
- package/esm2022/lib/gov-ui/directives/remove-host.directive.mjs +30 -0
- package/{esm2020 → esm2022}/lib/gov-ui/gov-ui.service.mjs +5 -5
- package/esm2022/lib/gov-ui/util/helpers/html-templates.helper.mjs +22 -0
- package/{esm2020 → esm2022}/lib/gov-ui/validators/checkboxes-be-checked.validator.mjs +1 -1
- package/{esm2020 → esm2022}/lib/gov-ui/validators/date.validator.mjs +1 -1
- package/esm2022/lib/gov-ui/validators/radio-group.validator.mjs +15 -0
- package/esm2022/lib/models/address-option.model.mjs +21 -0
- package/{esm2020 → esm2022}/lib/pipes/capitalize/capitalize.pipe.mjs +4 -4
- package/esm2022/lib/services/address/address-parser.mjs +76 -0
- package/esm2022/lib/services/address/address.service.mjs +55 -0
- package/esm2022/lib/services/case-sharing-state/case-sharing-state.service.mjs +170 -0
- package/{esm2020 → esm2022}/lib/services/cookie/cookie.service.mjs +6 -6
- package/{esm2020 → esm2022}/lib/services/feature-toggle/feature-toggle.guard.mjs +5 -5
- package/{esm2020 → esm2022}/lib/services/feature-toggle/feature-toggle.service.mjs +4 -4
- package/esm2022/lib/services/feature-toggle/launch-darkly.service.mjs +65 -0
- package/esm2022/lib/services/filter/filter.service.mjs +95 -0
- package/esm2022/lib/services/find-person/find-person.service.mjs +83 -0
- package/esm2022/lib/services/google-analytics/google-analytics.service.mjs +68 -0
- package/esm2022/lib/services/google-tag-manager/google-tag-manager.service.mjs +71 -0
- package/{esm2020 → esm2022}/lib/services/loading/loading.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/locations/location.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/services/manage-session/manage-session.services.mjs +5 -5
- package/esm2022/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.mjs +33 -0
- package/esm2022/lib/services/ref-data/ref-data.service.mjs +34 -0
- package/{esm2020 → esm2022}/lib/services/role-guard/role.guard.mjs +5 -5
- package/{esm2020 → esm2022}/lib/services/role-guard/role.service.mjs +4 -4
- package/esm2022/lib/services/storage/session-storage/session-storage.service.mjs +43 -0
- package/esm2022/lib/services/task-name/task-name.service.mjs +35 -0
- package/{esm2020 → esm2022}/lib/services/timeout-notifications/timeout-notifications.service.mjs +5 -5
- package/{fesm2020 → fesm2022}/hmcts-rpx-xui-common-lib.mjs +2823 -2835
- package/fesm2022/hmcts-rpx-xui-common-lib.mjs.map +1 -0
- package/lib/components/checkbox-list/checkbox-list.component.d.ts +1 -1
- package/lib/components/contact-details/contact-details.component.d.ts +1 -1
- package/lib/components/cookie-banner/cookie-banner.component.d.ts +1 -1
- package/lib/components/due-date/due-date.component.d.ts +1 -1
- package/lib/components/exui-main-wrapper/exui-page-wrapper.component.d.ts +1 -1
- package/lib/components/find-location/find-location.component.d.ts +1 -1
- package/lib/components/find-person/find-person.component.d.ts +1 -1
- package/lib/components/find-service/find-service.component.d.ts +1 -1
- package/lib/components/find-task-name/find-task-name.component.d.ts +1 -1
- package/lib/components/generic-filter/generic-filter.component.d.ts +1 -1
- package/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.d.ts +1 -1
- package/lib/components/invite-user-form/invite-user-form.component.d.ts +1 -1
- package/lib/components/invite-user-permissions/invite-user-permission.component.d.ts +1 -1
- package/lib/components/loading-spinner/loading-spinner.component.d.ts +1 -1
- package/lib/components/pagination/pagination.component.d.ts +1 -1
- package/lib/components/search-judicials/search-judicials.component.d.ts +1 -1
- package/lib/components/search-location/search-location.component.d.ts +1 -1
- package/lib/components/search-service/search-service.component.d.ts +1 -1
- package/lib/components/search-venue/search-venue.component.d.ts +1 -1
- package/lib/components/selected-case/selected-case.component.d.ts +1 -1
- package/lib/components/selected-case-confirm/selected-case-confirm.component.d.ts +1 -1
- package/lib/components/selected-case-list/selected-case-list.component.d.ts +1 -1
- package/lib/components/service-message/service-message.component.d.ts +1 -1
- package/lib/components/service-messages/service-messages.component.d.ts +1 -1
- package/lib/components/share-case/share-case.component.d.ts +1 -1
- package/lib/components/share-case-confirm/share-case-confirm.component.d.ts +1 -1
- package/lib/components/tab/tab.component.d.ts +1 -1
- package/lib/components/tc-confirm/tc-confirm.component.d.ts +1 -1
- package/lib/components/terms-and-conditions/terms-and-conditions.component.d.ts +1 -1
- package/lib/components/user-details/user-details.component.d.ts +1 -1
- package/lib/components/user-list/user-list.component.d.ts +1 -1
- package/lib/components/user-select/user-select.component.d.ts +1 -1
- package/lib/components/write-address/write-address.component.d.ts +1 -1
- package/lib/components/write-address-inputs/write-address-inputs.component.d.ts +1 -1
- package/lib/directives/feature-toggle/feature-toggle.directive.d.ts +1 -1
- package/lib/directives/let/let.directive.d.ts +1 -1
- package/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.d.ts +1 -1
- package/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.d.ts +1 -1
- package/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.d.ts +1 -1
- package/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.d.ts +1 -1
- package/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +1 -1
- package/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.d.ts +1 -1
- package/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.d.ts +1 -1
- package/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.d.ts +1 -1
- package/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.d.ts +1 -1
- package/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.d.ts +1 -1
- package/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.d.ts +1 -1
- package/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.d.ts +1 -1
- package/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.d.ts +1 -1
- package/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.d.ts +1 -1
- package/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.d.ts +1 -1
- package/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.d.ts +1 -1
- package/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.d.ts +1 -1
- package/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.d.ts +1 -1
- package/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.d.ts +1 -1
- package/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.d.ts +1 -1
- package/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.d.ts +1 -1
- package/lib/services/feature-toggle/feature-toggle.guard.d.ts +2 -2
- package/lib/services/role-guard/role.guard.d.ts +2 -2
- package/package.json +5 -11
- package/esm2020/lib/components/accessibility/accessibility.component.mjs +0 -737
- package/esm2020/lib/components/checkbox-list/checkbox-list.component.mjs +0 -231
- package/esm2020/lib/components/contact-details/contact-details.component.mjs +0 -107
- package/esm2020/lib/components/cookie-banner/cookie-banner.component.mjs +0 -150
- package/esm2020/lib/components/due-date/due-date.component.mjs +0 -140
- package/esm2020/lib/components/exui-main-wrapper/exui-page-wrapper.component.mjs +0 -79
- package/esm2020/lib/components/find-location/find-location.component.mjs +0 -219
- package/esm2020/lib/components/find-person/find-person.component.mjs +0 -234
- package/esm2020/lib/components/find-service/find-service.component.mjs +0 -192
- package/esm2020/lib/components/generic-filter/generic-filter.component.mjs +0 -1198
- package/esm2020/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.mjs +0 -55
- package/esm2020/lib/components/invite-user-form/invite-user-form.component.mjs +0 -50
- package/esm2020/lib/components/invite-user-permissions/invite-user-permission.component.mjs +0 -54
- package/esm2020/lib/components/loading-spinner/loading-spinner.component.mjs +0 -32
- package/esm2020/lib/components/pagination/pagination.component.mjs +0 -93
- package/esm2020/lib/components/search-judicials/search-judicials.component.mjs +0 -184
- package/esm2020/lib/components/search-location/search-location.component.mjs +0 -236
- package/esm2020/lib/components/search-service/search-service.component.mjs +0 -81
- package/esm2020/lib/components/search-venue/search-venue.component.mjs +0 -188
- package/esm2020/lib/components/selected-case/selected-case.component.mjs +0 -380
- package/esm2020/lib/components/selected-case-confirm/selected-case-confirm.component.mjs +0 -135
- package/esm2020/lib/components/selected-case-list/selected-case-list.component.mjs +0 -98
- package/esm2020/lib/components/service-message/service-message.component.mjs +0 -50
- package/esm2020/lib/components/service-messages/service-messages.component.mjs +0 -75
- package/esm2020/lib/components/share-case/share-case.component.mjs +0 -420
- package/esm2020/lib/components/share-case-confirm/share-case-confirm.component.mjs +0 -85
- package/esm2020/lib/components/tab/tab.component.mjs +0 -39
- package/esm2020/lib/components/tc-confirm/tc-confirm.component.mjs +0 -65
- package/esm2020/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.mjs +0 -16
- package/esm2020/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.mjs +0 -16
- package/esm2020/lib/components/terms-and-conditions/terms-and-conditions.component.mjs +0 -59
- package/esm2020/lib/components/user-details/user-details.component.mjs +0 -281
- package/esm2020/lib/components/user-list/user-list.component.mjs +0 -99
- package/esm2020/lib/components/user-select/user-select.component.mjs +0 -92
- package/esm2020/lib/components/write-address/write-address.component.mjs +0 -345
- package/esm2020/lib/components/write-address-inputs/write-address-inputs.component.mjs +0 -165
- package/esm2020/lib/directives/feature-toggle/feature-toggle.directive.mjs +0 -41
- package/esm2020/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.mjs +0 -54
- package/esm2020/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.mjs +0 -136
- package/esm2020/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.mjs +0 -120
- package/esm2020/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.mjs +0 -45
- package/esm2020/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.mjs +0 -80
- package/esm2020/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.mjs +0 -78
- package/esm2020/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.mjs +0 -45
- package/esm2020/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.mjs +0 -70
- package/esm2020/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.mjs +0 -84
- package/esm2020/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.mjs +0 -47
- package/esm2020/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.mjs +0 -41
- package/esm2020/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.mjs +0 -79
- package/esm2020/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.mjs +0 -188
- package/esm2020/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.mjs +0 -56
- package/esm2020/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.mjs +0 -112
- package/esm2020/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.mjs +0 -141
- package/esm2020/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.mjs +0 -33
- package/esm2020/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.mjs +0 -130
- package/esm2020/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.mjs +0 -204
- package/esm2020/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.mjs +0 -59
- package/esm2020/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.mjs +0 -57
- package/esm2020/lib/gov-ui/directives/remove-host.directive.mjs +0 -30
- package/esm2020/lib/gov-ui/util/helpers/html-templates.helper.mjs +0 -22
- package/esm2020/lib/gov-ui/validators/radio-group.validator.mjs +0 -15
- package/esm2020/lib/models/address-option.model.mjs +0 -21
- package/esm2020/lib/services/address/address-parser.mjs +0 -76
- package/esm2020/lib/services/address/address.service.mjs +0 -55
- package/esm2020/lib/services/case-sharing-state/case-sharing-state.service.mjs +0 -170
- package/esm2020/lib/services/feature-toggle/launch-darkly.service.mjs +0 -65
- package/esm2020/lib/services/filter/filter.service.mjs +0 -95
- package/esm2020/lib/services/find-person/find-person.service.mjs +0 -83
- package/esm2020/lib/services/google-analytics/google-analytics.service.mjs +0 -68
- package/esm2020/lib/services/google-tag-manager/google-tag-manager.service.mjs +0 -71
- package/esm2020/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.mjs +0 -33
- package/esm2020/lib/services/ref-data/ref-data.service.mjs +0 -34
- package/esm2020/lib/services/storage/session-storage/session-storage.service.mjs +0 -43
- package/esm2020/lib/services/task-name/task-name.service.mjs +0 -35
- package/fesm2015/hmcts-rpx-xui-common-lib.mjs +0 -11073
- package/fesm2015/hmcts-rpx-xui-common-lib.mjs.map +0 -1
- package/fesm2020/hmcts-rpx-xui-common-lib.mjs.map +0 -1
- /package/{esm2020 → esm2022}/hmcts-rpx-xui-common-lib.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gov-ui/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gov-ui/components/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gov-ui/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gov-ui/models/checkboxes-model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gov-ui/models/error-messages-model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gov-ui/models/gov-ui-config-model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gov-ui/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gov-ui/models/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gov-ui/models/radio-buttons.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gov-ui/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gov-ui/validators/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/gov-ui/validators/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/address-message.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/address.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/case-share.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/contact-details.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/due-date.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/feature-user.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/filter.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/idle-config.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/location.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/pagination.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/person.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/search-options.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/task-name.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/tcDocument.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/timeout-notification.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/user-access-type.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/user-details.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/user.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/address/address-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/ref-data/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/ref-data/models/ref-data-htmcs-service.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/ref-data/models/ref-data-region.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/window.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { formatDate } from '@angular/common';
|
|
2
|
+
import { ChangeDetectorRef, Component, Input, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import { DateBadgeColour, SECONDS_IN_A_DAY } from '../../models/due-date.model';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "rpx-xui-translation";
|
|
7
|
+
function DueDateComponent_span_0_Template(rf, ctx) { if (rf & 1) {
|
|
8
|
+
i0.ɵɵelementStart(0, "span", 1);
|
|
9
|
+
i0.ɵɵpipe(1, "rpxTranslate");
|
|
10
|
+
i0.ɵɵpipe(2, "rpxTranslate");
|
|
11
|
+
i0.ɵɵtext(3);
|
|
12
|
+
i0.ɵɵpipe(4, "rpxTranslate");
|
|
13
|
+
i0.ɵɵelementEnd();
|
|
14
|
+
} if (rf & 2) {
|
|
15
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
16
|
+
i0.ɵɵproperty("ngClass", ctx_r0.badge)("title", i0.ɵɵpipeBind1(1, 4, ctx_r0.accessibleLabel));
|
|
17
|
+
i0.ɵɵattribute("aria-label", i0.ɵɵpipeBind1(2, 6, ctx_r0.accessibleLabel));
|
|
18
|
+
i0.ɵɵadvance(3);
|
|
19
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 8, ctx_r0.label), "\n");
|
|
20
|
+
} }
|
|
21
|
+
export class DueDateComponent {
|
|
22
|
+
constructor(ref) {
|
|
23
|
+
this.ref = ref;
|
|
24
|
+
/**
|
|
25
|
+
* This should be considered HIGH urgency if there are fewer than this
|
|
26
|
+
* many days until the due date.
|
|
27
|
+
* * Set to 0 if you want it to show HIGH if it was due yesterday.
|
|
28
|
+
* * Set to 1 if you want it to show HIGH if it's due today.
|
|
29
|
+
* * Set to 2 if you want it to show HIGH if it's due tomorrow.
|
|
30
|
+
*
|
|
31
|
+
* Defaults to 0 (ZERO), which means it won't show as HIGH urgency until the
|
|
32
|
+
* due date is in the past.
|
|
33
|
+
*
|
|
34
|
+
* NOTE: If this is higher than the mediumUrgencyCutoff value, MEDIUM urgency
|
|
35
|
+
* will never be shown.
|
|
36
|
+
*
|
|
37
|
+
* ALSO NOTE: Anything overdue is automatically considered HIGH urgency.
|
|
38
|
+
*/
|
|
39
|
+
this.highUrgencyCutoff = 0; // Default
|
|
40
|
+
/**
|
|
41
|
+
* This should be considered MEDIUM urgency if there are fewer than this
|
|
42
|
+
* many days until the due date.
|
|
43
|
+
* * Set to 1 if you want it to show MEDIUM if it's due today.
|
|
44
|
+
* * Set to 2 if you want it to show MEDIUM if it's due tomorrow.
|
|
45
|
+
* * Set to 3 if you want it to show MEDIUM if it's due the day after tomorrow.
|
|
46
|
+
*
|
|
47
|
+
* Defaults to 2, which means it won't show as MEDIUM urgency unless the
|
|
48
|
+
* due date is today or tomorrow.
|
|
49
|
+
*
|
|
50
|
+
* NOTE: If this is lower than the highUrgencyCutoff value, MEDIUM urgency
|
|
51
|
+
* will never be shown.
|
|
52
|
+
*/
|
|
53
|
+
this.mediumUrgencyCutoff = 2;
|
|
54
|
+
}
|
|
55
|
+
get badge() {
|
|
56
|
+
return this.pBadge;
|
|
57
|
+
}
|
|
58
|
+
get label() {
|
|
59
|
+
return this.pLabel;
|
|
60
|
+
}
|
|
61
|
+
get accessibleLabel() {
|
|
62
|
+
return this.pAccessibleLabel;
|
|
63
|
+
}
|
|
64
|
+
get daysDiff() {
|
|
65
|
+
return this.pDaysDiff;
|
|
66
|
+
}
|
|
67
|
+
// Catch any changes to any of the Input() properties.
|
|
68
|
+
ngOnChanges() {
|
|
69
|
+
this.handleInputChanges();
|
|
70
|
+
}
|
|
71
|
+
// checks the data projected into the component
|
|
72
|
+
ngAfterContentChecked() {
|
|
73
|
+
this.ref.detectChanges();
|
|
74
|
+
}
|
|
75
|
+
// Set up the label, urgency class, and accessibility fields.
|
|
76
|
+
handleInputChanges() {
|
|
77
|
+
// If we don't have a dueDate, skip out of here.
|
|
78
|
+
if (!this.dueDate) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
// How many days from today is the due date?
|
|
82
|
+
// Already happened means daysDiff > 0;
|
|
83
|
+
// Today means daysDiff = 0;
|
|
84
|
+
// Yet to come means daysDiff < 0;
|
|
85
|
+
this.pDaysDiff = this.getDaysDifference(this.dueDate, new Date());
|
|
86
|
+
// Is it overdue?
|
|
87
|
+
if (this.daysDiff > 0) {
|
|
88
|
+
this.pBadge = DateBadgeColour.RED;
|
|
89
|
+
const daysLabel = this.daysDiff === 1 ? 'day' : 'days';
|
|
90
|
+
this.pLabel = `+${this.daysDiff} ${daysLabel}`;
|
|
91
|
+
this.pAccessibleLabel = `This task is ${this.daysDiff} ${daysLabel} past its due date`;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// Special label for "Today".
|
|
95
|
+
if (this.daysDiff === 0) {
|
|
96
|
+
this.pLabel = 'TODAY';
|
|
97
|
+
this.pAccessibleLabel = 'This task is due to be completed today';
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.pLabel = `${formatDate(this.dueDate, 'd MMM', 'en-GB')}`;
|
|
101
|
+
this.pAccessibleLabel = `This task is due to be completed by ${formatDate(this.dueDate, 'd MMMM y', 'en-GB')}`;
|
|
102
|
+
}
|
|
103
|
+
if (this.daysDiff + this.highUrgencyCutoff > 0) {
|
|
104
|
+
this.pBadge = DateBadgeColour.RED;
|
|
105
|
+
}
|
|
106
|
+
else if (this.daysDiff + this.mediumUrgencyCutoff > 0) {
|
|
107
|
+
this.pBadge = DateBadgeColour.ORANGE;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
this.pBadge = DateBadgeColour.GREEN;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// This will return the difference between two dates.
|
|
115
|
+
// If fromDate is BEFORE toDate, it will be a positive number.
|
|
116
|
+
// If fromDate is AFTER toDate, it will be a negative number.
|
|
117
|
+
getDaysDifference(fromDate, toDate) {
|
|
118
|
+
const fromEpoch = fromDate.getTime();
|
|
119
|
+
const toEpoch = toDate.getTime();
|
|
120
|
+
const diffSecs = Math.floor((toEpoch - fromEpoch) / 1000);
|
|
121
|
+
return Math.floor(diffSecs / SECONDS_IN_A_DAY);
|
|
122
|
+
}
|
|
123
|
+
static { this.ɵfac = function DueDateComponent_Factory(t) { return new (t || DueDateComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
|
|
124
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DueDateComponent, selectors: [["xuilib-due-date"]], inputs: { dueDate: "dueDate", highUrgencyCutoff: "highUrgencyCutoff", mediumUrgencyCutoff: "mediumUrgencyCutoff" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["class", "due-date hmcts-badge", 3, "ngClass", "title", 4, "ngIf"], [1, "due-date", "hmcts-badge", 3, "ngClass", "title"]], template: function DueDateComponent_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
+
i0.ɵɵtemplate(0, DueDateComponent_span_0_Template, 5, 10, "span", 0);
|
|
126
|
+
} if (rf & 2) {
|
|
127
|
+
i0.ɵɵproperty("ngIf", ctx.dueDate);
|
|
128
|
+
} }, dependencies: [i1.NgClass, i1.NgIf, i2.RpxTranslatePipe], styles: [".due-date{white-space:nowrap}.due-date.hmcts-badge--orange{color:#f47738;border-color:#f47738}\n"], encapsulation: 2 }); }
|
|
129
|
+
}
|
|
130
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DueDateComponent, [{
|
|
131
|
+
type: Component,
|
|
132
|
+
args: [{ selector: 'xuilib-due-date', encapsulation: ViewEncapsulation.None, template: "<span *ngIf=\"dueDate\" class=\"due-date hmcts-badge\" [ngClass]=\"badge\"\n [title]=\"accessibleLabel | rpxTranslate\" [attr.aria-label]=\"accessibleLabel | rpxTranslate\">\n {{label | rpxTranslate}}\n</span>", styles: [".due-date{white-space:nowrap}.due-date.hmcts-badge--orange{color:#f47738;border-color:#f47738}\n"] }]
|
|
133
|
+
}], () => [{ type: i0.ChangeDetectorRef }], { dueDate: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], highUrgencyCutoff: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], mediumUrgencyCutoff: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}] }); })();
|
|
140
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DueDateComponent, { className: "DueDateComponent", filePath: "lib/components/due-date/due-date.component.ts", lineNumber: 12 }); })();
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kdWUtZGF0ZS9kdWUtZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2R1ZS1kYXRlL2R1ZS1kYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQXVCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7OztJQ0hoRiwrQkFDa0c7OztJQUNoRyxZQUNGOztJQUFBLGlCQUFPOzs7SUFGRCxBQUQ2QyxzQ0FBaUIsdURBQ3RCOztJQUM1QyxlQUNGO0lBREUsb0VBQ0Y7O0FEUUEsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixZQUE2QixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQVVuRDs7Ozs7Ozs7Ozs7Ozs7V0FjRztRQUNhLHNCQUFpQixHQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVU7UUFFekQ7Ozs7Ozs7Ozs7OztXQVlHO1FBQ2Esd0JBQW1CLEdBQVcsQ0FBQyxDQUFDO0lBdkNoRCxDQUFDO0lBMkNELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBSUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFJRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENB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QkFBZ0IsQ0FBQyxDQUFDO0lBQ2pELENBQUM7aUZBNUhVLGdCQUFnQjtvRUFBaEIsZ0JBQWdCO1lDWDdCLG9FQUNrRzs7WUFEM0Ysa0NBQWE7OztpRkRXUCxnQkFBZ0I7Y0FONUIsU0FBUzsyQkFDRSxpQkFBaUIsaUJBR1osaUJBQWlCLENBQUMsSUFBSTtrREFZckIsT0FBTztrQkFBdEIsS0FBSztZQWlCVSxpQkFBaUI7a0JBQWhDLEtBQUs7WUFlVSxtQkFBbUI7a0JBQWxDLEtBQUs7O2tGQTFDSyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyQ29udGVudENoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERhdGVCYWRnZUNvbG91ciwgU0VDT05EU19JTl9BX0RBWSB9IGZyb20gJy4uLy4uL21vZGVscy9kdWUtZGF0ZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aWxpYi1kdWUtZGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnZHVlLWRhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnZHVlLWRhdGUuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBEdWVEYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRDaGVja2VkIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFRoZSBkdWUgZGF0ZSB0byB1c2UgYXMgdGhlIGJhc2lzIGZvciByZW5kZXJpbmcgdGhpcyBjb21wb25lbnQuIEl0IGlzXG4gICAqIGNvbXBhcmVkIHRvIHRoZSBjdXJyZW50IGRhdGUgYW5kIGRpc3BsYXllZCBhY2NvcmRpbmdseS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkdWVEYXRlOiBEYXRlO1xuXG4gIC8qKlxuICAgKiBUaGlzIHNob3VsZCBiZSBjb25zaWRlcmVkIEhJR0ggdXJnZW5jeSBpZiB0aGVyZSBhcmUgZmV3ZXIgdGhhbiB0aGlzXG4gICAqIG1hbnkgZGF5cyB1bnRpbCB0aGUgZHVlIGRhdGUuXG4gICAqICAgICogU2V0IHRvIDAgaWYgeW91IHdhbnQgaXQgdG8gc2hvdyBISUdIIGlmIGl0IHdhcyBkdWUgeWVzdGVyZGF5LlxuICAgKiAgICAqIFNldCB0byAxIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgSElHSCBpZiBpdCdzIGR1ZSB0b2RheS5cbiAgICogICAgKiBTZXQgdG8gMiBpZiB5b3Ugd2FudCBpdCB0byBzaG93IEhJR0ggaWYgaXQncyBkdWUgdG9tb3Jyb3cuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIDAgKFpFUk8pLCB3aGljaCBtZWFucyBpdCB3b24ndCBzaG93IGFzIEhJR0ggdXJnZW5jeSB1bnRpbCB0aGVcbiAgICogZHVlIGRhdGUgaXMgaW4gdGhlIHBhc3QuXG4gICAqXG4gICAqIE5PVEU6IElmIHRoaXMgaXMgaGlnaGVyIHRoYW4gdGhlIG1lZGl1bVVyZ2VuY3lDdXRvZmYgdmFsdWUsIE1FRElVTSB1cmdlbmN5XG4gICAqIHdpbGwgbmV2ZXIgYmUgc2hvd24uXG4gICAqXG4gICAqIEFMU08gTk9URTogQW55dGhpbmcgb3ZlcmR1ZSBpcyBhdXRvbWF0aWNhbGx5IGNvbnNpZGVyZWQgSElHSCB1cmdlbmN5LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGhpZ2hVcmdlbmN5Q3V0b2ZmOiBudW1iZXIgPSAwOyAvLyBEZWZhdWx0XG5cbiAgLyoqXG4gICAqIFRoaXMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgTUVESVVNIHVyZ2VuY3kgaWYgdGhlcmUgYXJlIGZld2VyIHRoYW4gdGhpc1xuICAgKiBtYW55IGRheXMgdW50aWwgdGhlIGR1ZSBkYXRlLlxuICAgKiAgICAqIFNldCB0byAxIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgTUVESVVNIGlmIGl0J3MgZHVlIHRvZGF5LlxuICAgKiAgICAqIFNldCB0byAyIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgTUVESVVNIGlmIGl0J3MgZHVlIHRvbW9ycm93LlxuICAgKiAgICAqIFNldCB0byAzIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgTUVESVVNIGlmIGl0J3MgZHVlIHRoZSBkYXkgYWZ0ZXIgdG9tb3Jyb3cuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIDIsIHdoaWNoIG1lYW5zIGl0IHdvbid0IHNob3cgYXMgTUVESVVNIHVyZ2VuY3kgdW5sZXNzIHRoZVxuICAgKiBkdWUgZGF0ZSBpcyB0b2RheSBvciB0b21vcnJvdy5cbiAgICpcbiAgICogTk9URTogSWYgdGhpcyBpcyBsb3dlciB0aGFuIHRoZSBoaWdoVXJnZW5jeUN1dG9mZiB2YWx1ZSwgTUVESVVNIHVyZ2VuY3lcbiAgICogd2lsbCBuZXZlciBiZSBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBtZWRpdW1VcmdlbmN5Q3V0b2ZmOiBudW1iZXIgPSAyO1xuXG4gIC8vIFRoZSBITUNUUyBiYWRnZSBjbGFzcywgdXNlZCBmb3IgY29sb3VyYXRpb24uXG4gIHByaXZhdGUgcEJhZGdlOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgYmFkZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wQmFkZ2U7XG4gIH1cblxuICAvLyBUaGUgdGV4dHVhbCBsYWJlbCB0byBkaXNwbGF5IGluIHRoZSBjb21wb25lbnQuXG4gIHByaXZhdGUgcExhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wTGFiZWw7XG4gIH1cblxuICAvLyBUaGUgYWNjZXNzaWJsZSBsYWJlbCwgd2hpY2ggaXMgYWxzbyB1c2VkIGZvciB0aGUgdG9vbHRpcC5cbiAgcHJpdmF0ZSBwQWNjZXNzaWJsZUxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgYWNjZXNzaWJsZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucEFjY2Vzc2libGVMYWJlbDtcbiAgfVxuXG4gIC8vIEhvdyBtYW55IGRheXMgdGhlIGR1ZURhdGUgdmFyaWVzIGZyb20gdG9kYXkuXG4gIHByaXZhdGUgcERheXNEaWZmOiBudW1iZXI7XG4gIHB1YmxpYyBnZXQgZGF5c0RpZmYoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wRGF5c0RpZmY7XG4gIH1cblxuICAvLyBDYXRjaCBhbnkgY2hhbmdlcyB0byBhbnkgb2YgdGhlIElucHV0KCkgcHJvcGVydGllcy5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyBjaGVja3MgdGhlIGRhdGEgcHJvamVjdGVkIGludG8gdGhlIGNvbXBvbmVudFxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8vIFNldCB1cCB0aGUgbGFiZWwsIHVyZ2VuY3kgY2xhc3MsIGFuZCBhY2Nlc3NpYmlsaXR5IGZpZWxkcy5cbiAgcHJpdmF0ZSBoYW5kbGVJbnB1dENoYW5nZXMoKSB7XG4gICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGR1ZURhdGUsIHNraXAgb3V0IG9mIGhlcmUuXG4gICAgaWYgKCF0aGlzLmR1ZURhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBIb3cgbWFueSBkYXlzIGZyb20gdG9kYXkgaXMgdGhlIGR1ZSBkYXRlP1xuICAgIC8vIEFscmVhZHkgaGFwcGVuZWQgbWVhbnMgZGF5c0RpZmYgPiAwO1xuICAgIC8vIFRvZGF5IG1lYW5zIGRheXNEaWZmID0gMDtcbiAgICAvLyBZZXQgdG8gY29tZSBtZWFucyBkYXlzRGlmZiA8IDA7XG4gICAgdGhpcy5wRGF5c0RpZmYgPSB0aGlzLmdldERheXNEaWZmZXJlbmNlKHRoaXMuZHVlRGF0ZSwgbmV3IERhdGUoKSk7XG5cbiAgICAvLyBJcyBpdCBvdmVyZHVlP1xuICAgIGlmICh0aGlzLmRheXNEaWZmID4gMCkge1xuICAgICAgdGhpcy5wQmFkZ2UgPSBEYXRlQmFkZ2VDb2xvdXIuUkVEO1xuICAgICAgY29uc3QgZGF5c0xhYmVsID0gdGhpcy5kYXlzRGlmZiA9PT0gMSA/ICdkYXknIDogJ2RheXMnO1xuICAgICAgdGhpcy5wTGFiZWwgPSBgKyR7dGhpcy5kYXlzRGlmZn0gJHtkYXlzTGFiZWx9YDtcbiAgICAgIHRoaXMucEFjY2Vzc2libGVMYWJlbCA9IGBUaGlzIHRhc2sgaXMgJHt0aGlzLmRheXNEaWZmfSAke2RheXNMYWJlbH0gcGFzdCBpdHMgZHVlIGRhdGVgO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTcGVjaWFsIGxhYmVsIGZvciBcIlRvZGF5XCIuXG4gICAgICBpZiAodGhpcy5kYXlzRGlmZiA9PT0gMCkge1xuICAgICAgICB0aGlzLnBMYWJlbCA9ICdUT0RBWSc7XG4gICAgICAgIHRoaXMucEFjY2Vzc2libGVMYWJlbCA9ICdUaGlzIHRhc2sgaXMgZHVlIHRvIGJlIGNvbXBsZXRlZCB0b2RheSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBMYWJlbCA9IGAke2Zvcm1hdERhdGUodGhpcy5kdWVEYXRlLCAnZCBNTU0nLCAnZW4tR0InKX1gO1xuICAgICAgICB0aGlzLnBBY2Nlc3NpYmxlTGFiZWwgPSBgVGhpcyB0YXNrIGlzIGR1ZSB0byBiZSBjb21wbGV0ZWQgYnkgJHtmb3JtYXREYXRlKHRoaXMuZHVlRGF0ZSwgJ2QgTU1NTSB5JywgJ2VuLUdCJyl9YDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRheXNEaWZmICsgdGhpcy5oaWdoVXJnZW5jeUN1dG9mZiA+IDApIHtcbiAgICAgICAgdGhpcy5wQmFkZ2UgPSBEYXRlQmFkZ2VDb2xvdXIuUkVEO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmRheXNEaWZmICsgdGhpcy5tZWRpdW1VcmdlbmN5Q3V0b2ZmID4gMCkge1xuICAgICAgICB0aGlzLnBCYWRnZSA9IERhdGVCYWRnZUNvbG91ci5PUkFOR0U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBCYWRnZSA9IERhdGVCYWRnZUNvbG91ci5HUkVFTjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIHdpbGwgcmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGRhdGVzLlxuICAvLyBJZiBmcm9tRGF0ZSBpcyBCRUZPUkUgdG9EYXRlLCBpdCB3aWxsIGJlIGEgcG9zaXRpdmUgbnVtYmVyLlxuICAvLyBJZiBmcm9tRGF0ZSBpcyBBRlRFUiB0b0RhdGUsIGl0IHdpbGwgYmUgYSBuZWdhdGl2ZSBudW1iZXIuXG4gIHByaXZhdGUgZ2V0RGF5c0RpZmZlcmVuY2UoZnJvbURhdGU6IERhdGUsIHRvRGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgZnJvbUVwb2NoID0gZnJvbURhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IHRvRXBvY2ggPSB0b0RhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGRpZmZTZWNzID0gTWF0aC5mbG9vcigodG9FcG9jaCAtIGZyb21FcG9jaCkgLyAxMDAwKTtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihkaWZmU2VjcyAvIFNFQ09ORFNfSU5fQV9EQVkpO1xuICB9XG59XG4iLCI8c3BhbiAqbmdJZj1cImR1ZURhdGVcIiBjbGFzcz1cImR1ZS1kYXRlIGhtY3RzLWJhZGdlXCIgW25nQ2xhc3NdPVwiYmFkZ2VcIlxuICAgICAgW3RpdGxlXT1cImFjY2Vzc2libGVMYWJlbCB8IHJweFRyYW5zbGF0ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYWNjZXNzaWJsZUxhYmVsIHwgcnB4VHJhbnNsYXRlXCI+XG4gIHt7bGFiZWwgfCBycHhUcmFuc2xhdGV9fVxuPC9zcGFuPiJdfQ==
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/router";
|
|
5
|
+
import * as i3 from "rpx-xui-translation";
|
|
6
|
+
const _c0 = ["*"];
|
|
7
|
+
function ExuiPageWrapperComponent_a_1_Template(rf, ctx) { if (rf & 1) {
|
|
8
|
+
i0.ɵɵelementStart(0, "a", 6);
|
|
9
|
+
i0.ɵɵtext(1);
|
|
10
|
+
i0.ɵɵpipe(2, "rpxTranslate");
|
|
11
|
+
i0.ɵɵelementEnd();
|
|
12
|
+
} if (rf & 2) {
|
|
13
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
14
|
+
i0.ɵɵproperty("routerLink", ctx_r0.backLink);
|
|
15
|
+
i0.ɵɵadvance();
|
|
16
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 2, "Back"));
|
|
17
|
+
} }
|
|
18
|
+
function ExuiPageWrapperComponent_h1_5_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
i0.ɵɵelementStart(0, "span", 9);
|
|
20
|
+
i0.ɵɵtext(1);
|
|
21
|
+
i0.ɵɵpipe(2, "rpxTranslate");
|
|
22
|
+
i0.ɵɵelementEnd();
|
|
23
|
+
} if (rf & 2) {
|
|
24
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
25
|
+
i0.ɵɵadvance();
|
|
26
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r0.fnTitle));
|
|
27
|
+
} }
|
|
28
|
+
function ExuiPageWrapperComponent_h1_5_Template(rf, ctx) { if (rf & 1) {
|
|
29
|
+
i0.ɵɵelementStart(0, "h1", 7);
|
|
30
|
+
i0.ɵɵtemplate(1, ExuiPageWrapperComponent_h1_5_span_1_Template, 3, 3, "span", 8);
|
|
31
|
+
i0.ɵɵtext(2);
|
|
32
|
+
i0.ɵɵpipe(3, "rpxTranslate");
|
|
33
|
+
i0.ɵɵelementEnd();
|
|
34
|
+
} if (rf & 2) {
|
|
35
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
36
|
+
i0.ɵɵadvance();
|
|
37
|
+
i0.ɵɵproperty("ngIf", ctx_r0.fnTitle);
|
|
38
|
+
i0.ɵɵadvance();
|
|
39
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 2, ctx_r0.title), " ");
|
|
40
|
+
} }
|
|
41
|
+
/**
|
|
42
|
+
* Main Page Wrapper
|
|
43
|
+
* Responsible for:
|
|
44
|
+
* Wrapping content within the gov-uk html elements bellow
|
|
45
|
+
* @prop showBackLink - switch for back link
|
|
46
|
+
* @prop appHeaderTitle = appHeaderTitle
|
|
47
|
+
* @prop appFunctionalTitle = appFunctionalTitle
|
|
48
|
+
* @prop summaryErrors list of errors
|
|
49
|
+
* @prop back link, appHeaderTitle (appHeaderTitle), summaryErrors (array of errors)
|
|
50
|
+
*/
|
|
51
|
+
export class ExuiPageWrapperComponent {
|
|
52
|
+
constructor() { }
|
|
53
|
+
static { this.ɵfac = function ExuiPageWrapperComponent_Factory(t) { return new (t || ExuiPageWrapperComponent)(); }; }
|
|
54
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExuiPageWrapperComponent, selectors: [["exui-page-wrapper"]], inputs: { backLink: "backLink", title: "title", fnTitle: "fnTitle" }, ngContentSelectors: _c0, decls: 7, vars: 2, consts: [[1, "page"], ["class", "govuk-back-link", 3, "routerLink", 4, "ngIf"], [1, "govuk-width-container"], ["id", "content", "role", "main", 1, "govuk-main-wrapper"], [1, "govuk-grid-row"], ["class", "govuk-heading-xl", 4, "ngIf"], [1, "govuk-back-link", 3, "routerLink"], [1, "govuk-heading-xl"], ["class", "govuk-caption-xl", 4, "ngIf"], [1, "govuk-caption-xl"]], template: function ExuiPageWrapperComponent_Template(rf, ctx) { if (rf & 1) {
|
|
55
|
+
i0.ɵɵprojectionDef();
|
|
56
|
+
i0.ɵɵelementStart(0, "div", 0);
|
|
57
|
+
i0.ɵɵtemplate(1, ExuiPageWrapperComponent_a_1_Template, 3, 4, "a", 1);
|
|
58
|
+
i0.ɵɵelementStart(2, "div", 2)(3, "main", 3)(4, "div", 4);
|
|
59
|
+
i0.ɵɵtemplate(5, ExuiPageWrapperComponent_h1_5_Template, 4, 4, "h1", 5);
|
|
60
|
+
i0.ɵɵprojection(6);
|
|
61
|
+
i0.ɵɵelementEnd()()()();
|
|
62
|
+
} if (rf & 2) {
|
|
63
|
+
i0.ɵɵadvance();
|
|
64
|
+
i0.ɵɵproperty("ngIf", ctx.backLink);
|
|
65
|
+
i0.ɵɵadvance(4);
|
|
66
|
+
i0.ɵɵproperty("ngIf", ctx.title);
|
|
67
|
+
} }, dependencies: [i1.NgIf, i2.RouterLink, i3.RpxTranslatePipe], styles: [".page[_ngcontent-%COMP%]{width:100%}"] }); }
|
|
68
|
+
}
|
|
69
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ExuiPageWrapperComponent, [{
|
|
70
|
+
type: Component,
|
|
71
|
+
args: [{ selector: 'exui-page-wrapper', template: "<div class=\"page\">\n <a *ngIf=\"backLink\" [routerLink]=\"backLink\" class=\"govuk-back-link\">{{'Back' | rpxTranslate}}</a>\n <div class=\"govuk-width-container\">\n <main id=\"content\" role=\"main\" class=\"govuk-main-wrapper\">\n <div class=\"govuk-grid-row\">\n <h1 *ngIf=\"title\" class=\"govuk-heading-xl\">\n <span *ngIf=\"fnTitle\" class=\"govuk-caption-xl\">{{fnTitle | rpxTranslate}}</span>\n {{title | rpxTranslate}}\n </h1>\n <ng-content>\n\n </ng-content>\n </div>\n </main>\n </div>\n</div>\n", styles: [".page{width:100%}\n"] }]
|
|
72
|
+
}], () => [], { backLink: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], title: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], fnTitle: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}] }); })();
|
|
79
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ExuiPageWrapperComponent, { className: "ExuiPageWrapperComponent", filePath: "lib/components/exui-main-wrapper/exui-page-wrapper.component.ts", lineNumber: 17 }); })();
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh1aS1wYWdlLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9leHVpLW1haW4td3JhcHBlci9leHVpLXBhZ2Utd3JhcHBlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2V4dWktbWFpbi13cmFwcGVyL2V4dWktcGFnZS13cmFwcGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0lDQzdDLDRCQUFvRTtJQUFBLFlBQXlCOztJQUFBLGlCQUFJOzs7SUFBN0UsNENBQXVCO0lBQXlCLGNBQXlCO0lBQXpCLGtEQUF5Qjs7O0lBS3JGLCtCQUErQztJQUFBLFlBQTBCOztJQUFBLGlCQUFPOzs7SUFBakMsY0FBMEI7SUFBMUIsMERBQTBCOzs7SUFEM0UsNkJBQTJDO0lBQ3pDLGdGQUErQztJQUMvQyxZQUNGOztJQUFBLGlCQUFLOzs7SUFGSSxjQUFhO0lBQWIscUNBQWE7SUFDcEIsY0FDRjtJQURFLG1FQUNGOztBRFBSOzs7Ozs7Ozs7R0FTRztBQU1ILE1BQU0sT0FBTyx3QkFBd0I7SUFNbkMsZ0JBQWdCLENBQUM7eUZBTk4sd0JBQXdCO29FQUF4Qix3QkFBd0I7O1lDaEJyQyw4QkFBa0I7WUFDaEIscUVBQW9FO1lBR2hFLEFBREYsQUFERiw4QkFBbUMsY0FDeUIsYUFDNUI7WUFDMUIsdUVBQTJDO1lBSTNDLGtCQUVhO1lBSXJCLEFBREUsQUFERSxBQURFLGlCQUFNLEVBQ0QsRUFDSCxFQUNGOztZQWRBLGNBQWM7WUFBZCxtQ0FBYztZQUlQLGVBQVc7WUFBWCxnQ0FBVzs7O2lGRFdYLHdCQUF3QjtjQUxwQyxTQUFTOzJCQUNFLG1CQUFtQjtvQkFNYixRQUFRO2tCQUF2QixLQUFLO1lBQ1UsS0FBSztrQkFBcEIsS0FBSztZQUNVLE9BQU87a0JBQXRCLEtBQUs7O2tGQUpLLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vKipcbiAqIE1haW4gUGFnZSBXcmFwcGVyXG4gKiBSZXNwb25zaWJsZSBmb3I6XG4gKiBXcmFwcGluZyBjb250ZW50IHdpdGhpbiB0aGUgZ292LXVrIGh0bWwgZWxlbWVudHMgYmVsbG93XG4gKiBAcHJvcCBzaG93QmFja0xpbmsgLSBzd2l0Y2ggZm9yIGJhY2sgbGlua1xuICogQHByb3AgYXBwSGVhZGVyVGl0bGUgPSBhcHBIZWFkZXJUaXRsZVxuICogQHByb3AgYXBwRnVuY3Rpb25hbFRpdGxlID0gYXBwRnVuY3Rpb25hbFRpdGxlXG4gKiBAcHJvcCBzdW1tYXJ5RXJyb3JzIGxpc3Qgb2YgZXJyb3JzXG4gKiBAcHJvcCBiYWNrIGxpbmssIGFwcEhlYWRlclRpdGxlIChhcHBIZWFkZXJUaXRsZSksIHN1bW1hcnlFcnJvcnMgKGFycmF5IG9mIGVycm9ycylcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXh1aS1wYWdlLXdyYXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJ2V4dWktcGFnZS13cmFwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2V4dWktcGFnZS13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRXh1aVBhZ2VXcmFwcGVyQ29tcG9uZW50ICB7XG5cbiAgQElucHV0KCkgcHVibGljIGJhY2tMaW5rOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZm5UaXRsZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJwYWdlXCI+XG4gIDxhICpuZ0lmPVwiYmFja0xpbmtcIiBbcm91dGVyTGlua109XCJiYWNrTGlua1wiIGNsYXNzPVwiZ292dWstYmFjay1saW5rXCI+e3snQmFjaycgfCBycHhUcmFuc2xhdGV9fTwvYT5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLXdpZHRoLWNvbnRhaW5lclwiPlxuICAgIDxtYWluIGlkPVwiY29udGVudFwiIHJvbGU9XCJtYWluXCIgY2xhc3M9XCJnb3Z1ay1tYWluLXdyYXBwZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgICAgICA8aDEgKm5nSWY9XCJ0aXRsZVwiIGNsYXNzPVwiZ292dWstaGVhZGluZy14bFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZm5UaXRsZVwiIGNsYXNzPVwiZ292dWstY2FwdGlvbi14bFwiPnt7Zm5UaXRsZSB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgIHt7dGl0bGUgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICA8L2gxPlxuICAgICAgICA8bmctY29udGVudD5cblxuICAgICAgICA8L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L21haW4+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { getValues } from '../generic-filter/generic-filter-utils';
|
|
5
|
+
import { SearchLocationComponent } from '../search-location/search-location.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "../search-location/search-location.component";
|
|
9
|
+
function FindLocationComponent_label_3_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
i0.ɵɵelementStart(0, "label", 6);
|
|
11
|
+
i0.ɵɵtext(1);
|
|
12
|
+
i0.ɵɵelementEnd();
|
|
13
|
+
} if (rf & 2) {
|
|
14
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
15
|
+
i0.ɵɵadvance();
|
|
16
|
+
i0.ɵɵtextInterpolate(ctx_r0.locationTitle);
|
|
17
|
+
} }
|
|
18
|
+
function FindLocationComponent_a_6_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
20
|
+
i0.ɵɵelementStart(0, "a", 7);
|
|
21
|
+
i0.ɵɵlistener("click", function FindLocationComponent_a_6_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.addLocation()); });
|
|
22
|
+
i0.ɵɵtext(1, " Add location ");
|
|
23
|
+
i0.ɵɵelementEnd();
|
|
24
|
+
} }
|
|
25
|
+
function FindLocationComponent_ul_7_li_1_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
27
|
+
i0.ɵɵelementStart(0, "li", 10)(1, "a", 11);
|
|
28
|
+
i0.ɵɵlistener("click", function FindLocationComponent_ul_7_li_1_Template_a_click_1_listener() { const selection_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.removeLocation(selection_r4)); });
|
|
29
|
+
i0.ɵɵtext(2);
|
|
30
|
+
i0.ɵɵelementEnd()();
|
|
31
|
+
} if (rf & 2) {
|
|
32
|
+
const selection_r4 = ctx.$implicit;
|
|
33
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
34
|
+
i0.ɵɵadvance(2);
|
|
35
|
+
i0.ɵɵtextInterpolate1(" ", selection_r4[ctx_r0.propertyNameFilter], " ");
|
|
36
|
+
} }
|
|
37
|
+
function FindLocationComponent_ul_7_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
+
i0.ɵɵelementStart(0, "ul", 8);
|
|
39
|
+
i0.ɵɵtemplate(1, FindLocationComponent_ul_7_li_1_Template, 3, 1, "li", 9);
|
|
40
|
+
i0.ɵɵelementEnd();
|
|
41
|
+
} if (rf & 2) {
|
|
42
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
43
|
+
i0.ɵɵadvance();
|
|
44
|
+
i0.ɵɵproperty("ngForOf", ctx_r0.selectedLocations);
|
|
45
|
+
} }
|
|
46
|
+
export class FindLocationComponent {
|
|
47
|
+
constructor() {
|
|
48
|
+
this.locationFieldChanged = new EventEmitter();
|
|
49
|
+
this.submitted = true;
|
|
50
|
+
this.enableAddLocationButton = true;
|
|
51
|
+
this.locationTitle = 'Search for a location by name';
|
|
52
|
+
this.disableInputField = false;
|
|
53
|
+
this.tempSelectedLocation = null;
|
|
54
|
+
this.serviceIds = 'SSCS,IA';
|
|
55
|
+
this.pServices = [];
|
|
56
|
+
this.pDisabled = false;
|
|
57
|
+
}
|
|
58
|
+
get disabled() {
|
|
59
|
+
return this.pDisabled;
|
|
60
|
+
}
|
|
61
|
+
set disabled(value) {
|
|
62
|
+
if (value) {
|
|
63
|
+
this.searchLocationComponent.resetSearchTerm();
|
|
64
|
+
this.removeSelectedValues();
|
|
65
|
+
}
|
|
66
|
+
this.pDisabled = this.disableInputField === true ? true : null;
|
|
67
|
+
}
|
|
68
|
+
get services() {
|
|
69
|
+
return this.pServices;
|
|
70
|
+
}
|
|
71
|
+
set services(value) {
|
|
72
|
+
this.pServices = value;
|
|
73
|
+
const field = this.fields.find(f => {
|
|
74
|
+
if (this.field) {
|
|
75
|
+
return f.name === this.field.findLocationField;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
if (field) {
|
|
79
|
+
if (typeof value === 'string') {
|
|
80
|
+
this.serviceIds = value;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
this.serviceIds = getValues(field.options, value).filter(x => x !== 'services_all').join(',');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
get selectedLocations() {
|
|
88
|
+
return this.form.get(this.field.name)?.value?.filter(location => location.epimms_id);
|
|
89
|
+
}
|
|
90
|
+
get propertyNameFilter() {
|
|
91
|
+
const DEFAULT_PROPERTY_NAME = 'site_name';
|
|
92
|
+
return this.field.propertyNameFilter ? this.field.propertyNameFilter
|
|
93
|
+
: DEFAULT_PROPERTY_NAME;
|
|
94
|
+
}
|
|
95
|
+
ngOnInit() {
|
|
96
|
+
if (this.formSubmissionEvent$) {
|
|
97
|
+
this.formSubmissionEventSubscription = this.formSubmissionEvent$.subscribe(() => {
|
|
98
|
+
// Shouldn't reset search term if single mode and already has selected
|
|
99
|
+
const oneSelectedAndMaxSelectedOne = this.selectedLocations.length === 1 && this.field.maxSelected === 1;
|
|
100
|
+
if (!oneSelectedAndMaxSelectedOne) {
|
|
101
|
+
this.searchLocationComponent.resetSearchTerm();
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
addLocation() {
|
|
107
|
+
if (this.tempSelectedLocation) {
|
|
108
|
+
this.addSelectedLocationsToForm([this.tempSelectedLocation]);
|
|
109
|
+
this.tempSelectedLocation = null;
|
|
110
|
+
this.searchLocationComponent.resetSearchTerm();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
removeLocation(location) {
|
|
114
|
+
if (location.epimms_id) {
|
|
115
|
+
const formArray = this.form.get(this.field.name);
|
|
116
|
+
const index = formArray.value.findIndex(selectedLocation => selectedLocation.epimms_id === location.epimms_id);
|
|
117
|
+
if (index > -1) {
|
|
118
|
+
formArray.removeAt(index);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
onInputChanged(term) {
|
|
123
|
+
// if the filter is in single mode clear the selected locations
|
|
124
|
+
if (typeof term === 'string' && this.field.maxSelected === 1) {
|
|
125
|
+
this.removeSelectedValues();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
onSearchInputChanged() {
|
|
129
|
+
this.locationFieldChanged.emit();
|
|
130
|
+
}
|
|
131
|
+
onLocationSelected(location) {
|
|
132
|
+
if (this.field.maxSelected === 1) {
|
|
133
|
+
this.removeSelectedValues();
|
|
134
|
+
this.addSelectedLocationsToForm([location]);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
if (!this.selectedLocations.find(x => x.epimms_id === location.epimms_id)) {
|
|
138
|
+
if (location.epimms_id) {
|
|
139
|
+
this.tempSelectedLocation = location;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
removeSelectedValues() {
|
|
145
|
+
const formArray = this.form.get(this.field?.name);
|
|
146
|
+
if (formArray) {
|
|
147
|
+
for (let i = 0; i < formArray.length; i++) {
|
|
148
|
+
formArray.removeAt(i);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
addSelectedLocationsToForm(locations) {
|
|
153
|
+
const formArray = this.form.get(this.field.name);
|
|
154
|
+
for (const location of locations) {
|
|
155
|
+
formArray.push(new FormControl(location));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
ngOnDestroy() {
|
|
159
|
+
this.formSubmissionEventSubscription?.unsubscribe();
|
|
160
|
+
}
|
|
161
|
+
static { this.ɵfac = function FindLocationComponent_Factory(t) { return new (t || FindLocationComponent)(); }; }
|
|
162
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FindLocationComponent, selectors: [["xuilib-find-location"]], viewQuery: function FindLocationComponent_Query(rf, ctx) { if (rf & 1) {
|
|
163
|
+
i0.ɵɵviewQuery(SearchLocationComponent, 7);
|
|
164
|
+
} if (rf & 2) {
|
|
165
|
+
let _t;
|
|
166
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchLocationComponent = _t.first);
|
|
167
|
+
} }, inputs: { submitted: "submitted", enableAddLocationButton: "enableAddLocationButton", form: "form", field: "field", fields: "fields", locationTitle: "locationTitle", disableInputField: "disableInputField", formSubmissionEvent$: "formSubmissionEvent$", disabled: "disabled", services: "services" }, outputs: { locationFieldChanged: "locationFieldChanged" }, decls: 8, vars: 13, consts: [[1, "location-picker-custom"], [1, "search-location"], ["id", "input-selected-location-label", 4, "ngIf"], [1, "search-location", 3, "locationTermSearchInputChanged", "locationSelected", "searchLocationChanged", "form", "field", "selectedLocations", "delay", "disabled", "singleMode", "bookingCheck", "serviceIds", "propertyNameFilter", "locationType"], ["href", "javascript:void(0)", "class", "govuk-button add-location-button", "data-module", "govuk-button", 3, "click", 4, "ngIf"], ["class", "hmcts-filter-tags selection-container", 4, "ngIf"], ["id", "input-selected-location-label"], ["href", "javascript:void(0)", "data-module", "govuk-button", 1, "govuk-button", "add-location-button", 3, "click"], [1, "hmcts-filter-tags", "selection-container"], ["class", "location-selection", 4, "ngFor", "ngForOf"], [1, "location-selection"], ["href", "javascript:void(0)", 1, "hmcts-filter__tag", 3, "click"]], template: function FindLocationComponent_Template(rf, ctx) { if (rf & 1) {
|
|
168
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div");
|
|
169
|
+
i0.ɵɵtemplate(3, FindLocationComponent_label_3_Template, 2, 1, "label", 2);
|
|
170
|
+
i0.ɵɵelementEnd();
|
|
171
|
+
i0.ɵɵelementStart(4, "exui-search-location", 3);
|
|
172
|
+
i0.ɵɵlistener("locationTermSearchInputChanged", function FindLocationComponent_Template_exui_search_location_locationTermSearchInputChanged_4_listener($event) { return ctx.onInputChanged($event); })("locationSelected", function FindLocationComponent_Template_exui_search_location_locationSelected_4_listener($event) { return ctx.onLocationSelected($event); })("searchLocationChanged", function FindLocationComponent_Template_exui_search_location_searchLocationChanged_4_listener() { return ctx.onSearchInputChanged(); });
|
|
173
|
+
i0.ɵɵelementEnd()();
|
|
174
|
+
i0.ɵɵelementStart(5, "div");
|
|
175
|
+
i0.ɵɵtemplate(6, FindLocationComponent_a_6_Template, 2, 0, "a", 4);
|
|
176
|
+
i0.ɵɵelementEnd();
|
|
177
|
+
i0.ɵɵtemplate(7, FindLocationComponent_ul_7_Template, 2, 1, "ul", 5);
|
|
178
|
+
i0.ɵɵelementEnd();
|
|
179
|
+
} if (rf & 2) {
|
|
180
|
+
i0.ɵɵadvance(3);
|
|
181
|
+
i0.ɵɵproperty("ngIf", ctx.locationTitle);
|
|
182
|
+
i0.ɵɵadvance();
|
|
183
|
+
i0.ɵɵproperty("form", ctx.form)("field", ctx.field)("selectedLocations", ctx.selectedLocations)("delay", 300)("disabled", ctx.disabled)("singleMode", ctx.field.maxSelected === 1)("bookingCheck", ctx.field.bookingCheckType)("serviceIds", ctx.serviceIds)("propertyNameFilter", ctx.propertyNameFilter)("locationType", "case-management");
|
|
184
|
+
i0.ɵɵadvance(2);
|
|
185
|
+
i0.ɵɵproperty("ngIf", ctx.enableAddLocationButton);
|
|
186
|
+
i0.ɵɵadvance();
|
|
187
|
+
i0.ɵɵproperty("ngIf", ctx.field.maxSelected != 1);
|
|
188
|
+
} }, dependencies: [i1.NgForOf, i1.NgIf, i2.SearchLocationComponent], styles: [".add-location-button[_ngcontent-%COMP%]{margin-top:10px;margin-bottom:0}.search-location__input-container[_ngcontent-%COMP%]{display:flex}.search-location[_ngcontent-%COMP%] .auto-complete-container[_ngcontent-%COMP%]{min-width:unset;width:calc(100% - 4px)}.search-location__input[_ngcontent-%COMP%]{flex:1 0 auto}.search-location[_ngcontent-%COMP%] .govuk-button--secondary[_ngcontent-%COMP%]{background-color:#ddd}"] }); }
|
|
189
|
+
}
|
|
190
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FindLocationComponent, [{
|
|
191
|
+
type: Component,
|
|
192
|
+
args: [{ selector: 'xuilib-find-location', template: "<div class=\"location-picker-custom\">\n <div class=\"search-location\">\n <div>\n <label id=\"input-selected-location-label\" *ngIf=\"locationTitle\">{{locationTitle}}</label>\n </div>\n <exui-search-location class=\"search-location\"\n [form]=\"form\"\n [field]=\"field\"\n [selectedLocations]=\"selectedLocations\"\n [delay]=\"300\"\n [disabled]=\"disabled\"\n [singleMode]=\"field.maxSelected === 1\"\n [bookingCheck]=\"field.bookingCheckType\"\n [serviceIds]=\"serviceIds\"\n [propertyNameFilter]=\"propertyNameFilter\"\n (locationTermSearchInputChanged)=\"onInputChanged($event)\"\n (locationSelected)=\"onLocationSelected($event)\"\n (searchLocationChanged)=\"onSearchInputChanged()\"\n [locationType]=\"'case-management'\">\n </exui-search-location>\n </div>\n\n <div>\n <a href=\"javascript:void(0)\" (click)=\"addLocation()\" class=\"govuk-button add-location-button\" data-module=\"govuk-button\" *ngIf=\"enableAddLocationButton\">\n Add location\n </a>\n </div>\n\n <ul class=\"hmcts-filter-tags selection-container\" *ngIf=\"field.maxSelected != 1\">\n <li class=\"location-selection\" *ngFor=\"let selection of selectedLocations\">\n <a class=\"hmcts-filter__tag\" (click)=\"removeLocation(selection)\" href=\"javascript:void(0)\">\n {{ selection[propertyNameFilter] }}\n </a>\n </li>\n </ul>\n</div>\n", styles: [".add-location-button{margin-top:10px;margin-bottom:0}.search-location__input-container{display:flex}.search-location .auto-complete-container{min-width:unset;width:calc(100% - 4px)}.search-location__input{flex:1 0 auto}.search-location .govuk-button--secondary{background-color:#ddd}\n"] }]
|
|
193
|
+
}], null, { locationFieldChanged: [{
|
|
194
|
+
type: Output
|
|
195
|
+
}], submitted: [{
|
|
196
|
+
type: Input
|
|
197
|
+
}], enableAddLocationButton: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}], form: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}], field: [{
|
|
202
|
+
type: Input
|
|
203
|
+
}], fields: [{
|
|
204
|
+
type: Input
|
|
205
|
+
}], locationTitle: [{
|
|
206
|
+
type: Input
|
|
207
|
+
}], disableInputField: [{
|
|
208
|
+
type: Input
|
|
209
|
+
}], formSubmissionEvent$: [{
|
|
210
|
+
type: Input
|
|
211
|
+
}], searchLocationComponent: [{
|
|
212
|
+
type: ViewChild,
|
|
213
|
+
args: [SearchLocationComponent, { static: true }]
|
|
214
|
+
}], disabled: [{
|
|
215
|
+
type: Input
|
|
216
|
+
}], services: [{
|
|
217
|
+
type: Input
|
|
218
|
+
}] }); })();
|
|
219
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FindLocationComponent, { className: "FindLocationComponent", filePath: "lib/components/find-location/find-location.component.ts", lineNumber: 13 }); })();
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1sb2NhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbmQtbG9jYXRpb24vZmluZC1sb2NhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbmQtbG9jYXRpb24vZmluZC1sb2NhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFhLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7O0lDRmpGLGdDQUFnRTtJQUFBLFlBQWlCO0lBQUEsaUJBQVE7OztJQUF6QixjQUFpQjtJQUFqQiwwQ0FBaUI7Ozs7SUFvQm5GLDRCQUF5SjtJQUE1SCwwS0FBUyxvQkFBYSxLQUFDO0lBQ2xELDhCQUNGO0lBQUEsaUJBQUk7Ozs7SUFLRixBQURGLDhCQUE0RSxZQUNpQjtJQUE5RCxnTkFBUyxtQ0FBeUIsS0FBQztJQUM5RCxZQUNGO0lBQ0YsQUFERSxpQkFBSSxFQUNEOzs7O0lBRkQsZUFDRjtJQURFLHdFQUNGOzs7SUFKSiw2QkFBaUY7SUFDL0UseUVBQTRFO0lBSzlFLGlCQUFLOzs7SUFMbUQsY0FBb0I7SUFBcEIsa0RBQW9COztBRGpCOUUsTUFBTSxPQUFPLHFCQUFx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RUFBRSxJQUFJLEVBQUU7WUFVekMsUUFBUTtrQkFEbEIsS0FBSztZQWNLLFFBQVE7a0JBRGxCLEtBQUs7O2tGQWxDSyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaWx0ZXJGaWVsZENvbmZpZywgTG9jYXRpb25CeUVQSU1NU01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IGdldFZhbHVlcyB9IGZyb20gJy4uL2dlbmVyaWMtZmlsdGVyL2dlbmVyaWMtZmlsdGVyLXV0aWxzJztcbmltcG9ydCB7IFNlYXJjaExvY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWxvY2F0aW9uL3NlYXJjaC1sb2NhdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItZmluZC1sb2NhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9maW5kLWxvY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmluZC1sb2NhdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpbmRMb2NhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQE91dHB1dCgpIHB1YmxpYyBsb2NhdGlvbkZpZWxkQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQElucHV0KCkgcHVibGljIHN1Ym1pdHRlZDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBlbmFibGVBZGRMb2NhdGlvbkJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZDogRmlsdGVyRmllbGRDb25maWc7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpbHRlckZpZWxkQ29uZmlnW107XG4gIEBJbnB1dCgpIHB1YmxpYyBsb2NhdGlvblRpdGxlID0gJ1NlYXJjaCBmb3IgYSBsb2NhdGlvbiBieSBuYW1lJztcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVJbnB1dEZpZWxkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtU3VibWlzc2lvbkV2ZW50JDogU3ViamVjdDx2b2lkPjtcbiAgcHVibGljIHRlbXBTZWxlY3RlZExvY2F0aW9uOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWwgPSBudWxsO1xuICBwdWJsaWMgc2VydmljZUlkczogc3RyaW5nID0gJ1NTQ1MsSUEnO1xuICBAVmlld0NoaWxkKFNlYXJjaExvY2F0aW9uQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgc2VhcmNoTG9jYXRpb25Db21wb25lbnQ6IFNlYXJjaExvY2F0aW9uQ29tcG9uZW50O1xuICBwcml2YXRlIHBTZXJ2aWNlczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBwRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBmb3JtU3VibWlzc2lvbkV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wRGlzYWJsZWQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNlYXJjaExvY2F0aW9uQ29tcG9uZW50LnJlc2V0U2VhcmNoVGVybSgpO1xuICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZFZhbHVlcygpO1xuICAgIH1cbiAgICB0aGlzLnBEaXNhYmxlZCA9IHRoaXMuZGlzYWJsZUlucHV0RmllbGQgPT09IHRydWUgPyB0cnVlIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VydmljZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnBTZXJ2aWNlcztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VydmljZXModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wU2VydmljZXMgPSB2YWx1ZTtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoZiA9PiB7XG4gICAgICBpZiAodGhpcy5maWVsZCkge1xuICAgICAgICByZXR1cm4gZi5uYW1lID09PSB0aGlzLmZpZWxkLmZpbmRMb2NhdGlvbkZpZWxkO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGZpZWxkKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLnNlcnZpY2VJZHMgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VydmljZUlkcyA9IGdldFZhbHVlcyhmaWVsZC5vcHRpb25zLCB2YWx1ZSkuZmlsdGVyKHggPT4geCAhPT0gJ3NlcnZpY2VzX2FsbCcpLmpvaW4oJywnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkTG9jYXRpb25zKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpPy52YWx1ZSBhcyBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSk/LmZpbHRlcihsb2NhdGlvbiA9PiBsb2NhdGlvbi5lcGltbXNfaWQpO1xuICB9XG5cbiAgcHVibGljIGdldCBwcm9wZXJ0eU5hbWVGaWx0ZXIoKToga2V5b2YgTG9jYXRpb25CeUVQSU1NU01vZGVsIHtcbiAgICBjb25zdCBERUZBVUxUX1BST1BFUlRZX05BTUUgPSAnc2l0ZV9uYW1lJztcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wZXJ0eU5hbWVGaWx0ZXIgPyB0aGlzLmZpZWxkLnByb3BlcnR5TmFtZUZpbHRlciBhcyBrZXlvZiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxcbiAgICAgIDogREVGQVVMVF9QUk9QRVJUWV9OQU1FO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm1TdWJtaXNzaW9uRXZlbnQkKSB7XG4gICAgICB0aGlzLmZvcm1TdWJtaXNzaW9uRXZlbnRTdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1TdWJtaXNzaW9uRXZlbnQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIFNob3VsZG4ndCByZXNldCBzZWFyY2ggdGVybSBpZiBzaW5nbGUgbW9kZSBhbmQgYWxyZWFkeSBoYXMgc2VsZWN0ZWRcbiAgICAgICAgY29uc3Qgb25lU2VsZWN0ZWRBbmRNYXhTZWxlY3RlZE9uZSA9IHRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMubGVuZ3RoID09PSAxICYmIHRoaXMuZmllbGQubWF4U2VsZWN0ZWQgPT09IDE7XG4gICAgICAgIGlmICghb25lU2VsZWN0ZWRBbmRNYXhTZWxlY3RlZE9uZSkge1xuICAgICAgICAgIHRoaXMuc2VhcmNoTG9jYXRpb25Db21wb25lbnQucmVzZXRTZWFyY2hUZXJtKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRMb2NhdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50ZW1wU2VsZWN0ZWRMb2NhdGlvbikge1xuICAgICAgdGhpcy5hZGRTZWxlY3RlZExvY2F0aW9uc1RvRm9ybShbdGhpcy50ZW1wU2VsZWN0ZWRMb2NhdGlvbl0pO1xuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRMb2NhdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLnNlYXJjaExvY2F0aW9uQ29tcG9uZW50LnJlc2V0U2VhcmNoVGVybSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVMb2NhdGlvbihsb2NhdGlvbjogTG9jYXRpb25CeUVQSU1NU01vZGVsKTogdm9pZCB7XG4gICAgaWYgKGxvY2F0aW9uLmVwaW1tc19pZCkge1xuICAgICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICAgIGNvbnN0IGluZGV4ID0gKGZvcm1BcnJheS52YWx1ZSBhcyBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSkuZmluZEluZGV4KHNlbGVjdGVkTG9jYXRpb24gPT4gc2VsZWN0ZWRMb2NhdGlvbi5lcGltbXNfaWQgPT09IGxvY2F0aW9uLmVwaW1tc19pZCk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICBmb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbklucHV0Q2hhbmdlZCh0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBpZiB0aGUgZmlsdGVyIGlzIGluIHNpbmdsZSBtb2RlIGNsZWFyIHRoZSBzZWxlY3RlZCBsb2NhdGlvbnNcbiAgICBpZiAodHlwZW9mIHRlcm0gPT09ICdzdHJpbmcnICYmIHRoaXMuZmllbGQubWF4U2VsZWN0ZWQgPT09IDEpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZFZhbHVlcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNlYXJjaElucHV0Q2hhbmdlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2F0aW9uRmllbGRDaGFuZ2VkLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkxvY2F0aW9uU2VsZWN0ZWQobG9jYXRpb246IExvY2F0aW9uQnlFUElNTVNNb2RlbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpZWxkLm1heFNlbGVjdGVkID09PSAxKSB7XG4gICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkVmFsdWVzKCk7XG4gICAgICB0aGlzLmFkZFNlbGVjdGVkTG9jYXRpb25zVG9Gb3JtKFtsb2NhdGlvbl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMuZmluZCh4ID0+IHguZXBpbW1zX2lkID09PSBsb2NhdGlvbi5lcGltbXNfaWQpKSB7XG4gICAgICAgIGlmIChsb2NhdGlvbi5lcGltbXNfaWQpIHtcbiAgICAgICAgICB0aGlzLnRlbXBTZWxlY3RlZExvY2F0aW9uID0gbG9jYXRpb247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVNlbGVjdGVkVmFsdWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZD8ubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgIGlmIChmb3JtQXJyYXkpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybUFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZvcm1BcnJheS5yZW1vdmVBdChpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFNlbGVjdGVkTG9jYXRpb25zVG9Gb3JtKGxvY2F0aW9uczogTG9jYXRpb25CeUVQSU1NU01vZGVsW10pOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgIGZvciAoY29uc3QgbG9jYXRpb24gb2YgbG9jYXRpb25zKSB7XG4gICAgICBmb3JtQXJyYXkucHVzaChuZXcgRm9ybUNvbnRyb2wobG9jYXRpb24pKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3JtU3VibWlzc2lvbkV2ZW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibG9jYXRpb24tcGlja2VyLWN1c3RvbVwiPlxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWxvY2F0aW9uXCI+XG4gICAgPGRpdj5cbiAgICAgIDxsYWJlbCBpZD1cImlucHV0LXNlbGVjdGVkLWxvY2F0aW9uLWxhYmVsXCIgKm5nSWY9XCJsb2NhdGlvblRpdGxlXCI+e3tsb2NhdGlvblRpdGxlfX08L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxleHVpLXNlYXJjaC1sb2NhdGlvbiBjbGFzcz1cInNlYXJjaC1sb2NhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRMb2NhdGlvbnNdPVwic2VsZWN0ZWRMb2NhdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVsYXldPVwiMzAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpbmdsZU1vZGVdPVwiZmllbGQubWF4U2VsZWN0ZWQgPT09IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYm9va2luZ0NoZWNrXT1cImZpZWxkLmJvb2tpbmdDaGVja1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VydmljZUlkc109XCJzZXJ2aWNlSWRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BlcnR5TmFtZUZpbHRlcl09XCJwcm9wZXJ0eU5hbWVGaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25UZXJtU2VhcmNoSW5wdXRDaGFuZ2VkKT1cIm9uSW5wdXRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobG9jYXRpb25TZWxlY3RlZCk9XCJvbkxvY2F0aW9uU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChzZWFyY2hMb2NhdGlvbkNoYW5nZWQpPVwib25TZWFyY2hJbnB1dENoYW5nZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2NhdGlvblR5cGVdPVwiJ2Nhc2UtbWFuYWdlbWVudCdcIj5cbiAgICA8L2V4dWktc2VhcmNoLWxvY2F0aW9uPlxuICA8L2Rpdj5cblxuICA8ZGl2PlxuICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwiYWRkTG9jYXRpb24oKVwiIGNsYXNzPVwiZ292dWstYnV0dG9uIGFkZC1sb2NhdGlvbi1idXR0b25cIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiICpuZ0lmPVwiZW5hYmxlQWRkTG9jYXRpb25CdXR0b25cIj5cbiAgICAgIEFkZCBsb2NhdGlvblxuICAgIDwvYT5cbiAgPC9kaXY+XG5cbiAgPHVsIGNsYXNzPVwiaG1jdHMtZmlsdGVyLXRhZ3Mgc2VsZWN0aW9uLWNvbnRhaW5lclwiICpuZ0lmPVwiZmllbGQubWF4U2VsZWN0ZWQgIT0gMVwiPlxuICAgIDxsaSBjbGFzcz1cImxvY2F0aW9uLXNlbGVjdGlvblwiICAqbmdGb3I9XCJsZXQgc2VsZWN0aW9uIG9mIHNlbGVjdGVkTG9jYXRpb25zXCI+XG4gICAgICA8YSBjbGFzcz1cImhtY3RzLWZpbHRlcl9fdGFnXCIgKGNsaWNrKT1cInJlbW92ZUxvY2F0aW9uKHNlbGVjdGlvbilcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+XG4gICAgICAgIHt7IHNlbGVjdGlvbltwcm9wZXJ0eU5hbWVGaWx0ZXJdIH19XG4gICAgICA8L2E+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuIl19
|