@hmcts/rpx-xui-common-lib 2.0.2-pre-release-include-user-access-type → 2.0.2-pre-release-accessibility-updated-version
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/bundles/hmcts-rpx-xui-common-lib.umd.js +6257 -0
- package/bundles/hmcts-rpx-xui-common-lib.umd.js.map +1 -0
- package/bundles/hmcts-rpx-xui-common-lib.umd.min.js +2 -0
- package/bundles/hmcts-rpx-xui-common-lib.umd.min.js.map +1 -0
- package/esm2015/hmcts-rpx-xui-common-lib.js +77 -0
- package/esm2015/lib/components/accessibility/accessibility.component.js +27 -0
- package/esm2015/lib/components/checkbox-list/checkbox-list.component.js +185 -0
- package/esm2015/lib/components/contact-details/contact-details.component.js +17 -0
- package/esm2015/lib/components/cookie-banner/cookie-banner.component.js +68 -0
- package/esm2015/lib/components/due-date/due-date.component.js +123 -0
- package/esm2015/lib/components/exui-main-wrapper/exui-page-wrapper.component.js +28 -0
- package/esm2015/lib/components/find-location/find-location.component.js +146 -0
- package/esm2015/lib/components/find-person/find-person.component.js +120 -0
- package/esm2015/lib/components/find-service/find-service.component.js +113 -0
- package/esm2015/lib/components/find-task-name/find-task-name.component.js +97 -0
- package/esm2015/lib/components/generic-filter/generic-filter.component.js +629 -0
- package/esm2015/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.js +27 -0
- package/esm2015/lib/components/invite-user-form/invite-user-form.component.js +25 -0
- package/esm2015/lib/components/invite-user-permissions/invite-user-permission.component.js +25 -0
- package/esm2015/lib/components/loading-spinner/loading-spinner.component.js +26 -0
- package/esm2015/lib/components/pagination/pagination.component.js +28 -0
- package/esm2015/lib/components/search-judicials/search-judicials.component.js +126 -0
- package/esm2015/lib/components/search-location/search-location.component.js +135 -0
- package/esm2015/lib/components/search-service/search-service.component.js +42 -0
- package/esm2015/lib/components/search-venue/search-venue.component.js +123 -0
- package/esm2015/lib/components/selected-case/selected-case.component.js +158 -0
- package/esm2015/lib/components/selected-case-confirm/selected-case-confirm.component.js +36 -0
- package/esm2015/lib/components/selected-case-list/selected-case-list.component.js +49 -0
- package/esm2015/lib/components/service-message/service-message.component.js +22 -0
- package/esm2015/lib/components/service-messages/service-messages.component.js +48 -0
- package/esm2015/lib/components/share-case/share-case.component.js +205 -0
- package/esm2015/lib/components/share-case-confirm/share-case-confirm.component.js +34 -0
- package/esm2015/lib/components/tab/tab.component.js +21 -0
- package/esm2015/lib/components/tc-confirm/tc-confirm.component.js +22 -0
- package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.js +13 -0
- package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.js +13 -0
- package/esm2015/lib/components/terms-and-conditions/terms-and-conditions.component.js +16 -0
- package/esm2015/lib/components/user-details/user-details.component.js +41 -0
- package/esm2015/lib/components/user-list/user-list.component.js +33 -0
- package/esm2015/lib/components/user-select/user-select.component.js +58 -0
- package/esm2015/lib/components/write-address/write-address.component.js +182 -0
- package/esm2015/lib/components/write-address-inputs/write-address-inputs.component.js +36 -0
- package/esm2015/lib/directives/feature-toggle/feature-toggle.directive.js +42 -0
- package/esm2015/lib/directives/let/let.directive.js +30 -0
- package/esm2015/lib/exui-common-lib.module.js +174 -0
- package/esm2015/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.js +31 -0
- package/esm2015/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +60 -0
- package/esm2015/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.js +64 -0
- package/esm2015/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.js +22 -0
- package/esm2015/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.js +28 -0
- package/esm2015/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.js +35 -0
- package/esm2015/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.js +23 -0
- package/esm2015/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +34 -0
- package/esm2015/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +22 -0
- package/esm2015/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.js +33 -0
- package/esm2015/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +21 -0
- package/esm2015/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +27 -0
- package/esm2015/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.js +39 -0
- package/esm2015/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.js +27 -0
- package/esm2015/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +23 -0
- package/esm2015/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.js +48 -0
- package/esm2015/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.js +19 -0
- package/esm2015/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +41 -0
- package/esm2015/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.js +28 -0
- package/esm2015/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.js +23 -0
- package/esm2015/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.js +15 -0
- package/esm2015/lib/gov-ui/directives/remove-host.directive.js +29 -0
- package/esm2015/lib/gov-ui/gov-ui.service.js +13 -0
- package/{esm2020/lib/models/public_api.mjs → esm2015/lib/models/public_api.js} +1 -2
- package/esm2015/lib/models/user-details.model.js +2 -0
- package/esm2015/lib/pipes/capitalize/capitalize.pipe.js +11 -0
- package/esm2015/lib/services/address/address.service.js +50 -0
- package/esm2015/lib/services/case-sharing-state/case-sharing-state.service.js +157 -0
- package/esm2015/lib/services/cookie/cookie.service.js +47 -0
- package/esm2015/lib/services/feature-toggle/feature-toggle.guard.js +36 -0
- package/esm2015/lib/services/feature-toggle/feature-toggle.service.js +27 -0
- package/{esm2020/lib/services/feature-toggle/launch-darkly.service.mjs → esm2015/lib/services/feature-toggle/launch-darkly.service.js} +6 -8
- package/{esm2020/lib/services/filter/filter.service.mjs → esm2015/lib/services/filter/filter.service.js} +6 -8
- package/esm2015/lib/services/find-person/find-person.service.js +115 -0
- package/esm2015/lib/services/google-analytics/google-analytics.service.js +68 -0
- package/esm2015/lib/services/google-tag-manager/google-tag-manager.service.js +71 -0
- package/{esm2020/lib/services/loading/loading.service.mjs → esm2015/lib/services/loading/loading.service.js} +6 -8
- package/esm2015/lib/services/locations/location.service.js +39 -0
- package/{esm2020/lib/services/manage-session/manage-session.services.mjs → esm2015/lib/services/manage-session/manage-session.services.js} +10 -8
- package/esm2015/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.js +34 -0
- package/{esm2020/lib/services/ref-data/ref-data.service.mjs → esm2015/lib/services/ref-data/ref-data.service.js} +9 -8
- package/{esm2020/lib/services/role-guard/role.guard.mjs → esm2015/lib/services/role-guard/role.guard.js} +10 -8
- package/esm2015/lib/services/role-guard/role.service.js +20 -0
- package/{esm2020/lib/services/storage/session-storage/session-storage.service.mjs → esm2015/lib/services/storage/session-storage/session-storage.service.js} +6 -8
- package/{esm2020/lib/services/task-name/task-name.service.mjs → esm2015/lib/services/task-name/task-name.service.js} +10 -8
- package/{esm2020/lib/services/timeout-notifications/timeout-notifications.service.mjs → esm2015/lib/services/timeout-notifications/timeout-notifications.service.js} +10 -8
- package/fesm2015/hmcts-rpx-xui-common-lib.js +5227 -0
- package/fesm2015/hmcts-rpx-xui-common-lib.js.map +1 -0
- package/hmcts-rpx-xui-common-lib.d.ts +76 -0
- package/hmcts-rpx-xui-common-lib.metadata.json +1 -0
- package/lib/components/accessibility/accessibility.component.d.ts +4 -4
- package/lib/components/checkbox-list/checkbox-list.component.d.ts +0 -3
- package/lib/components/contact-details/contact-details.component.d.ts +0 -3
- package/lib/components/cookie-banner/cookie-banner.component.d.ts +1 -6
- package/lib/components/due-date/due-date.component.d.ts +0 -3
- package/lib/components/exui-main-wrapper/exui-page-wrapper.component.d.ts +0 -3
- package/lib/components/find-location/find-location.component.d.ts +0 -3
- package/lib/components/find-person/find-person.component.d.ts +0 -3
- package/lib/components/find-service/find-service.component.d.ts +0 -3
- package/lib/components/find-task-name/find-task-name.component.d.ts +0 -3
- package/lib/components/generic-filter/generic-filter.component.d.ts +0 -3
- package/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.d.ts +0 -3
- package/lib/components/invite-user-form/invite-user-form.component.d.ts +0 -3
- package/lib/components/invite-user-permissions/invite-user-permission.component.d.ts +0 -3
- package/lib/components/loading-spinner/loading-spinner.component.d.ts +0 -3
- package/lib/components/pagination/pagination.component.d.ts +0 -3
- package/lib/components/search-judicials/search-judicials.component.d.ts +0 -3
- package/lib/components/search-location/search-location.component.d.ts +1 -4
- package/lib/components/search-service/search-service.component.d.ts +1 -4
- package/lib/components/search-venue/search-venue.component.d.ts +0 -3
- package/lib/components/selected-case/selected-case.component.d.ts +0 -3
- package/lib/components/selected-case-confirm/selected-case-confirm.component.d.ts +0 -3
- package/lib/components/selected-case-list/selected-case-list.component.d.ts +0 -3
- package/lib/components/service-message/service-message.component.d.ts +0 -3
- package/lib/components/service-messages/service-messages.component.d.ts +0 -3
- package/lib/components/share-case/share-case.component.d.ts +0 -3
- package/lib/components/share-case-confirm/share-case-confirm.component.d.ts +0 -3
- package/lib/components/tab/tab.component.d.ts +0 -3
- package/lib/components/tc-confirm/tc-confirm.component.d.ts +0 -3
- package/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.d.ts +0 -3
- package/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.d.ts +0 -3
- package/lib/components/terms-and-conditions/terms-and-conditions.component.d.ts +0 -3
- package/lib/components/user-details/user-details.component.d.ts +0 -3
- package/lib/components/user-list/user-list.component.d.ts +0 -3
- package/lib/components/user-select/user-select.component.d.ts +2 -5
- package/lib/components/write-address/write-address.component.d.ts +0 -3
- package/lib/components/write-address-inputs/write-address-inputs.component.d.ts +3 -3
- package/lib/directives/feature-toggle/feature-toggle.directive.d.ts +0 -3
- package/lib/directives/let/let.directive.d.ts +0 -3
- package/lib/exui-common-lib.module.d.ts +3 -77
- package/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.d.ts +0 -3
- package/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.d.ts +0 -3
- package/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.d.ts +0 -3
- package/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.d.ts +0 -3
- package/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +0 -3
- package/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.d.ts +0 -3
- package/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.d.ts +0 -3
- package/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.d.ts +0 -3
- package/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.d.ts +0 -3
- package/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.d.ts +0 -3
- package/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.d.ts +0 -3
- package/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.d.ts +0 -3
- package/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.d.ts +0 -3
- package/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.d.ts +0 -3
- package/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.d.ts +0 -3
- package/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.d.ts +0 -3
- package/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.d.ts +0 -3
- package/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.d.ts +0 -3
- package/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.d.ts +0 -3
- package/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.d.ts +0 -3
- package/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.d.ts +0 -3
- package/lib/gov-ui/directives/remove-host.directive.d.ts +0 -3
- package/lib/gov-ui/gov-ui.service.d.ts +0 -3
- package/lib/models/feature-user.d.ts +1 -1
- package/lib/models/filter.model.d.ts +2 -2
- package/lib/models/public_api.d.ts +0 -1
- package/lib/models/user-details.model.d.ts +0 -2
- package/lib/pipes/capitalize/capitalize.pipe.d.ts +0 -3
- package/lib/services/address/address.service.d.ts +0 -3
- package/lib/services/case-sharing-state/case-sharing-state.service.d.ts +0 -3
- package/lib/services/cookie/cookie.service.d.ts +0 -3
- package/lib/services/feature-toggle/feature-toggle.guard.d.ts +0 -3
- package/lib/services/feature-toggle/feature-toggle.service.d.ts +0 -3
- package/lib/services/feature-toggle/launch-darkly.service.d.ts +0 -3
- package/lib/services/filter/filter.service.d.ts +0 -3
- package/lib/services/find-person/find-person.service.d.ts +0 -3
- package/lib/services/google-analytics/google-analytics.service.d.ts +0 -3
- package/lib/services/google-tag-manager/google-tag-manager.service.d.ts +0 -3
- package/lib/services/loading/loading.service.d.ts +0 -3
- package/lib/services/locations/location.service.d.ts +0 -3
- package/lib/services/manage-session/manage-session.services.d.ts +0 -3
- package/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.d.ts +0 -3
- package/lib/services/ref-data/ref-data.service.d.ts +0 -3
- package/lib/services/role-guard/role.guard.d.ts +0 -3
- package/lib/services/role-guard/role.service.d.ts +2 -5
- package/lib/services/storage/session-storage/session-storage.service.d.ts +0 -3
- package/lib/services/task-name/task-name.service.d.ts +0 -3
- package/lib/services/timeout-notifications/timeout-notifications.service.d.ts +0 -3
- package/package.json +9 -24
- package/esm2020/hmcts-rpx-xui-common-lib.mjs +0 -5
- package/esm2020/lib/components/accessibility/accessibility.component.mjs +0 -486
- 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 -144
- 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 -187
- package/esm2020/lib/components/find-task-name/find-task-name.component.mjs +0 -200
- 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 -205
- 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 -130
- 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 -410
- 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 -265
- 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/directives/let/let.directive.mjs +0 -29
- package/esm2020/lib/exui-common-lib.module.mjs +0 -313
- 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/gov-ui.service.mjs +0 -14
- package/esm2020/lib/models/user-access-type.model.mjs +0 -2
- package/esm2020/lib/models/user-details.model.mjs +0 -2
- package/esm2020/lib/pipes/capitalize/capitalize.pipe.mjs +0 -15
- 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/cookie/cookie.service.mjs +0 -48
- package/esm2020/lib/services/feature-toggle/feature-toggle.guard.mjs +0 -34
- package/esm2020/lib/services/feature-toggle/feature-toggle.service.mjs +0 -29
- package/esm2020/lib/services/find-person/find-person.service.mjs +0 -114
- 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/locations/location.service.mjs +0 -38
- package/esm2020/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.mjs +0 -33
- package/esm2020/lib/services/role-guard/role.service.mjs +0 -22
- package/fesm2015/hmcts-rpx-xui-common-lib.mjs +0 -10735
- package/fesm2015/hmcts-rpx-xui-common-lib.mjs.map +0 -1
- package/fesm2020/hmcts-rpx-xui-common-lib.mjs +0 -9774
- package/fesm2020/hmcts-rpx-xui-common-lib.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/models/user-access-type.model.d.ts +0 -6
- /package/{esm2020/lib/components/generic-filter/generic-filter-utils.mjs → esm2015/lib/components/generic-filter/generic-filter-utils.js} +0 -0
- /package/{esm2020/lib/components/index.mjs → esm2015/lib/components/index.js} +0 -0
- /package/{esm2020/lib/components/public_api.mjs → esm2015/lib/components/public_api.js} +0 -0
- /package/{esm2020/lib/directives/index.mjs → esm2015/lib/directives/index.js} +0 -0
- /package/{esm2020/lib/directives/public-api.mjs → esm2015/lib/directives/public-api.js} +0 -0
- /package/{esm2020/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.mjs → esm2015/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.js} +0 -0
- /package/{esm2020/lib/gov-ui/components/index.mjs → esm2015/lib/gov-ui/components/index.js} +0 -0
- /package/{esm2020/lib/gov-ui/components/public_api.mjs → esm2015/lib/gov-ui/components/public_api.js} +0 -0
- /package/{esm2020/lib/gov-ui/index.mjs → esm2015/lib/gov-ui/index.js} +0 -0
- /package/{esm2020/lib/gov-ui/models/checkboxes-model.mjs → esm2015/lib/gov-ui/models/checkboxes-model.js} +0 -0
- /package/{esm2020/lib/gov-ui/models/error-messages-model.mjs → esm2015/lib/gov-ui/models/error-messages-model.js} +0 -0
- /package/{esm2020/lib/gov-ui/models/gov-ui-config-model.mjs → esm2015/lib/gov-ui/models/gov-ui-config-model.js} +0 -0
- /package/{esm2020/lib/gov-ui/models/index.mjs → esm2015/lib/gov-ui/models/index.js} +0 -0
- /package/{esm2020/lib/gov-ui/models/isession-storage.interface.mjs → esm2015/lib/gov-ui/models/isession-storage.interface.js} +0 -0
- /package/{esm2020/lib/gov-ui/models/public_api.mjs → esm2015/lib/gov-ui/models/public_api.js} +0 -0
- /package/{esm2020/lib/gov-ui/models/radio-buttons.model.mjs → esm2015/lib/gov-ui/models/radio-buttons.model.js} +0 -0
- /package/{esm2020/lib/gov-ui/public_api.mjs → esm2015/lib/gov-ui/public_api.js} +0 -0
- /package/{esm2020/lib/gov-ui/util/helpers/html-templates.helper.mjs → esm2015/lib/gov-ui/util/helpers/html-templates.helper.js} +0 -0
- /package/{esm2020/lib/gov-ui/util/session-storage/session-storage-utils.mjs → esm2015/lib/gov-ui/util/session-storage/session-storage-utils.js} +0 -0
- /package/{esm2020/lib/gov-ui/validators/checkboxes-be-checked.validator.mjs → esm2015/lib/gov-ui/validators/checkboxes-be-checked.validator.js} +0 -0
- /package/{esm2020/lib/gov-ui/validators/date.validator.mjs → esm2015/lib/gov-ui/validators/date.validator.js} +0 -0
- /package/{esm2020/lib/gov-ui/validators/index.mjs → esm2015/lib/gov-ui/validators/index.js} +0 -0
- /package/{esm2020/lib/gov-ui/validators/public_api.mjs → esm2015/lib/gov-ui/validators/public_api.js} +0 -0
- /package/{esm2020/lib/gov-ui/validators/radio-group.validator.mjs → esm2015/lib/gov-ui/validators/radio-group.validator.js} +0 -0
- /package/{esm2020/lib/models/address-message.enum.mjs → esm2015/lib/models/address-message.enum.js} +0 -0
- /package/{esm2020/lib/models/address-option.model.mjs → esm2015/lib/models/address-option.model.js} +0 -0
- /package/{esm2020/lib/models/address.model.mjs → esm2015/lib/models/address.model.js} +0 -0
- /package/{esm2020/lib/models/case-share.model.mjs → esm2015/lib/models/case-share.model.js} +0 -0
- /package/{esm2020/lib/models/contact-details.model.mjs → esm2015/lib/models/contact-details.model.js} +0 -0
- /package/{esm2020/lib/models/due-date.model.mjs → esm2015/lib/models/due-date.model.js} +0 -0
- /package/{esm2020/lib/models/feature-user.mjs → esm2015/lib/models/feature-user.js} +0 -0
- /package/{esm2020/lib/models/filter.model.mjs → esm2015/lib/models/filter.model.js} +0 -0
- /package/{esm2020/lib/models/idle-config.model.mjs → esm2015/lib/models/idle-config.model.js} +0 -0
- /package/{esm2020/lib/models/index.mjs → esm2015/lib/models/index.js} +0 -0
- /package/{esm2020/lib/models/location.model.mjs → esm2015/lib/models/location.model.js} +0 -0
- /package/{esm2020/lib/models/pagination.model.mjs → esm2015/lib/models/pagination.model.js} +0 -0
- /package/{esm2020/lib/models/person.model.mjs → esm2015/lib/models/person.model.js} +0 -0
- /package/{esm2020/lib/models/search-options.model.mjs → esm2015/lib/models/search-options.model.js} +0 -0
- /package/{esm2020/lib/models/task-name.model.mjs → esm2015/lib/models/task-name.model.js} +0 -0
- /package/{esm2020/lib/models/tcDocument.model.mjs → esm2015/lib/models/tcDocument.model.js} +0 -0
- /package/{esm2020/lib/models/timeout-notification.model.mjs → esm2015/lib/models/timeout-notification.model.js} +0 -0
- /package/{esm2020/lib/models/user.model.mjs → esm2015/lib/models/user.model.js} +0 -0
- /package/{esm2020/lib/pipes/index.mjs → esm2015/lib/pipes/index.js} +0 -0
- /package/{esm2020/lib/services/address/address-parser.mjs → esm2015/lib/services/address/address-parser.js} +0 -0
- /package/{esm2020/lib/services/address/address-type.enum.mjs → esm2015/lib/services/address/address-type.enum.js} +0 -0
- /package/{esm2020/lib/services/index.mjs → esm2015/lib/services/index.js} +0 -0
- /package/{esm2020/lib/services/public-api.mjs → esm2015/lib/services/public-api.js} +0 -0
- /package/{esm2020/lib/services/ref-data/index.mjs → esm2015/lib/services/ref-data/index.js} +0 -0
- /package/{esm2020/lib/services/ref-data/models/ref-data-htmcs-service.model.mjs → esm2015/lib/services/ref-data/models/ref-data-htmcs-service.model.js} +0 -0
- /package/{esm2020/lib/services/ref-data/models/ref-data-region.model.mjs → esm2015/lib/services/ref-data/models/ref-data-region.model.js} +0 -0
- /package/{esm2020/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.mjs → esm2015/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.js} +0 -0
- /package/{esm2020/lib/window.mjs → esm2015/lib/window.js} +0 -0
- /package/{esm2020/public-api.mjs → esm2015/public-api.js} +0 -0
|
@@ -0,0 +1,123 @@
|
|
|
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
|
+
export class DueDateComponent {
|
|
5
|
+
constructor(ref) {
|
|
6
|
+
this.ref = ref;
|
|
7
|
+
/**
|
|
8
|
+
* This should be considered HIGH urgency if there are fewer than this
|
|
9
|
+
* many days until the due date.
|
|
10
|
+
* * Set to 0 if you want it to show HIGH if it was due yesterday.
|
|
11
|
+
* * Set to 1 if you want it to show HIGH if it's due today.
|
|
12
|
+
* * Set to 2 if you want it to show HIGH if it's due tomorrow.
|
|
13
|
+
*
|
|
14
|
+
* Defaults to 0 (ZERO), which means it won't show as HIGH urgency until the
|
|
15
|
+
* due date is in the past.
|
|
16
|
+
*
|
|
17
|
+
* NOTE: If this is higher than the mediumUrgencyCutoff value, MEDIUM urgency
|
|
18
|
+
* will never be shown.
|
|
19
|
+
*
|
|
20
|
+
* ALSO NOTE: Anything overdue is automatically considered HIGH urgency.
|
|
21
|
+
*/
|
|
22
|
+
this.highUrgencyCutoff = 0; // Default
|
|
23
|
+
/**
|
|
24
|
+
* This should be considered MEDIUM urgency if there are fewer than this
|
|
25
|
+
* many days until the due date.
|
|
26
|
+
* * Set to 1 if you want it to show MEDIUM if it's due today.
|
|
27
|
+
* * Set to 2 if you want it to show MEDIUM if it's due tomorrow.
|
|
28
|
+
* * Set to 3 if you want it to show MEDIUM if it's due the day after tomorrow.
|
|
29
|
+
*
|
|
30
|
+
* Defaults to 2, which means it won't show as MEDIUM urgency unless the
|
|
31
|
+
* due date is today or tomorrow.
|
|
32
|
+
*
|
|
33
|
+
* NOTE: If this is lower than the highUrgencyCutoff value, MEDIUM urgency
|
|
34
|
+
* will never be shown.
|
|
35
|
+
*/
|
|
36
|
+
this.mediumUrgencyCutoff = 2;
|
|
37
|
+
}
|
|
38
|
+
get badge() {
|
|
39
|
+
return this.pBadge;
|
|
40
|
+
}
|
|
41
|
+
get label() {
|
|
42
|
+
return this.pLabel;
|
|
43
|
+
}
|
|
44
|
+
get accessibleLabel() {
|
|
45
|
+
return this.pAccessibleLabel;
|
|
46
|
+
}
|
|
47
|
+
get daysDiff() {
|
|
48
|
+
return this.pDaysDiff;
|
|
49
|
+
}
|
|
50
|
+
// Catch any changes to any of the Input() properties.
|
|
51
|
+
ngOnChanges() {
|
|
52
|
+
this.handleInputChanges();
|
|
53
|
+
}
|
|
54
|
+
// checks the data projected into the component
|
|
55
|
+
ngAfterContentChecked() {
|
|
56
|
+
this.ref.detectChanges();
|
|
57
|
+
}
|
|
58
|
+
// Set up the label, urgency class, and accessibility fields.
|
|
59
|
+
handleInputChanges() {
|
|
60
|
+
// If we don't have a dueDate, skip out of here.
|
|
61
|
+
if (!this.dueDate) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
// How many days from today is the due date?
|
|
65
|
+
// Already happened means daysDiff > 0;
|
|
66
|
+
// Today means daysDiff = 0;
|
|
67
|
+
// Yet to come means daysDiff < 0;
|
|
68
|
+
this.pDaysDiff = this.getDaysDifference(this.dueDate, new Date());
|
|
69
|
+
// Is it overdue?
|
|
70
|
+
if (this.daysDiff > 0) {
|
|
71
|
+
this.pBadge = DateBadgeColour.RED;
|
|
72
|
+
const daysLabel = this.daysDiff === 1 ? 'day' : 'days';
|
|
73
|
+
this.pLabel = `+${this.daysDiff} ${daysLabel}`;
|
|
74
|
+
this.pAccessibleLabel = `This task is ${this.daysDiff} ${daysLabel} past its due date`;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
// Special label for "Today".
|
|
78
|
+
if (this.daysDiff === 0) {
|
|
79
|
+
this.pLabel = 'TODAY';
|
|
80
|
+
this.pAccessibleLabel = 'This task is due to be completed today';
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
this.pLabel = `${formatDate(this.dueDate, 'd MMM', 'en-GB')}`;
|
|
84
|
+
this.pAccessibleLabel = `This task is due to be completed by ${formatDate(this.dueDate, 'd MMMM y', 'en-GB')}`;
|
|
85
|
+
}
|
|
86
|
+
if (this.daysDiff + this.highUrgencyCutoff > 0) {
|
|
87
|
+
this.pBadge = DateBadgeColour.RED;
|
|
88
|
+
}
|
|
89
|
+
else if (this.daysDiff + this.mediumUrgencyCutoff > 0) {
|
|
90
|
+
this.pBadge = DateBadgeColour.ORANGE;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.pBadge = DateBadgeColour.GREEN;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// This will return the difference between two dates.
|
|
98
|
+
// If fromDate is BEFORE toDate, it will be a positive number.
|
|
99
|
+
// If fromDate is AFTER toDate, it will be a negative number.
|
|
100
|
+
getDaysDifference(fromDate, toDate) {
|
|
101
|
+
const fromEpoch = fromDate.getTime();
|
|
102
|
+
const toEpoch = toDate.getTime();
|
|
103
|
+
const diffSecs = Math.floor((toEpoch - fromEpoch) / 1000);
|
|
104
|
+
return Math.floor(diffSecs / SECONDS_IN_A_DAY);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
DueDateComponent.decorators = [
|
|
108
|
+
{ type: Component, args: [{
|
|
109
|
+
selector: 'xuilib-due-date',
|
|
110
|
+
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>",
|
|
111
|
+
encapsulation: ViewEncapsulation.None,
|
|
112
|
+
styles: [".due-date{white-space:nowrap}.due-date.hmcts-badge--orange{color:#f47738;border-color:#f47738}"]
|
|
113
|
+
},] }
|
|
114
|
+
];
|
|
115
|
+
DueDateComponent.ctorParameters = () => [
|
|
116
|
+
{ type: ChangeDetectorRef }
|
|
117
|
+
];
|
|
118
|
+
DueDateComponent.propDecorators = {
|
|
119
|
+
dueDate: [{ type: Input }],
|
|
120
|
+
highUrgencyCutoff: [{ type: Input }],
|
|
121
|
+
mediumUrgencyCutoff: [{ type: Input }]
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kdWUtZGF0ZS9kdWUtZGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBdUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2SCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFRaEYsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixZQUE2QixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQVVuRDs7Ozs7Ozs7Ozs7Ozs7V0FjRztRQUNhLHNCQUFpQixHQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVU7UUFFekQ7Ozs7Ozs7Ozs7OztXQVlHO1FBQ2Esd0JBQW1CLEdBQVcsQ0FBQyxDQUFDO0lBdkNoRCxDQUFDO0lBMkNELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBSUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFJRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUlELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELHNEQUFzRDtJQUMvQyxXQUFXO1FBQ2hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCwrQ0FBK0M7SUFDeEMscUJBQXFCO1FBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELDZEQUE2RDtJQUNyRCxrQkFBa0I7UUFDeEIsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUVELDRDQUE0QztRQUM1Qyx1Q0FBdUM7UUFDdkMsNEJBQTRCO1FBQzVCLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVsRSxpQkFBaUI7UUFDakIsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUM7WUFDbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTLG9CQUFvQixDQUFDO1NBQ3hGO2FBQU07WUFDTCw2QkFBNkI7WUFDN0IsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyx3Q0FBd0MsQ0FBQzthQUNsRTtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQzlELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyx1Q0FBdUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7YUFDaEg7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsRUFBRTtnQkFDOUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDO2FBQ25DO2lCQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxFQUFFO2dCQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7YUFDdEM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDO2FBQ3JDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQscURBQXFEO0lBQ3JELDhEQUE4RDtJQUM5RCw2REFBNkQ7SUFDckQsaUJBQWlCLENBQUMsUUFBYyxFQUFFLE1BQVk7UUFDcEQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzFELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztJQUNqRCxDQUFDOzs7WUFsSUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLG1PQUFzQztnQkFFdEMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2FBQ3RDOzs7WUFUNkIsaUJBQWlCOzs7c0JBb0I1QyxLQUFLO2dDQWlCTCxLQUFLO2tDQWVMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyQ29udGVudENoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERhdGVCYWRnZUNvbG91ciwgU0VDT05EU19JTl9BX0RBWSB9IGZyb20gJy4uLy4uL21vZGVscy9kdWUtZGF0ZS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aWxpYi1kdWUtZGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnZHVlLWRhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnZHVlLWRhdGUuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBEdWVEYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRDaGVja2VkIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFRoZSBkdWUgZGF0ZSB0byB1c2UgYXMgdGhlIGJhc2lzIGZvciByZW5kZXJpbmcgdGhpcyBjb21wb25lbnQuIEl0IGlzXG4gICAqIGNvbXBhcmVkIHRvIHRoZSBjdXJyZW50IGRhdGUgYW5kIGRpc3BsYXllZCBhY2NvcmRpbmdseS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkdWVEYXRlOiBEYXRlO1xuXG4gIC8qKlxuICAgKiBUaGlzIHNob3VsZCBiZSBjb25zaWRlcmVkIEhJR0ggdXJnZW5jeSBpZiB0aGVyZSBhcmUgZmV3ZXIgdGhhbiB0aGlzXG4gICAqIG1hbnkgZGF5cyB1bnRpbCB0aGUgZHVlIGRhdGUuXG4gICAqICAgICogU2V0IHRvIDAgaWYgeW91IHdhbnQgaXQgdG8gc2hvdyBISUdIIGlmIGl0IHdhcyBkdWUgeWVzdGVyZGF5LlxuICAgKiAgICAqIFNldCB0byAxIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgSElHSCBpZiBpdCdzIGR1ZSB0b2RheS5cbiAgICogICAgKiBTZXQgdG8gMiBpZiB5b3Ugd2FudCBpdCB0byBzaG93IEhJR0ggaWYgaXQncyBkdWUgdG9tb3Jyb3cuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIDAgKFpFUk8pLCB3aGljaCBtZWFucyBpdCB3b24ndCBzaG93IGFzIEhJR0ggdXJnZW5jeSB1bnRpbCB0aGVcbiAgICogZHVlIGRhdGUgaXMgaW4gdGhlIHBhc3QuXG4gICAqXG4gICAqIE5PVEU6IElmIHRoaXMgaXMgaGlnaGVyIHRoYW4gdGhlIG1lZGl1bVVyZ2VuY3lDdXRvZmYgdmFsdWUsIE1FRElVTSB1cmdlbmN5XG4gICAqIHdpbGwgbmV2ZXIgYmUgc2hvd24uXG4gICAqXG4gICAqIEFMU08gTk9URTogQW55dGhpbmcgb3ZlcmR1ZSBpcyBhdXRvbWF0aWNhbGx5IGNvbnNpZGVyZWQgSElHSCB1cmdlbmN5LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGhpZ2hVcmdlbmN5Q3V0b2ZmOiBudW1iZXIgPSAwOyAvLyBEZWZhdWx0XG5cbiAgLyoqXG4gICAqIFRoaXMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgTUVESVVNIHVyZ2VuY3kgaWYgdGhlcmUgYXJlIGZld2VyIHRoYW4gdGhpc1xuICAgKiBtYW55IGRheXMgdW50aWwgdGhlIGR1ZSBkYXRlLlxuICAgKiAgICAqIFNldCB0byAxIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgTUVESVVNIGlmIGl0J3MgZHVlIHRvZGF5LlxuICAgKiAgICAqIFNldCB0byAyIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgTUVESVVNIGlmIGl0J3MgZHVlIHRvbW9ycm93LlxuICAgKiAgICAqIFNldCB0byAzIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgTUVESVVNIGlmIGl0J3MgZHVlIHRoZSBkYXkgYWZ0ZXIgdG9tb3Jyb3cuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIDIsIHdoaWNoIG1lYW5zIGl0IHdvbid0IHNob3cgYXMgTUVESVVNIHVyZ2VuY3kgdW5sZXNzIHRoZVxuICAgKiBkdWUgZGF0ZSBpcyB0b2RheSBvciB0b21vcnJvdy5cbiAgICpcbiAgICogTk9URTogSWYgdGhpcyBpcyBsb3dlciB0aGFuIHRoZSBoaWdoVXJnZW5jeUN1dG9mZiB2YWx1ZSwgTUVESVVNIHVyZ2VuY3lcbiAgICogd2lsbCBuZXZlciBiZSBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBtZWRpdW1VcmdlbmN5Q3V0b2ZmOiBudW1iZXIgPSAyO1xuXG4gIC8vIFRoZSBITUNUUyBiYWRnZSBjbGFzcywgdXNlZCBmb3IgY29sb3VyYXRpb24uXG4gIHByaXZhdGUgcEJhZGdlOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgYmFkZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wQmFkZ2U7XG4gIH1cblxuICAvLyBUaGUgdGV4dHVhbCBsYWJlbCB0byBkaXNwbGF5IGluIHRoZSBjb21wb25lbnQuXG4gIHByaXZhdGUgcExhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wTGFiZWw7XG4gIH1cblxuICAvLyBUaGUgYWNjZXNzaWJsZSBsYWJlbCwgd2hpY2ggaXMgYWxzbyB1c2VkIGZvciB0aGUgdG9vbHRpcC5cbiAgcHJpdmF0ZSBwQWNjZXNzaWJsZUxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgYWNjZXNzaWJsZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucEFjY2Vzc2libGVMYWJlbDtcbiAgfVxuXG4gIC8vIEhvdyBtYW55IGRheXMgdGhlIGR1ZURhdGUgdmFyaWVzIGZyb20gdG9kYXkuXG4gIHByaXZhdGUgcERheXNEaWZmOiBudW1iZXI7XG4gIHB1YmxpYyBnZXQgZGF5c0RpZmYoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wRGF5c0RpZmY7XG4gIH1cblxuICAvLyBDYXRjaCBhbnkgY2hhbmdlcyB0byBhbnkgb2YgdGhlIElucHV0KCkgcHJvcGVydGllcy5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyBjaGVja3MgdGhlIGRhdGEgcHJvamVjdGVkIGludG8gdGhlIGNvbXBvbmVudFxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8vIFNldCB1cCB0aGUgbGFiZWwsIHVyZ2VuY3kgY2xhc3MsIGFuZCBhY2Nlc3NpYmlsaXR5IGZpZWxkcy5cbiAgcHJpdmF0ZSBoYW5kbGVJbnB1dENoYW5nZXMoKSB7XG4gICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGR1ZURhdGUsIHNraXAgb3V0IG9mIGhlcmUuXG4gICAgaWYgKCF0aGlzLmR1ZURhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBIb3cgbWFueSBkYXlzIGZyb20gdG9kYXkgaXMgdGhlIGR1ZSBkYXRlP1xuICAgIC8vIEFscmVhZHkgaGFwcGVuZWQgbWVhbnMgZGF5c0RpZmYgPiAwO1xuICAgIC8vIFRvZGF5IG1lYW5zIGRheXNEaWZmID0gMDtcbiAgICAvLyBZZXQgdG8gY29tZSBtZWFucyBkYXlzRGlmZiA8IDA7XG4gICAgdGhpcy5wRGF5c0RpZmYgPSB0aGlzLmdldERheXNEaWZmZXJlbmNlKHRoaXMuZHVlRGF0ZSwgbmV3IERhdGUoKSk7XG5cbiAgICAvLyBJcyBpdCBvdmVyZHVlP1xuICAgIGlmICh0aGlzLmRheXNEaWZmID4gMCkge1xuICAgICAgdGhpcy5wQmFkZ2UgPSBEYXRlQmFkZ2VDb2xvdXIuUkVEO1xuICAgICAgY29uc3QgZGF5c0xhYmVsID0gdGhpcy5kYXlzRGlmZiA9PT0gMSA/ICdkYXknIDogJ2RheXMnO1xuICAgICAgdGhpcy5wTGFiZWwgPSBgKyR7dGhpcy5kYXlzRGlmZn0gJHtkYXlzTGFiZWx9YDtcbiAgICAgIHRoaXMucEFjY2Vzc2libGVMYWJlbCA9IGBUaGlzIHRhc2sgaXMgJHt0aGlzLmRheXNEaWZmfSAke2RheXNMYWJlbH0gcGFzdCBpdHMgZHVlIGRhdGVgO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTcGVjaWFsIGxhYmVsIGZvciBcIlRvZGF5XCIuXG4gICAgICBpZiAodGhpcy5kYXlzRGlmZiA9PT0gMCkge1xuICAgICAgICB0aGlzLnBMYWJlbCA9ICdUT0RBWSc7XG4gICAgICAgIHRoaXMucEFjY2Vzc2libGVMYWJlbCA9ICdUaGlzIHRhc2sgaXMgZHVlIHRvIGJlIGNvbXBsZXRlZCB0b2RheSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBMYWJlbCA9IGAke2Zvcm1hdERhdGUodGhpcy5kdWVEYXRlLCAnZCBNTU0nLCAnZW4tR0InKX1gO1xuICAgICAgICB0aGlzLnBBY2Nlc3NpYmxlTGFiZWwgPSBgVGhpcyB0YXNrIGlzIGR1ZSB0byBiZSBjb21wbGV0ZWQgYnkgJHtmb3JtYXREYXRlKHRoaXMuZHVlRGF0ZSwgJ2QgTU1NTSB5JywgJ2VuLUdCJyl9YDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRheXNEaWZmICsgdGhpcy5oaWdoVXJnZW5jeUN1dG9mZiA+IDApIHtcbiAgICAgICAgdGhpcy5wQmFkZ2UgPSBEYXRlQmFkZ2VDb2xvdXIuUkVEO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmRheXNEaWZmICsgdGhpcy5tZWRpdW1VcmdlbmN5Q3V0b2ZmID4gMCkge1xuICAgICAgICB0aGlzLnBCYWRnZSA9IERhdGVCYWRnZUNvbG91ci5PUkFOR0U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBCYWRnZSA9IERhdGVCYWRnZUNvbG91ci5HUkVFTjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIHdpbGwgcmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGRhdGVzLlxuICAvLyBJZiBmcm9tRGF0ZSBpcyBCRUZPUkUgdG9EYXRlLCBpdCB3aWxsIGJlIGEgcG9zaXRpdmUgbnVtYmVyLlxuICAvLyBJZiBmcm9tRGF0ZSBpcyBBRlRFUiB0b0RhdGUsIGl0IHdpbGwgYmUgYSBuZWdhdGl2ZSBudW1iZXIuXG4gIHByaXZhdGUgZ2V0RGF5c0RpZmZlcmVuY2UoZnJvbURhdGU6IERhdGUsIHRvRGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgZnJvbUVwb2NoID0gZnJvbURhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IHRvRXBvY2ggPSB0b0RhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGRpZmZTZWNzID0gTWF0aC5mbG9vcigodG9FcG9jaCAtIGZyb21FcG9jaCkgLyAxMDAwKTtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihkaWZmU2VjcyAvIFNFQ09ORFNfSU5fQV9EQVkpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Main Page Wrapper
|
|
4
|
+
* Responsible for:
|
|
5
|
+
* Wrapping content within the gov-uk html elements bellow
|
|
6
|
+
* @prop showBackLink - switch for back link
|
|
7
|
+
* @prop appHeaderTitle = appHeaderTitle
|
|
8
|
+
* @prop appFunctionalTitle = appFunctionalTitle
|
|
9
|
+
* @prop summaryErrors list of errors
|
|
10
|
+
* @prop back link, appHeaderTitle (appHeaderTitle), summaryErrors (array of errors)
|
|
11
|
+
*/
|
|
12
|
+
export class ExuiPageWrapperComponent {
|
|
13
|
+
constructor() { }
|
|
14
|
+
}
|
|
15
|
+
ExuiPageWrapperComponent.decorators = [
|
|
16
|
+
{ type: Component, args: [{
|
|
17
|
+
selector: 'exui-page-wrapper',
|
|
18
|
+
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",
|
|
19
|
+
styles: [".page{width:100%}"]
|
|
20
|
+
},] }
|
|
21
|
+
];
|
|
22
|
+
ExuiPageWrapperComponent.ctorParameters = () => [];
|
|
23
|
+
ExuiPageWrapperComponent.propDecorators = {
|
|
24
|
+
backLink: [{ type: Input }],
|
|
25
|
+
title: [{ type: Input }],
|
|
26
|
+
fnTitle: [{ type: Input }]
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh1aS1wYWdlLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9leHVpLW1haW4td3JhcHBlci9leHVpLXBhZ2Utd3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0M7Ozs7Ozs7OztHQVNHO0FBTUgsTUFBTSxPQUFPLHdCQUF3QjtJQU1uQyxnQkFBZ0IsQ0FBQzs7O1lBWGxCLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3Qiwwa0JBQStDOzthQUVoRDs7Ozt1QkFHRSxLQUFLO29CQUNMLEtBQUs7c0JBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vKipcbiAqIE1haW4gUGFnZSBXcmFwcGVyXG4gKiBSZXNwb25zaWJsZSBmb3I6XG4gKiBXcmFwcGluZyBjb250ZW50IHdpdGhpbiB0aGUgZ292LXVrIGh0bWwgZWxlbWVudHMgYmVsbG93XG4gKiBAcHJvcCBzaG93QmFja0xpbmsgLSBzd2l0Y2ggZm9yIGJhY2sgbGlua1xuICogQHByb3AgYXBwSGVhZGVyVGl0bGUgPSBhcHBIZWFkZXJUaXRsZVxuICogQHByb3AgYXBwRnVuY3Rpb25hbFRpdGxlID0gYXBwRnVuY3Rpb25hbFRpdGxlXG4gKiBAcHJvcCBzdW1tYXJ5RXJyb3JzIGxpc3Qgb2YgZXJyb3JzXG4gKiBAcHJvcCBiYWNrIGxpbmssIGFwcEhlYWRlclRpdGxlIChhcHBIZWFkZXJUaXRsZSksIHN1bW1hcnlFcnJvcnMgKGFycmF5IG9mIGVycm9ycylcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXh1aS1wYWdlLXdyYXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJ2V4dWktcGFnZS13cmFwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2V4dWktcGFnZS13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRXh1aVBhZ2VXcmFwcGVyQ29tcG9uZW50ICB7XG5cbiAgQElucHV0KCkgcHVibGljIGJhY2tMaW5rOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZm5UaXRsZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,146 @@
|
|
|
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
|
+
export class FindLocationComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.locationFieldChanged = new EventEmitter();
|
|
9
|
+
this.submitted = true;
|
|
10
|
+
this.enableAddLocationButton = true;
|
|
11
|
+
this.locationTitle = 'Search for a location by name';
|
|
12
|
+
this.disableInputField = false;
|
|
13
|
+
this.tempSelectedLocation = null;
|
|
14
|
+
this.serviceIds = 'SSCS,IA';
|
|
15
|
+
this.pServices = [];
|
|
16
|
+
this.pDisabled = false;
|
|
17
|
+
}
|
|
18
|
+
get disabled() {
|
|
19
|
+
return this.pDisabled;
|
|
20
|
+
}
|
|
21
|
+
set disabled(value) {
|
|
22
|
+
if (value) {
|
|
23
|
+
this.searchLocationComponent.resetSearchTerm();
|
|
24
|
+
this.removeSelectedValues();
|
|
25
|
+
}
|
|
26
|
+
this.pDisabled = this.disableInputField === true ? true : null;
|
|
27
|
+
}
|
|
28
|
+
get services() {
|
|
29
|
+
return this.pServices;
|
|
30
|
+
}
|
|
31
|
+
set services(value) {
|
|
32
|
+
this.pServices = value;
|
|
33
|
+
const field = this.fields.find(f => {
|
|
34
|
+
if (this.field) {
|
|
35
|
+
return f.name === this.field.findLocationField;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
if (field) {
|
|
39
|
+
if (typeof value === 'string') {
|
|
40
|
+
this.serviceIds = value;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.serviceIds = getValues(field.options, value).filter(x => x !== 'services_all').join(',');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
get selectedLocations() {
|
|
48
|
+
var _a, _b;
|
|
49
|
+
return (_b = (_a = this.form.get(this.field.name)) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.filter(location => location.epimms_id);
|
|
50
|
+
}
|
|
51
|
+
get propertyNameFilter() {
|
|
52
|
+
const DEFAULT_PROPERTY_NAME = 'site_name';
|
|
53
|
+
return this.field.propertyNameFilter ? this.field.propertyNameFilter
|
|
54
|
+
: DEFAULT_PROPERTY_NAME;
|
|
55
|
+
}
|
|
56
|
+
ngOnInit() {
|
|
57
|
+
if (this.formSubmissionEvent$) {
|
|
58
|
+
this.formSubmissionEventSubscription = this.formSubmissionEvent$.subscribe(() => {
|
|
59
|
+
// Shouldn't reset search term if single mode and already has selected
|
|
60
|
+
const oneSelectedAndMaxSelectedOne = this.selectedLocations.length === 1 && this.field.maxSelected === 1;
|
|
61
|
+
if (!oneSelectedAndMaxSelectedOne) {
|
|
62
|
+
this.searchLocationComponent.resetSearchTerm();
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
addLocation() {
|
|
68
|
+
if (this.tempSelectedLocation) {
|
|
69
|
+
this.addSelectedLocationsToForm([this.tempSelectedLocation]);
|
|
70
|
+
this.tempSelectedLocation = null;
|
|
71
|
+
this.searchLocationComponent.resetSearchTerm();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
removeLocation(location) {
|
|
75
|
+
if (location.epimms_id) {
|
|
76
|
+
const formArray = this.form.get(this.field.name);
|
|
77
|
+
const index = formArray.value.findIndex(selectedLocation => selectedLocation.epimms_id === location.epimms_id);
|
|
78
|
+
if (index > -1) {
|
|
79
|
+
formArray.removeAt(index);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
onInputChanged(term) {
|
|
84
|
+
// if the filter is in single mode clear the selected locations
|
|
85
|
+
if (typeof term === 'string' && this.field.maxSelected === 1) {
|
|
86
|
+
this.removeSelectedValues();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
onSearchInputChanged() {
|
|
90
|
+
this.locationFieldChanged.emit();
|
|
91
|
+
}
|
|
92
|
+
onLocationSelected(location) {
|
|
93
|
+
if (this.field.maxSelected === 1) {
|
|
94
|
+
this.removeSelectedValues();
|
|
95
|
+
this.addSelectedLocationsToForm([location]);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
if (!this.selectedLocations.find(x => x.epimms_id === location.epimms_id)) {
|
|
99
|
+
if (location.epimms_id) {
|
|
100
|
+
this.tempSelectedLocation = location;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
removeSelectedValues() {
|
|
106
|
+
var _a;
|
|
107
|
+
const formArray = this.form.get((_a = this.field) === null || _a === void 0 ? void 0 : _a.name);
|
|
108
|
+
if (formArray) {
|
|
109
|
+
for (let i = 0; i < formArray.length; i++) {
|
|
110
|
+
formArray.removeAt(i);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
addSelectedLocationsToForm(locations) {
|
|
115
|
+
const formArray = this.form.get(this.field.name);
|
|
116
|
+
for (const location of locations) {
|
|
117
|
+
formArray.push(new FormControl(location));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
ngOnDestroy() {
|
|
121
|
+
var _a;
|
|
122
|
+
(_a = this.formSubmissionEventSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
FindLocationComponent.decorators = [
|
|
126
|
+
{ type: Component, args: [{
|
|
127
|
+
selector: 'xuilib-find-location',
|
|
128
|
+
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",
|
|
129
|
+
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}"]
|
|
130
|
+
},] }
|
|
131
|
+
];
|
|
132
|
+
FindLocationComponent.propDecorators = {
|
|
133
|
+
locationFieldChanged: [{ type: Output }],
|
|
134
|
+
submitted: [{ type: Input }],
|
|
135
|
+
enableAddLocationButton: [{ type: Input }],
|
|
136
|
+
form: [{ type: Input }],
|
|
137
|
+
field: [{ type: Input }],
|
|
138
|
+
fields: [{ type: Input }],
|
|
139
|
+
locationTitle: [{ type: Input }],
|
|
140
|
+
disableInputField: [{ type: Input }],
|
|
141
|
+
formSubmissionEvent$: [{ type: Input }],
|
|
142
|
+
searchLocationComponent: [{ type: ViewChild, args: [SearchLocationComponent, { static: true },] }],
|
|
143
|
+
disabled: [{ type: Input }],
|
|
144
|
+
services: [{ type: Input }]
|
|
145
|
+
};
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1sb2NhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbmQtbG9jYXRpb24vZmluZC1sb2NhdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBYSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBT3ZGLE1BQU0sT0FBTyxxQkFBcUI7SUFMbEM7UUFNbUIseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNqRCxjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLDRCQUF1QixHQUFZLElBQUksQ0FBQztRQUl4QyxrQkFBYSxHQUFHLCtCQUErQixDQUFDO1FBQ2hELHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUVuQyx5QkFBb0IsR0FBMEIsSUFBSSxDQUFDO1FBQ25ELGVBQVUsR0FBVyxTQUFTLENBQUM7UUFFOUIsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQUN6QixjQUFTLEdBQVksS0FBSyxDQUFDO0lBeUhyQyxDQUFDO0lBdEhDLElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQ1csUUFBUSxDQUFDLEtBQWM7UUFDaEMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsdUJBQXVCLENBQUMsZUFB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LElBQUksU0FBUyxFQUFFO1lBQ2IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3pDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdkI7U0FDRjtJQUNILENBQUM7SUFFTywwQkFBMEIsQ0FBQyxTQUFrQztRQUNuRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBYyxDQUFDO1FBQzlELEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFO1lBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFTSxXQUFXOztRQUNoQixNQUFBLElBQUksQ0FBQywrQkFBK0IsMENBQUUsV0FBVyxHQUFHO0lBQ3RELENBQUM7OztZQTNJRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsK3FEQUE2Qzs7YUFFOUM7OzttQ0FFRSxNQUFNO3dCQUNOLEtBQUs7c0NBQ0wsS0FBSzttQkFDTCxLQUFLO29CQUNMLEtBQUs7cUJBQ0wsS0FBSzs0QkFDTCxLQUFLO2dDQUNMLEtBQUs7bUNBQ0wsS0FBSztzQ0FHTCxTQUFTLFNBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO3VCQVNuRCxLQUFLO3VCQWFMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaWx0ZXJGaWVsZENvbmZpZywgTG9jYXRpb25CeUVQSU1NU01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IGdldFZhbHVlcyB9IGZyb20gJy4uL2dlbmVyaWMtZmlsdGVyL2dlbmVyaWMtZmlsdGVyLXV0aWxzJztcbmltcG9ydCB7IFNlYXJjaExvY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWxvY2F0aW9uL3NlYXJjaC1sb2NhdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItZmluZC1sb2NhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9maW5kLWxvY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmluZC1sb2NhdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpbmRMb2NhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQE91dHB1dCgpIHB1YmxpYyBsb2NhdGlvbkZpZWxkQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQElucHV0KCkgcHVibGljIHN1Ym1pdHRlZDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBlbmFibGVBZGRMb2NhdGlvbkJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZDogRmlsdGVyRmllbGRDb25maWc7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpbHRlckZpZWxkQ29uZmlnW107XG4gIEBJbnB1dCgpIHB1YmxpYyBsb2NhdGlvblRpdGxlID0gJ1NlYXJjaCBmb3IgYSBsb2NhdGlvbiBieSBuYW1lJztcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVJbnB1dEZpZWxkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtU3VibWlzc2lvbkV2ZW50JDogU3ViamVjdDx2b2lkPjtcbiAgcHVibGljIHRlbXBTZWxlY3RlZExvY2F0aW9uOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWwgPSBudWxsO1xuICBwdWJsaWMgc2VydmljZUlkczogc3RyaW5nID0gJ1NTQ1MsSUEnO1xuICBAVmlld0NoaWxkKFNlYXJjaExvY2F0aW9uQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgc2VhcmNoTG9jYXRpb25Db21wb25lbnQ6IFNlYXJjaExvY2F0aW9uQ29tcG9uZW50O1xuICBwcml2YXRlIHBTZXJ2aWNlczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBwRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBmb3JtU3VibWlzc2lvbkV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wRGlzYWJsZWQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNlYXJjaExvY2F0aW9uQ29tcG9uZW50LnJlc2V0U2VhcmNoVGVybSgpO1xuICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZFZhbHVlcygpO1xuICAgIH1cbiAgICB0aGlzLnBEaXNhYmxlZCA9IHRoaXMuZGlzYWJsZUlucHV0RmllbGQgPT09IHRydWUgPyB0cnVlIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VydmljZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnBTZXJ2aWNlcztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VydmljZXModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wU2VydmljZXMgPSB2YWx1ZTtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoZiA9PiB7XG4gICAgICBpZiAodGhpcy5maWVsZCkge1xuICAgICAgICByZXR1cm4gZi5uYW1lID09PSB0aGlzLmZpZWxkLmZpbmRMb2NhdGlvbkZpZWxkO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGZpZWxkKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLnNlcnZpY2VJZHMgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VydmljZUlkcyA9IGdldFZhbHVlcyhmaWVsZC5vcHRpb25zLCB2YWx1ZSkuZmlsdGVyKHggPT4geCAhPT0gJ3NlcnZpY2VzX2FsbCcpLmpvaW4oJywnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkTG9jYXRpb25zKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpPy52YWx1ZSBhcyBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSk/LmZpbHRlcihsb2NhdGlvbiA9PiBsb2NhdGlvbi5lcGltbXNfaWQpO1xuICB9XG5cbiAgcHVibGljIGdldCBwcm9wZXJ0eU5hbWVGaWx0ZXIoKToga2V5b2YgTG9jYXRpb25CeUVQSU1NU01vZGVsIHtcbiAgICBjb25zdCBERUZBVUxUX1BST1BFUlRZX05BTUUgPSAnc2l0ZV9uYW1lJztcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wZXJ0eU5hbWVGaWx0ZXIgPyB0aGlzLmZpZWxkLnByb3BlcnR5TmFtZUZpbHRlciBhcyBrZXlvZiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxcbiAgICAgIDogREVGQVVMVF9QUk9QRVJUWV9OQU1FO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm1TdWJtaXNzaW9uRXZlbnQkKSB7XG4gICAgICB0aGlzLmZvcm1TdWJtaXNzaW9uRXZlbnRTdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1TdWJtaXNzaW9uRXZlbnQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIFNob3VsZG4ndCByZXNldCBzZWFyY2ggdGVybSBpZiBzaW5nbGUgbW9kZSBhbmQgYWxyZWFkeSBoYXMgc2VsZWN0ZWRcbiAgICAgICAgY29uc3Qgb25lU2VsZWN0ZWRBbmRNYXhTZWxlY3RlZE9uZSA9IHRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMubGVuZ3RoID09PSAxICYmIHRoaXMuZmllbGQubWF4U2VsZWN0ZWQgPT09IDE7XG4gICAgICAgIGlmICghb25lU2VsZWN0ZWRBbmRNYXhTZWxlY3RlZE9uZSkge1xuICAgICAgICAgIHRoaXMuc2VhcmNoTG9jYXRpb25Db21wb25lbnQucmVzZXRTZWFyY2hUZXJtKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRMb2NhdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50ZW1wU2VsZWN0ZWRMb2NhdGlvbikge1xuICAgICAgdGhpcy5hZGRTZWxlY3RlZExvY2F0aW9uc1RvRm9ybShbdGhpcy50ZW1wU2VsZWN0ZWRMb2NhdGlvbl0pO1xuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRMb2NhdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLnNlYXJjaExvY2F0aW9uQ29tcG9uZW50LnJlc2V0U2VhcmNoVGVybSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVMb2NhdGlvbihsb2NhdGlvbjogTG9jYXRpb25CeUVQSU1NU01vZGVsKTogdm9pZCB7XG4gICAgaWYgKGxvY2F0aW9uLmVwaW1tc19pZCkge1xuICAgICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICAgIGNvbnN0IGluZGV4ID0gKGZvcm1BcnJheS52YWx1ZSBhcyBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSkuZmluZEluZGV4KHNlbGVjdGVkTG9jYXRpb24gPT4gc2VsZWN0ZWRMb2NhdGlvbi5lcGltbXNfaWQgPT09IGxvY2F0aW9uLmVwaW1tc19pZCk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICBmb3JtQXJyYXkucmVtb3ZlQXQoaW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbklucHV0Q2hhbmdlZCh0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBpZiB0aGUgZmlsdGVyIGlzIGluIHNpbmdsZSBtb2RlIGNsZWFyIHRoZSBzZWxlY3RlZCBsb2NhdGlvbnNcbiAgICBpZiAodHlwZW9mIHRlcm0gPT09ICdzdHJpbmcnICYmIHRoaXMuZmllbGQubWF4U2VsZWN0ZWQgPT09IDEpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZFZhbHVlcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNlYXJjaElucHV0Q2hhbmdlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2F0aW9uRmllbGRDaGFuZ2VkLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkxvY2F0aW9uU2VsZWN0ZWQobG9jYXRpb246IExvY2F0aW9uQnlFUElNTVNNb2RlbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpZWxkLm1heFNlbGVjdGVkID09PSAxKSB7XG4gICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkVmFsdWVzKCk7XG4gICAgICB0aGlzLmFkZFNlbGVjdGVkTG9jYXRpb25zVG9Gb3JtKFtsb2NhdGlvbl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMuZmluZCh4ID0+IHguZXBpbW1zX2lkID09PSBsb2NhdGlvbi5lcGltbXNfaWQpKSB7XG4gICAgICAgIGlmIChsb2NhdGlvbi5lcGltbXNfaWQpIHtcbiAgICAgICAgICB0aGlzLnRlbXBTZWxlY3RlZExvY2F0aW9uID0gbG9jYXRpb247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVNlbGVjdGVkVmFsdWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZD8ubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgIGlmIChmb3JtQXJyYXkpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybUFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZvcm1BcnJheS5yZW1vdmVBdChpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFNlbGVjdGVkTG9jYXRpb25zVG9Gb3JtKGxvY2F0aW9uczogTG9jYXRpb25CeUVQSU1NU01vZGVsW10pOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgIGZvciAoY29uc3QgbG9jYXRpb24gb2YgbG9jYXRpb25zKSB7XG4gICAgICBmb3JtQXJyYXkucHVzaChuZXcgRm9ybUNvbnRyb2wobG9jYXRpb24pKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3JtU3VibWlzc2lvbkV2ZW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import { zip } from 'rxjs';
|
|
4
|
+
import { of } from 'rxjs/internal/observable/of';
|
|
5
|
+
import { catchError, debounceTime, filter, map, switchMap, tap } from 'rxjs/operators';
|
|
6
|
+
import { PersonRole } from '../../models';
|
|
7
|
+
import { FindAPersonService } from '../../services/find-person/find-person.service';
|
|
8
|
+
export class FindPersonComponent {
|
|
9
|
+
constructor(findPersonService, cd) {
|
|
10
|
+
this.findPersonService = findPersonService;
|
|
11
|
+
this.cd = cd;
|
|
12
|
+
this.personSelected = new EventEmitter();
|
|
13
|
+
this.personFieldChanged = new EventEmitter();
|
|
14
|
+
this.boldTitle = 'Find the person';
|
|
15
|
+
this.subTitle = 'Type the name of the person and select them.';
|
|
16
|
+
this.domain = PersonRole.ALL;
|
|
17
|
+
this.findPersonGroup = new FormGroup({});
|
|
18
|
+
this.submitted = true;
|
|
19
|
+
this.userIncluded = false;
|
|
20
|
+
this.placeholderContent = '';
|
|
21
|
+
this.isNoResultsShown = true;
|
|
22
|
+
this.showUpdatedColor = false;
|
|
23
|
+
this.selectedPersons = [];
|
|
24
|
+
this.errorMessage = 'You must select a name';
|
|
25
|
+
this.idValue = '';
|
|
26
|
+
this.services = 'IA';
|
|
27
|
+
this.disabled = null;
|
|
28
|
+
this.showAutocomplete = false;
|
|
29
|
+
this.filteredOptions = [];
|
|
30
|
+
this.minSearchCharacters = 2;
|
|
31
|
+
}
|
|
32
|
+
ngOnDestroy() {
|
|
33
|
+
if (this.sub) {
|
|
34
|
+
this.sub.unsubscribe();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
ngOnInit() {
|
|
38
|
+
this.findPersonControl = new FormControl(this.selectedPerson);
|
|
39
|
+
this.findPersonGroup.addControl('findPersonControl', this.findPersonControl);
|
|
40
|
+
this.sub = this.findPersonControl.valueChanges.pipe(tap(() => this.showAutocomplete = false), tap(() => this.filteredOptions = []), debounceTime(300), tap((searchTerm) => typeof searchTerm === 'string' ? this.personSelected.emit(null) : void 0), filter((searchTerm) => searchTerm && searchTerm.length > this.minSearchCharacters), switchMap((searchTerm) => this.filter(searchTerm).pipe(tap(() => this.showAutocomplete = true), catchError(() => this.filteredOptions = [])))).subscribe((people) => {
|
|
41
|
+
this.filteredOptions = people;
|
|
42
|
+
this.cd.detectChanges();
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
filter(searchTerm) {
|
|
46
|
+
const findJudicialOrCTSCPeople = this.findPersonService.find({ searchTerm, userRole: this.domain, services: [this.services], userIncluded: this.userIncluded, assignedUser: this.assignedUser });
|
|
47
|
+
const findCaseworkersOrAdminsOrCtsc = this.findPersonService.findCaseworkers({ searchTerm, userRole: this.domain, services: [this.services], userIncluded: this.userIncluded, assignedUser: this.assignedUser });
|
|
48
|
+
if (searchTerm && searchTerm.length > this.minSearchCharacters) {
|
|
49
|
+
switch (this.domain) {
|
|
50
|
+
case PersonRole.JUDICIAL: {
|
|
51
|
+
return findJudicialOrCTSCPeople.pipe(map(persons => {
|
|
52
|
+
const ids = this.selectedPersons.map(({ id }) => id);
|
|
53
|
+
return persons.filter(({ id }) => !ids.includes(id));
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
case PersonRole.ALL: {
|
|
57
|
+
return zip(findJudicialOrCTSCPeople, findCaseworkersOrAdminsOrCtsc).pipe(map(separatePeople => separatePeople[0].concat(separatePeople[1])));
|
|
58
|
+
}
|
|
59
|
+
case PersonRole.CTSC:
|
|
60
|
+
case PersonRole.CASEWORKER:
|
|
61
|
+
case PersonRole.ADMIN: {
|
|
62
|
+
return findCaseworkersOrAdminsOrCtsc;
|
|
63
|
+
}
|
|
64
|
+
default: {
|
|
65
|
+
return of([]);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return of([]);
|
|
70
|
+
}
|
|
71
|
+
onSelectionChange(selectedPerson) {
|
|
72
|
+
this.personSelected.emit(selectedPerson);
|
|
73
|
+
this.findPersonControl.setValue(this.getDisplayName(selectedPerson), { emitEvent: false, onlySelf: true });
|
|
74
|
+
}
|
|
75
|
+
getDisplayName(selectedPerson) {
|
|
76
|
+
if (!selectedPerson) {
|
|
77
|
+
return '';
|
|
78
|
+
}
|
|
79
|
+
if (selectedPerson.domain === PersonRole.JUDICIAL && selectedPerson.fullName) {
|
|
80
|
+
return `${selectedPerson.fullName} (${selectedPerson.email})`;
|
|
81
|
+
}
|
|
82
|
+
return selectedPerson.email ? `${selectedPerson.name} (${selectedPerson.email})` : selectedPerson.name;
|
|
83
|
+
}
|
|
84
|
+
onInput() {
|
|
85
|
+
this.personFieldChanged.emit();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
FindPersonComponent.decorators = [
|
|
89
|
+
{ type: Component, args: [{
|
|
90
|
+
selector: 'xuilib-find-person',
|
|
91
|
+
template: "<h1 class=\"govuk-heading-l\" *ngIf=\"title && title.length\">\n <span class=\"govuk-caption-l\">{{title | rpxTranslate}}</span>\n {{boldTitle | rpxTranslate}}\n</h1>\n<div class=\"govuk-form-group\" [formGroup]=\"findPersonGroup\"\n [ngClass]=\"{'form-group-error': findPersonGroup.get('findPersonControl').invalid && submitted}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sub-title-hint\">\n <div id=\"sub-title-hint\" class=\"govuk-hint\" *ngIf=\"subTitle && subTitle.length\">\n {{subTitle | rpxTranslate}}\n </div>\n <span id=\"validation-error\" class=\"govuk-error-message\" *ngIf=\"findPersonGroup && findPersonGroup.errors\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span>{{findPersonGroup.errors.error ? findPersonGroup.errors.error : errorMessage}}\n </span>\n <input id=\"inputSelectPerson{{idValue}}\" type=\"text\" aria-label=\"select a person\"\n formControlName=\"findPersonControl\"\n [matAutocomplete]=\"auto\"\n class=\"govuk-input govuk-!-width-one-third\"\n [placeholder]=\"placeholderContent\"\n [attr.disabled]=\"disabled\"\n (input)=\"onInput()\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onSelectionChange($event.option.value)\">\n <mat-option *ngFor=\"let option of filteredOptions\"\n [value]=\"option\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete, 'select-option': showUpdatedColor}\">\n {{getDisplayName(option) | rpxTranslate}}\n </mat-option>\n <mat-option [ngClass]=\"{'select-option': showUpdatedColor}\" *ngIf=\"isNoResultsShown && !filteredOptions.length && showAutocomplete\">{{'No results found' | rpxTranslate}}</mat-option>\n </mat-autocomplete>\n </fieldset>\n</div>\n",
|
|
92
|
+
styles: [".mat-option:hover{background:#2596be}.mat-option.select-option:hover{background:#1d70b8;color:#fff}.hide-autocomplete{display:none}"]
|
|
93
|
+
},] }
|
|
94
|
+
];
|
|
95
|
+
FindPersonComponent.ctorParameters = () => [
|
|
96
|
+
{ type: FindAPersonService },
|
|
97
|
+
{ type: ChangeDetectorRef }
|
|
98
|
+
];
|
|
99
|
+
FindPersonComponent.propDecorators = {
|
|
100
|
+
personSelected: [{ type: Output }],
|
|
101
|
+
personFieldChanged: [{ type: Output }],
|
|
102
|
+
title: [{ type: Input }],
|
|
103
|
+
boldTitle: [{ type: Input }],
|
|
104
|
+
subTitle: [{ type: Input }],
|
|
105
|
+
domain: [{ type: Input }],
|
|
106
|
+
findPersonGroup: [{ type: Input }],
|
|
107
|
+
selectedPerson: [{ type: Input }],
|
|
108
|
+
submitted: [{ type: Input }],
|
|
109
|
+
userIncluded: [{ type: Input }],
|
|
110
|
+
assignedUser: [{ type: Input }],
|
|
111
|
+
placeholderContent: [{ type: Input }],
|
|
112
|
+
isNoResultsShown: [{ type: Input }],
|
|
113
|
+
showUpdatedColor: [{ type: Input }],
|
|
114
|
+
selectedPersons: [{ type: Input }],
|
|
115
|
+
errorMessage: [{ type: Input }],
|
|
116
|
+
idValue: [{ type: Input }],
|
|
117
|
+
services: [{ type: Input }],
|
|
118
|
+
disabled: [{ type: Input }]
|
|
119
|
+
};
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1wZXJzb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9maW5kLXBlcnNvbi9maW5kLXBlcnNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQTRCLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQVFwRixNQUFNLE9BQU8sbUJBQW1CO0lBMEI5QixZQUE2QixpQkFBcUMsRUFBbUIsRUFBcUI7UUFBN0Usc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFvQjtRQUFtQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXpCekYsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0MsY0FBUyxHQUFHLGlCQUFpQixDQUFDO1FBQzlCLGFBQVEsR0FBRyw4Q0FBOEMsQ0FBQztRQUMxRCxXQUFNLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUN4QixvQkFBZSxHQUFjLElB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TCxLQUFLOzJCQUNMLEtBQUs7MkJBQ0wsS0FBSztpQ0FDTCxLQUFLOytCQUNMLEtBQUs7K0JBQ0wsS0FBSzs4QkFDTCxLQUFLOzJCQUNMLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9vYnNlcnZhYmxlL29mJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGVyc29uLCBQZXJzb25Sb2xlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEZpbmRBUGVyc29uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbmQtcGVyc29uL2ZpbmQtcGVyc29uLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItZmluZC1wZXJzb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC1wZXJzb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maW5kLXBlcnNvbi5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIEZpbmRQZXJzb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcGVyc29uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFBlcnNvbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBwZXJzb25GaWVsZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgYm9sZFRpdGxlID0gJ0ZpbmQgdGhlIHBlcnNvbic7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJUaXRsZSA9ICdUeXBlIHRoZSBuYW1lIG9mIHRoZSBwZXJzb24gYW5kIHNlbGVjdCB0aGVtLic7XG4gIEBJbnB1dCgpIHB1YmxpYyBkb21haW4gPSBQZXJzb25Sb2xlLkFMTDtcbiAgQElucHV0KCkgcHVibGljIGZpbmRQZXJzb25Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZFBlcnNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgc3VibWl0dGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIHVzZXJJbmNsdWRlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGFzc2lnbmVkVXNlcj86IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyQ29udGVudDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpc05vUmVzdWx0c1Nob3duOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIHNob3dVcGRhdGVkQ29sb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkUGVyc29uczogUGVyc29uW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJ1lvdSBtdXN0IHNlbGVjdCBhIG5hbWUnO1xuICBASW5wdXQoKSBwdWJsaWMgaWRWYWx1ZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXJ2aWNlczogc3RyaW5nID0gJ0lBJztcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gbnVsbDtcbiAgcHVibGljIHNob3dBdXRvY29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGZpbmRQZXJzb25Db250cm9sOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIGZpbHRlcmVkT3B0aW9uczogUGVyc29uW10gPSBbXTtcbiAgcHVibGljIHJlYWRvbmx5IG1pblNlYXJjaENoYXJhY3RlcnMgPSAyO1xuICBwcml2YXRlIHN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmluZFBlcnNvblNlcnZpY2U6IEZpbmRBUGVyc29uU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5zdWIpIHtcbiAgICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmluZFBlcnNvbkNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5zZWxlY3RlZFBlcnNvbik7XG4gICAgdGhpcy5maW5kUGVyc29uR3JvdXAuYWRkQ29udHJvbCgnZmluZFBlcnNvbkNvbnRyb2wnLCB0aGlzLmZpbmRQZXJzb25Db250cm9sKTtcbiAgICB0aGlzLnN1YiA9IHRoaXMuZmluZFBlcnNvbkNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zaG93QXV0b2NvbXBsZXRlID0gZmFsc2UpLFxuICAgICAgdGFwKCgpID0+IHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW10pLFxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICB0YXAoKHNlYXJjaFRlcm0pID0+IHR5cGVvZiBzZWFyY2hUZXJtID09PSAnc3RyaW5nJyA/IHRoaXMucGVyc29uU2VsZWN0ZWQuZW1pdChudWxsKSA6IHZvaWQgMCksXG4gICAgICBmaWx0ZXIoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gc2VhcmNoVGVybSAmJiBzZWFyY2hUZXJtLmxlbmd0aCA+IHRoaXMubWluU2VhcmNoQ2hhcmFjdGVycyksXG4gICAgICBzd2l0Y2hNYXAoKHNlYXJjaFRlcm06IHN0cmluZykgPT4gdGhpcy5maWx0ZXIoc2VhcmNoVGVybSkucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuc2hvd0F1dG9jb21wbGV0ZSA9IHRydWUpLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW10pLFxuICAgICAgKSlcbiAgICApLnN1YnNjcmliZSgocGVvcGxlOiBQZXJzb25bXSkgPT4ge1xuICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBwZW9wbGU7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXIoc2VhcmNoVGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxQZXJzb25bXT4ge1xuICAgIGNvbnN0IGZpbmRKdWRpY2lhbE9yQ1RTQ1Blb3BsZSA9IHRoaXMuZmluZFBlcnNvblNlcnZpY2UuZmluZCh7c2VhcmNoVGVybSwgdXNlclJvbGU6IHRoaXMuZG9tYWluLCBzZXJ2aWNlczogW3RoaXMuc2VydmljZXNdLCB1c2VySW5jbHVkZWQ6IHRoaXMudXNlckluY2x1ZGVkLCBhc3NpZ25lZFVzZXI6IHRoaXMuYXNzaWduZWRVc2VyfSk7XG4gICAgY29uc3QgZmluZENhc2V3b3JrZXJzT3JBZG1pbnNPckN0c2MgPSB0aGlzLmZpbmRQZXJzb25TZXJ2aWNlLmZpbmRDYXNld29ya2Vycyh7c2VhcmNoVGVybSwgdXNlclJvbGU6IHRoaXMuZG9tYWluLCBzZXJ2aWNlczogW3RoaXMuc2VydmljZXNdLCB1c2VySW5jbHVkZWQ6IHRoaXMudXNlckluY2x1ZGVkLCBhc3NpZ25lZFVzZXI6IHRoaXMuYXNzaWduZWRVc2VyfSk7XG4gICAgaWYgKHNlYXJjaFRlcm0gJiYgc2VhcmNoVGVybS5sZW5ndGggPiB0aGlzLm1pblNlYXJjaENoYXJhY3RlcnMpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5kb21haW4pIHtcbiAgICAgICAgY2FzZSBQZXJzb25Sb2xlLkpVRElDSUFMOiB7XG4gICAgICAgICAgcmV0dXJuIGZpbmRKdWRpY2lhbE9yQ1RTQ1Blb3BsZS5waXBlKG1hcChwZXJzb25zID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkczogc3RyaW5nW10gPSB0aGlzLnNlbGVjdGVkUGVyc29ucy5tYXAoKHtpZH0pID0+IGlkKTtcbiAgICAgICAgICAgIHJldHVybiBwZXJzb25zLmZpbHRlcigoeyBpZCB9KSA9PiAhaWRzLmluY2x1ZGVzKGlkKSk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgUGVyc29uUm9sZS5BTEw6IHtcbiAgICAgICAgICByZXR1cm4gemlwKGZpbmRKdWRpY2lhbE9yQ1RTQ1Blb3BsZSwgZmluZENhc2V3b3JrZXJzT3JBZG1pbnNPckN0c2MpLnBpcGUobWFwKHNlcGFyYXRlUGVvcGxlID0+IHNlcGFyYXRlUGVvcGxlWzBdLmNvbmNhdChzZXBhcmF0ZVBlb3BsZVsxXSkpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFBlcnNvblJvbGUuQ1RTQzpcbiAgICAgICAgY2FzZSBQZXJzb25Sb2xlLkNBU0VXT1JLRVI6XG4gICAgICAgIGNhc2UgUGVyc29uUm9sZS5BRE1JTjoge1xuICAgICAgICAgIHJldHVybiBmaW5kQ2FzZXdvcmtlcnNPckFkbWluc09yQ3RzYztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2YoW10pO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkUGVyc29uOiBQZXJzb24pOiB2b2lkIHtcbiAgICB0aGlzLnBlcnNvblNlbGVjdGVkLmVtaXQoc2VsZWN0ZWRQZXJzb24pO1xuICAgIHRoaXMuZmluZFBlcnNvbkNvbnRyb2wuc2V0VmFsdWUodGhpcy5nZXREaXNwbGF5TmFtZShzZWxlY3RlZFBlcnNvbiksIHtlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZX0pO1xuICB9XG5cbiAgcHVibGljIGdldERpc3BsYXlOYW1lKHNlbGVjdGVkUGVyc29uOiBQZXJzb24pOiBzdHJpbmcge1xuICAgIGlmICghc2VsZWN0ZWRQZXJzb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKHNlbGVjdGVkUGVyc29uLmRvbWFpbiA9PT0gUGVyc29uUm9sZS5KVURJQ0lBTCAmJiBzZWxlY3RlZFBlcnNvbi5mdWxsTmFtZSkge1xuICAgICAgcmV0dXJuIGAke3NlbGVjdGVkUGVyc29uLmZ1bGxOYW1lfSAoJHtzZWxlY3RlZFBlcnNvbi5lbWFpbH0pYDtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGVkUGVyc29uLmVtYWlsID8gYCR7c2VsZWN0ZWRQZXJzb24ubmFtZX0gKCR7c2VsZWN0ZWRQZXJzb24uZW1haWx9KWAgOiBzZWxlY3RlZFBlcnNvbi5uYW1lO1xuICB9XG5cbiAgcHVibGljIG9uSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5wZXJzb25GaWVsZENoYW5nZWQuZW1pdCgpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { SearchServiceComponent } from '../search-service/search-service.component';
|
|
5
|
+
export class FindServiceComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.disabled = false;
|
|
8
|
+
this.serviceFieldChanged = new EventEmitter();
|
|
9
|
+
this.isSelectedAll = false;
|
|
10
|
+
this.tempSelectedService = null;
|
|
11
|
+
}
|
|
12
|
+
get selectedServices() {
|
|
13
|
+
var _a;
|
|
14
|
+
const selectAllValue = this.field.options.find(item => item.selectAll);
|
|
15
|
+
return this.isSelectedAll ? [selectAllValue] : (_a = this.form.get(this.field.name)) === null || _a === void 0 ? void 0 : _a.value;
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
this.sortOptionsAlphabetically();
|
|
19
|
+
// Patch Default Option
|
|
20
|
+
if (this.field.defaultOption) {
|
|
21
|
+
this.addOption(this.field.defaultOption);
|
|
22
|
+
}
|
|
23
|
+
if (this.formSubmissionEvent$) {
|
|
24
|
+
this.formSubmissionEventSubscription = this.formSubmissionEvent$.subscribe(() => {
|
|
25
|
+
const oneSelectedAndMaxSelectedOne = this.selectedServices.length === 1 && this.field.maxSelected === 1;
|
|
26
|
+
if (!oneSelectedAndMaxSelectedOne) {
|
|
27
|
+
this.searchServiceComponent.resetSearchTerm();
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
addOption(option) {
|
|
33
|
+
if (option) {
|
|
34
|
+
if (option.selectAll) {
|
|
35
|
+
this.isSelectedAll = true;
|
|
36
|
+
this.removeAllSelectedValues();
|
|
37
|
+
this.field.options.forEach(item => {
|
|
38
|
+
if (!item.selectAll) {
|
|
39
|
+
this.addSelectedServiceToForm(item);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
if (this.isSelectedAll) {
|
|
45
|
+
this.removeAllSelectedValues();
|
|
46
|
+
this.isSelectedAll = false;
|
|
47
|
+
}
|
|
48
|
+
this.addSelectedServiceToForm(option);
|
|
49
|
+
}
|
|
50
|
+
this.tempSelectedService = null;
|
|
51
|
+
this.serviceFieldChanged.emit();
|
|
52
|
+
this.searchServiceComponent.resetSearchTerm();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
removeOption(service) {
|
|
56
|
+
if (service.selectAll) {
|
|
57
|
+
this.removeAllSelectedValues();
|
|
58
|
+
this.isSelectedAll = false;
|
|
59
|
+
}
|
|
60
|
+
else if (service.key) {
|
|
61
|
+
const formArray = this.form.get(this.field.name);
|
|
62
|
+
const index = (formArray.value).findIndex((selectedService) => selectedService.key.toLowerCase() === service.key.toLowerCase());
|
|
63
|
+
if (index > -1) {
|
|
64
|
+
formArray.removeAt(index);
|
|
65
|
+
}
|
|
66
|
+
this.serviceFieldChanged.emit();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
onOptionSelected(option) {
|
|
70
|
+
if (!this.field.enableAddButton && this.field.maxSelected === 1) {
|
|
71
|
+
this.removeAllSelectedValues();
|
|
72
|
+
this.addSelectedServiceToForm(option);
|
|
73
|
+
this.serviceFieldChanged.emit();
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
this.tempSelectedService = option;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
removeAllSelectedValues() {
|
|
80
|
+
const formArray = this.form.get(this.field.name);
|
|
81
|
+
formArray.clear();
|
|
82
|
+
}
|
|
83
|
+
addSelectedServiceToForm(service) {
|
|
84
|
+
const formArray = this.form.get(this.field.name);
|
|
85
|
+
formArray.push(new FormControl(service));
|
|
86
|
+
}
|
|
87
|
+
sortOptionsAlphabetically() {
|
|
88
|
+
return this.field.options.sort((a, b) => {
|
|
89
|
+
return a.label.toLowerCase() > b.label.toLowerCase() ? 1 : (b.label.toLowerCase() > a.label.toLowerCase() ? -1 : 0);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
ngOnDestroy() {
|
|
93
|
+
var _a;
|
|
94
|
+
(_a = this.formSubmissionEventSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
FindServiceComponent.decorators = [
|
|
98
|
+
{ type: Component, args: [{
|
|
99
|
+
selector: 'xuilib-find-service',
|
|
100
|
+
template: "<div class=\"service-picker-custom\">\n <div class=\"search-service\">\n <div class=\"govuk-body\">\n <label id=\"selectServiceSearch-label\" for=\"serviceSearch__select\" *ngIf=\"serviceTitle\">\n {{ serviceTitle | rpxTranslate}}\n </label>\n </div>\n <div class=\"search-service__input-container\">\n <exui-search-service class=\"search-service__input\"\n [options]=\"field.options\"\n [selectedOptions]=\"selectedServices\"\n [disabled]=\"disabled\"\n (optionChanged)=\"onOptionSelected($event)\">\n </exui-search-service>\n <a href=\"javascript:void(0)\" (click)=\"addOption(tempSelectedService)\"\n class=\"govuk-button govuk-button--secondary govuk-!-margin-bottom-0\" data-module=\"govuk-button\"\n *ngIf=\"field?.enableAddButton\" id=\"add-service\">\n {{ 'Add' | rpxTranslate}}\n </a>\n </div>\n </div>\n <ul class=\"hmcts-filter-tags selection-container\" *ngIf=\"field.maxSelected != 1\">\n <li class=\"location-selection\" *ngFor=\"let selection of selectedServices\">\n <a class=\"hmcts-filter__tag\" (click)=\"removeOption(selection)\" href=\"javascript:void(0)\">\n {{ selection.label | rpxTranslate }}\n </a>\n </li>\n </ul>\n</div>\n",
|
|
101
|
+
styles: ["#add-service{background-color:#ddd}"]
|
|
102
|
+
},] }
|
|
103
|
+
];
|
|
104
|
+
FindServiceComponent.propDecorators = {
|
|
105
|
+
field: [{ type: Input }],
|
|
106
|
+
serviceTitle: [{ type: Input }],
|
|
107
|
+
form: [{ type: Input }],
|
|
108
|
+
disabled: [{ type: Input }],
|
|
109
|
+
formSubmissionEvent$: [{ type: Input }],
|
|
110
|
+
searchServiceComponent: [{ type: ViewChild, args: [SearchServiceComponent, { static: true },] }],
|
|
111
|
+
serviceFieldChanged: [{ type: Output }]
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1zZXJ2aWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZmluZC1zZXJ2aWNlL2ZpbmQtc2VydmljZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBYSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFPcEYsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQVNrQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBR3pCLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFHdkIsd0JBQW1CLEdBQXVCLElBQUksQ0FBQztJQTBGeEQsQ0FBQztJQXpGQyxJQUFXLGdCQUFnQjs7UUFDekIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsMENBQUUsS0FBSyxDQUFDO0lBQ3ZGLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLHlCQUF5QixF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O2dCQUMvQix3d0NBQTRDOzthQUU3Qzs7O29CQUVFLEtBQUs7MkJBQ0wsS0FBSzttQkFDTCxLQUFLO3VCQUNMLEtBQUs7bUNBQ0wsS0FBSztxQ0FDTCxTQUFTLFNBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2tDQUNsRCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnT3B0aW9uLCBGaWx0ZXJGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLXNlcnZpY2Uvc2VhcmNoLXNlcnZpY2UuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneHVpbGliLWZpbmQtc2VydmljZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9maW5kLXNlcnZpY2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maW5kLXNlcnZpY2UuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaW5kU2VydmljZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZztcbiAgQElucHV0KCkgcHVibGljIHNlcnZpY2VUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGZvcm1TdWJtaXNzaW9uRXZlbnQkOiBTdWJqZWN0PHZvaWQ+O1xuICBAVmlld0NoaWxkKFNlYXJjaFNlcnZpY2VDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBzZWFyY2hTZXJ2aWNlQ29tcG9uZW50OiBTZWFyY2hTZXJ2aWNlQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgcHVibGljIHNlcnZpY2VGaWVsZENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByaXZhdGUgaXNTZWxlY3RlZEFsbCA9IGZhbHNlO1xuICBwcml2YXRlIGZvcm1TdWJtaXNzaW9uRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgdGVtcFNlbGVjdGVkU2VydmljZTogRmlsdGVyQ29uZmlnT3B0aW9uID0gbnVsbDtcbiAgcHVibGljIGdldCBzZWxlY3RlZFNlcnZpY2VzKCk6IEZpbHRlckNvbmZpZ09wdGlvbltdIHtcbiAgICBjb25zdCBzZWxlY3RBbGxWYWx1ZSA9IHRoaXMuZmllbGQub3B0aW9ucy5maW5kKGl0ZW0gPT4gaXRlbS5zZWxlY3RBbGwpO1xuICAgIHJldHVybiB0aGlzLmlzU2VsZWN0ZWRBbGwgPyBbc2VsZWN0QWxsVmFsdWVdIDogdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpPy52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRPcHRpb25zQWxwaGFiZXRpY2FsbHkoKTtcblxuICAgIC8vIFBhdGNoIERlZmF1bHQgT3B0aW9uXG4gICAgaWYgKHRoaXMuZmllbGQuZGVmYXVsdE9wdGlvbikge1xuICAgICAgdGhpcy5hZGRPcHRpb24odGhpcy5maWVsZC5kZWZhdWx0T3B0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudCQpIHtcbiAgICAgIHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgb25lU2VsZWN0ZWRBbmRNYXhTZWxlY3RlZE9uZSA9IHRoaXMuc2VsZWN0ZWRTZXJ2aWNlcy5sZW5ndGggPT09IDEgJiYgdGhpcy5maWVsZC5tYXhTZWxlY3RlZCA9PT0gMTtcbiAgICAgICAgaWYgKCFvbmVTZWxlY3RlZEFuZE1heFNlbGVjdGVkT25lKSB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlQ29tcG9uZW50LnJlc2V0U2VhcmNoVGVybSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkT3B0aW9uKG9wdGlvbjogRmlsdGVyQ29uZmlnT3B0aW9uKTogdm9pZCB7XG4gICAgaWYgKG9wdGlvbikge1xuICAgICAgaWYgKG9wdGlvbi5zZWxlY3RBbGwpIHtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkQWxsID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5yZW1vdmVBbGxTZWxlY3RlZFZhbHVlcygpO1xuICAgICAgICB0aGlzLmZpZWxkLm9wdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBpZiAoIWl0ZW0uc2VsZWN0QWxsKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFNlbGVjdGVkU2VydmljZVRvRm9ybShpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZEFsbCkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlQWxsU2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZFNlbGVjdGVkU2VydmljZVRvRm9ybShvcHRpb24pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRlbXBTZWxlY3RlZFNlcnZpY2UgPSBudWxsO1xuICAgICAgdGhpcy5zZXJ2aWNlRmllbGRDaGFuZ2VkLmVtaXQoKTtcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZUNvbXBvbmVudC5yZXNldFNlYXJjaFRlcm0oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlT3B0aW9uKHNlcnZpY2U6IEZpbHRlckNvbmZpZ09wdGlvbik6IHZvaWQge1xuICAgIGlmIChzZXJ2aWNlLnNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5yZW1vdmVBbGxTZWxlY3RlZFZhbHVlcygpO1xuICAgICAgdGhpcy5pc1NlbGVjdGVkQWxsID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChzZXJ2aWNlLmtleSkge1xuICAgICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICAgIGNvbnN0IGluZGV4ID0gKGZvcm1BcnJheS52YWx1ZSkuZmluZEluZGV4KChzZWxlY3RlZFNlcnZpY2U6IEZpbHRlckNvbmZpZ09wdGlvbikgPT4gc2VsZWN0ZWRTZXJ2aWNlLmtleS50b0xvd2VyQ2FzZSgpID09PSBzZXJ2aWNlLmtleS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIGZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlcnZpY2VGaWVsZENoYW5nZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbk9wdGlvblNlbGVjdGVkKG9wdGlvbjogRmlsdGVyQ29uZmlnT3B0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZpZWxkLmVuYWJsZUFkZEJ1dHRvbiAmJiB0aGlzLmZpZWxkLm1heFNlbGVjdGVkID09PSAxKSB7XG4gICAgICB0aGlzLnJlbW92ZUFsbFNlbGVjdGVkVmFsdWVzKCk7XG4gICAgICB0aGlzLmFkZFNlbGVjdGVkU2VydmljZVRvRm9ybShvcHRpb24pO1xuICAgICAgdGhpcy5zZXJ2aWNlRmllbGRDaGFuZ2VkLmVtaXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWRTZXJ2aWNlID0gb3B0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQWxsU2VsZWN0ZWRWYWx1ZXMoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICBmb3JtQXJyYXkuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkU2VsZWN0ZWRTZXJ2aWNlVG9Gb3JtKHNlcnZpY2U6IEZpbHRlckNvbmZpZ09wdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5uYW1lKSBhcyBGb3JtQXJyYXk7XG4gICAgZm9ybUFycmF5LnB1c2gobmV3IEZvcm1Db250cm9sKHNlcnZpY2UpKTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydE9wdGlvbnNBbHBoYWJldGljYWxseSgpOiBGaWx0ZXJDb25maWdPcHRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQub3B0aW9ucy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gYS5sYWJlbC50b0xvd2VyQ2FzZSgpID4gYi5sYWJlbC50b0xvd2VyQ2FzZSgpID8gMSA6IChiLmxhYmVsLnRvTG93ZXJDYXNlKCkgPiBhLmxhYmVsLnRvTG93ZXJDYXNlKCkgPyAtMSA6IDApO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZm9ybVN1Ym1pc3Npb25FdmVudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
|