@hmcts/ccd-case-ui-toolkit 5.0.2-angular11-upgrade → 5.0.6-angular11-upgrade
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-ccd-case-ui-toolkit.umd.js +7239 -0
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -0
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +17 -0
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -0
- package/esm2015/hmcts-ccd-case-ui-toolkit.js +5 -0
- package/esm2015/lib/app.config.js +37 -0
- package/esm2015/lib/components/banners/alert/alert-icon-class.pipe.js +25 -0
- package/esm2015/lib/components/banners/alert/alert.component.js +101 -0
- package/esm2015/lib/components/banners/alert/alert.module.js +26 -0
- package/esm2015/lib/components/banners/alert/index.js +4 -0
- package/esm2015/lib/components/banners/banners.module.js +27 -0
- package/esm2015/lib/components/banners/index.js +2 -0
- package/esm2015/lib/components/body/body.component.js +25 -0
- package/esm2015/lib/components/body/body.module.js +20 -0
- package/esm2015/lib/components/body/index.js +2 -0
- package/esm2015/lib/components/footer/footer.component.js +105 -0
- package/esm2015/lib/components/footer/footers.module.js +19 -0
- package/esm2015/lib/components/footer/index.js +2 -0
- package/esm2015/lib/components/form/date-input/date-input.component.js +329 -0
- package/esm2015/lib/components/form/date-input/index.js +2 -0
- package/esm2015/lib/components/form/form.module.js +27 -0
- package/esm2015/lib/components/form/index.js +2 -0
- package/esm2015/lib/components/header/header-bar/header-bar.component.js +108 -0
- package/esm2015/lib/components/header/header-bar/index.js +2 -0
- package/esm2015/lib/components/header/headers.module.js +23 -0
- package/esm2015/lib/components/header/index.js +5 -0
- package/esm2015/lib/components/header/navigation/index.js +3 -0
- package/esm2015/lib/components/header/navigation/navigation-item.component.js +44 -0
- package/esm2015/lib/components/header/navigation/navigation.component.js +30 -0
- package/esm2015/lib/components/header/phase/index.js +2 -0
- package/esm2015/lib/components/header/phase/phase.component.js +42 -0
- package/esm2015/lib/components/index.js +7 -0
- package/esm2015/lib/components/tabs/index.js +4 -0
- package/esm2015/lib/components/tabs/tab.component.js +34 -0
- package/esm2015/lib/components/tabs/tabs.component.js +86 -0
- package/esm2015/lib/components/tabs/tabs.module.js +36 -0
- package/esm2015/lib/shared/commons/constants.js +12 -0
- package/esm2015/lib/shared/components/case-editor/case-access-utils/index.js +94 -0
- package/esm2015/lib/shared/components/case-editor/domain/confirmation.model.js +21 -0
- package/esm2015/lib/shared/components/case-editor/domain/event-completion-return-states.enum.model.js +7 -0
- package/esm2015/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.js +2 -0
- package/esm2015/lib/shared/components/case-editor/domain/event-completion-states.enum.model.js +14 -0
- package/esm2015/lib/shared/components/case-editor/domain/index.js +8 -0
- package/esm2015/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.js +3 -0
- package/esm2015/lib/shared/components/case-editor/domain/wizard-page-field.model.js +3 -0
- package/esm2015/lib/shared/components/case-editor/domain/wizard-page.model.js +28 -0
- package/esm2015/lib/shared/components/case-editor/domain/wizard.model.js +57 -0
- package/esm2015/lib/shared/components/case-editor/services/case.notifier.js +19 -0
- package/esm2015/lib/shared/components/case-editor/services/cases.service.js +270 -0
- package/esm2015/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.js +115 -0
- package/esm2015/lib/shared/components/case-editor/services/work-allocation.service.js +170 -0
- package/esm2015/lib/shared/components/dialogs/document-dialog/document-dialog.component.js +59 -0
- package/esm2015/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.js +57 -0
- package/esm2015/lib/shared/components/helpers/index.js +2 -0
- package/esm2015/lib/shared/components/helpers/init-dialog-helper.js +16 -0
- package/esm2015/lib/shared/components/palette/address/address-option.model.js +24 -0
- package/esm2015/lib/shared/components/palette/address/write-address-field.component.js +244 -0
- package/esm2015/lib/shared/components/palette/base-field/abstract-field-read.component.js +32 -0
- package/esm2015/lib/shared/components/palette/base-field/abstract-field-write.component.js +44 -0
- package/esm2015/lib/shared/components/palette/base-field/abstract-form-field.component.js +79 -0
- package/esm2015/lib/shared/components/palette/base-field/field-read-label.component.js +93 -0
- package/esm2015/lib/shared/components/palette/base-field/field-read.component.js +85 -0
- package/esm2015/lib/shared/components/palette/base-field/field-write.component.js +84 -0
- package/esm2015/lib/shared/components/palette/base-field/index.js +8 -0
- package/esm2015/lib/shared/components/palette/base-field/palette-context.enum.js +7 -0
- package/esm2015/lib/shared/components/palette/base-field/payment-field.component.js +32 -0
- package/esm2015/lib/shared/components/palette/case-link/read-case-link-field.component.js +38 -0
- package/esm2015/lib/shared/components/palette/case-link/write-case-link-field.component.js +125 -0
- package/esm2015/lib/shared/components/palette/collection/collection-create-checker.service.js +42 -0
- package/esm2015/lib/shared/components/palette/collection/index.js +3 -0
- package/esm2015/lib/shared/components/palette/collection/read-collection-field.component.js +91 -0
- package/esm2015/lib/shared/components/palette/collection/write-collection-field.component.js +414 -0
- package/esm2015/lib/shared/components/palette/complex/ccd-collection-table-value-case-fields.pipe.js +29 -0
- package/esm2015/lib/shared/components/palette/complex/ccd-cyapage-label-filter.pipe.js +29 -0
- package/esm2015/lib/shared/components/palette/complex/ccd-read-fields-filter.pipe.js +154 -0
- package/esm2015/lib/shared/components/palette/complex/ccd-tab-fields.pipe.js +31 -0
- package/esm2015/lib/shared/components/palette/complex/cdd-page-fields.pipe.js +39 -0
- package/esm2015/lib/shared/components/palette/complex/fields-filter.pipe.js +103 -0
- package/esm2015/lib/shared/components/palette/complex/index.js +12 -0
- package/esm2015/lib/shared/components/palette/complex/read-complex-field-collection-table.component.js +414 -0
- package/esm2015/lib/shared/components/palette/complex/read-complex-field-raw.component.js +61 -0
- package/esm2015/lib/shared/components/palette/complex/read-complex-field-table.component.js +97 -0
- package/esm2015/lib/shared/components/palette/complex/read-complex-field.component.js +81 -0
- package/esm2015/lib/shared/components/palette/complex/sort-order.js +7 -0
- package/esm2015/lib/shared/components/palette/complex/write-complex-field.component.js +178 -0
- package/esm2015/lib/shared/components/palette/date/index.js +4 -0
- package/esm2015/lib/shared/components/palette/date/read-date-field.component.js +29 -0
- package/esm2015/lib/shared/components/palette/date/write-date-container-field.component.js +41 -0
- package/esm2015/lib/shared/components/palette/date/write-date-field.component.js +81 -0
- package/esm2015/lib/shared/components/palette/datetime-picker/datetime-picker-utils.js +12 -0
- package/esm2015/lib/shared/components/palette/datetime-picker/datetime-picker.component.js +300 -0
- package/esm2015/lib/shared/components/palette/datetime-picker/index.js +2 -0
- package/esm2015/lib/shared/components/palette/document/document-url.pipe.js +24 -0
- package/esm2015/lib/shared/components/palette/document/file-upload-progress.guard.js +29 -0
- package/esm2015/lib/shared/components/palette/document/file-upload-state.service.js +16 -0
- package/esm2015/lib/shared/components/palette/document/index.js +4 -0
- package/esm2015/lib/shared/components/palette/document/read-document-field.component.js +80 -0
- package/esm2015/lib/shared/components/palette/document/write-document-field.component.js +369 -0
- package/esm2015/lib/shared/components/palette/dynamic-list/dynamic-list.pipe.js +18 -0
- package/esm2015/lib/shared/components/palette/dynamic-list/index.js +4 -0
- package/esm2015/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.js +35 -0
- package/esm2015/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.js +121 -0
- package/esm2015/lib/shared/components/palette/dynamic-radio-list/dynamic-radio-list.pipe.js +25 -0
- package/esm2015/lib/shared/components/palette/dynamic-radio-list/index.js +4 -0
- package/esm2015/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.js +41 -0
- package/esm2015/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.js +126 -0
- package/esm2015/lib/shared/components/palette/email/index.js +3 -0
- package/esm2015/lib/shared/components/palette/email/read-email-field.component.js +36 -0
- package/esm2015/lib/shared/components/palette/email/write-email-field.component.js +76 -0
- package/esm2015/lib/shared/components/palette/fixed-list/fixed-list.pipe.js +23 -0
- package/esm2015/lib/shared/components/palette/fixed-list/index.js +4 -0
- package/esm2015/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.js +25 -0
- package/esm2015/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.js +110 -0
- package/esm2015/lib/shared/components/palette/fixed-radio-list/fixed-radio-list.pipe.js +18 -0
- package/esm2015/lib/shared/components/palette/fixed-radio-list/index.js +4 -0
- package/esm2015/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.js +25 -0
- package/esm2015/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.js +101 -0
- package/esm2015/lib/shared/components/palette/history/case-history-viewer-field.component.js +21 -0
- package/esm2015/lib/shared/components/palette/history/event-log/event-log-details.component.js +127 -0
- package/esm2015/lib/shared/components/palette/history/event-log/event-log-table.component.js +234 -0
- package/esm2015/lib/shared/components/palette/history/event-log/event-log.component.js +83 -0
- package/esm2015/lib/shared/components/palette/history/event-log/index.js +4 -0
- package/esm2015/lib/shared/components/palette/history/index.js +3 -0
- package/esm2015/lib/shared/components/palette/label/index.js +2 -0
- package/esm2015/lib/shared/components/palette/label/label-field.component.js +37 -0
- package/esm2015/lib/shared/components/palette/markdown/index.js +2 -0
- package/esm2015/lib/shared/components/palette/markdown/markdown.component.js +44 -0
- package/esm2015/lib/shared/components/palette/money-gbp/index.js +4 -0
- package/esm2015/lib/shared/components/palette/money-gbp/money-gbp-input.component.js +123 -0
- package/esm2015/lib/shared/components/palette/money-gbp/read-money-gbp-field.component.js +48 -0
- package/esm2015/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.js +83 -0
- package/esm2015/lib/shared/components/palette/multi-select-list/index.js +3 -0
- package/esm2015/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.js +50 -0
- package/esm2015/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.js +132 -0
- package/esm2015/lib/shared/components/palette/number/index.js +3 -0
- package/esm2015/lib/shared/components/palette/number/read-number-field.component.js +25 -0
- package/esm2015/lib/shared/components/palette/number/write-number-field.component.js +76 -0
- package/esm2015/lib/shared/components/palette/order-summary/fee-value.model.js +3 -0
- package/esm2015/lib/shared/components/palette/order-summary/fee.model.js +3 -0
- package/esm2015/lib/shared/components/palette/order-summary/index.js +7 -0
- package/esm2015/lib/shared/components/palette/order-summary/order-summary.model.js +3 -0
- package/esm2015/lib/shared/components/palette/order-summary/read-order-summary-field.component.js +71 -0
- package/esm2015/lib/shared/components/palette/order-summary/read-order-summary-row.component.js +51 -0
- package/esm2015/lib/shared/components/palette/order-summary/write-order-summary-field.component.js +49 -0
- package/esm2015/lib/shared/components/palette/organisation/index.js +6 -0
- package/esm2015/lib/shared/components/palette/organisation/read-organisation-field-raw.component.js +90 -0
- package/esm2015/lib/shared/components/palette/organisation/read-organisation-field-table.component.js +100 -0
- package/esm2015/lib/shared/components/palette/organisation/read-organisation-field.component.js +63 -0
- package/esm2015/lib/shared/components/palette/organisation/write-organisation-complex-field.component.js +37 -0
- package/esm2015/lib/shared/components/palette/organisation/write-organisation-field.component.js +394 -0
- package/esm2015/lib/shared/components/palette/palette.module.js +413 -0
- package/esm2015/lib/shared/components/palette/palette.service.js +114 -0
- package/esm2015/lib/shared/components/palette/payment/case-payment-history-viewer-field.component.js +27 -0
- package/esm2015/lib/shared/components/palette/payment/index.js +2 -0
- package/esm2015/lib/shared/components/palette/phone-uk/index.js +3 -0
- package/esm2015/lib/shared/components/palette/phone-uk/read-phone-uk-field.component.js +23 -0
- package/esm2015/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.js +76 -0
- package/esm2015/lib/shared/components/palette/text/index.js +3 -0
- package/esm2015/lib/shared/components/palette/text/read-text-field.component.js +23 -0
- package/esm2015/lib/shared/components/palette/text/write-text-field.component.js +81 -0
- package/esm2015/lib/shared/components/palette/text-area/index.js +3 -0
- package/esm2015/lib/shared/components/palette/text-area/read-text-area-field.component.js +23 -0
- package/esm2015/lib/shared/components/palette/text-area/write-text-area-field.component.js +91 -0
- package/esm2015/lib/shared/components/palette/unsupported-field.component.js +17 -0
- package/esm2015/lib/shared/components/palette/utils/dash.pipe.js +16 -0
- package/esm2015/lib/shared/components/palette/utils/date.pipe.js +132 -0
- package/esm2015/lib/shared/components/palette/utils/field-label.pipe.js +22 -0
- package/esm2015/lib/shared/components/palette/utils/first-error.pipe.js +41 -0
- package/esm2015/lib/shared/components/palette/utils/index.js +10 -0
- package/esm2015/lib/shared/components/palette/utils/is-compound.pipe.js +31 -0
- package/esm2015/lib/shared/components/palette/utils/is-mandatory.pipe.js +21 -0
- package/esm2015/lib/shared/components/palette/utils/is-read-only-and-not-collection.pipe.js +31 -0
- package/esm2015/lib/shared/components/palette/utils/is-read-only.pipe.js +21 -0
- package/esm2015/lib/shared/components/palette/utils/utils.module.js +62 -0
- package/esm2015/lib/shared/components/palette/waystopay/index.js +2 -0
- package/esm2015/lib/shared/components/palette/waystopay/waystopay-field.component.js +37 -0
- package/esm2015/lib/shared/components/palette/yes-no/index.js +4 -0
- package/esm2015/lib/shared/components/palette/yes-no/read-yes-no-field.component.js +32 -0
- package/esm2015/lib/shared/components/palette/yes-no/write-yes-no-field.component.js +105 -0
- package/esm2015/lib/shared/components/palette/yes-no/yes-no.service.js +48 -0
- package/esm2015/lib/shared/components/search-filters/domain/index.js +2 -0
- package/esm2015/lib/shared/components/search-filters/domain/search-input.model.js +10 -0
- package/esm2015/lib/shared/components/search-filters/index.js +5 -0
- package/esm2015/lib/shared/components/search-filters/search-filters-wrapper.component.js +61 -0
- package/esm2015/lib/shared/components/search-filters/search-filters.component.js +296 -0
- package/esm2015/lib/shared/components/search-filters/search-filters.module.js +65 -0
- package/esm2015/lib/shared/directives/conditional-show/conditional-show-form.directive.js +164 -0
- package/esm2015/lib/shared/directives/conditional-show/conditional-show.module.js +33 -0
- package/esm2015/lib/shared/directives/conditional-show/domain/conditional-show.model.js +296 -0
- package/esm2015/lib/shared/directives/conditional-show/domain/index.js +2 -0
- package/esm2015/lib/shared/directives/conditional-show/index.js +5 -0
- package/esm2015/lib/shared/directives/conditional-show/services/conditional-show-registrar.service.js +19 -0
- package/esm2015/lib/shared/directives/conditional-show/services/grey-bar.service.js +47 -0
- package/esm2015/lib/shared/directives/conditional-show/services/index.js +3 -0
- package/esm2015/lib/shared/directives/focus-element/focus-element.directive.js +36 -0
- package/esm2015/lib/shared/directives/focus-element/focus-element.module.js +21 -0
- package/esm2015/lib/shared/directives/focus-element/index.js +3 -0
- package/esm2015/lib/shared/directives/index.js +4 -0
- package/esm2015/lib/shared/directives/substitutor/index.js +4 -0
- package/esm2015/lib/shared/directives/substitutor/label-substitutor.directive.js +78 -0
- package/esm2015/lib/shared/directives/substitutor/label-substitutor.module.js +30 -0
- package/esm2015/lib/shared/directives/substitutor/services/index.js +2 -0
- package/esm2015/lib/shared/directives/substitutor/services/placeholder.service.js +200 -0
- package/esm2015/lib/shared/domain/activity/activity.model.js +10 -0
- package/esm2015/lib/shared/domain/activity/index.js +2 -0
- package/esm2015/lib/shared/domain/addresses/address.model.js +12 -0
- package/esm2015/lib/shared/domain/addresses/index.js +2 -0
- package/esm2015/lib/shared/domain/alert/alert-level.model.js +2 -0
- package/esm2015/lib/shared/domain/alert/alert.model.js +3 -0
- package/esm2015/lib/shared/domain/alert/index.js +3 -0
- package/esm2015/lib/shared/domain/case-details.model.js +3 -0
- package/esm2015/lib/shared/domain/case-event-data.model.js +3 -0
- package/esm2015/lib/shared/domain/case-view/access-types.model.js +4 -0
- package/esm2015/lib/shared/domain/case-view/case-event-trigger.model.js +22 -0
- package/esm2015/lib/shared/domain/case-view/case-print-document.model.js +3 -0
- package/esm2015/lib/shared/domain/case-view/case-tab.model.js +11 -0
- package/esm2015/lib/shared/domain/case-view/case-view-event.model.js +3 -0
- package/esm2015/lib/shared/domain/case-view/case-view-trigger.model.js +4 -0
- package/esm2015/lib/shared/domain/case-view/case-view.model.js +16 -0
- package/esm2015/lib/shared/domain/case-view/challenged-access-request.model.js +2 -0
- package/esm2015/lib/shared/domain/case-view/index.js +12 -0
- package/esm2015/lib/shared/domain/case-view/review-specific-access-request.model.js +2 -0
- package/esm2015/lib/shared/domain/case-view/role-assignment-response.model.js +2 -0
- package/esm2015/lib/shared/domain/case-view/role-request.model.js +2 -0
- package/esm2015/lib/shared/domain/case-view/specific-access-request.model.js +2 -0
- package/esm2015/lib/shared/domain/definition/access-control-list.model.js +3 -0
- package/esm2015/lib/shared/domain/definition/banner.model.js +3 -0
- package/esm2015/lib/shared/domain/definition/case-event.model.js +3 -0
- package/esm2015/lib/shared/domain/definition/case-field.model.js +194 -0
- package/esm2015/lib/shared/domain/definition/case-state.model.js +3 -0
- package/esm2015/lib/shared/domain/definition/case-type-lite.model.js +5 -0
- package/esm2015/lib/shared/domain/definition/case-type.model.js +11 -0
- package/esm2015/lib/shared/domain/definition/event-case-field.model.js +3 -0
- package/esm2015/lib/shared/domain/definition/field-type-enum.model.js +2 -0
- package/esm2015/lib/shared/domain/definition/field-type.model.js +20 -0
- package/esm2015/lib/shared/domain/definition/fixed-list-item.model.js +3 -0
- package/esm2015/lib/shared/domain/definition/index.js +12 -0
- package/esm2015/lib/shared/domain/definition/jurisdiction.model.js +3 -0
- package/esm2015/lib/shared/domain/document/document-data.model.js +13 -0
- package/esm2015/lib/shared/domain/document/index.js +2 -0
- package/esm2015/lib/shared/domain/draft.model.js +11 -0
- package/esm2015/lib/shared/domain/error-message.model.js +2 -0
- package/esm2015/lib/shared/domain/http/http-error.model.js +27 -0
- package/esm2015/lib/shared/domain/http/index.js +2 -0
- package/esm2015/lib/shared/domain/index.js +23 -0
- package/esm2015/lib/shared/domain/order/index.js +2 -0
- package/esm2015/lib/shared/domain/order/orderable.model.js +2 -0
- package/esm2015/lib/shared/domain/organisation/index.js +3 -0
- package/esm2015/lib/shared/domain/organisation/organisation-converter.js +42 -0
- package/esm2015/lib/shared/domain/organisation/simple-organisation.model.js +2 -0
- package/esm2015/lib/shared/domain/pagination-metadata.model.js +3 -0
- package/esm2015/lib/shared/domain/predicate.model.js +2 -0
- package/esm2015/lib/shared/domain/profile/index.js +2 -0
- package/esm2015/lib/shared/domain/profile/profile.model.js +29 -0
- package/esm2015/lib/shared/domain/search/field.model.js +11 -0
- package/esm2015/lib/shared/domain/search/index.js +5 -0
- package/esm2015/lib/shared/domain/search/search-result-view-column.model.js +3 -0
- package/esm2015/lib/shared/domain/search/search-result-view-item.model.js +11 -0
- package/esm2015/lib/shared/domain/search/search-result-view.model.js +22 -0
- package/esm2015/lib/shared/domain/search/sorting/search-result-view-item-comparator.js +2 -0
- package/esm2015/lib/shared/domain/search/sorting/sort-order.js +7 -0
- package/esm2015/lib/shared/domain/search/sorting/sort-parameters.js +7 -0
- package/esm2015/lib/shared/domain/user/user-details.model.js +2 -0
- package/esm2015/lib/shared/domain/user/user-info.model.js +2 -0
- package/esm2015/lib/shared/domain/work-allocation/Task.js +21 -0
- package/esm2015/lib/shared/domain/work-allocation/TaskPayload.js +2 -0
- package/esm2015/lib/shared/domain/work-allocation/index.js +2 -0
- package/esm2015/lib/shared/domain/work-allocation/task-response.model.js +2 -0
- package/esm2015/lib/shared/domain/work-allocation/task-search-parameter.model.js +2 -0
- package/esm2015/lib/shared/domain/workbasket/index.js +2 -0
- package/esm2015/lib/shared/domain/workbasket/workbasket-input.model.js +12 -0
- package/esm2015/lib/shared/fixture/case-field-builder.js +69 -0
- package/esm2015/lib/shared/fixture/shared.test.fixture.js +129 -0
- package/esm2015/lib/shared/index.js +8 -0
- package/esm2015/lib/shared/pipes/case-reference/case-reference.pipe.js +33 -0
- package/esm2015/lib/shared/pipes/case-reference/index.js +2 -0
- package/esm2015/lib/shared/pipes/case-title/ccd-case-title.pipe.js +29 -0
- package/esm2015/lib/shared/pipes/case-title/index.js +2 -0
- package/esm2015/lib/shared/pipes/index.js +5 -0
- package/esm2015/lib/shared/pipes/pipes.module.js +37 -0
- package/esm2015/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.js +24 -0
- package/esm2015/lib/shared/services/activity/activity.polling.service.js +112 -0
- package/esm2015/lib/shared/services/activity/activity.service.js +91 -0
- package/esm2015/lib/shared/services/activity/index.js +3 -0
- package/esm2015/lib/shared/services/addresses/address-parser.js +76 -0
- package/esm2015/lib/shared/services/addresses/addresses.service.js +57 -0
- package/esm2015/lib/shared/services/addresses/index.js +2 -0
- package/esm2015/lib/shared/services/alert/alert.service.js +122 -0
- package/esm2015/lib/shared/services/alert/index.js +2 -0
- package/esm2015/lib/shared/services/auth/auth.service.js +33 -0
- package/esm2015/lib/shared/services/auth/index.js +2 -0
- package/esm2015/lib/shared/services/banners/banners.service.js +33 -0
- package/esm2015/lib/shared/services/banners/index.js +2 -0
- package/esm2015/lib/shared/services/browser/browser.service.js +24 -0
- package/esm2015/lib/shared/services/browser/index.js +2 -0
- package/esm2015/lib/shared/services/case-fields/case-field.service.js +34 -0
- package/esm2015/lib/shared/services/case-fields/format-translator.service.js +242 -0
- package/esm2015/lib/shared/services/case-fields/index.js +2 -0
- package/esm2015/lib/shared/services/definitions/definitions.module.js +19 -0
- package/esm2015/lib/shared/services/definitions/definitions.service.js +35 -0
- package/esm2015/lib/shared/services/definitions/index.js +3 -0
- package/esm2015/lib/shared/services/document-management/document-management.service.js +112 -0
- package/esm2015/lib/shared/services/document-management/index.js +2 -0
- package/esm2015/lib/shared/services/draft/draft.service.js +86 -0
- package/esm2015/lib/shared/services/draft/index.js +2 -0
- package/esm2015/lib/shared/services/error/error-notifier.service.js +18 -0
- package/esm2015/lib/shared/services/error/index.js +2 -0
- package/esm2015/lib/shared/services/eventStatusService/event-status.service.js +21 -0
- package/esm2015/lib/shared/services/eventStatusService/index.js +2 -0
- package/esm2015/lib/shared/services/fields/fields.purger.js +277 -0
- package/esm2015/lib/shared/services/fields/fields.utils.js +334 -0
- package/esm2015/lib/shared/services/fields/index.js +3 -0
- package/esm2015/lib/shared/services/form/field-type-sanitiser.js +75 -0
- package/esm2015/lib/shared/services/form/form-error.service.js +46 -0
- package/esm2015/lib/shared/services/form/form-validators.service.js +56 -0
- package/esm2015/lib/shared/services/form/form-value.service.js +490 -0
- package/esm2015/lib/shared/services/form/index.js +5 -0
- package/esm2015/lib/shared/services/http/http-error.service.js +65 -0
- package/esm2015/lib/shared/services/http/http.service.js +93 -0
- package/esm2015/lib/shared/services/http/index.js +3 -0
- package/esm2015/lib/shared/services/index.js +29 -0
- package/esm2015/lib/shared/services/jurisdiction/index.js +2 -0
- package/esm2015/lib/shared/services/jurisdiction/jurisdiction.service.js +18 -0
- package/esm2015/lib/shared/services/loading/index.js +3 -0
- package/esm2015/lib/shared/services/loading/loading.module.js +22 -0
- package/esm2015/lib/shared/services/loading/loading.service.js +38 -0
- package/esm2015/lib/shared/services/navigation/index.js +3 -0
- package/esm2015/lib/shared/services/navigation/navigation-notifier.service.js +18 -0
- package/esm2015/lib/shared/services/navigation/navigation-origin.model.js +9 -0
- package/esm2015/lib/shared/services/order/index.js +2 -0
- package/esm2015/lib/shared/services/order/order.service.js +39 -0
- package/esm2015/lib/shared/services/organisation/index.js +2 -0
- package/esm2015/lib/shared/services/organisation/organisation.service.js +57 -0
- package/esm2015/lib/shared/services/profile/index.js +3 -0
- package/esm2015/lib/shared/services/profile/profile.notifier.js +19 -0
- package/esm2015/lib/shared/services/profile/profile.service.js +34 -0
- package/esm2015/lib/shared/services/request/index.js +2 -0
- package/esm2015/lib/shared/services/request/request.options.builder.js +55 -0
- package/esm2015/lib/shared/services/router/index.js +2 -0
- package/esm2015/lib/shared/services/router/router-helper.service.js +20 -0
- package/esm2015/lib/shared/services/search/index.js +2 -0
- package/esm2015/lib/shared/services/search/search.service.js +83 -0
- package/esm2015/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.js +71 -0
- package/esm2015/lib/shared/services/session/index.js +2 -0
- package/esm2015/lib/shared/services/session/session-storage.service.js +34 -0
- package/esm2015/lib/shared/services/window/index.js +2 -0
- package/esm2015/lib/shared/services/window/window.service.js +37 -0
- package/esm2015/lib/shared/services/workbasket/index.js +2 -0
- package/esm2015/lib/shared/services/workbasket/workbasket-input-filter.service.js +53 -0
- package/esm2015/lib/shared/test/test-route-snapshot-builder.js +39 -0
- package/esm2015/public-api.js +3 -0
- package/fesm2015/hmcts-ccd-case-ui-toolkit.js +5985 -0
- package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -0
- package/hmcts-ccd-case-ui-toolkit.d.ts +6 -0
- package/hmcts-ccd-case-ui-toolkit.d.ts.map +1 -0
- package/lib/app.config.d.ts +125 -0
- package/lib/app.config.d.ts.map +1 -0
- package/lib/components/banners/alert/alert-icon-class.pipe.d.ts +10 -0
- package/lib/components/banners/alert/alert-icon-class.pipe.d.ts.map +1 -0
- package/lib/components/banners/alert/alert.component.d.ts +19 -0
- package/lib/components/banners/alert/alert.component.d.ts.map +1 -0
- package/lib/components/banners/alert/alert.module.d.ts +10 -0
- package/lib/components/banners/alert/alert.module.d.ts.map +1 -0
- package/lib/components/banners/alert/index.d.ts +4 -0
- package/lib/components/banners/alert/index.d.ts.map +1 -0
- package/lib/components/banners/banners.module.d.ts +9 -0
- package/lib/components/banners/banners.module.d.ts.map +1 -0
- package/lib/components/banners/index.d.ts +2 -0
- package/lib/components/banners/index.d.ts.map +1 -0
- package/lib/components/body/body.component.d.ts +6 -0
- package/lib/components/body/body.component.d.ts.map +1 -0
- package/lib/components/body/body.module.d.ts +10 -0
- package/lib/components/body/body.module.d.ts.map +1 -0
- package/lib/components/body/index.d.ts +2 -0
- package/lib/components/body/index.d.ts.map +1 -0
- package/lib/components/footer/footer.component.d.ts +10 -0
- package/lib/components/footer/footer.component.d.ts.map +1 -0
- package/lib/components/footer/footers.module.d.ts +9 -0
- package/lib/components/footer/footers.module.d.ts.map +1 -0
- package/lib/components/footer/index.d.ts +2 -0
- package/lib/components/footer/index.d.ts.map +1 -0
- package/lib/components/form/date-input/date-input.component.d.ts +54 -0
- package/lib/components/form/date-input/date-input.component.d.ts.map +1 -0
- package/lib/components/form/date-input/index.d.ts +2 -0
- package/lib/components/form/date-input/index.d.ts.map +1 -0
- package/lib/components/form/form.module.d.ts +9 -0
- package/lib/components/form/form.module.d.ts.map +1 -0
- package/lib/components/form/index.d.ts +2 -0
- package/lib/components/form/index.d.ts.map +1 -0
- package/lib/components/header/header-bar/header-bar.component.d.ts +11 -0
- package/lib/components/header/header-bar/header-bar.component.d.ts.map +1 -0
- package/lib/components/header/header-bar/index.d.ts +2 -0
- package/lib/components/header/header-bar/index.d.ts.map +1 -0
- package/lib/components/header/headers.module.d.ts +13 -0
- package/lib/components/header/headers.module.d.ts.map +1 -0
- package/lib/components/header/index.d.ts +5 -0
- package/lib/components/header/index.d.ts.map +1 -0
- package/lib/components/header/navigation/index.d.ts +3 -0
- package/lib/components/header/navigation/index.d.ts.map +1 -0
- package/lib/components/header/navigation/navigation-item.component.d.ts +9 -0
- package/lib/components/header/navigation/navigation-item.component.d.ts.map +1 -0
- package/lib/components/header/navigation/navigation.component.d.ts +7 -0
- package/lib/components/header/navigation/navigation.component.d.ts.map +1 -0
- package/lib/components/header/phase/index.d.ts +2 -0
- package/lib/components/header/phase/index.d.ts.map +1 -0
- package/lib/components/header/phase/phase.component.d.ts +9 -0
- package/lib/components/header/phase/phase.component.d.ts.map +1 -0
- package/lib/components/index.d.ts +7 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/components/tabs/index.d.ts +4 -0
- package/lib/components/tabs/index.d.ts.map +1 -0
- package/lib/components/tabs/tab.component.d.ts +9 -0
- package/lib/components/tabs/tab.component.d.ts.map +1 -0
- package/lib/components/tabs/tabs.component.d.ts +16 -0
- package/lib/components/tabs/tabs.component.d.ts.map +1 -0
- package/lib/components/tabs/tabs.module.d.ts +11 -0
- package/lib/components/tabs/tabs.module.d.ts.map +1 -0
- package/lib/shared/commons/constants.d.ts +8 -0
- package/lib/shared/commons/constants.d.ts.map +1 -0
- package/lib/shared/components/case-editor/case-access-utils/index.d.ts +25 -0
- package/lib/shared/components/case-editor/case-access-utils/index.d.ts.map +1 -0
- package/lib/shared/components/case-editor/domain/confirmation.model.d.ts +12 -0
- package/lib/shared/components/case-editor/domain/confirmation.model.d.ts.map +1 -0
- package/lib/shared/components/case-editor/domain/event-completion-return-states.enum.model.d.ts +6 -0
- package/lib/shared/components/case-editor/domain/event-completion-return-states.enum.model.d.ts.map +1 -0
- package/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.d.ts +24 -0
- package/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.d.ts.map +1 -0
- package/lib/shared/components/case-editor/domain/event-completion-states.enum.model.d.ts +13 -0
- package/lib/shared/components/case-editor/domain/event-completion-states.enum.model.d.ts.map +1 -0
- package/lib/shared/components/case-editor/domain/index.d.ts +8 -0
- package/lib/shared/components/case-editor/domain/index.d.ts.map +1 -0
- package/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.d.ts +8 -0
- package/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.d.ts.map +1 -0
- package/lib/shared/components/case-editor/domain/wizard-page-field.model.d.ts +9 -0
- package/lib/shared/components/case-editor/domain/wizard-page-field.model.d.ts.map +1 -0
- package/lib/shared/components/case-editor/domain/wizard-page.model.d.ts +17 -0
- package/lib/shared/components/case-editor/domain/wizard-page.model.d.ts.map +1 -0
- package/lib/shared/components/case-editor/domain/wizard.model.d.ts +18 -0
- package/lib/shared/components/case-editor/domain/wizard.model.d.ts.map +1 -0
- package/lib/shared/components/case-editor/services/case.notifier.d.ts +12 -0
- package/lib/shared/components/case-editor/services/case.notifier.d.ts.map +1 -0
- package/lib/shared/components/case-editor/services/cases.service.d.ts +59 -0
- package/lib/shared/components/case-editor/services/cases.service.d.ts.map +1 -0
- package/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.d.ts +17 -0
- package/lib/shared/components/case-editor/services/wizard-page-field-to-case-field.mapper.d.ts.map +1 -0
- package/lib/shared/components/case-editor/services/work-allocation.service.d.ts +72 -0
- package/lib/shared/components/case-editor/services/work-allocation.service.d.ts.map +1 -0
- package/lib/shared/components/dialogs/document-dialog/document-dialog.component.d.ts +14 -0
- package/lib/shared/components/dialogs/document-dialog/document-dialog.component.d.ts.map +1 -0
- package/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.d.ts +12 -0
- package/lib/shared/components/dialogs/remove-dialog/remove-dialog.component.d.ts.map +1 -0
- package/lib/shared/components/helpers/index.d.ts +2 -0
- package/lib/shared/components/helpers/index.d.ts.map +1 -0
- package/lib/shared/components/helpers/init-dialog-helper.d.ts +3 -0
- package/lib/shared/components/helpers/init-dialog-helper.d.ts.map +1 -0
- package/lib/shared/components/palette/address/address-option.model.d.ts +10 -0
- package/lib/shared/components/palette/address/address-option.model.d.ts.map +1 -0
- package/lib/shared/components/palette/address/write-address-field.component.d.ts +36 -0
- package/lib/shared/components/palette/address/write-address-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/base-field/abstract-field-read.component.d.ts +17 -0
- package/lib/shared/components/palette/base-field/abstract-field-read.component.d.ts.map +1 -0
- package/lib/shared/components/palette/base-field/abstract-field-write.component.d.ts +17 -0
- package/lib/shared/components/palette/base-field/abstract-field-write.component.d.ts.map +1 -0
- package/lib/shared/components/palette/base-field/abstract-form-field.component.d.ts +20 -0
- package/lib/shared/components/palette/base-field/abstract-form-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/base-field/field-read-label.component.d.ts +16 -0
- package/lib/shared/components/palette/base-field/field-read-label.component.d.ts.map +1 -0
- package/lib/shared/components/palette/base-field/field-read.component.d.ts +20 -0
- package/lib/shared/components/palette/base-field/field-read.component.d.ts.map +1 -0
- package/lib/shared/components/palette/base-field/field-write.component.d.ts +19 -0
- package/lib/shared/components/palette/base-field/field-write.component.d.ts.map +1 -0
- package/lib/shared/components/palette/base-field/index.d.ts +8 -0
- package/lib/shared/components/palette/base-field/index.d.ts.map +1 -0
- package/lib/shared/components/palette/base-field/palette-context.enum.d.ts +6 -0
- package/lib/shared/components/palette/base-field/palette-context.enum.d.ts.map +1 -0
- package/lib/shared/components/palette/base-field/payment-field.component.d.ts +14 -0
- package/lib/shared/components/palette/base-field/payment-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/case-link/read-case-link-field.component.d.ts +8 -0
- package/lib/shared/components/palette/case-link/read-case-link-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/case-link/write-case-link-field.component.d.ts +16 -0
- package/lib/shared/components/palette/case-link/write-case-link-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/collection/collection-create-checker.service.d.ts +13 -0
- package/lib/shared/components/palette/collection/collection-create-checker.service.d.ts.map +1 -0
- package/lib/shared/components/palette/collection/index.d.ts +3 -0
- package/lib/shared/components/palette/collection/index.d.ts.map +1 -0
- package/lib/shared/components/palette/collection/read-collection-field.component.d.ts +11 -0
- package/lib/shared/components/palette/collection/read-collection-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/collection/write-collection-field.component.d.ts +56 -0
- package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/complex/ccd-collection-table-value-case-fields.pipe.d.ts +11 -0
- package/lib/shared/components/palette/complex/ccd-collection-table-value-case-fields.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/complex/ccd-cyapage-label-filter.pipe.d.ts +10 -0
- package/lib/shared/components/palette/complex/ccd-cyapage-label-filter.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/complex/ccd-read-fields-filter.pipe.d.ts +27 -0
- package/lib/shared/components/palette/complex/ccd-read-fields-filter.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/complex/ccd-tab-fields.pipe.d.ts +10 -0
- package/lib/shared/components/palette/complex/ccd-tab-fields.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/complex/cdd-page-fields.pipe.d.ts +11 -0
- package/lib/shared/components/palette/complex/cdd-page-fields.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/complex/fields-filter.pipe.d.ts +23 -0
- package/lib/shared/components/palette/complex/fields-filter.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/complex/index.d.ts +12 -0
- package/lib/shared/components/palette/complex/index.d.ts.map +1 -0
- package/lib/shared/components/palette/complex/read-complex-field-collection-table.component.d.ts +32 -0
- package/lib/shared/components/palette/complex/read-complex-field-collection-table.component.d.ts.map +1 -0
- package/lib/shared/components/palette/complex/read-complex-field-raw.component.d.ts +13 -0
- package/lib/shared/components/palette/complex/read-complex-field-raw.component.d.ts.map +1 -0
- package/lib/shared/components/palette/complex/read-complex-field-table.component.d.ts +9 -0
- package/lib/shared/components/palette/complex/read-complex-field-table.component.d.ts.map +1 -0
- package/lib/shared/components/palette/complex/read-complex-field.component.d.ts +13 -0
- package/lib/shared/components/palette/complex/read-complex-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/complex/sort-order.d.ts +6 -0
- package/lib/shared/components/palette/complex/sort-order.d.ts.map +1 -0
- package/lib/shared/components/palette/complex/write-complex-field.component.d.ts +30 -0
- package/lib/shared/components/palette/complex/write-complex-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/date/index.d.ts +4 -0
- package/lib/shared/components/palette/date/index.d.ts.map +1 -0
- package/lib/shared/components/palette/date/read-date-field.component.d.ts +8 -0
- package/lib/shared/components/palette/date/read-date-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/date/write-date-container-field.component.d.ts +7 -0
- package/lib/shared/components/palette/date/write-date-container-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/date/write-date-field.component.d.ts +12 -0
- package/lib/shared/components/palette/date/write-date-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/datetime-picker/datetime-picker-utils.d.ts +3 -0
- package/lib/shared/components/palette/datetime-picker/datetime-picker-utils.d.ts.map +1 -0
- package/lib/shared/components/palette/datetime-picker/datetime-picker.component.d.ts +53 -0
- package/lib/shared/components/palette/datetime-picker/datetime-picker.component.d.ts.map +1 -0
- package/lib/shared/components/palette/datetime-picker/index.d.ts +2 -0
- package/lib/shared/components/palette/datetime-picker/index.d.ts.map +1 -0
- package/lib/shared/components/palette/document/document-url.pipe.d.ts +11 -0
- package/lib/shared/components/palette/document/document-url.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/document/file-upload-progress.guard.d.ts +14 -0
- package/lib/shared/components/palette/document/file-upload-progress.guard.d.ts.map +1 -0
- package/lib/shared/components/palette/document/file-upload-state.service.d.ts +9 -0
- package/lib/shared/components/palette/document/file-upload-state.service.d.ts.map +1 -0
- package/lib/shared/components/palette/document/index.d.ts +4 -0
- package/lib/shared/components/palette/document/index.d.ts.map +1 -0
- package/lib/shared/components/palette/document/read-document-field.component.d.ts +24 -0
- package/lib/shared/components/palette/document/read-document-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/document/write-document-field.component.d.ts +66 -0
- package/lib/shared/components/palette/document/write-document-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/dynamic-list/dynamic-list.pipe.d.ts +10 -0
- package/lib/shared/components/palette/dynamic-list/dynamic-list.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/dynamic-list/index.d.ts +4 -0
- package/lib/shared/components/palette/dynamic-list/index.d.ts.map +1 -0
- package/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.d.ts +9 -0
- package/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.d.ts +11 -0
- package/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/dynamic-radio-list/dynamic-radio-list.pipe.d.ts +10 -0
- package/lib/shared/components/palette/dynamic-radio-list/dynamic-radio-list.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/dynamic-radio-list/index.d.ts +4 -0
- package/lib/shared/components/palette/dynamic-radio-list/index.d.ts.map +1 -0
- package/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.d.ts +9 -0
- package/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.d.ts +12 -0
- package/lib/shared/components/palette/dynamic-radio-list/write-dynamic-radio-list-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/email/index.d.ts +3 -0
- package/lib/shared/components/palette/email/index.d.ts.map +1 -0
- package/lib/shared/components/palette/email/read-email-field.component.d.ts +8 -0
- package/lib/shared/components/palette/email/read-email-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/email/write-email-field.component.d.ts +11 -0
- package/lib/shared/components/palette/email/write-email-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/fixed-list/fixed-list.pipe.d.ts +10 -0
- package/lib/shared/components/palette/fixed-list/fixed-list.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/fixed-list/index.d.ts +4 -0
- package/lib/shared/components/palette/fixed-list/index.d.ts.map +1 -0
- package/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.d.ts +7 -0
- package/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.d.ts +12 -0
- package/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/fixed-radio-list/fixed-radio-list.pipe.d.ts +10 -0
- package/lib/shared/components/palette/fixed-radio-list/fixed-radio-list.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/fixed-radio-list/index.d.ts +4 -0
- package/lib/shared/components/palette/fixed-radio-list/index.d.ts.map +1 -0
- package/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.d.ts +7 -0
- package/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.d.ts +11 -0
- package/lib/shared/components/palette/fixed-radio-list/write-fixed-radio-list-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/history/case-history-viewer-field.component.d.ts +7 -0
- package/lib/shared/components/palette/history/case-history-viewer-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/history/event-log/event-log-details.component.d.ts +8 -0
- package/lib/shared/components/palette/history/event-log/event-log-details.component.d.ts.map +1 -0
- package/lib/shared/components/palette/history/event-log/event-log-table.component.d.ts +22 -0
- package/lib/shared/components/palette/history/event-log/event-log-table.component.d.ts.map +1 -0
- package/lib/shared/components/palette/history/event-log/event-log.component.d.ts +15 -0
- package/lib/shared/components/palette/history/event-log/event-log.component.d.ts.map +1 -0
- package/lib/shared/components/palette/history/event-log/index.d.ts +4 -0
- package/lib/shared/components/palette/history/event-log/index.d.ts.map +1 -0
- package/lib/shared/components/palette/history/index.d.ts +3 -0
- package/lib/shared/components/palette/history/index.d.ts.map +1 -0
- package/lib/shared/components/palette/label/index.d.ts +2 -0
- package/lib/shared/components/palette/label/index.d.ts.map +1 -0
- package/lib/shared/components/palette/label/label-field.component.d.ts +10 -0
- package/lib/shared/components/palette/label/label-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/markdown/index.d.ts +2 -0
- package/lib/shared/components/palette/markdown/index.d.ts.map +1 -0
- package/lib/shared/components/palette/markdown/markdown.component.d.ts +12 -0
- package/lib/shared/components/palette/markdown/markdown.component.d.ts.map +1 -0
- package/lib/shared/components/palette/money-gbp/index.d.ts +4 -0
- package/lib/shared/components/palette/money-gbp/index.d.ts.map +1 -0
- package/lib/shared/components/palette/money-gbp/money-gbp-input.component.d.ts +23 -0
- package/lib/shared/components/palette/money-gbp/money-gbp-input.component.d.ts.map +1 -0
- package/lib/shared/components/palette/money-gbp/read-money-gbp-field.component.d.ts +12 -0
- package/lib/shared/components/palette/money-gbp/read-money-gbp-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.d.ts +11 -0
- package/lib/shared/components/palette/money-gbp/write-money-gbp-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/multi-select-list/index.d.ts +3 -0
- package/lib/shared/components/palette/multi-select-list/index.d.ts.map +1 -0
- package/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.d.ts +7 -0
- package/lib/shared/components/palette/multi-select-list/read-multi-select-list-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.d.ts +13 -0
- package/lib/shared/components/palette/multi-select-list/write-multi-select-list-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/number/index.d.ts +3 -0
- package/lib/shared/components/palette/number/index.d.ts.map +1 -0
- package/lib/shared/components/palette/number/read-number-field.component.d.ts +7 -0
- package/lib/shared/components/palette/number/read-number-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/number/write-number-field.component.d.ts +11 -0
- package/lib/shared/components/palette/number/write-number-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/order-summary/fee-value.model.d.ts +5 -0
- package/lib/shared/components/palette/order-summary/fee-value.model.d.ts.map +1 -0
- package/lib/shared/components/palette/order-summary/fee.model.d.ts +7 -0
- package/lib/shared/components/palette/order-summary/fee.model.d.ts.map +1 -0
- package/lib/shared/components/palette/order-summary/index.d.ts +7 -0
- package/lib/shared/components/palette/order-summary/index.d.ts.map +1 -0
- package/lib/shared/components/palette/order-summary/order-summary.model.d.ts +7 -0
- package/lib/shared/components/palette/order-summary/order-summary.model.d.ts.map +1 -0
- package/lib/shared/components/palette/order-summary/read-order-summary-field.component.d.ts +10 -0
- package/lib/shared/components/palette/order-summary/read-order-summary-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/order-summary/read-order-summary-row.component.d.ts +12 -0
- package/lib/shared/components/palette/order-summary/read-order-summary-row.component.d.ts.map +1 -0
- package/lib/shared/components/palette/order-summary/write-order-summary-field.component.d.ts +10 -0
- package/lib/shared/components/palette/order-summary/write-order-summary-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/organisation/index.d.ts +6 -0
- package/lib/shared/components/palette/organisation/index.d.ts.map +1 -0
- package/lib/shared/components/palette/organisation/read-organisation-field-raw.component.d.ts +20 -0
- package/lib/shared/components/palette/organisation/read-organisation-field-raw.component.d.ts.map +1 -0
- package/lib/shared/components/palette/organisation/read-organisation-field-table.component.d.ts +20 -0
- package/lib/shared/components/palette/organisation/read-organisation-field-table.component.d.ts.map +1 -0
- package/lib/shared/components/palette/organisation/read-organisation-field.component.d.ts +13 -0
- package/lib/shared/components/palette/organisation/read-organisation-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/organisation/write-organisation-complex-field.component.d.ts +11 -0
- package/lib/shared/components/palette/organisation/write-organisation-complex-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/organisation/write-organisation-field.component.d.ts +47 -0
- package/lib/shared/components/palette/organisation/write-organisation-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/palette.module.d.ts +99 -0
- package/lib/shared/components/palette/palette.module.d.ts.map +1 -0
- package/lib/shared/components/palette/palette.service.d.ts +9 -0
- package/lib/shared/components/palette/palette.service.d.ts.map +1 -0
- package/lib/shared/components/palette/payment/case-payment-history-viewer-field.component.d.ts +10 -0
- package/lib/shared/components/palette/payment/case-payment-history-viewer-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/payment/index.d.ts +2 -0
- package/lib/shared/components/palette/payment/index.d.ts.map +1 -0
- package/lib/shared/components/palette/phone-uk/index.d.ts +3 -0
- package/lib/shared/components/palette/phone-uk/index.d.ts.map +1 -0
- package/lib/shared/components/palette/phone-uk/read-phone-uk-field.component.d.ts +7 -0
- package/lib/shared/components/palette/phone-uk/read-phone-uk-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.d.ts +11 -0
- package/lib/shared/components/palette/phone-uk/write-phone-uk-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/text/index.d.ts +3 -0
- package/lib/shared/components/palette/text/index.d.ts.map +1 -0
- package/lib/shared/components/palette/text/read-text-field.component.d.ts +7 -0
- package/lib/shared/components/palette/text/read-text-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/text/write-text-field.component.d.ts +12 -0
- package/lib/shared/components/palette/text/write-text-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/text-area/index.d.ts +3 -0
- package/lib/shared/components/palette/text-area/index.d.ts.map +1 -0
- package/lib/shared/components/palette/text-area/read-text-area-field.component.d.ts +7 -0
- package/lib/shared/components/palette/text-area/read-text-area-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/text-area/write-text-area-field.component.d.ts +15 -0
- package/lib/shared/components/palette/text-area/write-text-area-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/unsupported-field.component.d.ts +6 -0
- package/lib/shared/components/palette/unsupported-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/utils/dash.pipe.d.ts +8 -0
- package/lib/shared/components/palette/utils/dash.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/utils/date.pipe.d.ts +23 -0
- package/lib/shared/components/palette/utils/date.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/utils/field-label.pipe.d.ts +9 -0
- package/lib/shared/components/palette/utils/field-label.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/utils/first-error.pipe.d.ts +9 -0
- package/lib/shared/components/palette/utils/first-error.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/utils/index.d.ts +10 -0
- package/lib/shared/components/palette/utils/index.d.ts.map +1 -0
- package/lib/shared/components/palette/utils/is-compound.pipe.d.ts +11 -0
- package/lib/shared/components/palette/utils/is-compound.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/utils/is-mandatory.pipe.d.ts +12 -0
- package/lib/shared/components/palette/utils/is-mandatory.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/utils/is-read-only-and-not-collection.pipe.d.ts +13 -0
- package/lib/shared/components/palette/utils/is-read-only-and-not-collection.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/utils/is-read-only.pipe.d.ts +12 -0
- package/lib/shared/components/palette/utils/is-read-only.pipe.d.ts.map +1 -0
- package/lib/shared/components/palette/utils/utils.module.d.ts +16 -0
- package/lib/shared/components/palette/utils/utils.module.d.ts.map +1 -0
- package/lib/shared/components/palette/waystopay/index.d.ts +2 -0
- package/lib/shared/components/palette/waystopay/index.d.ts.map +1 -0
- package/lib/shared/components/palette/waystopay/waystopay-field.component.d.ts +11 -0
- package/lib/shared/components/palette/waystopay/waystopay-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/yes-no/index.d.ts +4 -0
- package/lib/shared/components/palette/yes-no/index.d.ts.map +1 -0
- package/lib/shared/components/palette/yes-no/read-yes-no-field.component.d.ts +13 -0
- package/lib/shared/components/palette/yes-no/read-yes-no-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/yes-no/write-yes-no-field.component.d.ts +15 -0
- package/lib/shared/components/palette/yes-no/write-yes-no-field.component.d.ts.map +1 -0
- package/lib/shared/components/palette/yes-no/yes-no.service.d.ts +14 -0
- package/lib/shared/components/palette/yes-no/yes-no.service.d.ts.map +1 -0
- package/lib/shared/components/search-filters/domain/index.d.ts +2 -0
- package/lib/shared/components/search-filters/domain/index.d.ts.map +1 -0
- package/lib/shared/components/search-filters/domain/search-input.model.d.ts +11 -0
- package/lib/shared/components/search-filters/domain/search-input.model.d.ts.map +1 -0
- package/lib/shared/components/search-filters/index.d.ts +5 -0
- package/lib/shared/components/search-filters/index.d.ts.map +1 -0
- package/lib/shared/components/search-filters/search-filters-wrapper.component.d.ts +21 -0
- package/lib/shared/components/search-filters/search-filters-wrapper.component.d.ts.map +1 -0
- package/lib/shared/components/search-filters/search-filters.component.d.ts +57 -0
- package/lib/shared/components/search-filters/search-filters.component.d.ts.map +1 -0
- package/lib/shared/components/search-filters/search-filters.module.d.ts +13 -0
- package/lib/shared/components/search-filters/search-filters.module.d.ts.map +1 -0
- package/lib/shared/directives/conditional-show/conditional-show-form.directive.d.ts +40 -0
- package/lib/shared/directives/conditional-show/conditional-show-form.directive.d.ts.map +1 -0
- package/lib/shared/directives/conditional-show/conditional-show.module.d.ts +8 -0
- package/lib/shared/directives/conditional-show/conditional-show.module.d.ts.map +1 -0
- package/lib/shared/directives/conditional-show/domain/conditional-show.model.d.ts +56 -0
- package/lib/shared/directives/conditional-show/domain/conditional-show.model.d.ts.map +1 -0
- package/lib/shared/directives/conditional-show/domain/index.d.ts +2 -0
- package/lib/shared/directives/conditional-show/domain/index.d.ts.map +1 -0
- package/lib/shared/directives/conditional-show/index.d.ts +5 -0
- package/lib/shared/directives/conditional-show/index.d.ts.map +1 -0
- package/lib/shared/directives/conditional-show/services/conditional-show-registrar.service.d.ts +10 -0
- package/lib/shared/directives/conditional-show/services/conditional-show-registrar.service.d.ts.map +1 -0
- package/lib/shared/directives/conditional-show/services/grey-bar.service.d.ts +22 -0
- package/lib/shared/directives/conditional-show/services/grey-bar.service.d.ts.map +1 -0
- package/lib/shared/directives/conditional-show/services/index.d.ts +3 -0
- package/lib/shared/directives/conditional-show/services/index.d.ts.map +1 -0
- package/lib/shared/directives/focus-element/focus-element.directive.d.ts +12 -0
- package/lib/shared/directives/focus-element/focus-element.directive.d.ts.map +1 -0
- package/lib/shared/directives/focus-element/focus-element.module.d.ts +8 -0
- package/lib/shared/directives/focus-element/focus-element.module.d.ts.map +1 -0
- package/lib/shared/directives/focus-element/index.d.ts +3 -0
- package/lib/shared/directives/focus-element/index.d.ts.map +1 -0
- package/lib/shared/directives/index.d.ts +4 -0
- package/lib/shared/directives/index.d.ts.map +1 -0
- package/lib/shared/directives/substitutor/index.d.ts +4 -0
- package/lib/shared/directives/substitutor/index.d.ts.map +1 -0
- package/lib/shared/directives/substitutor/label-substitutor.directive.d.ts +27 -0
- package/lib/shared/directives/substitutor/label-substitutor.directive.d.ts.map +1 -0
- package/lib/shared/directives/substitutor/label-substitutor.module.d.ts +8 -0
- package/lib/shared/directives/substitutor/label-substitutor.module.d.ts.map +1 -0
- package/lib/shared/directives/substitutor/services/index.d.ts +2 -0
- package/lib/shared/directives/substitutor/services/index.d.ts.map +1 -0
- package/lib/shared/directives/substitutor/services/placeholder.service.d.ts +64 -0
- package/lib/shared/directives/substitutor/services/placeholder.service.d.ts.map +1 -0
- package/lib/shared/domain/activity/activity.model.d.ts +16 -0
- package/lib/shared/domain/activity/activity.model.d.ts.map +1 -0
- package/lib/shared/domain/activity/index.d.ts +2 -0
- package/lib/shared/domain/activity/index.d.ts.map +1 -0
- package/lib/shared/domain/addresses/address.model.d.ts +10 -0
- package/lib/shared/domain/addresses/address.model.d.ts.map +1 -0
- package/lib/shared/domain/addresses/index.d.ts +2 -0
- package/lib/shared/domain/addresses/index.d.ts.map +1 -0
- package/lib/shared/domain/alert/alert-level.model.d.ts +2 -0
- package/lib/shared/domain/alert/alert-level.model.d.ts.map +1 -0
- package/lib/shared/domain/alert/alert.model.d.ts +6 -0
- package/lib/shared/domain/alert/alert.model.d.ts.map +1 -0
- package/lib/shared/domain/alert/index.d.ts +3 -0
- package/lib/shared/domain/alert/index.d.ts.map +1 -0
- package/lib/shared/domain/case-details.model.d.ts +12 -0
- package/lib/shared/domain/case-details.model.d.ts.map +1 -0
- package/lib/shared/domain/case-event-data.model.d.ts +14 -0
- package/lib/shared/domain/case-event-data.model.d.ts.map +1 -0
- package/lib/shared/domain/case-view/access-types.model.d.ts +5 -0
- package/lib/shared/domain/case-view/access-types.model.d.ts.map +1 -0
- package/lib/shared/domain/case-view/case-event-trigger.model.d.ts +18 -0
- package/lib/shared/domain/case-view/case-event-trigger.model.d.ts.map +1 -0
- package/lib/shared/domain/case-view/case-print-document.model.d.ts +6 -0
- package/lib/shared/domain/case-view/case-print-document.model.d.ts.map +1 -0
- package/lib/shared/domain/case-view/case-tab.model.d.ts +10 -0
- package/lib/shared/domain/case-view/case-tab.model.d.ts.map +1 -0
- package/lib/shared/domain/case-view/case-view-event.model.d.ts +19 -0
- package/lib/shared/domain/case-view/case-view-event.model.d.ts.map +1 -0
- package/lib/shared/domain/case-view/case-view-trigger.model.d.ts +9 -0
- package/lib/shared/domain/case-view/case-view-trigger.model.d.ts.map +1 -0
- package/lib/shared/domain/case-view/case-view.model.d.ts +36 -0
- package/lib/shared/domain/case-view/case-view.model.d.ts.map +1 -0
- package/lib/shared/domain/case-view/challenged-access-request.model.d.ts +6 -0
- package/lib/shared/domain/case-view/challenged-access-request.model.d.ts.map +1 -0
- package/lib/shared/domain/case-view/index.d.ts +12 -0
- package/lib/shared/domain/case-view/index.d.ts.map +1 -0
- package/lib/shared/domain/case-view/review-specific-access-request.model.d.ts +5 -0
- package/lib/shared/domain/case-view/review-specific-access-request.model.d.ts.map +1 -0
- package/lib/shared/domain/case-view/role-assignment-response.model.d.ts +7 -0
- package/lib/shared/domain/case-view/role-assignment-response.model.d.ts.map +1 -0
- package/lib/shared/domain/case-view/role-request.model.d.ts +35 -0
- package/lib/shared/domain/case-view/role-request.model.d.ts.map +1 -0
- package/lib/shared/domain/case-view/specific-access-request.model.d.ts +4 -0
- package/lib/shared/domain/case-view/specific-access-request.model.d.ts.map +1 -0
- package/lib/shared/domain/definition/access-control-list.model.d.ts +8 -0
- package/lib/shared/domain/definition/access-control-list.model.d.ts.map +1 -0
- package/lib/shared/domain/definition/banner.model.d.ts +8 -0
- package/lib/shared/domain/definition/banner.model.d.ts.map +1 -0
- package/lib/shared/domain/definition/case-event.model.d.ts +14 -0
- package/lib/shared/domain/definition/case-event.model.d.ts.map +1 -0
- package/lib/shared/domain/definition/case-field.model.d.ts +44 -0
- package/lib/shared/domain/definition/case-field.model.d.ts.map +1 -0
- package/lib/shared/domain/definition/case-state.model.d.ts +8 -0
- package/lib/shared/domain/definition/case-state.model.d.ts.map +1 -0
- package/lib/shared/domain/definition/case-type-lite.model.d.ts +10 -0
- package/lib/shared/domain/definition/case-type-lite.model.d.ts.map +1 -0
- package/lib/shared/domain/definition/case-type.model.d.ts +15 -0
- package/lib/shared/domain/definition/case-type.model.d.ts.map +1 -0
- package/lib/shared/domain/definition/event-case-field.model.d.ts +5 -0
- package/lib/shared/domain/definition/event-case-field.model.d.ts.map +1 -0
- package/lib/shared/domain/definition/field-type-enum.model.d.ts +2 -0
- package/lib/shared/domain/definition/field-type-enum.model.d.ts.map +1 -0
- package/lib/shared/domain/definition/field-type.model.d.ts +14 -0
- package/lib/shared/domain/definition/field-type.model.d.ts.map +1 -0
- package/lib/shared/domain/definition/fixed-list-item.model.d.ts +7 -0
- package/lib/shared/domain/definition/fixed-list-item.model.d.ts.map +1 -0
- package/lib/shared/domain/definition/index.d.ts +12 -0
- package/lib/shared/domain/definition/index.d.ts.map +1 -0
- package/lib/shared/domain/definition/jurisdiction.model.d.ts +8 -0
- package/lib/shared/domain/definition/jurisdiction.model.d.ts.map +1 -0
- package/lib/shared/domain/document/document-data.model.d.ts +26 -0
- package/lib/shared/domain/document/document-data.model.d.ts.map +1 -0
- package/lib/shared/domain/document/index.d.ts +2 -0
- package/lib/shared/domain/document/index.d.ts.map +1 -0
- package/lib/shared/domain/draft.model.d.ts +13 -0
- package/lib/shared/domain/draft.model.d.ts.map +1 -0
- package/lib/shared/domain/error-message.model.d.ts +9 -0
- package/lib/shared/domain/error-message.model.d.ts.map +1 -0
- package/lib/shared/domain/http/http-error.model.d.ts +18 -0
- package/lib/shared/domain/http/http-error.model.d.ts.map +1 -0
- package/lib/shared/domain/http/index.d.ts +2 -0
- package/lib/shared/domain/http/index.d.ts.map +1 -0
- package/lib/shared/domain/index.d.ts +23 -0
- package/lib/shared/domain/index.d.ts.map +1 -0
- package/lib/shared/domain/order/index.d.ts +2 -0
- package/lib/shared/domain/order/index.d.ts.map +1 -0
- package/lib/shared/domain/order/orderable.model.d.ts +4 -0
- package/lib/shared/domain/order/orderable.model.d.ts.map +1 -0
- package/lib/shared/domain/organisation/index.d.ts +3 -0
- package/lib/shared/domain/organisation/index.d.ts.map +1 -0
- package/lib/shared/domain/organisation/organisation-converter.d.ts +10 -0
- package/lib/shared/domain/organisation/organisation-converter.d.ts.map +1 -0
- package/lib/shared/domain/organisation/simple-organisation.model.d.ts +6 -0
- package/lib/shared/domain/organisation/simple-organisation.model.d.ts.map +1 -0
- package/lib/shared/domain/pagination-metadata.model.d.ts +5 -0
- package/lib/shared/domain/pagination-metadata.model.d.ts.map +1 -0
- package/lib/shared/domain/predicate.model.d.ts +2 -0
- package/lib/shared/domain/predicate.model.d.ts.map +1 -0
- package/lib/shared/domain/profile/index.d.ts +2 -0
- package/lib/shared/domain/profile/index.d.ts.map +1 -0
- package/lib/shared/domain/profile/profile.model.d.ts +24 -0
- package/lib/shared/domain/profile/profile.model.d.ts.map +1 -0
- package/lib/shared/domain/search/field.model.d.ts +11 -0
- package/lib/shared/domain/search/field.model.d.ts.map +1 -0
- package/lib/shared/domain/search/index.d.ts +5 -0
- package/lib/shared/domain/search/index.d.ts.map +1 -0
- package/lib/shared/domain/search/search-result-view-column.model.d.ts +10 -0
- package/lib/shared/domain/search/search-result-view-column.model.d.ts.map +1 -0
- package/lib/shared/domain/search/search-result-view-item.model.d.ts +10 -0
- package/lib/shared/domain/search/search-result-view-item.model.d.ts.map +1 -0
- package/lib/shared/domain/search/search-result-view.model.d.ts +9 -0
- package/lib/shared/domain/search/search-result-view.model.d.ts.map +1 -0
- package/lib/shared/domain/search/sorting/search-result-view-item-comparator.d.ts +5 -0
- package/lib/shared/domain/search/sorting/search-result-view-item-comparator.d.ts.map +1 -0
- package/lib/shared/domain/search/sorting/sort-order.d.ts +6 -0
- package/lib/shared/domain/search/sorting/sort-order.d.ts.map +1 -0
- package/lib/shared/domain/search/sorting/sort-parameters.d.ts +8 -0
- package/lib/shared/domain/search/sorting/sort-parameters.d.ts.map +1 -0
- package/lib/shared/domain/user/user-details.model.d.ts +10 -0
- package/lib/shared/domain/user/user-details.model.d.ts.map +1 -0
- package/lib/shared/domain/user/user-info.model.d.ts +11 -0
- package/lib/shared/domain/user/user-info.model.d.ts.map +1 -0
- package/lib/shared/domain/work-allocation/Task.d.ts +50 -0
- package/lib/shared/domain/work-allocation/Task.d.ts.map +1 -0
- package/lib/shared/domain/work-allocation/TaskPayload.d.ts +6 -0
- package/lib/shared/domain/work-allocation/TaskPayload.d.ts.map +1 -0
- package/lib/shared/domain/work-allocation/index.d.ts +2 -0
- package/lib/shared/domain/work-allocation/index.d.ts.map +1 -0
- package/lib/shared/domain/work-allocation/task-response.model.d.ts +5 -0
- package/lib/shared/domain/work-allocation/task-response.model.d.ts.map +1 -0
- package/lib/shared/domain/work-allocation/task-search-parameter.model.d.ts +15 -0
- package/lib/shared/domain/work-allocation/task-search-parameter.model.d.ts.map +1 -0
- package/lib/shared/domain/workbasket/index.d.ts +2 -0
- package/lib/shared/domain/workbasket/index.d.ts.map +1 -0
- package/lib/shared/domain/workbasket/workbasket-input.model.d.ts +14 -0
- package/lib/shared/domain/workbasket/workbasket-input.model.d.ts.map +1 -0
- package/lib/shared/fixture/case-field-builder.d.ts +22 -0
- package/lib/shared/fixture/case-field-builder.d.ts.map +1 -0
- package/lib/shared/fixture/shared.test.fixture.d.ts +25 -0
- package/lib/shared/fixture/shared.test.fixture.d.ts.map +1 -0
- package/lib/shared/index.d.ts +8 -0
- package/lib/shared/index.d.ts.map +1 -0
- package/lib/shared/pipes/case-reference/case-reference.pipe.d.ts +8 -0
- package/lib/shared/pipes/case-reference/case-reference.pipe.d.ts.map +1 -0
- package/lib/shared/pipes/case-reference/index.d.ts +2 -0
- package/lib/shared/pipes/case-reference/index.d.ts.map +1 -0
- package/lib/shared/pipes/case-title/ccd-case-title.pipe.d.ts +15 -0
- package/lib/shared/pipes/case-title/ccd-case-title.pipe.d.ts.map +1 -0
- package/lib/shared/pipes/case-title/index.d.ts +2 -0
- package/lib/shared/pipes/case-title/index.d.ts.map +1 -0
- package/lib/shared/pipes/index.d.ts +5 -0
- package/lib/shared/pipes/index.d.ts.map +1 -0
- package/lib/shared/pipes/pipes.module.d.ts +11 -0
- package/lib/shared/pipes/pipes.module.d.ts.map +1 -0
- package/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.d.ts +10 -0
- package/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.d.ts.map +1 -0
- package/lib/shared/services/activity/activity.polling.service.d.ts +30 -0
- package/lib/shared/services/activity/activity.polling.service.d.ts.map +1 -0
- package/lib/shared/services/activity/activity.service.d.ts +26 -0
- package/lib/shared/services/activity/activity.service.d.ts.map +1 -0
- package/lib/shared/services/activity/index.d.ts +3 -0
- package/lib/shared/services/activity/index.d.ts.map +1 -0
- package/lib/shared/services/addresses/address-parser.d.ts +18 -0
- package/lib/shared/services/addresses/address-parser.d.ts.map +1 -0
- package/lib/shared/services/addresses/addresses.service.d.ts +21 -0
- package/lib/shared/services/addresses/addresses.service.d.ts.map +1 -0
- package/lib/shared/services/addresses/index.d.ts +2 -0
- package/lib/shared/services/addresses/index.d.ts.map +1 -0
- package/lib/shared/services/alert/alert.service.d.ts +35 -0
- package/lib/shared/services/alert/alert.service.d.ts.map +1 -0
- package/lib/shared/services/alert/index.d.ts +2 -0
- package/lib/shared/services/alert/index.d.ts.map +1 -0
- package/lib/shared/services/auth/auth.service.d.ts +16 -0
- package/lib/shared/services/auth/auth.service.d.ts.map +1 -0
- package/lib/shared/services/auth/index.d.ts +2 -0
- package/lib/shared/services/auth/index.d.ts.map +1 -0
- package/lib/shared/services/banners/banners.service.d.ts +15 -0
- package/lib/shared/services/banners/banners.service.d.ts.map +1 -0
- package/lib/shared/services/banners/index.d.ts +2 -0
- package/lib/shared/services/banners/index.d.ts.map +1 -0
- package/lib/shared/services/browser/browser.service.d.ts +9 -0
- package/lib/shared/services/browser/browser.service.d.ts.map +1 -0
- package/lib/shared/services/browser/index.d.ts +2 -0
- package/lib/shared/services/browser/index.d.ts.map +1 -0
- package/lib/shared/services/case-fields/case-field.service.d.ts +11 -0
- package/lib/shared/services/case-fields/case-field.service.d.ts.map +1 -0
- package/lib/shared/services/case-fields/format-translator.service.d.ts +16 -0
- package/lib/shared/services/case-fields/format-translator.service.d.ts.map +1 -0
- package/lib/shared/services/case-fields/index.d.ts +2 -0
- package/lib/shared/services/case-fields/index.d.ts.map +1 -0
- package/lib/shared/services/definitions/definitions.module.d.ts +7 -0
- package/lib/shared/services/definitions/definitions.module.d.ts.map +1 -0
- package/lib/shared/services/definitions/definitions.service.d.ts +16 -0
- package/lib/shared/services/definitions/definitions.service.d.ts.map +1 -0
- package/lib/shared/services/definitions/index.d.ts +3 -0
- package/lib/shared/services/definitions/index.d.ts.map +1 -0
- package/lib/shared/services/document-management/document-management.service.d.ts +34 -0
- package/lib/shared/services/document-management/document-management.service.d.ts.map +1 -0
- package/lib/shared/services/document-management/index.d.ts +2 -0
- package/lib/shared/services/document-management/index.d.ts.map +1 -0
- package/lib/shared/services/draft/draft.service.d.ts +25 -0
- package/lib/shared/services/draft/draft.service.d.ts.map +1 -0
- package/lib/shared/services/draft/index.d.ts +2 -0
- package/lib/shared/services/draft/index.d.ts.map +1 -0
- package/lib/shared/services/error/error-notifier.service.d.ts +10 -0
- package/lib/shared/services/error/error-notifier.service.d.ts.map +1 -0
- package/lib/shared/services/error/index.d.ts +2 -0
- package/lib/shared/services/error/index.d.ts.map +1 -0
- package/lib/shared/services/eventStatusService/event-status.service.d.ts +11 -0
- package/lib/shared/services/eventStatusService/event-status.service.d.ts.map +1 -0
- package/lib/shared/services/eventStatusService/index.d.ts +2 -0
- package/lib/shared/services/eventStatusService/index.d.ts.map +1 -0
- package/lib/shared/services/fields/fields.purger.d.ts +39 -0
- package/lib/shared/services/fields/fields.purger.d.ts.map +1 -0
- package/lib/shared/services/fields/fields.utils.d.ts +81 -0
- package/lib/shared/services/fields/fields.utils.d.ts.map +1 -0
- package/lib/shared/services/fields/index.d.ts +3 -0
- package/lib/shared/services/fields/index.d.ts.map +1 -0
- package/lib/shared/services/form/field-type-sanitiser.d.ts +29 -0
- package/lib/shared/services/form/field-type-sanitiser.d.ts.map +1 -0
- package/lib/shared/services/form/form-error.service.d.ts +12 -0
- package/lib/shared/services/form/form-error.service.d.ts.map +1 -0
- package/lib/shared/services/form/form-validators.service.d.ts +12 -0
- package/lib/shared/services/form/form-validators.service.d.ts.map +1 -0
- package/lib/shared/services/form/form-value.service.d.ts +172 -0
- package/lib/shared/services/form/form-value.service.d.ts.map +1 -0
- package/lib/shared/services/form/index.d.ts +5 -0
- package/lib/shared/services/form/index.d.ts.map +1 -0
- package/lib/shared/services/http/http-error.service.d.ts +19 -0
- package/lib/shared/services/http/http-error.service.d.ts.map +1 -0
- package/lib/shared/services/http/http.service.d.ts +60 -0
- package/lib/shared/services/http/http.service.d.ts.map +1 -0
- package/lib/shared/services/http/index.d.ts +3 -0
- package/lib/shared/services/http/index.d.ts.map +1 -0
- package/lib/shared/services/index.d.ts +29 -0
- package/lib/shared/services/index.d.ts.map +1 -0
- package/lib/shared/services/jurisdiction/index.d.ts +2 -0
- package/lib/shared/services/jurisdiction/index.d.ts.map +1 -0
- package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts +11 -0
- package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts.map +1 -0
- package/lib/shared/services/loading/index.d.ts +3 -0
- package/lib/shared/services/loading/index.d.ts.map +1 -0
- package/lib/shared/services/loading/loading.module.d.ts +7 -0
- package/lib/shared/services/loading/loading.module.d.ts.map +1 -0
- package/lib/shared/services/loading/loading.service.d.ts +16 -0
- package/lib/shared/services/loading/loading.service.d.ts.map +1 -0
- package/lib/shared/services/navigation/index.d.ts +3 -0
- package/lib/shared/services/navigation/index.d.ts.map +1 -0
- package/lib/shared/services/navigation/navigation-notifier.service.d.ts +10 -0
- package/lib/shared/services/navigation/navigation-notifier.service.d.ts.map +1 -0
- package/lib/shared/services/navigation/navigation-origin.model.d.ts +8 -0
- package/lib/shared/services/navigation/navigation-origin.model.d.ts.map +1 -0
- package/lib/shared/services/order/index.d.ts +2 -0
- package/lib/shared/services/order/index.d.ts.map +1 -0
- package/lib/shared/services/order/order.service.d.ts +19 -0
- package/lib/shared/services/order/order.service.d.ts.map +1 -0
- package/lib/shared/services/organisation/index.d.ts +2 -0
- package/lib/shared/services/organisation/index.d.ts.map +1 -0
- package/lib/shared/services/organisation/organisation.service.d.ts +53 -0
- package/lib/shared/services/organisation/organisation.service.d.ts.map +1 -0
- package/lib/shared/services/profile/index.d.ts +3 -0
- package/lib/shared/services/profile/index.d.ts.map +1 -0
- package/lib/shared/services/profile/profile.notifier.d.ts +11 -0
- package/lib/shared/services/profile/profile.notifier.d.ts.map +1 -0
- package/lib/shared/services/profile/profile.service.d.ts +16 -0
- package/lib/shared/services/profile/profile.service.d.ts.map +1 -0
- package/lib/shared/services/request/index.d.ts +2 -0
- package/lib/shared/services/request/index.d.ts.map +1 -0
- package/lib/shared/services/request/request.options.builder.d.ts +17 -0
- package/lib/shared/services/request/request.options.builder.d.ts.map +1 -0
- package/lib/shared/services/router/index.d.ts +2 -0
- package/lib/shared/services/router/index.d.ts.map +1 -0
- package/lib/shared/services/router/router-helper.service.d.ts +8 -0
- package/lib/shared/services/router/router-helper.service.d.ts.map +1 -0
- package/lib/shared/services/search/index.d.ts +2 -0
- package/lib/shared/services/search/index.d.ts.map +1 -0
- package/lib/shared/services/search/search.service.d.ts +32 -0
- package/lib/shared/services/search/search.service.d.ts.map +1 -0
- package/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.d.ts +12 -0
- package/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.d.ts.map +1 -0
- package/lib/shared/services/session/index.d.ts +2 -0
- package/lib/shared/services/session/index.d.ts.map +1 -0
- package/lib/shared/services/session/session-storage.service.d.ts +22 -0
- package/lib/shared/services/session/session-storage.service.d.ts.map +1 -0
- package/lib/shared/services/window/index.d.ts +2 -0
- package/lib/shared/services/window/index.d.ts.map +1 -0
- package/lib/shared/services/window/window.service.d.ts +15 -0
- package/lib/shared/services/window/window.service.d.ts.map +1 -0
- package/lib/shared/services/workbasket/index.d.ts +2 -0
- package/lib/shared/services/workbasket/index.d.ts.map +1 -0
- package/lib/shared/services/workbasket/workbasket-input-filter.service.d.ts +19 -0
- package/lib/shared/services/workbasket/workbasket-input-filter.service.d.ts.map +1 -0
- package/lib/shared/test/test-route-snapshot-builder.d.ts +11 -0
- package/lib/shared/test/test-route-snapshot-builder.d.ts.map +1 -0
- package/package.json +14 -199
- package/public-api.d.ts +3 -0
- package/public-api.d.ts.map +1 -0
- package/.editorconfig +0 -14
- package/.github/CONTRIBUTING.md +0 -39
- package/.github/ISSUE_TEMPLATE.md +0 -5
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -23
- package/.github/stale.yml +0 -24
- package/.github/workflows/npmpublish.yml +0 -98
- package/.nyc_output/.gitkeep +0 -1
- package/.project +0 -4
- package/.storybook/main.js +0 -13
- package/.storybook/preview.js +0 -15
- package/.storybook/tsconfig.json +0 -21
- package/.storybook/typings.d.ts +0 -4
- package/.travis.yml +0 -54
- package/LICENSE.md +0 -9
- package/README.md +0 -191
- package/RELEASE-NOTES.md +0 -1153
- package/angular.json +0 -193
- package/bin/run-yarn-audit.sh +0 -38
- package/browserslist +0 -12
- package/documentation.json +0 -88650
- package/e2e/tsconfig.e2e.json +0 -13
- package/projects/ccd-case-ui-toolkit/ng-package.json +0 -8
- package/projects/ccd-case-ui-toolkit/package.json +0 -18
- package/projects/ccd-case-ui-toolkit/tsconfig.lib.json +0 -33
- package/projects/ccd-case-ui-toolkit/tsconfig.lib.prod.json +0 -7
- package/projects/ccd-case-ui-toolkit/tsconfig.spec.json +0 -21
- package/projects/ccd-case-ui-toolkit/tslint.json +0 -96
- package/scripts/create-release-tag.sh +0 -23
- package/sonar-project.properties +0 -12
- package/storybook/assets/fonts/bold-a2452cb66f-v1.woff2 +0 -0
- package/storybook/assets/fonts/bold-f38c792ac2-v1.woff +0 -0
- package/storybook/assets/fonts/bold-fb2676462a-v1.eot +0 -0
- package/storybook/assets/fonts/bold-tabular-357fdfbcc3-v1.eot +0 -0
- package/storybook/assets/fonts/bold-tabular-784c21afb8-v1.woff +0 -0
- package/storybook/assets/fonts/bold-tabular-b89238d840-v1.woff2 +0 -0
- package/storybook/assets/fonts/light-2c037cf7e1-v1.eot +0 -0
- package/storybook/assets/fonts/light-458f8ea81c-v1.woff +0 -0
- package/storybook/assets/fonts/light-f38ad40456-v1.woff2 +0 -0
- package/storybook/assets/fonts/light-tabular-498ea8ffe2-v1.eot +0 -0
- package/storybook/assets/fonts/light-tabular-62cc6f0a28-v1.woff +0 -0
- package/storybook/assets/fonts/light-tabular-851b10ccdd-v1.woff2 +0 -0
- package/storybook/assets/images/govuk-crest-2x.png +0 -0
- package/storybook/assets/images/govuk-crest.png +0 -0
- package/storybook/assets/img/accordion-minus.png +0 -0
- package/storybook/assets/img/accordion-plus.png +0 -0
- package/storybook/assets/img/apple-touch-icon-120x120.png +0 -0
- package/storybook/assets/img/apple-touch-icon-152x152.png +0 -0
- package/storybook/assets/img/apple-touch-icon-60x60.png +0 -0
- package/storybook/assets/img/apple-touch-icon-76x76.png +0 -0
- package/storybook/assets/img/dropdown-arrow.PNG +0 -0
- package/storybook/assets/img/editor.png +0 -0
- package/storybook/assets/img/editorBanner.png +0 -0
- package/storybook/assets/img/favicon.ico +0 -0
- package/storybook/assets/img/gov.uk_logotype_crown.svg +0 -7
- package/storybook/assets/img/gov.uk_logotype_crown_invert_trans.png +0 -0
- package/storybook/assets/img/icon-search-white.png +0 -0
- package/storybook/assets/img/viewer.png +0 -0
- package/storybook/assets/img/viewerBanner.png +0 -0
- package/storybook/assets/img/warning.png +0 -0
- package/storybook/assets/img/x.PNG +0 -0
- package/storybook/assets/sass/annotation-ui-theme.scss +0 -217
- package/storybook/assets/sass/application-ie8.scss +0 -3
- package/storybook/assets/sass/application.scss +0 -214
- package/storybook/assets/sass/components/_cookie-banner.scss +0 -24
- package/storybook/assets/sass/jui/all.scss +0 -20
- package/storybook/assets/sass/jui/objects/_manifest.scss +0 -5
- package/storybook/assets/sass/jui/objects/_objects.container.scss +0 -7
- package/storybook/assets/sass/jui/settings/_manifest.scss +0 -6
- package/storybook/assets/sass/jui/settings/_settings.aspect-ratio.scss +0 -9
- package/storybook/assets/sass/jui/settings/_settings.general.scss +0 -34
- package/storybook/assets/sass/patterns/_check-your-answers.scss +0 -86
- package/storybook/assets/sass/patterns/_pba.scss +0 -278
- package/storybook/assets/sass/patterns/_related-items.scss +0 -11
- package/storybook/assets/sass/patterns/_task-list.scss +0 -72
- package/storybook/assets/sass/unbranded.scss +0 -12
- package/storybook/storybook.component.ts +0 -11
- package/storybook/storybook.styles.scss +0 -17
- package/storybook/style/_buttons.scss +0 -19
- package/storybook/style/_forms.scss +0 -19
- package/storybook/style/_markdown.scss +0 -48
- package/storybook/style/_material.scss +0 -53
- package/storybook/style/_notifications.scss +0 -23
- package/storybook/style/_palette.scss +0 -77
- package/storybook/style/_print.scss +0 -19
- package/storybook/style/app.scss +0 -399
- package/storybook/style/vendor/prism.scss +0 -116
- package/storybook-static/0.835660aac5fb57f1c871.manager.bundle.js +0 -2
- package/storybook-static/0.835660aac5fb57f1c871.manager.bundle.js.LICENSE.txt +0 -8
- package/storybook-static/0.8a2e5fcc.iframe.bundle.js +0 -3
- package/storybook-static/0.8a2e5fcc.iframe.bundle.js.LICENSE.txt +0 -17
- package/storybook-static/0.8a2e5fcc.iframe.bundle.js.map +0 -1
- package/storybook-static/1.2f18dfb406091ad58686.manager.bundle.js +0 -1
- package/storybook-static/1.ab9ea240.iframe.bundle.js +0 -3
- package/storybook-static/1.ab9ea240.iframe.bundle.js.LICENSE.txt +0 -8
- package/storybook-static/1.ab9ea240.iframe.bundle.js.map +0 -1
- package/storybook-static/10.fa5fcd50.iframe.bundle.js +0 -3
- package/storybook-static/10.fa5fcd50.iframe.bundle.js.LICENSE.txt +0 -12
- package/storybook-static/10.fa5fcd50.iframe.bundle.js.map +0 -1
- package/storybook-static/2.e37e048c.iframe.bundle.js +0 -1
- package/storybook-static/3.a2afbe6b.iframe.bundle.js +0 -1
- package/storybook-static/5.472a084050c6577e437c.manager.bundle.js +0 -2
- package/storybook-static/5.472a084050c6577e437c.manager.bundle.js.LICENSE.txt +0 -31
- package/storybook-static/6.6d8b7e0d6abfb2af3157.manager.bundle.js +0 -1
- package/storybook-static/7.33e8f7c3.iframe.bundle.js +0 -3
- package/storybook-static/7.33e8f7c3.iframe.bundle.js.LICENSE.txt +0 -31
- package/storybook-static/7.33e8f7c3.iframe.bundle.js.map +0 -1
- package/storybook-static/7.b9048b95a2d61a0d5990.manager.bundle.js +0 -1
- package/storybook-static/8.c0075f29233ef3a5f866.manager.bundle.js +0 -2
- package/storybook-static/8.c0075f29233ef3a5f866.manager.bundle.js.LICENSE.txt +0 -12
- package/storybook-static/8.c6adb04b.iframe.bundle.js +0 -1
- package/storybook-static/9.73d6cb6ada64ba200277.manager.bundle.js +0 -1
- package/storybook-static/9.eaf466b7.iframe.bundle.js +0 -1
- package/storybook-static/favicon.ico +0 -0
- package/storybook-static/iframe.html +0 -364
- package/storybook-static/index.html +0 -59
- package/storybook-static/main.6f2a4d7a.iframe.bundle.js +0 -1
- package/storybook-static/main.bbfce4da3ddc788a6d97.manager.bundle.js +0 -1
- package/storybook-static/project.json +0 -1
- package/storybook-static/runtime~main.17dc4af8228ff7ffc150.manager.bundle.js +0 -1
- package/storybook-static/runtime~main.da0120f3.iframe.bundle.js +0 -1
- package/storybook-static/static/media/code-brackets.2e1112d7.svg +0 -1
- package/storybook-static/static/media/colors.a4bd0486.svg +0 -1
- package/storybook-static/static/media/comments.a3859089.svg +0 -1
- package/storybook-static/static/media/direction.b770f9af.svg +0 -1
- package/storybook-static/static/media/flow.edad2ac1.svg +0 -1
- package/storybook-static/static/media/plugin.d494b228.svg +0 -1
- package/storybook-static/static/media/repo.6d496322.svg +0 -1
- package/storybook-static/static/media/stackalt.dba9fbb3.svg +0 -1
- package/storybook-static/vendors~main.ac63a4b3609bbef0abd4.manager.bundle.js +0 -2
- package/storybook-static/vendors~main.ac63a4b3609bbef0abd4.manager.bundle.js.LICENSE.txt +0 -104
- package/storybook-static/vendors~main.c4556936.iframe.bundle.js +0 -13
- package/storybook-static/vendors~main.c4556936.iframe.bundle.js.LICENSE.txt +0 -94
- package/storybook-static/vendors~main.c4556936.iframe.bundle.js.map +0 -1
- package/tsconfig.json +0 -44
- package/tslint.json +0 -96
- package/yarn-audit-known-issues +0 -28
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["i0","ctx_r1","email","phone","workhours","FooterComponent","title","ctx_r2","selectors","inputs","isSolicitor","ngContentSelectors","decls","vars","consts","template","rf","ctx","FooterComponent_div_2_Template","FooterComponent_div_3_Template","Component","args","selector","templateUrl","styleUrls","Input","HeaderBarComponent","this","signOutRequest","EventEmitter","prototype","signOut","emit","username","outputs","HeaderBarComponent_div_3_Template","HeaderBarComponent_div_4_Template","HeaderBarComponent_div_9_Template","Output","NavigationComponent","ctx_r0","label","imageLink","NavigationItemComponent","link","NavigationItemComponent_input_3_Template","PhaseComponent","phaseLabel","phaseLink","HeadersModule","CommonModule","RouterModule","ngJitMode","declarations","imports","exports","NgModule","BodyComponent","encapsulation","ViewEncapsulation","None","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__metadata","metadataKey","metadataValue","metadata","__values","o","s","Symbol","iterator","m","call","next","value","done","TypeError","__read","n","e","ar","push","error","__spread","concat","_r8_1","_r6","hourChange","i0__namespace","inputFocus","ctx_r3","hourId","displayHour","_c0","isInvalid","_r13_1","_r11","minuteChange","ctx_r4","minuteId","displayMinute","_r18_1","_r16","secondChange","ctx_r5","secondId","displaySecond","DateInputComponent","isTouched","displayDay","displayMonth","displayYear","DATE_FORMAT","rawValue","ngOnInit","mandatory","isDateTime","hour","minute","second","writeValue","obj","removeMilliseconds","_a","split","datePart","timePart","dateValues","year","month","day","timeParts","validate","control","viewValue","required","isDateFormat","getValueForValidation","pattern","registerOnChange","fn","propagateChange","registerOnTouched","ngOnDestroy","dayChange","monthChange","yearChange","touch","formControl","markAsTouched","markAsUntouched","dayId","id","monthId","yearId","date","pad","join","val","test","num","padNum","undefined","toString","replace","dateTime","type","features","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","NG_VALIDATORS","_r21_1","_r0","_r1","_r2","DateInputComponent_div_16_Template","DateInputComponent_div_17_Template","DateInputComponent_div_18_Template","providers","AlertMessageType","AlertComponent","showIcon","alertMessageType","TYPE_WARNING","TYPE_SUCCESS","TYPE_ERROR","TYPE_INFORMATION","AlertComponent_ng_container_2_Template","AlertComponent_ng_container_3_Template","AlertComponent_ng_container_4_Template","AlertComponent_ng_container_5_Template","WARNING","ERROR","SUCCESS","INFORMATION","AlertIconClassPipe","transform","CLASS_SUCCESS","CLASS_WARNING","pure","Pipe","name","AlertModule","TabComponent","selected","_r4_1","panel_r1","$implicit","show","_c1","_c2","TabsComponent","route","panelIds","ngAfterContentInit","_this","panels","forEach","panel","snapshot","fragment","toArray","indexOf","i1","ActivatedRoute","contentQueries","dirIndex","TabsComponent_li_2_Template","tabs","ViewChildren","ContentChildren","TabsModule","ConditionalShowRegistrarService","registeredDirectives","register","newDirective","reset","token","factory","Injectable","GreyBarService","rendererFactory","fieldsToggledToShow","renderer","createRenderer","showGreyBar","field","el","isCollection","addGreyBar","removeGreyBar","divSelector","nativeElement","querySelector","removeClass","addToggledToShow","fieldId","removeToggledToShow","filter","wasToggledToShow","find","addClass","RendererFactory2","FormatTranslatorService","translate","javaFormat","result","prev","inQuote","maybePush","flag","javaFormat_1","javaFormat_1_1","showOnlyDates","dateFormat","includes","removeTime","trim","hasDate","toLowerCase","is24Hour","hasNoDay","hasNoDayAndMonth","hasHours","hasMinutes","hasSeconds","DatePipe","formatTrans","zone","format","resultDate","match","DATE_FORMAT_REGEXP","offsetDate","getDate","getOffsetDate","translateDateFormat","moment","MONTHS","getMonth","getFullYear","getHour","getHours","getMinutes","getSeconds","toInt","parsedDate","Date","parse","isNaN","shortISO","toLocaleDateString","reverse","thisMoment","localOffset","getTimezoneOffset","getTime","minutes","seconds","hourStr","hourNum","str","parseInt","RegExp","i1.FormatTranslatorService","WizardPageField","FixedListItem","FieldType","Type","CaseField","_list_items","get","isDynamic","_value","code","set","list_items","field_type","fixed_list_items","items","isComplexDisplay","display_context_parameter","extractBracketValue","isComplexEntry","isComplex","isReadonly","isOptional","isMandatory","_","isEmpty","display_context","toUpperCase","some","t","isCaseLink","complex_fields","cf","fmt","paramName","leftBracket","rightBracket","a","startsWith","substr","Expose","FieldsUtils","convertToCaseField","plainToClassFromExist","toValuesMap","caseFields","valueMap","prepareValue","getType","elem","slice","isObject","isNonEmptyObject","keys","isArray","areCollectionValuesSimpleFields","fieldValue","isCollectionOfSimpleTypes","isMultiSelectValue","form","isNonEmptyArray","isCollectionWithValue","pageFormFields","cloneObject","assign","getCaseFields","caseView","caseDataFields","reduce","acc","tab","fields","metadataFields","caseField","findIndex","metadataField","addCaseFieldAndComponentReferences","comp","containsNonEmptyValues","object","values","map","objectRefs","hasNonNullPrimitive","x","constructor","y","handleNestedDynamicLists","jsonBody","case_fields","setDynamicListDefinition","valueMap_1","complexField","getMoneyGBP","currencyPipe","getLabel","datePipe","textForInvalidField","getFixedListLabelByCodeOrEmpty","relevantItem","item","invalidValue","caseFieldType","rootCaseField","SERVER_RESPONSE_FIELD_TYPE_COMPLEX","SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE","dynamicListValue","getDynamicListValue","complexValue","data","formatted_value","console","log","SERVER_RESPONSE_FIELD_TYPE_COLLECTION","collection_field_type","jsonBlock","getNestedFieldValues","jsonData","output","elementKey","buildCanShowPredicate","eventTrigger","currentState","getCurrentEventState","page","parsedShowCondition","mergeCaseFieldsAndFormFields","controls","cloneCaseField","formFields","mergeFields","DEFAULT_MERGE_FUNCTION","mergeLabelCaseFieldsAndFormFields","LABEL_MERGE_FUNCTION","controlIterator","aControl","formArrayFn","formGroupFn","controlFn","FormArray","FormGroup","FormControl","mergeFunction","LABEL_SUFFIX","CurrencyPipe","idx","f","elements","ShowCondition","condition","orConditions","andConditions","search","OR_CONDITION_REGEXP","AND_CONDITION_REGEXP","addPathPrefixToCondition","showCondition","pathPrefix","extractConditions","getInstance","instance","instanceCache","hiddenCannotChange","conditions","allUnchangeable","path","getField","head","shift","ft","conditions_1","conditions_1_1","conditionsArray","separator","CONTAINS","CONDITION_EQUALS","CONDITION_NOT_EQUALS","matchAndConditions","updatePathName","matchByContextFields","contextFields","pathName_1","pathTail","pathFinalIndex_1","pop","mappedPathTail","Number","orCondition","matchEqualityCondition","every","andCondition","conditionSeparator","_b","tail","currentValue","findValueForComplexCondition","expectedValue","unquoted","checkValueContains","checkValueEquals","conditionSeparaor","checkMultiSelectListEquals","endsWith","removeStarChar","checkValueNotEquals","okIfBothEmpty","formatCurrentValue","expectedValues","sort","values_1","getValue","findValueForComplexConditionInArray","findValueForComplexConditionForPathIfAny","arrayIndex","dropNumberPath","isDynamicList","dynamiclist","_score","has","substring","right","Map","Constants","MANDATORY","REGEX_WHITESPACES","FormValidatorsService","addValidators","CUSTOM_VALIDATED_TYPES","validators","Validators","regular_expression","emptyValidator","min","minLength","max","maxLength","validator","setValidators","AbstractFormFieldComponent","idPrefix","registerControl","container","parent","formGroup","existing","addControlToParent","addControlToFormArray","addControlToFormGroup","index","setControl","addControl","Directive","AbstractFieldWriteComponent","_super","isExpanded","isInSearchBlock","fixCaseField","__","create","__extends","ngOnChanges","changes","change","createElementId","elementId","ConditionalShowFormDirective","fieldsUtils","handleFormControl","evaluateControl","handleFormArray","formArray","handleFormGroup","groupControl","cKey","ngAfterViewInit","evalAllShowHideConditions","subscribeToFormChanges","unsubscribeFromFormChanges","formChangesSubscription","valueChanges","pipe","debounceTime","subscribe","component","evaluateCondition","hidden","show_condition","condResult","allFieldValues","buildPath","disabled","enable","emitEvent","disable","getCurrentPagesReadOnlyAndFormFieldValues","getFormFieldsValuesIncludingDisabled","getRawValue","unsubscribe","i1.FieldsUtils","ConditionalShowModule","FieldTypeSanitiser","sanitiseLists","FIELD_TYPE_DYNAMIC_RADIO_LIST","FIELD_TYPE_DYNAMIC_LIST","convertStringToDynamicListOutput","FIELD_TYPE_COMPLEX","FIELD_TYPE_COLLECTION","formElement","stringValue","listItems","getListItems","matches","PlaceholderService","PlaceholderSubstitutor","FormValueService","fieldTypeSanitiser","getFieldValue","fieldKey","colIndex","fieldIds","currentFieldId","currentForm","removeMultiSelectLabels","data_1","data_1_1","keys_1","keys_1_1","isReadOnly","isLabel","isEmptyData","allEmpty","_c","clearOptionalEmpty","clearEmpty","sanitise","sanitiseObject","sanitiseCaseReference","reference","filterCurrentPageFields","editForm","cloneForm","JSON","stringify","element","sanitiseDynamicLists","clearNonCaseFields","dataKey","removeNullLabels","caseFields_1","caseFields_1_1","collection","collection_1","e_5","collection_1_1","removeEmptyDocuments","caseFields_2","caseFields_2_1","collection_2","e_7","collection_2_1","removeUnnecessaryFields","clearNonCase","caseFields_3","caseFields_3_1","removeInvalidCollectionData","collection_3","e_9","collection_3_1","objCollection","removeEmptyCollectionsWithMinValidation","caseFields_4","caseFields_4_1","rawObject","sanitisedObject","documentFieldKeys","sanitiseValue","String","sanitiseArray","rawArray","i1.FieldTypeSanitiser","resolvePlaceholders","stringToResolve","resolvedFormValues","originalStringToResolve","wrapPlaceholder","PLACEHOLDER_START","PLACEHOLDER_END","hasUnresolvedPlaceholder","resetPlaceholderSubstitutor","doesPlaceholderContainCollectionItems","isScanningStringToResolve","isStartPlaceholderAndNotCollecting","setStartCollecting","isCollecting","isClosingPlaceholder","substitute","isOpeningPlaceholder","appendCharacter","scanIndex","appendOriginalStringIfCollectionItemAsPlaceholder","numberCollectionItemsAsPlaceholder","PLACEHOLDER_PATTERN","isStartingPlaceholder","charAt","OPENING_PLACEHOLDER","CLOSING_PLACEHOLDER","collectionItemIndex","fieldIdToSubstitute","startSubstitutionIndex","isMatchingPlaceholderPattern","isFieldIdInFormFields","updateNumberOfCollectionItemsAsPlaceholder","isFieldIdToSubstituteReferringItself","substituteWithEmptyString","substituteFromFormFields","NEW_LINE","PLACEHOLDER_CONTENT_PATTERN","getSubstitutionValueOrEmpty","getSubstitutionValueLengthOrZero","getNumberOfCollectionItemsIfAny","pageFormFieldsClone","STARTING_PLACEHOLDER","newNumber","Math","doSubstitution","resetScanIndexAfterSubstitution","placeholder","replacedString","LabelSubstitutorDirective","placeholderService","elementsToSubstitute","initialLabel","initialHintText","hint_text","getReadOnlyAndFormFields","shouldSubstitute","uniqueContextFields","removeDuplicates","original","unique","i2.PlaceholderService","LabelSubstitutorModule","FocusElementDirective","focus","focusElement","selectRootElement","ElementRef","Renderer2","FocusElementModule","DisplayMode","ActivityInfo","Activity","AddressModel","AddressLine1","AddressLine2","AddressLine3","PostTown","County","PostCode","Country","Alert","WizardPage","getCol1Fields","wizardProps","page_column_no","getCol2Fields","isMultiColumn","CaseEventTrigger","hasFields","hasPages","wizard_pages","CaseViewEvent","CaseViewTrigger","DELETE","CaseEvent","CaseState","CaseTypeLite","CaseType","EventCaseField","Jurisdiction","Banner","CaseTab","CaseView","CasePrintDocument","HRef","DocumentLinks","Document","Embedded","DocumentData","FormDocument","HttpError","timestamp","toISOString","DEFAULT_ERROR","message","DEFAULT_MESSAGE","status","DEFAULT_STATUS","exception","details","callbackErrors","callbackWarnings","from","response","OrganisationConverter","toSimpleAddress","organisationModel","simpleAddress","addressLine1","addressLine2","addressLine3","townCity","county","country","postCode","toSimpleOrganisationModel","organisationIdentifier","address","hasRoles","profile","user","idam","roles","Profile","isCourtAdmin","Field","elementPath","SearchResultViewColumn","SearchResultViewItem","DRAFT_PREFIX","Draft","stripDraftId","draftId","isDraft","SearchResultView","hasDrafts","results","case_id","CaseDetails","CaseEventData","WorkbasketInputModel","order","WorkbasketInput","PaginationMetadata","SortOrder","SortParameters","comparator","sortOrder","ComplexFieldOverride","CaseFieldBuilder","withACLs","acls","withId","withFieldType","withDisplayContext","withDisplayContextParameter","withHidden","withHintText","withLabel","withOrder","withSecurityLabel","security_label","withShowCondition","withShowSummaryContentOption","option","show_summary_content_option","withValue","withListValue","build","textFieldType","CaseReferencePipe","caseReference","g1","g2","g3","g4","CcdCaseTitlePipe","caseTitle","caseFieldValues","i1.PlaceholderService","i2.FieldsUtils","SortSearchResultPipe","searchResults","sortParameters","isUndefined","compare","DESCENDING","PipesModule","AbstractAppConfig","getDocumentManagementUrlV2","getDocumentSecureMode","getRemotePrintServiceUrl","getUserInfoApiUrl","getAccessManagementMode","getAccessManagementBasicViewMock","getAccessManagementRequestReviewMockModel","getLocationRefApiUrl","getCamRoleAssignmentsApiUrl","AuthService","appConfig","document","signIn","loginUrl","getLoginUrl","clientId","getOAuth2ClientId","redirectUri","encodeURIComponent","location","href","origin","PATH_OAUTH2_REDIRECT","DOCUMENT","Inject","HttpErrorService","authService","convertToHttpError","httpError","HttpErrorResponse","headers","CONTENT_TYPE","setError","removeError","handle","redirectIfNotAuthorised","throwError","i1.AuthService","HttpService","httpclient","httpErrorService","url","options","errorHandler","setDefaultValue","catchError","res","post","body","put","delete","observe","withCredentials","HttpHeaders","HEADER_ACCEPT","HEADER_CONTENT_TYPE","HttpClient","i2.HttpErrorService","SessionStorageService","getItem","sessionStorage","setItem","removeItem","clear","ActivityService","http","sessionStorageService","userAuthorised","activityUrl","handleHttpError","getOptions","userDetails","getActivities","caseId","_i","postActivity","activity","verifyUserIsAuthorized","DUMMY_CASE_REFERENCE","getActivityUrl","i1.HttpService","i2.AbstractAppConfig","i3.SessionStorageService","ActivityPollingService","activityService","ngZone","config","pendingRequests","pollConfig","interval","getActivityNexPollRequestMs","attempts","getActivityRetry","backgroundPolling","batchCollectionDelayMs","getActivityBatchCollectionDelayMs","maxRequestsPerBatch","getActivityMaxRequestPerBatch","isEnabled","subscribeToActivity","Subject","subject","size","runOutsideAngular","currentTimeoutHandle","setTimeout","run","flushRequests","stopPolling","pollActivitiesSubscription","clearTimeout","requests","performBatchRequest","pollActivities","caseIds","polling","apply","EMPTY","postViewActivity","ACTIVITY_VIEW","postEditActivity","ACTIVITY_EDIT","activities","err","activityType","pollingConfig","i1.ActivityService","NgZone","AddressParser","classification","CLASSIFICATION_CODE","addressModel","parseAddressLine1","parseAddressLine2","parseAddressLine3","POSTCODE","POST_TOWN","AddressesService","UK","addressLine","RD06","SUB_BUILDING_NAME","ORGANISATION_NAME","DEPARTMENT_NAME","PO_BOX_NUMBER","prefixWithCommaIfPresent","BUILDING_NAME","removeNonAddressValues","BUILDING_NUMBER","THOROUGHFARE_NAME","DEPENDENT_LOCALITY","DOUBLE_DEPENDENT_LOCALITY","DEPENDENT_THOROUGHFARE_NAME","line","removeUndefinedString","removeInitialComma","removeEmptySpaces","getAddressesForPostcode","postcode","getPostcodeLookupUrl","addresses","DPA","formatAddressLines","shiftAddressLinesUp","toCapitalCase","sentence","AlertService","router","preservedError","preservedWarning","preservedSuccess","preserveAlerts","successes","Observable","observer","successObserver","publish","refCount","errors","errorObserver","warnings","warningObserver","alerts","alertObserver","events","event","NavigationStart","preserveMessages","alert","level","warning","success","preserve","setPreserveAlerts","urlInfo","currentUrlIncludesInfo","urlInfo_1","urlInfo_1_1","urlSnip","isPreserveAlerts","msgObject","Router","CaseFieldService","DocumentManagementService","uploadFile","formData","getDocStoreUrl","delay","RESPONSE_DELAY","getMediaViewerInfo","documentFieldValue","mediaViewerInfo","document_binary_url","transformDocumentUrl","document_filename","content_type","getContentType","annotation_api_url","getAnnotationApiUrl","case_jurisdiction","jurisdiction","fileExtension","position","lastIndexOf","isImage","IMAGE","isWord","WORD","isExcel","EXCEL","isPowerpoint","POWERPOINT","TXT","RTF","PDF","imageType","imagesList","wordType","wordList","excelType","excelList","powerpointType","powerpointList","documentBinaryUrl","remoteHrsPattern","getRemoteHrsUrl","getHrsUrl","remoteDocumentManagementPattern","getRemoteDocumentManagementUrl","getDocumentManagementUrl","DraftService","errorService","createDraft","ctid","eventData","saveDraftEndpoint","getCreateOrUpdateDraftsUrl","V2_MEDIATYPE_DRAFT_CREATE","updateDraft","V2_MEDIATYPE_DRAFT_UPDATE","getDraft","getViewOrDeleteDraftsUrl","V2_MEDIATYPE_DRAFT_READ","deleteDraft","V2_MEDIATYPE_DRAFT_DELETE","createOrUpdateDraft","caseTypeId","caseEventData","i1.HttpErrorService","ErrorNotifierService","errorSource","asObservable","announceError","EventStatusService","isIncomplete","eventStatus","CALLBACK_STATUS_INCOMPLETE","DELETE_DRAFT_STATUS_INCOMPLETE","CALLBACK_STATUS_COMPLETE","DELETE_DRAFT_STATUS_COMPLETE","FieldsPurger","deleteFieldValue","parentField","fieldType","fieldControl","complexSubField","retain_hidden_value","collectionFieldType_1","complexFieldValues","subFieldId","subCaseField","parentFormGroup","at","documentFieldValues","setValue","clearHiddenFields","wizard","currentPageId","clearHiddenFieldForFieldShowCondition","clearHiddenFieldForPageShowCondition","currentEventState","pages","wp","hasShowConditionPage","isHidden","resetPage","currentPage","getPage","wizard_page_fields","wpf","case_field","findCaseFieldByWizardPageFieldId","hasShowConditionField","resetField","retainHiddenValueByFieldType","fieldGroup","caseRoleFormControl","wizardPageField","case_field_id","wizardPage","getShowConditionKey","fieldControls_1","FormErrorService","mapFieldErrors","errorKey","getFormControl","setErrors","group","inArray","JurisdictionService","selectedJurisdictionSource","selectedJurisdiction","announceSelectedJurisdiction","NavigationOrigin","BannersService","httpService","getBanners","jurisdictionReferences","getBannersUrl","V2_MEDIATYPE_BANNERS","params","HttpParams","append","banners","NavigationNotifierService","navigationSource","BehaviorSubject","navigation","announceNavigation","OrderService","sortAsc","DEFAULT_COMPARE_FUNCTION","array","sortingFunction","aOrdered","bOrdered","ProfileService","getCaseDataUrl","URL","V2_MEDIATYPE_USER_PROFILE","plainToClass","ProfileNotifier","profileSource","announceProfile","RequestOptionsBuilder","includeParam","buildOptions","metaCriteria","caseCriteria","view","_d","criterion","_e","_f","FIELD_PREFIX","HasLoadingState","LoadingService","registered","loading","distinctUntilChanged","generateToken","unregister","window","performance","now","SearchService","requestOptionsBuilder","loadingService","jurisdictionId","getApiUrl","loadingToken","finalize","searchCases","getPaginationPageSize","getSearchInputUrl","getSearchInputs","V2_MEDIATYPE_SEARCH_INPUTS","currentJurisdiction","currentCaseType","searchInputs","isDataValid","Error","VIEW_SEARCH","VIEW_WORKBASKET","i1.AbstractAppConfig","i2.HttpService","i3.RequestOptionsBuilder","i4.LoadingService","RouterHelperService","getUrlSegmentsFromRoot","pathFromRoot","WindowService","locationAssign","setLocalStorage","localStorage","getLocalStorage","clearLocalStorage","removeLocalStorage","setSessionStorage","getSessionStorage","openOnNewTab","open","confirm","WorkbasketInputFilterService","getWorkbasketInputUrl","getWorkbasketInputs","V2_MEDIATYPE_WORKBASKET_INPUT_DETAILS","workbasketInputs","DefinitionsService","getCaseTypes","access","getJurisdictions","DefinitionsModule","SearchResultViewItemComparatorFactory","createSearchResultViewItemComparator","column","case_field_type","textArrayComparator","numberComparator","stringComparator","fieldA","fieldB","OrganisationService","appconfig","mapOrganisation","organisations","organisationsVm","org","contactInformation","getActiveOrganisations","organisations$","getPrdUrl","cacheTimeOut","getCacheTimeOut","orgs","publishReplay","take","of","timer","BrowserService","isFirefox","navigator","userAgent","isSafari","isSafariAgent","isIEOrEdge","LoadingModule","TestRouteSnapshotBuilder","withParent","withParams","withData","queryParams","outlet","routeConfig","root","firstChild","children","paramMap","queryParamMap","typeComplexFields","role","read","update","_delete","show_summary","can_save_draft","event_token","hint","ACLs","displayContext","complexFieldOverride","complex_field_element_id","typeId","fixedListItems","wizardPageFields","pageColumnNumber","complexFieldOverrides","complex_field_overrides"],"sources":["../../../projects/ccd-case-ui-toolkit/src/lib/components/footer/footer.html","../../../projects/ccd-case-ui-toolkit/src/lib/components/footer/footer.component.ts","../../../projects/ccd-case-ui-toolkit/src/lib/components/header/header-bar/header-bar.html","../../../projects/ccd-case-ui-toolkit/src/lib/components/header/header-bar/header-bar.component.ts","../../../projects/ccd-case-ui-toolkit/src/lib/components/header/navigation/navigation.component.ts","../../../projects/ccd-case-ui-toolkit/src/lib/components/header/navigation/navigation-item.html","../../../projects/ccd-case-ui-toolkit/src/lib/components/header/navigation/navigation.html","../../../projects/ccd-case-ui-toolkit/src/lib/components/header/navigation/navigation-item.component.ts","../../../projects/ccd-case-ui-toolkit/src/lib/components/header/phase/phase.component.ts","../../../projects/ccd-case-ui-toolkit/src/lib/components/header/phase/phase.html","../../../projects/ccd-case-ui-toolkit/src/lib/components/header/headers.module.ts","../../../projects/ccd-case-ui-toolkit/src/lib/components/body/body.component.ts","../../../projects/ccd-case-ui-toolkit/src/lib/components/body/body.html","../../../node_modules/tslib/tslib.es6.js","../../../projects/ccd-case-ui-toolkit/src/lib/components/form/date-input/date-input.html","../../../projects/ccd-case-ui-toolkit/src/lib/components/form/date-input/date-input.component.ts","../../../projects/ccd-case-ui-toolkit/src/lib/components/banners/alert/alert.component.html","../../../projects/ccd-case-ui-toolkit/src/lib/components/banners/alert/alert.component.ts","../../../projects/ccd-case-ui-toolkit/src/lib/components/banners/alert/alert-icon-class.pipe.ts","../../../projects/ccd-case-ui-toolkit/src/lib/components/banners/alert/alert.module.ts","../../../projects/ccd-case-ui-toolkit/src/lib/components/tabs/tab.component.ts","../../../projects/ccd-case-ui-toolkit/src/lib/components/tabs/tab.component.html","../../../projects/ccd-case-ui-toolkit/src/lib/components/tabs/tabs.component.html","../../../projects/ccd-case-ui-toolkit/src/lib/components/tabs/tabs.component.ts","../../../projects/ccd-case-ui-toolkit/src/lib/components/tabs/tabs.module.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/directives/conditional-show/services/conditional-show-registrar.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/directives/conditional-show/services/grey-bar.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/case-fields/format-translator.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/components/palette/utils/date.pipe.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/components/case-editor/domain/wizard-page-field.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/definition/fixed-list-item.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/definition/field-type.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/definition/case-field.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/fields/fields.utils.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/directives/conditional-show/domain/conditional-show.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/commons/constants.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/form/form-validators.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/components/palette/base-field/abstract-form-field.component.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/components/palette/base-field/abstract-field-write.component.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/directives/conditional-show/conditional-show-form.directive.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/directives/conditional-show/conditional-show.module.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/form/field-type-sanitiser.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/form/form-value.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/directives/substitutor/services/placeholder.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/directives/substitutor/label-substitutor.directive.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/directives/substitutor/label-substitutor.module.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/directives/focus-element/focus-element.directive.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/directives/focus-element/focus-element.module.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/activity/activity.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/addresses/address.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/alert/alert.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/components/case-editor/domain/wizard-page.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/case-view/case-event-trigger.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/case-view/case-view-event.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/case-view/case-view-trigger.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/definition/case-event.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/definition/case-state.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/definition/case-type-lite.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/definition/case-type.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/definition/event-case-field.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/definition/jurisdiction.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/definition/banner.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/case-view/case-tab.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/case-view/case-view.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/case-view/case-print-document.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/document/document-data.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/http/http-error.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/organisation/organisation-converter.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/profile/profile.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/search/field.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/search/search-result-view-column.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/search/search-result-view-item.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/draft.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/search/search-result-view.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/case-details.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/case-event-data.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/workbasket/workbasket-input.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/pagination-metadata.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/search/sorting/sort-order.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/domain/search/sorting/sort-parameters.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/components/case-editor/domain/wizard-page-field-complex-override.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/fixture/case-field-builder.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/fixture/shared.test.fixture.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/pipes/case-reference/case-reference.pipe.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/pipes/case-title/ccd-case-title.pipe.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/components/palette/complex/sort-order.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/pipes/pipes.module.ts","../../../projects/ccd-case-ui-toolkit/src/lib/app.config.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/auth/auth.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/http/http-error.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/http/http.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/session/session-storage.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/activity/activity.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/activity/activity.polling.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/addresses/address-parser.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/addresses/addresses.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/alert/alert.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/case-fields/case-field.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/document-management/document-management.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/draft/draft.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/error/error-notifier.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/eventStatusService/event-status.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/fields/fields.purger.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/form/form-error.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/jurisdiction/jurisdiction.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/banners/banners.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/navigation/navigation-origin.model.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/navigation/navigation-notifier.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/order/order.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/profile/profile.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/profile/profile.notifier.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/request/request.options.builder.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/loading/loading.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/search/search.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/router/router-helper.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/window/window.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/workbasket/workbasket-input-filter.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/definitions/definitions.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/definitions/definitions.module.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/organisation/organisation.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/browser/browser.service.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/services/loading/loading.module.ts","../../../projects/ccd-case-ui-toolkit/src/lib/shared/test/test-route-snapshot-builder.ts"],"sourcesContent":["<footer class=\"group js-footer\" id=\"footer\" role=\"footer\">\n <div [class.full-screen]=\"!isSolicitor\" class=\"footer-wrapper\">\n\n <!-- Condition: Solicitor -->\n <div *ngIf=\"isSolicitor\" class=\"footer-meta\">\n <div class=\"footer-meta-inner\">\n <ng-content select=\"[footerSolsNavLinks]\"></ng-content>\n <div class=\"open-government-licence\">\n <p class=\"logo\"><a href=\"https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/\" rel=\"license\">Open Government Licence</a></p>\n <p>All content is available under the <a href=\"https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/\" rel=\"license\">Open Government Licence v3.0</a>, except where otherwise stated</p>\n </div>\n </div>\n\n <div class=\"copyright\">\n <a href=\"https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/copyright-and-re-use/crown-copyright/\">© Crown copyright</a>\n </div>\n </div>\n\n <!-- Condition: Case Worker -->\n <div *ngIf=\"!isSolicitor\" class=\"footer-meta\">\n <div class=\"title\">\n <span class=\"footer-text\">Help</span>\n </div>\n <div class=\"email\">\n <span class=\"footer-text\">Email: <a href=\"mailto:{{email}}\">{{email}}</a></span>\n </div>\n <div class=\"phone\">\n <span class=\"footer-text\">Phone: {{phone}}</span>\n </div>\n <div class=\"work-hours\">\n <span class=\"footer-text\">{{workhours}}</span>\n </div>\n <ng-content select=\"[footerCaseWorkerNavLinks]\"></ng-content>\n </div>\n\n </div>\n</footer>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cut-footer-bar',\n templateUrl: './footer.html',\n styleUrls: ['./footer.scss']\n})\nexport class FooterComponent {\n\n @Input()\n public email: string;\n\n @Input()\n public isSolicitor: boolean;\n\n @Input()\n public phone: string;\n\n @Input()\n public workhours: string;\n\n}\n","<header role=\"banner\" id=\"global-header\" class=\"with-proposition\">\n <div [class.full-screen]=\"!isSolicitor\" class=\"header-wrapper\">\n\n <div class=\"header-global\" [class.header-logo]=\"isSolicitor\">\n <div *ngIf=\"isSolicitor\">\n <a href=\"https://www.gov.uk\" title=\"Go to the GOV.UK homepage\" id=\"logo\" class=\"content\" style=\"margin-left: 0px;\">\n <img src=\"/img/gov.uk_logotype_crown_invert_trans.png?0.23.0\" width=\"36\" height=\"32\" alt=\"\"> GOV.UK\n </a>\n </div>\n <div class=\"global-header\" *ngIf=\"!isSolicitor\">\n <div class=\"title\">\n <span>{{title}}</span>\n </div>\n </div>\n </div>\n\n <div class=\"header-proposition\">\n <div class=\"content\">\n <a href=\"#proposition-links\" class=\"js-header-toggle menu\">Menu</a>\n <div *ngIf=\"isSolicitor\" id=\"proposition-menu\">\n <div class=\"title-solicitor\">\n <span id=\"proposition-name\">{{title}}</span>\n <ng-content select=\"[headerNavigation]\"></ng-content>\n </div>\n </div>\n\n <div class=\"proposition-right\">\n <span id=\"user-name\">{{username}}</span>\n <a (click)=\"signOut()\" id=\"sign-out\" href=\"javascript:void(0)\">Sign Out</a>\n </div>\n </div>\n </div>\n\n </div>\n</header>\n","import { Component, Input, Output } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'cut-header-bar',\n templateUrl: './header-bar.html',\n styleUrls: ['./header-bar.scss']\n})\nexport class HeaderBarComponent {\n\n @Input()\n public title: string;\n\n @Input()\n public isSolicitor: boolean;\n\n @Input()\n public username: string;\n\n @Output()\n private readonly signOutRequest: EventEmitter<any> = new EventEmitter();\n\n public signOut() {\n this.signOutRequest.emit();\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cut-nav-bar',\n templateUrl: './navigation.html',\n styleUrls: ['./navigation.scss']\n})\nexport class NavigationComponent {\n\n @Input()\n public isSolicitor: boolean;\n\n}\n","<div>\n <a [routerLinkActive]=\"'item-bold'\" [routerLink]=\"link\">{{label}}</a>\n <input type=\"image\" alt=\"{{label}} button\" *ngIf=\"imageLink\" src=\"{{imageLink}}\"/>\n</div>\n","<div>\n <nav [class.full-screen]=\"!isSolicitor\" class=\"cut-nav-bar\">\n <ng-content select=\"[leftNavLinks]\"></ng-content>\n <ng-content select=\"[rightNavLinks]\"></ng-content>\n </nav>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cut-nav-item',\n templateUrl: './navigation-item.html',\n styleUrls: ['./navigation-item.scss']\n})\nexport class NavigationItemComponent {\n\n @Input()\n public label: string;\n\n @Input()\n public link: string;\n\n @Input()\n public imageLink: string;\n\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cut-phase-bar',\n templateUrl: './phase.html',\n styleUrls: ['./phase.scss']\n})\nexport class PhaseComponent {\n\n @Input()\n public phaseLabel: string;\n\n @Input()\n public phaseLink: string;\n\n @Input()\n public isSolicitor: boolean;\n\n}\n","<div [class.full-screen]=\"!isSolicitor\" class=\"phase-banner\">\n <p>\n <strong class=\"phase-tag\">{{phaseLabel}}</strong>\n <span class=\"text-16\">This is a new service – your <a href=\"{{phaseLink}}\" target=\"_blank\" rel=\"noopener\">feedback</a> will help us to improve it.</span>\n </p>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { HeaderBarComponent } from './header-bar/header-bar.component';\nimport { NavigationItemComponent } from './navigation/navigation-item.component';\nimport { NavigationComponent } from './navigation/navigation.component';\nimport { PhaseComponent } from './phase/phase.component';\n\n@NgModule({\n imports: [CommonModule, RouterModule],\n declarations: [PhaseComponent, HeaderBarComponent, NavigationComponent, NavigationItemComponent],\n exports: [PhaseComponent, HeaderBarComponent, NavigationComponent, NavigationItemComponent]\n})\nexport class HeadersModule {}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'cut-body',\n templateUrl: './body.html',\n styleUrls: ['./fonts.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class BodyComponent {\n\n}\n","<div class=\"global-display\">\n <ng-content select=\"[topBody]\"></ng-content>\n <ng-content select=\"[leftBody]\"></ng-content>\n <ng-content select=\"[rightBody]\"></ng-content>\n</div>\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","<div class=\"form-date\">\n\n <div class=\"form-group form-group-day\">\n <label class=\"form-label\" [for]=\"dayId()\">Day</label>\n <input #dayInput\n class=\"form-control\"\n [id]=\"dayId()\"\n [name]=\"dayId()\"\n type=\"text\"\n pattern=\"[0-9]*\"\n inputmode=\"numeric\"\n [value]=\"displayDay\"\n (change)=\"dayChange(dayInput.value)\"\n (keyup)=\"dayChange(dayInput.value)\"\n (focus)=\"inputFocus()\"\n [ngClass]=\"{'govuk-input--error': isInvalid}\">\n </div>\n\n <div class=\"form-group form-group-month\">\n <label class=\"form-label\" [for]=\"monthId()\">Month</label>\n <input #monthInput\n class=\"form-control\"\n [id]=\"monthId()\"\n [name]=\"monthId()\"\n type=\"text\"\n pattern=\"[0-9]*\"\n inputmode=\"numeric\"\n [value]=\"displayMonth\"\n (change)=\"monthChange(monthInput.value)\"\n (keyup)=\"monthChange(monthInput.value)\"\n (focus)=\"inputFocus()\"\n [ngClass]=\"{'govuk-input--error': isInvalid}\">\n </div>\n\n <div class=\"form-group form-group-year\">\n <label class=\"form-label\" [for]=\"yearId()\">Year</label>\n <input #yearInput\n class=\"form-control\"\n [id]=\"yearId()\"\n [name]=\"yearId()\"\n type=\"text\"\n pattern=\"[0-9]*\"\n inputmode=\"numeric\"\n [value]=\"displayYear\"\n (change)=\"yearChange(yearInput.value)\"\n (keyup)=\"yearChange(yearInput.value)\"\n (focus)=\"inputFocus()\"\n [ngClass]=\"{'govuk-input--error': isInvalid}\">\n </div>\n\n <div class=\"form-group form-group-hour\" *ngIf=\"isDateTime\">\n <label class=\"form-label\" [for]=\"hourId()\">Hour</label>\n <input #hourInput\n class=\"form-control\"\n [id]=\"hourId()\"\n [name]=\"hourId()\"\n type=\"number\"\n [value]=\"displayHour\"\n (input)=\"hourChange(hourInput.value)\"\n (keyup)=\"hourChange(hourInput.value)\"\n (focus)=\"inputFocus()\"\n [ngClass]=\"{'govuk-input--error': isInvalid}\">\n </div>\n\n <div class=\"form-group form-group-minute\" *ngIf=\"isDateTime\">\n <label class=\"form-label\" [for]=\"minuteId()\">Minute</label>\n <input #minuteInput\n class=\"form-control\"\n [id]=\"minuteId()\"\n [name]=\"minuteId()\"\n type=\"number\"\n [value]=\"displayMinute\"\n (input)=\"minuteChange(minuteInput.value)\"\n (keyup)=\"minuteChange(minuteInput.value)\"\n (focus)=\"inputFocus()\"\n [ngClass]=\"{'govuk-input--error': isInvalid}\">\n </div>\n\n <div class=\"form-group form-group-second\" *ngIf=\"isDateTime\">\n <label class=\"form-label\" [for]=\"secondId()\">Second</label>\n <input #secondInput\n class=\"form-control\"\n [id]=\"secondId()\"\n [name]=\"secondId()\"\n type=\"number\"\n [value]=\"displaySecond\"\n (input)=\"secondChange(secondInput.value)\"\n (keyup)=\"secondChange(secondInput.value)\"\n (focus)=\"inputFocus()\"\n [ngClass]=\"{'govuk-input--error': isInvalid}\">\n </div>\n\n</div>\n","import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\n\n@Component({\n selector: 'cut-date-input',\n templateUrl: './date-input.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateInputComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DateInputComponent),\n multi: true\n }\n ],\n})\nexport class DateInputComponent implements ControlValueAccessor, Validator, OnInit, OnDestroy {\n @Input()\n public id: string;\n\n @Input()\n public mandatory: boolean;\n\n @Input()\n public isDateTime: boolean;\n\n @Input()\n public formControl: FormControl;\n\n @Input()\n public isInvalid: boolean;\n\n public isTouched = false;\n public displayDay: string = null;\n public displayMonth: string = null;\n public displayYear: string = null;\n\n public displayHour: string = null;\n public displayMinute: string = null;\n public displaySecond: string = null;\n // Works with\n // 2018-04-09T08:02:27.542\n // 2018-04-09T08:02:27.542Z\n // 2018-04-09T08:02:27.542+01:00\n private readonly DATE_FORMAT =\n /^(19|20)\\d{2}-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?|Z)?$/;\n // year - month - day T HH : MM : SS .000 Z or + 01 : 00\n private propagateChange: (_: any) => {};\n private rawValue = '';\n private day: string;\n private month: string;\n private year: string;\n private hour: string;\n private minute: string;\n private second: string;\n\n public ngOnInit() {\n if (this.mandatory && this.isDateTime) {\n this.displayHour = '00';\n this.displayMinute = '00';\n this.displaySecond = '00';\n this.hour = '00';\n this.minute = '00';\n this.second = '00';\n }\n }\n\n public writeValue(obj: string): void { // 2018-04-09T08:02:27.542\n if (obj) {\n this.rawValue = this.removeMilliseconds(obj);\n // needs to handle also partial dates, e.g. -05-2016 (missing day)\n const [datePart, timePart] = this.rawValue.split('T');\n const dateValues = datePart.split('-');\n this.year = this.displayYear = dateValues[0] || '';\n this.month = this.displayMonth = dateValues[1] || '';\n this.day = this.displayDay = dateValues[2] || '';\n if (timePart) {\n const timeParts = timePart.split(':');\n this.hour = this.displayHour = timeParts[0] || '';\n this.minute = this.displayMinute = timeParts[1] || '';\n this.second = this.displaySecond = timeParts[2] || '';\n }\n }\n }\n\n public validate(control: AbstractControl): ValidationErrors {\n if (this.mandatory && !this.viewValue()) {\n return {\n required: 'This field is required'\n };\n }\n if (control.value && !this.isDateFormat(this.getValueForValidation(control))) {\n return {\n pattern: 'Date is not valid'\n };\n }\n return undefined;\n }\n\n public registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n // Do nothing.\n }\n\n public ngOnDestroy() {\n this.validate = (control: AbstractControl): ValidationErrors => {\n return undefined;\n };\n }\n\n public dayChange(value: string) {\n // get value from input\n this.day = value;\n\n this.rawValue = this.viewValue();\n\n // update the form\n this.propagateChange(this.rawValue);\n }\n\n public monthChange(value: string) {\n // get value from input\n this.month = value;\n\n this.rawValue = this.viewValue();\n\n // update the form\n this.propagateChange(this.rawValue);\n\n }\n\n public yearChange(value: string) {\n // get value from input\n this.year = value;\n\n this.rawValue = this.viewValue();\n\n // update the form\n this.propagateChange(this.rawValue);\n }\n\n public hourChange(value: string) {\n // get value from input\n this.hour = value;\n\n this.rawValue = this.viewValue();\n\n // update the form\n this.propagateChange(this.rawValue);\n }\n\n public minuteChange(value: string) {\n // get value from input\n this.minute = value;\n\n this.rawValue = this.viewValue();\n\n // update the form\n this.propagateChange(this.rawValue);\n\n }\n\n public secondChange(value: string) {\n // get value from input\n this.second = value;\n\n this.rawValue = this.viewValue();\n\n // update the form\n this.propagateChange(this.rawValue);\n }\n\n public inputFocus() {\n this.isTouched = false;\n this.touch();\n }\n\n public touch() {\n if (this.isTouched) {\n this.formControl.markAsTouched();\n this.propagateChange(this.rawValue);\n } else {\n this.formControl.markAsUntouched();\n }\n }\n\n public dayId() {\n return this.id + '-day';\n }\n\n public monthId() {\n return this.id + '-month';\n }\n\n public yearId() {\n return this.id + '-year';\n }\n\n public hourId() {\n return this.id + '-hour';\n }\n\n public minuteId() {\n return this.id + '-minute';\n }\n\n public secondId() {\n return this.id + '-second';\n }\n\n private viewValue(): string {\n if (this.day || this.month || this.year || this.hour || this.minute || this.second) {\n const date = [\n this.year ? this.year : '',\n this.month ? this.pad(this.month) : '',\n this.day ? this.pad(this.day) : ''\n ].join('-');\n if (this.isDateTime) {\n const time = [\n this.hour ? this.pad(this.hour) : '',\n this.minute ? this.pad(this.minute) : '',\n this.second ? this.pad(this.second) : ''\n ].join(':');\n return date + 'T' + time + '.000';\n } else {\n return date;\n }\n }\n return null;\n }\n\n private isDateFormat(val: any): boolean {\n return this.DATE_FORMAT.test(val);\n }\n\n private pad(num: any, padNum = 2): string {\n const val = num !== undefined ? num.toString() : '';\n return val.length >= padNum ? val : new Array(padNum - val.length + 1).join('0') + val;\n }\n\n private getValueForValidation(control: any) {\n if (this.isDateTime) {\n return control.value;\n } else {\n return control.value.replace(/Z.*/, 'T00:00:00Z');\n }\n }\n\n private removeMilliseconds(dateTime: string): string {\n return dateTime.replace(/\\..*/, '');\n }\n}\n","<div\n class=\"hmcts-banner\"\n [class.hmcts-banner--warning]=\"type === alertMessageType.WARNING || type === alertMessageType.ERROR\"\n [class.hmcts-banner--success]=\"type === alertMessageType.SUCCESS\"\n>\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"alertMessageType.WARNING\">\n <svg class=\"hmcts-banner__icon\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z\"></path>\n </svg>\n </ng-container>\n <ng-container *ngSwitchCase=\"alertMessageType.ERROR\">\n <svg class=\"hmcts-banner__icon\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.6,15.4h-2.3v-4.5h2.3V15.4z M13.6,19.8h-2.3v-2.2h2.3V19.8z M0,23.2h25L12.5,2L0,23.2z\"></path>\n </svg>\n </ng-container>\n <ng-container *ngSwitchCase=\"alertMessageType.SUCCESS\">\n <svg class=\"hmcts-banner__icon\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M25,6.2L8.7,23.2L0,14.1l4-4.2l4.7,4.9L21,2L25,6.2z\"></path>\n </svg>\n </ng-container>\n <ng-container *ngSwitchCase=\"alertMessageType.INFORMATION\">\n <svg class=\"hmcts-banner__icon\" fill=\"currentColor\" role=\"presentation\" focusable=\"false\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 25 25\" height=\"25\" width=\"25\">\n <path d=\"M13.7,18.5h-2.4v-2.4h2.4V18.5z M12.5,13.7c-0.7,0-1.2-0.5-1.2-1.2V7.7c0-0.7,0.5-1.2,1.2-1.2s1.2,0.5,1.2,1.2v4.8\n C13.7,13.2,13.2,13.7,12.5,13.7z M12.5,0.5c-6.6,0-12,5.4-12,12s5.4,12,12,12s12-5.4,12-12S19.1,0.5,12.5,0.5z\"></path>\n </svg>\n </ng-container>\n </ng-container>\n <div class=\"hmcts-banner__message\">\n <span class=\"hmcts-banner__assistive\">{{type}}</span>\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\nexport enum AlertMessageType {\n WARNING = 'warning',\n SUCCESS = 'success',\n ERROR = 'error',\n INFORMATION = 'information'\n}\n\n@Component({\n selector: 'cut-alert',\n templateUrl: './alert.component.html',\n styleUrls: [\n './alert.component.scss'\n ]\n})\nexport class AlertComponent {\n\n // confirmation type has been removed as per EUI-3232\n public static readonly TYPE_WARNING = 'warning';\n public static readonly TYPE_SUCCESS = 'success';\n public static readonly TYPE_ERROR = 'error';\n public static readonly TYPE_INFORMATION = 'information';\n\n @Input()\n public type: AlertMessageType;\n\n @Input()\n public showIcon = true;\n\n public alertMessageType = AlertMessageType;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AlertComponent } from './alert.component';\n\n@Pipe({\n name: 'cutAlertIconClass'\n})\nexport class AlertIconClassPipe implements PipeTransform {\n private static readonly CLASS_WARNING = 'icon-alert';\n private static readonly CLASS_SUCCESS = 'icon-tick';\n\n public transform(type: string): string {\n switch (type) {\n case AlertComponent.TYPE_SUCCESS:\n return AlertIconClassPipe.CLASS_SUCCESS;\n case AlertComponent.TYPE_WARNING:\n default:\n return AlertIconClassPipe.CLASS_WARNING;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AlertIconClassPipe } from './alert-icon-class.pipe';\nimport { AlertComponent } from './alert.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n AlertComponent,\n AlertIconClassPipe\n ],\n exports: [\n AlertComponent\n ]\n})\nexport class AlertModule {}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cut-tab',\n templateUrl: './tab.component.html',\n styleUrls: [\n './tabs.component.scss'\n ],\n})\nexport class TabComponent {\n\n @Input()\n public id: string;\n\n @Input()\n public title: string;\n\n @Input()\n public selected: boolean;\n\n}\n","<div\n class=\"tabs-panel\"\n [id]=\"id\"\n role=\"tabpanel\"\n [ngClass]=\"{\n 'js-hidden': !selected\n }\"\n [attr.aria-hidden]=\"!selected\"\n>\n <ng-content></ng-content>\n</div>\n","<div class=\"tabs\">\n\n <ul class=\"tabs-list\" role=\"list\">\n <li class=\"tabs-list-item\" *ngFor=\"let panel of panels\">\n <a\n class=\"tabs-toggle\"\n [routerLink]=\"['.']\"\n [fragment]=\"panel.id\"\n role=\"tab\"\n (click)=\"show(panel.id)\"\n [attr.aria-controls]=\"panel.id\"\n [attr.aria-selected]=\"panel.selected\"\n tabindex=\"0\"\n [ngClass]=\"{\n 'tabs-toggle-selected': panel.selected\n }\"\n #tab\n >{{panel.title}}</a>\n </li>\n </ul>\n\n <div class=\"tabs-content\">\n <ng-content></ng-content>\n </div>\n\n</div>\n","import { AfterContentInit, Component, ContentChildren, ElementRef, QueryList, ViewChildren } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { TabComponent } from './tab.component';\n\n@Component({\n selector: 'cut-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: [\n './tabs.component.scss'\n ],\n})\nexport class TabsComponent implements AfterContentInit {\n\n @ViewChildren('tab') public tabs!: QueryList<ElementRef>;\n\n @ContentChildren(TabComponent)\n public panels: QueryList<TabComponent>;\n\n private readonly panelIds: string[] = [];\n\n constructor(private readonly route: ActivatedRoute) {}\n\n public ngAfterContentInit(): void {\n this.panels.forEach((panel) => this.panelIds.push(panel.id));\n\n this.show(this.route.snapshot.fragment);\n }\n\n public show(id: string) {\n const panels: TabComponent[] = this.panels.toArray();\n\n id = id || panels[0].id;\n\n if (0 > this.panelIds.indexOf(id)) {\n id = panels[0].id;\n }\n\n panels.forEach((panel) => panel.selected = id === panel.id);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { TabComponent } from './tab.component';\nimport { TabsComponent } from './tabs.component';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n ],\n declarations: [\n TabsComponent,\n TabComponent,\n ],\n exports: [\n TabsComponent,\n TabComponent,\n ]\n})\nexport class TabsModule {}\n","import { Injectable } from '@angular/core';\nimport type { ConditionalShowFormDirective } from '../conditional-show-form.directive';\n\n@Injectable()\nexport class ConditionalShowRegistrarService {\n public registeredDirectives: ConditionalShowFormDirective[] = [];\n\n public register(newDirective: ConditionalShowFormDirective): void {\n this.registeredDirectives.push(newDirective);\n }\n\n public reset(): void {\n this.registeredDirectives = [];\n }\n}\n","import { ElementRef, Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { CaseField } from '../../../domain/definition/case-field.model';\n\n/** Keeps track of initially hidden fields that toggle to show on the page (parent page).\n * Used to decide whether to redisplay the grey bar when returning to the page during\n * navigation between pages.\n */\n@Injectable()\nexport class GreyBarService {\n\n private fieldsToggledToShow: string[] = [];\n private readonly renderer: Renderer2;\n\n constructor(rendererFactory: RendererFactory2) {\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n\n public showGreyBar(field: CaseField, el: ElementRef) {\n if (!field.isCollection()) {\n this.addGreyBar(el);\n }\n }\n\n public removeGreyBar(el: ElementRef) {\n const divSelector = el.nativeElement.querySelector('div');\n if (divSelector) {\n this.renderer.removeClass(divSelector, 'show-condition-grey-bar');\n }\n }\n\n public addToggledToShow(fieldId: string) {\n this.fieldsToggledToShow.push(fieldId);\n }\n\n public removeToggledToShow(fieldId: string) {\n this.fieldsToggledToShow = this.fieldsToggledToShow.filter(id => id !== fieldId);\n }\n\n public wasToggledToShow(fieldId: string): boolean {\n return this.fieldsToggledToShow.find(id => id === fieldId) !== undefined;\n }\n\n public reset() {\n this.fieldsToggledToShow = [];\n }\n\n private addGreyBar(el: ElementRef) {\n const divSelector = el.nativeElement.querySelector('div');\n if (divSelector) {\n this.renderer.addClass(divSelector, 'show-condition-grey-bar');\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n/*\nTranslate a date time format string from the Java format provided by CCD to the format supported by Angular formatDate()\nVery simple translator that maps unsupported chars to the nearest equivalent.\nIf there is no equivalent puts ***x*** into the output where x is the unsupported character\n\nJava format\nG era text AD; Anno Domini; A\n u year year 2004; 04\n y year-of-era year 2004; 04\n D day-of-year number 189\n M/L month-of-year number/text 7; 07; Jul; July; J\n d day-of-month number 10\n\n Q/q quarter-of-year number/text 3; 03; Q3; 3rd quarter\n Y week-based-year year 1996; 96\n w week-of-week-based-year number 27\n W week-of-month number 4\n E day-of-week text Tue; Tuesday; T\n e/c localized day-of-week number/text 2; 02; Tue; Tuesday; T\n F week-of-month number 3\n\n a am-pm-of-day text PM\n h clock-hour-of-am-pm (1-12) number 12\n K hour-of-am-pm (0-11) number 0\n k clock-hour-of-am-pm (1-24) number 0\n\n H hour-of-day (0-23) number 0\n m minute-of-hour number 30\n s second-of-minute number 55\n S fraction-of-second fraction 978\n A milli-of-day number 1234\n n nano-of-second number 987654321\n N nano-of-day number 1234000000\n\n V time-zone ID zone-id America/Los_Angeles; Z; -08:30\n z time-zone name zone-name Pacific Standard Time; PST\n O localized zone-offset offset-O GMT+8; GMT+08:00; UTC-08:00;\n X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15;\n x zone-offset offset-x +0000; -08; -0830; -08:30; -083015; -08:30:15;\n Z zone-offset offset-Z +0000; -0800; -08:00;\n\n p pad next pad modifier 1\n\n ' escape for text delimiter\n '' single quote literal '\n [ optional section start\n ] optional section end\n # reserved for future use\n { reserved for future use\n } reserved for future use\n\n Angular dateFormat characters\n Era\tG, GG & GGG\tAbbreviated\tAD\nGGGG\tWide\tAnno Domini\nGGGGG\tNarrow\tA\nYear\ty\tNumeric: minimum digits\t2, 20, 201, 2017, 20173\nyy\tNumeric: 2 digits + zero padded\t02, 20, 01, 17, 73\nyyy\tNumeric: 3 digits + zero padded\t002, 020, 201, 2017, 20173\nyyyy\tNumeric: 4 digits or more + zero padded\t0002, 0020, 0201, 2017, 20173\nMonth\tM\tNumeric: 1 digit\t9, 12\nMM\tNumeric: 2 digits + zero padded\t09, 12\nMMM\tAbbreviated\tSep\nMMMM\tWide\tSeptember\nMMMMM\tNarrow\tS\nMonth standalone\tL\tNumeric: 1 digit\t9, 12\nLL\tNumeric: 2 digits + zero padded\t09, 12\nLLL\tAbbreviated\tSep\nLLLL\tWide\tSeptember\nLLLLL\tNarrow\tS\nWeek of year\tw\tNumeric: minimum digits\t1... 53\nww\tNumeric: 2 digits + zero padded\t01... 53\nWeek of month\tW\tNumeric: 1 digit\t1... 5\nDay of month\td\tNumeric: minimum digits\t1\ndd\tNumeric: 2 digits + zero padded\t01\nWeek day\tE, EE & EEE\tAbbreviated\tTue\nEEEE\tWide\tTuesday\nEEEEE\tNarrow\tT\nEEEEEE\tShort\tTu\nPeriod\ta, aa & aaa\tAbbreviated\tam/pm or AM/PM\naaaa\tWide (fallback to a when missing)\tante meridiem/post meridiem\naaaaa\tNarrow\ta/p\nPeriod*\tB, BB & BBB\tAbbreviated\tmid.\nBBBB\tWide\tam, pm, midnight, noon, morning, afternoon, evening, night\nBBBBB\tNarrow\tmd\nPeriod standalone*\tb, bb & bbb\tAbbreviated\tmid.\nbbbb\tWide\tam, pm, midnight, noon, morning, afternoon, evening, night\nbbbbb\tNarrow\tmd\nHour 1-12\th\tNumeric: minimum digits\t1, 12\nhh\tNumeric: 2 digits + zero padded\t01, 12\nHour 0-23\tH\tNumeric: minimum digits\t0, 23\nHH\tNumeric: 2 digits + zero padded\t00, 23\nMinute\tm\tNumeric: minimum digits\t8, 59\nmm\tNumeric: 2 digits + zero padded\t08, 59\nSecond\ts\tNumeric: minimum digits\t0... 59\nss\tNumeric: 2 digits + zero padded\t00... 59\nFractional seconds\tS\tNumeric: 1 digit\t0... 9\nSS\tNumeric: 2 digits + zero padded\t00... 99\nSSS\tNumeric: 3 digits + zero padded (= milliseconds)\t000... 999\nZone\tz, zz & zzz\tShort specific non location format (fallback to O)\tGMT-8\nzzzz\tLong specific non location format (fallback to OOOO)\tGMT-08:00\nZ, ZZ & ZZZ\tISO8601 basic format\t-0800\nZZZZ\tLong localized GMT format\tGMT-8:00\nZZZZZ\tISO8601 extended format + Z indicator for offset 0 (= XXXXX)\t-08:00\nO, OO & OOO\tShort localized GMT format\tGMT-8\nOOOO\tLong localized GMT format\tGMT-08:00\n */\n\n@Injectable()\nexport class FormatTranslatorService {\n public translate(javaFormat: string): string {\n const result = [];\n let prev = '\\0';\n let inQuote = false;\n\n const maybePush = <T>(target: T[], obj: T, flag: boolean) => {\n if (!flag) {\n target.push(obj);\n }\n };\n for (const c of javaFormat) {\n switch (c) {\n case '\\'':\n if (prev === '\\'') {\n // literal single quote - ignore\n inQuote = false;\n } else {\n inQuote = !inQuote;\n }\n break;\n // Due to formatting constraints on the webapp, all 'd' characters should be replaced with 'D' (for Moment library)\n // This is because we want the date, not the day (this format will need to be converted back)\n case 'd':\n maybePush(result, 'D', inQuote);\n break;\n // moment library defines year as capital y\n case 'y':\n maybePush(result, 'Y', inQuote);\n break;\n case 'e':\n case 'c':\n maybePush(result, 'E', inQuote); // no lower case E\n break;\n case 'F':\n maybePush(result, 'W', inQuote);\n break;\n case 'K':\n maybePush(result, 'H', inQuote);\n break;\n case 'k':\n maybePush(result, 'h', inQuote);\n break;\n // commented out A change to '***' due to use in moment library for AM/PM\n // added 'a' specification to stop discrepancy in am/AM pm/PM formatting\n case 'a':\n maybePush(result, 'A', inQuote);\n break;\n case 'n':\n case 'N':\n maybePush(result, '***' + c + '***', inQuote); // No way to support A - millisec of day, n - nano of second, N - nano of Day\n break;\n case 'V':\n case 'O':\n maybePush(result, 'z', inQuote);\n break;\n case 'x':\n case 'X':\n maybePush(result, 'Z', inQuote);\n break;\n default:\n maybePush(result, c, inQuote);\n }\n prev = c;\n }\n return result.join('');\n }\n\n public showOnlyDates(dateFormat: string): string {\n // replace 'd' character with 'D' for the moment library\n // This ensures only dates allowed\n while (dateFormat.includes('d')) {\n dateFormat = dateFormat.replace('d', 'D');\n }\n while (dateFormat.includes('y')) {\n dateFormat = dateFormat.replace('y', 'Y');\n }\n return dateFormat;\n }\n\n public removeTime(dateFormat: string): string {\n // remove hours irrelevant of whether 12 or 24 hour clock\n while (dateFormat.includes('H') || dateFormat.includes('h')) {\n dateFormat = dateFormat.replace('H', '');\n dateFormat = dateFormat.replace('h', '');\n }\n // remove minutes\n while (dateFormat.includes('m')) {\n dateFormat = dateFormat.replace('m', '');\n }\n // remove seconds (s) and micro seconds (S)\n while (dateFormat.includes('S') || dateFormat.includes('s')) {\n dateFormat = dateFormat.replace('S', '');\n dateFormat = dateFormat.replace('s', '');\n }\n // because there is time removal algorithm can make reasonable assumption to remove colons\n while (dateFormat.includes(':')) {\n dateFormat = dateFormat.replace(':', '');\n }\n return dateFormat.trim();\n }\n\n public hasDate(value: string): boolean {\n return this.translate(value).length &&\n value.toLowerCase().indexOf('d') >= 0 &&\n value.indexOf('M') >= 0 && value.toLowerCase().indexOf('y') >= 0;\n }\n\n public is24Hour(value: string): boolean {\n return this.translate(value).length &&\n value.indexOf('H') >= 0;\n }\n\n public hasNoDay(value: string): boolean {\n return this.translate(value).length && value.toLowerCase().indexOf('d') === -1 &&\n value.indexOf('M') >= 0 && value.toLowerCase().indexOf('y') >= 0;\n }\n\n public hasNoDayAndMonth(value: string): boolean {\n return this.translate(value).length &&\n value.toLowerCase().indexOf('d') === -1 &&\n value.indexOf('M') === -1 &&\n value.toLowerCase().indexOf('y') >= 0;\n }\n\n public hasHours(value: string): boolean {\n return this.translate(value).length && value.toLowerCase().indexOf('h') >= 0 && value.indexOf('m') === -1;\n }\n\n public hasMinutes(value: string): boolean {\n return this.translate(value).length && value.indexOf('m') >= 0 && value.toLowerCase().indexOf('h') >= 0;\n }\n\n public hasSeconds(value: string): boolean {\n return this.translate(value).length && value.toLowerCase().indexOf('s') >= 0;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as moment from 'moment';\n\nimport { FormatTranslatorService } from '../../../services/case-fields/format-translator.service';\n\n@Pipe({\n name: 'ccdDate'\n})\nexport class DatePipe implements PipeTransform {\n\n private static readonly DATE_FORMAT_REGEXP =\n new RegExp('^(\\\\d{4})-?(\\\\d\\\\d)-?(\\\\d\\\\d)(?:T(\\\\d\\\\d)(?::?(\\\\d\\\\d)(?::?(\\\\d\\\\d)(?:\\\\.(\\\\d+))?)?)?(Z|([+-])(\\\\d\\\\d):?(\\\\d\\\\d))?|Z)?$');\n // 1 2 3 4 5 6 7 8 9 10 11\n private static readonly MONTHS = [\n ['Jan'], ['Feb'], ['Mar'], ['Apr'], ['May'], ['Jun'], ['Jul'], ['Aug'], ['Sep'], ['Oct'], ['Nov'], ['Dec'],\n ];\n\n /**\n * constructor to allow format translator to be injected\n * @param formatTrans format translator\n */\n constructor(private readonly formatTrans: FormatTranslatorService) {\n }\n\n public transform(value: string, zone?: string, format?: string): string {\n let resultDate = null;\n const ISO_FORMAT = 'YYYY-MM-DDTHH:mm:ss.SSSZ';\n if (value) {\n // included to avoid editing the hour twice on second pass through\n // this occurs on case details when datepipe is applied twice\n if (!value.includes('T')) {\n zone = 'utc';\n }\n const match: RegExpMatchArray = value.match(DatePipe.DATE_FORMAT_REGEXP);\n // Make sure we actually have a match.\n if (match) {\n let offsetDate = null;\n const date = this.getDate(match);\n if (zone === 'local') {\n offsetDate = this.getOffsetDate(date);\n } else {\n offsetDate = this.getDate(match);\n }\n // 'short' format is meaningful to formatDate, but not the same meaning as in the unit tests\n if (this.formatTrans && format && format !== 'short') {\n // support for java style formatting strings for dates\n format = this.translateDateFormat(format);\n resultDate = moment(date).format(format);\n } else {\n // RDM-1149 changed the pipe logic so that it doesn't add an hour to 'Summer Time' dates on DateTime field type\n resultDate = `${offsetDate.getDate()} ${DatePipe.MONTHS[offsetDate.getMonth()]} ${offsetDate.getFullYear()}`;\n if (match[4] && match[5] && match[6] && format !== 'short') {\n resultDate += ', ';\n resultDate += this.getHour(offsetDate.getHours().toString()) + ':';\n resultDate += this.pad(offsetDate.getMinutes()) + ':';\n resultDate += this.pad(offsetDate.getSeconds()) + ' ';\n resultDate += (this.toInt(offsetDate.getHours().toString()) >= 12) ? 'PM' : 'AM';\n }\n }\n } else {\n // EUI-2667. See if what we've been given is actually a formatted date that\n // we could attempt to do something with.\n const parsedDate: number = Date.parse(value);\n // We successfully parsed it so let's use it.\n if (!isNaN(parsedDate)) {\n const d: Date = new Date(parsedDate);\n // If what we received didn't include time, don't include it here either.\n if (value.indexOf(':') < 0) {\n const shortDate: string = d.toLocaleDateString('en-GB');\n const shortISO: string = shortDate.split('/').reverse().join('-');\n return this.transform(shortISO, zone, format);\n }\n // If it did include time, we want a full ISO string.\n const thisMoment = moment(d).format(ISO_FORMAT);\n return this.transform(thisMoment, zone, format);\n }\n }\n }\n return resultDate;\n }\n\n private translateDateFormat(format: string) {\n if (this.formatTrans) {\n return this.formatTrans.translate(format);\n } else {\n return format;\n }\n }\n\n private getOffsetDate(date: Date): Date {\n const localOffset = - date.getTimezoneOffset() / 60;\n return new Date(date.getTime() + localOffset * 3600 * 1000);\n }\n\n private getDate(match: RegExpMatchArray): Date {\n const year = this.toInt(match[1]);\n const month = this.toInt(match[2]) - 1;\n const day = this.toInt(match[3]);\n let resultDate;\n if (match[4] && match[5] && match[6]) {\n const hour = this.toInt(match[4]);\n const minutes = this.toInt(match[5]);\n const seconds = this.toInt(match[6]);\n resultDate = new Date(year, month, day, hour, minutes, seconds, 0);\n } else {\n resultDate = new Date(year, month, day);\n }\n return resultDate;\n }\n\n private getHour(hourStr: string): number {\n let hourNum = this.toInt(hourStr);\n if (hourNum > 12) {\n hourNum = hourNum - 12;\n } else if (hourNum === 0) {\n hourNum = 12;\n }\n return hourNum;\n }\n\n private toInt(str: string): number {\n return parseInt(str, 10);\n }\n\n private pad(num: any, padNum = 2): string {\n const val = num !== undefined ? num.toString() : '';\n return val.length >= padNum ? val : new Array(padNum - val.length + 1).join('0') + val;\n }\n}\n","import { Orderable } from '../../../domain/order/orderable.model';\nimport { ComplexFieldOverride } from './wizard-page-field-complex-override.model';\n\nexport class WizardPageField implements Orderable {\n public case_field_id: string;\n public order?: number;\n public page_column_no?: number;\n public complex_field_overrides?: ComplexFieldOverride[];\n}\n","import { Orderable } from '../order';\n\nexport class FixedListItem implements Orderable {\n public code: string;\n public label: string;\n public order?: number;\n}\n","import { Type } from 'class-transformer';\nimport { CaseField } from './case-field.model';\nimport { FieldTypeEnum } from './field-type-enum.model';\nimport { FixedListItem } from './fixed-list-item.model';\n\n// @dynamic\nexport class FieldType {\n public id: string;\n public type: FieldTypeEnum;\n public min?: number | Date;\n public max?: number | Date;\n public regular_expression?: string;\n\n @Type(() => FixedListItem)\n public fixed_list_items?: FixedListItem[];\n\n @Type(() => CaseField)\n public complex_fields?: CaseField[];\n\n @Type(() => FieldType)\n public collection_field_type?: FieldType;\n }\n","import { Expose, Type } from 'class-transformer';\nimport * as _ from 'underscore';\nimport { WizardPageField } from '../../components/case-editor/domain/wizard-page-field.model';\nimport { Orderable } from '../order';\nimport { AccessControlList } from './access-control-list.model';\nimport { FieldTypeEnum } from './field-type-enum.model';\nimport { FieldType } from './field-type.model';\n\n// @dynamic\nexport class CaseField implements Orderable {\n public id: string;\n public hidden: boolean;\n public hiddenCannotChange: boolean;\n public label: string;\n public order?: number;\n\n @Type(() => FieldType)\n public field_type: FieldType;\n\n public hint_text?: string;\n public security_label?: string;\n public display_context: string;\n public display_context_parameter?: string;\n public month_format?: string;\n public show_condition?: string;\n public show_summary_change_option?: boolean;\n public show_summary_content_option?: number;\n public acls?: AccessControlList[];\n public metadata?: boolean;\n public formatted_value?: any;\n public retain_hidden_value: boolean;\n\n @Type(() => WizardPageField)\n public wizardProps?: WizardPageField;\n\n public _value: any;\n public _list_items: any = [];\n\n @Expose()\n public get value(): any {\n if (this.isDynamic()) {\n return this._value && this._value.value ? this._value.value.code : this._value;\n } else {\n return this._value;\n }\n }\n\n public set value(value: any) {\n if (this.isDynamic()) {\n if (value && value instanceof Object && value.list_items) {\n this._list_items = value.list_items;\n } else if (!this._list_items || this._list_items.length === 0) {\n // Extract the list items from the current value if that's the only place they exist.\n this._list_items = this.list_items;\n if (!value || !value.value) {\n value = null;\n }\n }\n }\n this._value = value;\n }\n\n @Expose()\n public get list_items(): any {\n if (this.isDynamic()) {\n return this._value && this._value.list_items ? this._value.list_items : this._list_items;\n } else {\n return this.field_type.fixed_list_items;\n }\n }\n\n public set list_items(items: any) {\n this._list_items = items;\n }\n\n @Expose()\n public get dateTimeEntryFormat(): string {\n if (this.isComplexDisplay()) {\n return null;\n }\n if (this.display_context_parameter) {\n return this.extractBracketValue(this.display_context_parameter, '#DATETIMEENTRY');\n }\n return null;\n }\n\n @Expose()\n public get dateTimeDisplayFormat(): string {\n if (this.isComplexEntry()) {\n return null;\n }\n if (this.display_context_parameter) {\n return this.extractBracketValue(this.display_context_parameter, '#DATETIMEDISPLAY');\n }\n return null;\n }\n\n @Expose()\n public isComplexDisplay() {\n return (this.isComplex() || this.isCollection()) && this.isReadonly();\n }\n\n @Expose()\n public isComplexEntry() {\n return (this.isComplex() || this.isCollection()) && (this.isOptional() || this.isMandatory());\n }\n\n @Expose()\n public isReadonly() {\n return !_.isEmpty(this.display_context)\n && this.display_context.toUpperCase() === 'READONLY';\n }\n\n @Expose()\n public isOptional() {\n return !_.isEmpty(this.display_context)\n && this.display_context.toUpperCase() === 'OPTIONAL';\n }\n\n @Expose()\n public isMandatory() {\n return !_.isEmpty(this.display_context)\n && this.display_context.toUpperCase() === 'MANDATORY';\n }\n\n @Expose()\n public isCollection(): boolean {\n return this.field_type && this.field_type.type === 'Collection';\n }\n\n @Expose()\n public isComplex(): boolean {\n return this.field_type && this.field_type.type === 'Complex';\n }\n\n @Expose()\n public isDynamic(): boolean {\n const dynamicFieldTypes: FieldTypeEnum[] = ['DynamicList', 'DynamicRadioList'];\n\n if (!this.field_type) {\n return false;\n }\n\n return dynamicFieldTypes.some(t => t === this.field_type.type);\n }\n\n @Expose()\n public isCaseLink(): boolean {\n return this.isComplex()\n && this.field_type.id === 'CaseLink'\n && this.field_type.complex_fields.some(cf => cf.id === 'CaseReference');\n }\n public extractBracketValue(fmt: string, paramName: string, leftBracket= '(', rightBracket= ')' ): string {\n fmt = fmt.split(',')\n .find(a => a.trim().startsWith(paramName));\n if (fmt) {\n const s = fmt.indexOf(leftBracket) + 1;\n const e = fmt.indexOf(rightBracket, s);\n if (e > s && s >= 0) {\n return fmt.substr(s, (e - s));\n }\n }\n return null;\n }\n}\n","import { CurrencyPipe } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';\nimport { plainToClassFromExist } from 'class-transformer';\n\nimport { WizardPage } from '../../components/case-editor/domain/wizard-page.model';\nimport { AbstractFormFieldComponent } from '../../components/palette/base-field/abstract-form-field.component';\nimport { DatePipe } from '../../components/palette/utils/date.pipe';\nimport { CaseEventTrigger } from '../../domain/case-view/case-event-trigger.model';\nimport { CaseTab } from '../../domain/case-view/case-tab.model';\nimport { CaseView } from '../../domain/case-view/case-view.model';\nimport { CaseField } from '../../domain/definition/case-field.model';\nimport { FieldTypeEnum } from '../../domain/definition/field-type-enum.model';\nimport { FieldType } from '../../domain/definition/field-type.model';\nimport { FixedListItem } from '../../domain/definition/fixed-list-item.model';\nimport { Predicate } from '../../domain/predicate.model';\nimport { FormatTranslatorService } from '../case-fields/format-translator.service';\n\n// @dynamic\n@Injectable()\nexport class FieldsUtils {\n // EUI-4244. 3 dashes instead of 1 to make this less likely to clash with a real field.\n public static readonly LABEL_SUFFIX = '---LABEL';\n // Handling of Dynamic Lists in Complex Types\n public static readonly SERVER_RESPONSE_FIELD_TYPE_COLLECTION = 'Collection';\n public static readonly SERVER_RESPONSE_FIELD_TYPE_COMPLEX = 'Complex';\n public static readonly SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE: FieldTypeEnum[] = ['DynamicList', 'DynamicRadioList'];\n\n private static readonly currencyPipe: CurrencyPipe = new CurrencyPipe('en-GB');\n private static readonly datePipe: DatePipe = new DatePipe(new FormatTranslatorService());\n\n public static convertToCaseField(obj: any): CaseField {\n if (!(obj instanceof CaseField)) {\n return plainToClassFromExist(new CaseField(), obj);\n }\n return obj;\n }\n\n public static toValuesMap(caseFields: CaseField[]): any {\n const valueMap = {};\n caseFields.forEach(field => {\n valueMap[field.id] = FieldsUtils.prepareValue(field);\n });\n return valueMap;\n }\n\n public static getType(elem: any): string {\n return Object.prototype.toString.call(elem).slice(8, -1);\n }\n\n public static isObject(elem: any): boolean {\n return typeof elem === 'object' && elem !== null;\n }\n\n public static isNonEmptyObject(elem: any): boolean {\n return this.isObject(elem) && Object.keys(elem).length !== 0;\n }\n\n public static isArray(elem: any): boolean {\n return Array.isArray(elem);\n }\n\n public static areCollectionValuesSimpleFields(fieldValue: any[]): boolean {\n return !this.isObject(fieldValue[0]['value']) && !Array.isArray(fieldValue[0]['value']) && fieldValue[0]['value'] !== undefined;\n }\n\n public static isCollectionOfSimpleTypes(fieldValue: any): boolean {\n return this.isCollection(fieldValue) && this.areCollectionValuesSimpleFields(fieldValue);\n }\n\n public static isMultiSelectValue(form: any): boolean {\n return this.isNonEmptyArray(form) && !this.isCollectionWithValue(form);\n }\n\n public static isNonEmptyArray(pageFormFields: any): boolean {\n return Array.isArray(pageFormFields) && pageFormFields[0] !== undefined;\n }\n\n public static isCollection(pageFormFields: any): boolean {\n return this.isNonEmptyArray(pageFormFields) && this.isCollectionWithValue(pageFormFields);\n }\n\n public static isCollectionWithValue(pageFormFields: any[]): boolean {\n return pageFormFields[0]['value'] !== undefined;\n }\n\n public static cloneObject(obj: any): any {\n return Object.assign({}, obj);\n }\n\n // temporary function until this can be moved to CaseView class (RDM-2681)\n public static getCaseFields(caseView: CaseView): CaseField[] {\n const caseDataFields: CaseField[] = caseView.tabs.reduce((acc: CaseField[], tab: CaseTab) => {\n return acc.concat(tab.fields);\n }, []);\n\n const metadataFields: CaseField[] = caseView.metadataFields;\n return metadataFields.concat(caseDataFields.filter((caseField: CaseField) => {\n return metadataFields.findIndex(metadataField => metadataField.id === caseField.id) < 0;\n }));\n }\n\n public static addCaseFieldAndComponentReferences (c: AbstractControl, cf: CaseField, comp: AbstractFormFieldComponent): void {\n c['caseField'] = cf;\n c['component'] = comp;\n }\n\n /**\n * Recursive check of an array or object and its descendants for the presence of any non-empty values.\n *\n * @param object The array or object to check\n * @returns `true` if the array or object (or a descendant) contains at least one non-empty value; `false` otherwise\n */\n public static containsNonEmptyValues(object: object): boolean {\n if (!object) {\n return false;\n }\n const values = Object.keys(object).map(key => object[key]);\n const objectRefs = [];\n // Also test for numeric values, and length > 0 for non-numeric values because this covers both strings and arrays.\n // Note: Deliberate use of non-equality (!=) operator for null check, to handle both null and undefined values.\n const hasNonNullPrimitive = values.some(x => (x != null &&\n ((typeof x === 'object' && x.constructor === Object) || Array.isArray(x)\n ? !objectRefs.push(x)\n : typeof x === 'number' || x.length > 0)\n ));\n return !hasNonNullPrimitive ? objectRefs.some(y => this.containsNonEmptyValues(y)) : hasNonNullPrimitive;\n }\n\n /**\n * handleNestedDynamicLists()\n * Reassigns list_item and value data to DynamicList children\n * down the tree. Server response returns data only in\n * the `value` object of parent complex type\n *\n * EUI-2530 Dynamic Lists for Elements in a Complex Type\n *\n * @param jsonBody - { case_fields: [ CaseField, CaseField ] }\n */\n public static handleNestedDynamicLists(jsonBody: { case_fields: CaseField[] }): any {\n\n if (jsonBody.case_fields) {\n jsonBody.case_fields.forEach(caseField => {\n if (caseField.field_type) {\n this.setDynamicListDefinition(caseField, caseField.field_type, caseField);\n }\n });\n }\n\n return jsonBody;\n }\n\n private static prepareValue(field: CaseField): any {\n if (field.value) {\n return field.value;\n } else if (field.isComplex()) {\n const valueMap = {};\n field.field_type.complex_fields.forEach(complexField => {\n valueMap[complexField.id] = FieldsUtils.prepareValue(complexField);\n });\n return valueMap;\n }\n }\n\n private static readonly DEFAULT_MERGE_FUNCTION = function mergeFunction(field: CaseField, result: object): void {\n if (!result.hasOwnProperty(field.id)) {\n result[field.id] = field.value;\n }\n };\n\n private static readonly LABEL_MERGE_FUNCTION = function mergeFunction(field: CaseField, result: object): void {\n if (!result.hasOwnProperty(field.id)) {\n result[field.id] = field.value;\n }\n switch (field.field_type.type) {\n case 'FixedList':\n case 'FixedRadioList': {\n result[field.id] = FieldsUtils.getFixedListLabelByCodeOrEmpty(field, result[field.id] || field.value);\n break;\n }\n case 'MultiSelectList': {\n const fieldValue = result[field.id] || [];\n result[field.id + FieldsUtils.LABEL_SUFFIX] = [];\n fieldValue.forEach((code: any, idx: any) => {\n result[field.id + FieldsUtils.LABEL_SUFFIX][idx] = FieldsUtils.getFixedListLabelByCodeOrEmpty(field, code);\n });\n break;\n }\n case 'Label': {\n result[field.id] = FieldsUtils.getLabel(field);\n break;\n }\n case 'MoneyGBP': {\n const fieldValue = (result[field.id] || field.value);\n result[field.id] = FieldsUtils.getMoneyGBP(fieldValue);\n break;\n }\n case 'Date': {\n const fieldValue = (result[field.id] || field.value);\n result[field.id] = FieldsUtils.getDate(fieldValue);\n break;\n }\n case 'Complex': {\n if (result[field.id] && field.field_type.complex_fields) {\n field.field_type.complex_fields.forEach((f: CaseField) => {\n if (['Collection', 'Complex', 'MultiSelectList'].indexOf(f.field_type.type) > -1) {\n FieldsUtils.LABEL_MERGE_FUNCTION(f, result[field.id]);\n }\n });\n }\n break;\n }\n case 'Collection': {\n const elements = (result[field.id] || field.value);\n if (elements) {\n elements.forEach((elem: any) => {\n switch (field.field_type.collection_field_type.type) {\n case 'MoneyGBP': {\n elem.value = FieldsUtils.getMoneyGBP(elem.value);\n break;\n }\n case 'Date': {\n elem.value = FieldsUtils.getDate(elem.value);\n break;\n }\n case 'Complex': {\n if (field.field_type.collection_field_type.complex_fields) {\n field.field_type.collection_field_type.complex_fields.forEach((f: CaseField) => {\n if (['Collection', 'Complex', 'MultiSelectList'].indexOf(f.field_type.type) > -1) {\n FieldsUtils.LABEL_MERGE_FUNCTION(f, elem.value);\n }\n });\n }\n break;\n }\n }\n });\n }\n break;\n }\n }\n };\n\n /**\n * Formats a `MoneyGBP` value to include currency units.\n * @param fieldValue The CurrencyPipe expects an `any` parameter so this must also be `any`,\n * but it should be \"number-like\" (e.g., '1234')\n * @returns A formatted string (e.g., £12.34)\n */\n private static getMoneyGBP(fieldValue: any): string {\n return fieldValue ? FieldsUtils.currencyPipe.transform(fieldValue / 100, 'GBP', 'symbol') : fieldValue;\n }\n\n private static getLabel(fieldValue: CaseField): string {\n return fieldValue ? fieldValue.label : '';\n }\n\n private static getDate(fieldValue: string): string {\n try {\n // Format specified here wasn't previously working and lots of tests depend on it not working\n // Now that formats work correctly many test would break - and this could affect services which may depend on\n // the orginal behaviour of returning dates in \"d MMM yyyy\"\n // Note - replaced 'd' with 'D' as datepipe using moment to avoid timezone discrepancies\n return FieldsUtils.datePipe.transform(fieldValue, null, 'D MMM yyyy');\n } catch (e) {\n return this.textForInvalidField('Date', fieldValue);\n }\n }\n\n private static getFixedListLabelByCodeOrEmpty(field: CaseField, code: string): string {\n const relevantItem: FixedListItem = code ? field.field_type.fixed_list_items.find(item => item.code === code) : null;\n return relevantItem ? relevantItem.label : '';\n }\n\n private static textForInvalidField(type: string, invalidValue: string): string {\n return `{ Invalid ${type}: ${invalidValue} }`;\n }\n\n private static setDynamicListDefinition(caseField: CaseField, caseFieldType: FieldType, rootCaseField: CaseField) {\n if (caseFieldType.type === FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_COMPLEX) {\n\n caseFieldType.complex_fields.forEach(field => {\n try {\n const isDynamicField = FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_DYNAMIC_LIST_TYPE.indexOf(field.field_type.type) !== -1;\n\n if (isDynamicField) {\n const dynamicListValue = this.getDynamicListValue(rootCaseField.value, field.id);\n if (dynamicListValue) {\n const list_items = dynamicListValue[0].list_items;\n const complexValue = dynamicListValue.map(data => data.value);\n const value = {\n list_items,\n value: complexValue.length > 0 ? complexValue : undefined\n };\n field.value = {\n ...value\n };\n field.formatted_value = {\n ...field.formatted_value,\n ...value\n };\n }\n } else {\n this.setDynamicListDefinition(field, field.field_type, rootCaseField);\n }\n } catch (error) {\n console.log(error);\n }\n });\n } else if (caseFieldType.type === FieldsUtils.SERVER_RESPONSE_FIELD_TYPE_COLLECTION) {\n if (caseFieldType.collection_field_type) {\n this.setDynamicListDefinition(caseField, caseFieldType.collection_field_type, rootCaseField);\n }\n }\n }\n\n private static getDynamicListValue(jsonBlock: any, key: string) {\n\n const data = jsonBlock ? this.getNestedFieldValues(jsonBlock, key, []) : [];\n\n return data.length > 0 ? data : null;\n }\n\n private static getNestedFieldValues(jsonData: any, key: string, output: any[] = []) {\n if (jsonData && jsonData[key]) {\n output.push(jsonData[key]);\n } else {\n for (const elementKey in jsonData) {\n if (typeof jsonData === 'object' && jsonData.hasOwnProperty(elementKey)) {\n this.getNestedFieldValues(jsonData[elementKey], key, output);\n }\n }\n }\n return output;\n }\n\n public buildCanShowPredicate(eventTrigger: CaseEventTrigger, form: any): Predicate<WizardPage> {\n const currentState = this.getCurrentEventState(eventTrigger, form);\n return (page: WizardPage): boolean => {\n return page.parsedShowCondition.match(currentState);\n };\n }\n\n public getCurrentEventState(eventTrigger: { case_fields: CaseField[] }, form: FormGroup): object {\n return this.mergeCaseFieldsAndFormFields(eventTrigger.case_fields, form.controls['data'].value);\n }\n\n public cloneCaseField(obj: any): CaseField {\n return Object.assign(new CaseField(), obj);\n }\n\n public mergeCaseFieldsAndFormFields(caseFields: CaseField[], formFields: object): object {\n return this.mergeFields(caseFields, formFields, FieldsUtils.DEFAULT_MERGE_FUNCTION);\n }\n\n public mergeLabelCaseFieldsAndFormFields(caseFields: CaseField[], formFields: object): object {\n return this.mergeFields(caseFields, formFields, FieldsUtils.LABEL_MERGE_FUNCTION);\n }\n\n public controlIterator(\n aControl: AbstractControl,\n formArrayFn: (array: FormArray) => void,\n formGroupFn: (group: FormGroup) => void,\n controlFn: (control: FormControl) => void\n ): void {\n if (aControl instanceof FormArray) { // We're in a collection\n formArrayFn(aControl);\n } else if (aControl instanceof FormGroup) { // We're in a complex type.\n formGroupFn(aControl);\n } else if (aControl instanceof FormControl) { // FormControl\n controlFn(aControl);\n }\n }\n\n private mergeFields(caseFields: CaseField[], formFields: object, mergeFunction: (field: CaseField, result: object) => void): object {\n const result: object = FieldsUtils.cloneObject(formFields);\n caseFields.forEach(field => {\n mergeFunction(field, result);\n if (field.field_type && field.field_type.complex_fields && field.field_type.complex_fields.length > 0) {\n result[field.id] = this.mergeFields(field.field_type.complex_fields, result[field.id], mergeFunction);\n }\n });\n return result;\n }\n}\n","import * as _score from 'underscore';\n\nimport { CaseField } from '../../../domain/definition/case-field.model';\nimport { FieldsUtils } from '../../../services/fields/fields.utils';\n\nexport class ShowCondition {\n\n // Expects a show condition of the form: <fieldName>=\"string\"\n constructor(public condition: string) {\n if (!!condition) {\n if (condition.search(ShowCondition.OR_CONDITION_REGEXP) !== -1) {\n this.orConditions = condition.split(ShowCondition.OR_CONDITION_REGEXP);\n } else {\n this.andConditions = condition.split(ShowCondition.AND_CONDITION_REGEXP);\n }\n }\n }\n\n private static readonly AND_CONDITION_REGEXP = new RegExp('\\\\sAND\\\\s(?![^\"]*\"(?:(?:[^\"]*\"){2})*[^\"]*$)', 'g');\n private static readonly OR_CONDITION_REGEXP = new RegExp('\\\\sOR\\\\s(?![^\"]*\"(?:(?:[^\"]*\"){2})*[^\"]*$)', 'g');\n private static readonly CONDITION_NOT_EQUALS = '!=';\n private static readonly CONDITION_EQUALS = '=';\n private static readonly CONTAINS = 'CONTAINS';\n private static readonly instanceCache = new Map<string, ShowCondition>();\n\n private readonly orConditions: string[] = null;\n private readonly andConditions: string[] = null;\n public static addPathPrefixToCondition(showCondition: string, pathPrefix: string): string {\n if (!pathPrefix || pathPrefix === '') {\n return showCondition;\n }\n if (showCondition.search(ShowCondition.OR_CONDITION_REGEXP) !== -1) {\n let orConditions = showCondition.split(ShowCondition.OR_CONDITION_REGEXP);\n orConditions = this.extractConditions(orConditions, pathPrefix);\n return orConditions.join(' OR ');\n } else {\n let andConditions = showCondition.split(ShowCondition.AND_CONDITION_REGEXP);\n andConditions = this.extractConditions(andConditions, pathPrefix);\n return andConditions.join(' AND ');\n }\n }\n\n // Cache instances so that we can cache results more effectively\n public static getInstance(condition: string): ShowCondition {\n let instance = this.instanceCache.get(condition);\n if (!instance) {\n instance = new ShowCondition(condition);\n this.instanceCache.set(condition, instance);\n }\n return instance;\n }\n\n /**\n * Determine whether a ShowCondition model is affected by fields that have\n * a display_context of HIDDEN or READONLY, which means they aren't able to\n * be changed by the user's actions.\n *\n * @param showCondition The ShowCondition model to evaluate.\n * @param caseFields Inspected to see appropriate display_contexts.\n */\n public static hiddenCannotChange(showCondition: ShowCondition, caseFields: CaseField[]): boolean {\n if (showCondition && caseFields) {\n const conditions: string[] = showCondition.andConditions || showCondition.orConditions;\n if (conditions && conditions.length > 0) {\n let allUnchangeable = true;\n for (const condition of conditions) {\n const [field] = ShowCondition.getField(condition);\n const path: string[] = field.split('.');\n let head = path.shift();\n let caseField: CaseField = caseFields.find(cf => cf.id === head);\n while (path.length > 0) {\n head = path.shift();\n if (caseField) {\n // Jump out if this is HIDDEN or READONLY, regardless of whether or not it's\n // complex or a collection - nested fields will \"inherit\" the display_context.\n if (['HIDDEN', 'READONLY'].indexOf(caseField.display_context) > -1) {\n break;\n }\n\n // Consider what type of field this is.\n const ft = caseField.field_type;\n switch (ft.type) {\n case 'Collection':\n if (ft.collection_field_type.type === 'Complex' && ft.collection_field_type.complex_fields) {\n caseField = ft.collection_field_type.complex_fields.find(cf => cf.id === head);\n }\n break;\n case 'Complex':\n if (ft.complex_fields) {\n caseField = ft.complex_fields.find(cf => cf.id === head);\n }\n break;\n }\n }\n }\n if (caseField) {\n allUnchangeable = allUnchangeable && ['HIDDEN', 'READONLY'].indexOf(caseField.display_context) > -1;\n }\n }\n return allUnchangeable;\n }\n }\n return false;\n }\n\n private static extractConditions(conditionsArray: string[], pathPrefix: string): string[] {\n const extracted = conditionsArray.map(condition => {\n if (condition.startsWith(pathPrefix)) {\n return condition;\n }\n return `${pathPrefix}.${condition}`;\n });\n return extracted;\n }\n\n private static getField(condition: string): [string, string?] {\n let separator: string = ShowCondition.CONTAINS;\n if (condition.indexOf(ShowCondition.CONTAINS) < 0) {\n separator = ShowCondition.CONDITION_EQUALS;\n if (condition.indexOf(ShowCondition.CONDITION_NOT_EQUALS) > -1) {\n separator = ShowCondition.CONDITION_NOT_EQUALS;\n }\n }\n return [ condition.split(separator)[0], separator ];\n }\n\n public match(fields: object, path?: string): boolean {\n if (!this.condition) {\n return true;\n }\n return this.matchAndConditions(fields, this.updatePathName(path));\n }\n\n public matchByContextFields(contextFields: CaseField[]): boolean {\n return this.match(FieldsUtils.toValuesMap(contextFields));\n }\n\n /**\n * Determine whether this is affected by fields that have a display_context\n * of HIDDEN or READONLY, which means they aren't able to be changed by the\n * user's actions.\n *\n * @param caseFields Inspected to see appropriate display_contexts.\n */\n public hiddenCannotChange(caseFields: CaseField[]): boolean {\n return ShowCondition.hiddenCannotChange(this, caseFields);\n }\n\n /**\n * Path Name gets updated for complex sub fields\n * @param path Path name.\n */\n private updatePathName(path: string): string {\n if (path && path.split(/[_]+/g).length > 0) {\n const [pathName, ...pathTail] = path.split(/[_]+/g);\n const pathFinalIndex = pathTail.pop();\n const pathTailString = pathTail.toString();\n let mappedPathTail;\n\n mappedPathTail = pathTail.map((value) => {\n return Number(pathFinalIndex) === Number(value) ? pathName : value;\n });\n\n return pathTailString !== mappedPathTail.toString()\n ? `${pathName}_${mappedPathTail.join('_')}_${pathFinalIndex}`\n : path;\n } else {\n return path;\n }\n }\n\n private matchAndConditions(fields: object, path?: string): boolean {\n if (!!this.orConditions) {\n return this.orConditions.some(orCondition => this.matchEqualityCondition(fields, orCondition, path));\n } else if (!!this.andConditions) {\n return this.andConditions.every(andCondition => this.matchEqualityCondition(fields, andCondition, path));\n } else {\n return false;\n }\n }\n\n private matchEqualityCondition(fields: object, condition: string, path?: string): boolean {\n const [field, conditionSeparator] = ShowCondition.getField(condition);\n const [head, ...tail] = field.split('.');\n const currentValue = this.findValueForComplexCondition(fields, head, tail, path);\n const expectedValue = this.unquoted(condition.split(conditionSeparator)[1]);\n if (conditionSeparator === ShowCondition.CONTAINS) {\n return this.checkValueContains(expectedValue, currentValue);\n } else {\n return this.checkValueEquals(expectedValue, currentValue, conditionSeparator);\n }\n }\n\n private checkValueEquals(expectedValue: string, currentValue: any, conditionSeparaor: string): boolean {\n if (expectedValue.search('[,]') > -1) { // for multi-select list\n return this.checkMultiSelectListEquals(expectedValue, currentValue, conditionSeparaor);\n } else if (expectedValue.endsWith('*') && currentValue && conditionSeparaor !== ShowCondition.CONDITION_NOT_EQUALS) {\n if (typeof currentValue === 'string') {\n return currentValue.startsWith(this.removeStarChar(expectedValue));\n }\n return expectedValue === '*';\n } else {\n // changed from '===' to '==' to cover number field conditions\n if (conditionSeparaor === ShowCondition.CONDITION_NOT_EQUALS) {\n return this.checkValueNotEquals(expectedValue, currentValue);\n } else {\n return currentValue == expectedValue || this.okIfBothEmpty(expectedValue, currentValue); // tslint:disable-line\n }\n }\n }\n\n private checkValueNotEquals(expectedValue: string, currentValue: any): boolean {\n const formatCurrentValue = currentValue ? currentValue.toString().trim() : '';\n if ('*' === expectedValue && formatCurrentValue !== '') {\n return false;\n }\n const formatExpectedValue = expectedValue ? expectedValue.toString().trim() : '';\n return formatCurrentValue != formatExpectedValue; // tslint:disable-line\n }\n\n private checkMultiSelectListEquals(expectedValue: string, currentValue: any, conditionSeparator: string): boolean {\n const expectedValues = expectedValue.split(',').sort().toString();\n const values = currentValue ? currentValue.sort().toString() : '';\n if (conditionSeparator === ShowCondition.CONDITION_NOT_EQUALS) {\n return expectedValues !== values;\n } else {\n return expectedValues === values;\n }\n }\n\n private checkValueContains(expectedValue: string, currentValue: any): boolean {\n if (expectedValue.search(',') > -1) {\n const expectedValues = expectedValue.split(',').sort();\n const values = currentValue ? currentValue.sort().toString() : '';\n return expectedValues.every(item => values.search(item) >= 0);\n } else {\n const values = currentValue && Array.isArray(currentValue) ? currentValue.toString() : '';\n return values.search(expectedValue) >= 0;\n }\n }\n\n private findValueForComplexCondition(fields: object, head: string, tail: string[], path?: string): any {\n if (!fields) {\n return undefined;\n }\n if (tail.length === 0) {\n return this.getValue(fields, head);\n } else {\n if (FieldsUtils.isArray(fields[head])) {\n return this.findValueForComplexConditionInArray(fields, head, tail, path);\n } else {\n return this.findValueForComplexConditionForPathIfAny(fields, head, tail, path);\n }\n }\n }\n\n private findValueForComplexConditionForPathIfAny(fields: object, head: string, tail: string[], path?: string): any {\n if (path) {\n const [_, ...pathTail] = path.split(/[_]+/g);\n return this.findValueForComplexCondition(fields[head], tail[0], tail.slice(1), pathTail.join('_'));\n } else {\n return this.findValueForComplexCondition(fields[head], tail[0], tail.slice(1), path);\n }\n }\n\n private findValueForComplexConditionInArray(fields: object, head: string, tail: string[], path?: string): any {\n // use the path to resolve which array element we refer to\n if (path && path.startsWith(head)) {\n const [_, ...pathTail] = path.split(/[_]+/g);\n if (pathTail.length > 0) {\n try {\n const arrayIndex = Number.parseInt(pathTail[0], 10);\n const [__, ...dropNumberPath] = pathTail;\n return (fields[head][arrayIndex] !== undefined) ? this.findValueForComplexCondition(\n fields[head][arrayIndex]['value'], tail[0], tail.slice(1), dropNumberPath.join('_')) : null;\n } catch (e) {\n console.log('Error while parsing number', pathTail[0], e);\n }\n }\n } else {\n console.log('Path in formArray should start with ', head, ', full path: ', path);\n }\n }\n\n private getValue(fields: object, head: string): any {\n if (this.isDynamicList(fields[head])) {\n return fields[head].value.code;\n } else {\n return fields[head];\n }\n }\n\n private isDynamicList(dynamiclist: object): boolean {\n return !_score.isEmpty(dynamiclist) &&\n (_score.has(dynamiclist, 'value') && _score.has(dynamiclist, 'list_items'));\n }\n\n private unquoted(str: string): string {\n return str.replace(/(?:^\")|(?:\"$)/g, '');\n }\n\n private removeStarChar(str: string): string {\n return str.substring(0, str.length - 1);\n }\n\n private okIfBothEmpty(right: string, value: any): boolean {\n return value === null && (right === '');\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class Constants {\n public static readonly MANDATORY: string = 'MANDATORY';\n public static readonly REGEX_WHITESPACES: string = '^[^ ]+(?:\\\\s+[^ ]+)*$';\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\n\nimport { Constants } from '../../commons/constants';\nimport { CaseField } from '../../domain/definition/case-field.model';\nimport { FieldTypeEnum } from '../../domain/definition/field-type-enum.model';\n\n@Injectable()\nexport class FormValidatorsService {\n\n private static readonly CUSTOM_VALIDATED_TYPES: FieldTypeEnum[] = [\n 'Date', 'MoneyGBP', 'Label'\n ];\n public static addValidators(caseField: CaseField, control: AbstractControl): AbstractControl {\n if (\n caseField.display_context === Constants.MANDATORY &&\n FormValidatorsService.CUSTOM_VALIDATED_TYPES.indexOf(caseField.field_type.type) === -1\n ) {\n const validators = [Validators.required];\n if (caseField.field_type.type === 'Text') {\n if (caseField.field_type.regular_expression) {\n validators.push(Validators.pattern(caseField.field_type.regular_expression));\n } else {\n validators.push(this.emptyValidator());\n }\n if (caseField.field_type.min && (typeof caseField.field_type.min === 'number')) {\n validators.push(Validators.minLength(caseField.field_type.min));\n }\n if (caseField.field_type.max && (typeof caseField.field_type.max === 'number')) {\n validators.push(Validators.maxLength(caseField.field_type.max));\n }\n }\n if (control.validator) {\n validators.push(control.validator);\n }\n control.setValidators(validators);\n }\n return control;\n }\n\n public static emptyValidator(): ValidatorFn {\n const validator = (control: AbstractControl):ValidationErrors | null => {\n if (control && control.value && control.value.toString().trim().length === 0) {\n return { required: {} };\n }\n return null;\n };\n return validator;\n }\n\n // TODO: Strip this out as it's only here for the moment because\n // the service is being injected all over the place but it doesn't\n // need to be as FormValidatorsService.addValidators is perfectly\n // happy being static.\n public addValidators(caseField: CaseField, control: AbstractControl): AbstractControl {\n return FormValidatorsService.addValidators(caseField, control);\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\n\nimport { CaseField } from '../../../domain/definition/case-field.model';\nimport { FieldsUtils } from '../../../services/fields/fields.utils';\n\n\ntype FormContainer = FormGroup | FormArray;\n\n@Directive()\nexport abstract class AbstractFormFieldComponent {\n @Input()\n public caseField: CaseField;\n\n @Input()\n public formGroup: FormGroup;\n\n @Input()\n public parent?: FormContainer;\n\n @Input()\n public idPrefix = '';\n\n public id() {\n return this.idPrefix + this.caseField.id;\n }\n\n protected registerControl<T extends AbstractControl>(control: T, replace = false): AbstractControl {\n const container: FormContainer = this.parent || this.formGroup;\n if (!container) {\n return control;\n }\n const existing = container.controls[this.caseField.id];\n if (existing) {\n if (replace) {\n // Set the validators on the replacement with what already exists.\n control.setValidators(existing.validator);\n } else {\n return existing;\n }\n }\n this.addValidators(this.caseField, control);\n FieldsUtils.addCaseFieldAndComponentReferences(control, this.caseField, this);\n return this.addControlToParent(control, container, replace);\n }\n\n protected addValidators(caseField: CaseField, control: AbstractControl): void {\n // No validators by default, override this method to add validators to the form control\n }\n\n private addControlToParent(control: AbstractControl, parent: FormContainer, replace: boolean): AbstractControl {\n if (parent instanceof FormArray) {\n return this.addControlToFormArray(control, parent, replace);\n }\n return this.addControlToFormGroup(control, parent, replace);\n }\n\n private addControlToFormArray(control: AbstractControl, parent: FormArray, replace: boolean): AbstractControl {\n const index = parseInt(this.caseField.id, 10);\n if (replace && !isNaN(index)) {\n parent.setControl(index, control);\n } else {\n parent.push(control);\n }\n return control;\n }\n\n private addControlToFormGroup(control: AbstractControl, parent: FormGroup, replace: boolean): AbstractControl {\n if (replace) {\n if (this.caseField.field_type && this.caseField.field_type.id === 'CaseLink' && this.caseField.field_type.type === 'Complex' && /^-?\\d+$/.test(this.caseField.id)) {\n parent.setControl('CaseReference', control['controls']['CaseReference']);\n } else {\n parent.setControl(this.caseField.id, control);\n }\n } else {\n parent.addControl(this.caseField.id, control);\n }\n return control;\n }\n}\n","import { Directive, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { plainToClassFromExist } from 'class-transformer';\nimport { CaseField } from '../../../domain/definition/case-field.model';\n\nimport { FormValidatorsService } from '../../../services/form/form-validators.service';\nimport { AbstractFormFieldComponent } from './abstract-form-field.component';\n\n@Directive()\nexport abstract class AbstractFieldWriteComponent extends AbstractFormFieldComponent implements OnChanges {\n\n @Input()\n public isExpanded = false;\n\n @Input()\n public isInSearchBlock = false;\n\n public constructor() {\n super();\n this.fixCaseField();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n const change = changes['caseField'];\n if (change) {\n const cfNew = change.currentValue;\n if (!(cfNew instanceof CaseField)) {\n this.fixCaseField();\n }\n }\n }\n\n public createElementId(elementId: string): string {\n return `${this.id()}_${elementId}`;\n }\n\n protected addValidators(caseField: CaseField, control: AbstractControl): void {\n FormValidatorsService.addValidators(caseField, control);\n }\n\n private fixCaseField() {\n if (this.caseField && !(this.caseField instanceof CaseField)) {\n this.caseField = plainToClassFromExist(new CaseField(), this.caseField);\n }\n }\n}\n","import { AfterViewInit, Directive, Input, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { AbstractFieldWriteComponent } from '../../components/palette/base-field/abstract-field-write.component';\nimport { AbstractFormFieldComponent } from '../../components/palette/base-field/abstract-form-field.component';\nimport { CaseField } from '../../domain/definition/case-field.model';\nimport { FieldsUtils } from '../../services/fields/fields.utils';\nimport { ShowCondition } from './domain/conditional-show.model';\n\n@Directive({ selector: '[ccdConditionalShowForm]' })\n/** Hides and shows all fields in a form. Works on read only fields and form fields.\n * The show condition is evaluated on all the fields of the page. i.e. read only and form fields.\n * Evaluation of the show condition includes disabled fields, which can be on their initial value or empty. Executes on the\n * host field initialization and when any field of the form changes.\n * Collaborates with the GreyBarService to show a vertical grey bar when a field initially hidden on the page is shown. When returning\n * to the page after the page has been left, the grey bar has to be redisplayed. If instead on initial page load the field renders as\n * initially shown, the grey bar is not displayed.\n */\nexport class ConditionalShowFormDirective implements OnInit, AfterViewInit, OnDestroy {\n\n @Input() public caseFields: CaseField[];\n @Input() public contextFields: CaseField[] = [];\n @Input() public formGroup: FormGroup;\n\n private allFieldValues: any;\n private formChangesSubscription: Subscription;\n\n constructor(private readonly fieldsUtils: FieldsUtils) {\n }\n\n public ngOnInit() {\n if (!this.formGroup) {\n this.formGroup = new FormGroup({});\n }\n }\n\n /**\n * Moved the evaluation of show/hide conditions and subscription\n * to form changes until after the form has been fully created.\n *\n * Prior to this change, I traced more than 5,100,000 firings of\n * the evaluateCondition INSIDE the show_condition check on page\n * load for an event with a lot of content. After this change,\n * that number dropped to fewer than 2,500 - that's a.\n */\n public ngAfterViewInit() {\n this.evalAllShowHideConditions();\n this.subscribeToFormChanges();\n }\n\n public ngOnDestroy() {\n this.unsubscribeFromFormChanges();\n }\n\n /*\n * Delay the execution of evalShowHideConditions for 100ms\n * Evaluating showHideConditions on input is inefficient as all forms are evaluated\n * whilst the user is still typing. We are better off allowing the user to finish typing\n * then evaluate the show hide conditions.\n */\n private subscribeToFormChanges() {\n this.unsubscribeFromFormChanges();\n this.formChangesSubscription = this.formGroup.valueChanges\n .pipe(\n debounceTime(100)\n )\n .subscribe(_ => {\n this.evalAllShowHideConditions();\n });\n }\n\n private evaluateControl(control: AbstractControl) {\n const cf = control['caseField'] as CaseField;\n const component = control['component'] as AbstractFormFieldComponent;\n this.evaluateCondition(cf, component, control);\n }\n\n private evaluateCondition(cf: CaseField, component: AbstractFormFieldComponent, control: AbstractControl) {\n if (cf) {\n if (cf.display_context === 'HIDDEN') {\n cf.hidden = true; // display_context === 'HIDDEN' means always hide\n } else if (cf.show_condition) {\n const showCondition: ShowCondition = ShowCondition.getInstance(cf.show_condition);\n const condResult = showCondition.match(this.allFieldValues, this.buildPath(component, cf));\n if (cf.hidden === null || cf.hidden === undefined) {\n cf.hidden = false;\n }\n if (condResult === cf.hidden) {\n cf.hidden = !condResult;\n }\n // EUI-3267. If this field is showing, set the hiddenCannotChange flag.\n // This is used in the display of the grey bar.\n if (!cf.hidden) {\n cf.hiddenCannotChange = showCondition.hiddenCannotChange(this.caseFields);\n }\n // Disable the control if it's hidden so that it doesn't count towards the\n // validation state of the form, but only if it's actually being validated.\n if (control.validator) {\n if (cf.hidden === true && !control.disabled) {\n control.disable({ emitEvent: false });\n } else if (cf.hidden !== true && control.disabled) {\n control.enable({ emitEvent: false });\n }\n }\n }\n }\n }\n\n // make sure for the 3 callbacks that we are bound to this via an arrow function\n private readonly handleFormControl = (formControl: FormControl): void => {\n this.evaluateControl(formControl);\n }\n\n private readonly handleFormArray = (formArray: FormArray): void => {\n this.evaluateControl(formArray);\n formArray.controls.forEach(formControl => {\n this.fieldsUtils.controlIterator(formControl, this.handleFormArray, this.handleFormGroup, this.handleFormControl);\n });\n }\n\n private readonly handleFormGroup = (formGroup: FormGroup): void => {\n this.evaluateControl(formGroup);\n let groupControl = formGroup;\n if (formGroup.get('value') && formGroup.get('value') instanceof FormGroup) { // Complex Field\n groupControl = formGroup.get('value') as FormGroup;\n } else if (formGroup.controls) {\n // Special Fields like AddressUK, AddressGlobal\n groupControl = formGroup;\n }\n if (groupControl.controls) {\n Object.keys(groupControl.controls).forEach(cKey => {\n // EUI-3359.\n // Get the control from groupControl.controls[cKey] rather than\n // groupControl.get(cKey) as the latter does pathing and will interpret\n // full stops in cKey as delimeters for being nested within an array,\n // which makes no sense in this situation.\n const control = groupControl.controls[cKey];\n this.fieldsUtils.controlIterator(control, this.handleFormArray, this.handleFormGroup, this.handleFormControl);\n });\n }\n }\n\n private evalAllShowHideConditions(): void {\n this.getCurrentPagesReadOnlyAndFormFieldValues();\n this.fieldsUtils.controlIterator(this.formGroup, this.handleFormArray, this.handleFormGroup, this.handleFormControl);\n }\n\n private buildPath(c: AbstractFormFieldComponent, field: CaseField): string {\n if (c && c instanceof AbstractFieldWriteComponent) {\n if (c.idPrefix) {\n return c.idPrefix + field.id;\n }\n }\n return field.id;\n }\n\n private getCurrentPagesReadOnlyAndFormFieldValues(): any {\n const formFields = this.getFormFieldsValuesIncludingDisabled();\n this.allFieldValues = this.fieldsUtils.mergeCaseFieldsAndFormFields(this.contextFields, formFields);\n return this.allFieldValues;\n }\n\n private getFormFieldsValuesIncludingDisabled(): any {\n return this.formGroup.getRawValue();\n }\n\n private unsubscribeFromFormChanges(): void {\n if (this.formChangesSubscription) {\n this.formChangesSubscription.unsubscribe();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FieldsUtils } from '../../services/fields/fields.utils';\nimport { ConditionalShowFormDirective } from './conditional-show-form.directive';\nimport { ConditionalShowRegistrarService } from './services/conditional-show-registrar.service';\nimport { GreyBarService } from './services/grey-bar.service';\n\n@NgModule({\n declarations: [\n ConditionalShowFormDirective\n ],\n exports: [\n ConditionalShowFormDirective\n ],\n providers: [\n FieldsUtils,\n ConditionalShowRegistrarService,\n GreyBarService\n ]\n})\nexport class ConditionalShowModule {}\n","import { Injectable } from '@angular/core';\nimport { CaseField } from '../../domain/definition/case-field.model';\nimport { FieldTypeEnum } from '../../domain/definition/field-type-enum.model';\n\n@Injectable()\nexport class FieldTypeSanitiser {\n public static readonly FIELD_TYPE_COMPLEX: FieldTypeEnum = 'Complex';\n public static readonly FIELD_TYPE_COLLECTION: FieldTypeEnum = 'Collection';\n public static readonly FIELD_TYPE_DYNAMIC_LIST: FieldTypeEnum = 'DynamicList';\n public static readonly FIELD_TYPE_DYNAMIC_RADIO_LIST: FieldTypeEnum = 'DynamicRadioList';\n\n /**\n * This method finds dynamiclists in a form and replaces their string\n * values, with a JSON object, as below:\n * From: 'xyz'\n * To : {\n * value: { code:'xyz', label:'XYZ' },\n * list_items: [\n * { code:'xyz', label:'XYZ'},\n * { code:'abc', label:'ABC'}\n * ]\n * }\n * @param caseFields The CaseFields to assess.\n * @param data The data in the form.\n */\n public sanitiseLists(caseFields: CaseField[], data: any) {\n if (!data || !caseFields) {\n return;\n }\n caseFields.forEach(caseField => {\n\n switch (caseField.field_type.type) {\n case FieldTypeSanitiser.FIELD_TYPE_DYNAMIC_RADIO_LIST:\n case FieldTypeSanitiser.FIELD_TYPE_DYNAMIC_LIST:\n this.convertStringToDynamicListOutput(caseField, data);\n break;\n\n case FieldTypeSanitiser.FIELD_TYPE_COMPLEX:\n this.sanitiseLists(caseField.field_type.complex_fields, data[caseField.id]);\n break;\n\n case FieldTypeSanitiser.FIELD_TYPE_COLLECTION:\n if (Array.isArray(data[caseField.id])) {\n data[caseField.id].forEach((formElement: any) => {\n this.sanitiseLists(caseField.field_type.collection_field_type.complex_fields, formElement.value);\n });\n }\n break;\n }\n\n });\n }\n\n private convertStringToDynamicListOutput(field: CaseField, data: any): void {\n const stringValue = data[field.id];\n if (typeof stringValue === 'string') {\n const listItems = this.getListItems(field);\n const matches = listItems.filter(value => value.code === stringValue);\n if (matches && matches.length > 0) {\n data[field.id] = {\n value: matches[0],\n list_items: listItems\n };\n }\n }\n }\n\n private getListItems(field: CaseField): any[] {\n if (field) {\n if (field.list_items) {\n return field.list_items;\n }\n if (field.formatted_value && field.formatted_value.list_items) {\n return field.formatted_value.list_items;\n }\n }\n return [];\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CaseField } from '../../domain/definition/case-field.model';\nimport { FieldsUtils } from '../fields/fields.utils';\nimport { FieldTypeSanitiser } from './field-type-sanitiser';\n\n@Injectable()\nexport class FormValueService {\n /**\n * Gets value of a field based on fieldKey which is a dot separated reference to value and collection index.\n * There are two exceptions:\n * 1) In case of a multiselect being identified as a leaf a '---LABEL' suffix is appended to the key and values of that key are returned\n * form= { 'list': ['code1', 'code2'],\n * 'list---LABEL': ['label1', 'label2'] },\n * fieldKey=list,\n * colIndex=0,\n * value=label1, label2\n * 2) In case of a collection of simple fields is identified as a leaf all values are joined seperated by a comma\n * form= { 'collection': [{ 'value': 'value1' }, { 'value': 'value2' }] }\n * fieldKey=collection\n * colIndex=1\n * value=value1, value2\n *\n * Other examples:\n * 1) simple field reference: form={ 'PersonFirstName': 'John' }, fieldKey=PersonFirstName, value=John\n * 2) complex field reference:\n * form= { complex1': {\n * 'simple11': 'value11',\n * 'simple12': 'value12',\n * 'complex2': {\n * 'simple21': 'value21'\n * }\n * }},\n * fieldKey=complex1.complex2.simple21\n * colIndex=0,\n * value=value21\n * 3) complex field with collection field with complex field reference:\n * form= { 'complex1': {\n * 'collection1': [\n * { 'value': {\n * 'complex2': {\n * 'simple1': 'value1',\n * 'complex3': {\n * 'complex4': {\n * 'simple2': 'value12'\n * }\n * }\n * }\n * }\n * },\n * { 'value': {\n * 'complex2': {\n * 'simple1': 'value2',\n * 'complex3': {\n * 'complex4': {\n * 'simple2': 'value21'\n * }\n * }\n * }\n * }\n * },\n * { 'value': {\n * 'complex2': {\n * 'simple1': 'value3',\n * 'complex3': {\n * 'complex4': {\n * 'simple2': 'value31'\n * }\n * }\n * }\n * }\n * }\n * ]}}\n * fieldKey=complex1.collection1.complex2.complex3.complex4.simple2\n * colIndex=2,\n * value=value21\n * 4) collection of complex types\n * form= { 'collection1': [\n * { 'value': {'complex1': {\n * 'simple1': 'value11',\n * 'complex2': {\n * 'complex3': {\n * 'simple2': 'value12'\n * }\n * }\n * }}\n * },\n * { 'value': {'complex1': {\n * 'simple1': 'value21',\n * 'complex2': {\n * 'complex3': {\n * 'simple2': 'value22'\n * }\n * }\n * }}\n * },\n * { 'value': {'complex1': {\n * 'simple1': 'value31',\n * 'complex2': {\n * 'complex3': {\n * 'simple2': 'value32'\n * }\n * }\n * }}\n * }\n * ]}\n * fieldKey=collection1.complex1.complex2.complex3.simple2\n * colIndex=2\n * value=value32\n *\n * If key is pointing at a complex or collection leaf (not simple, collection of simple or multiselect types) then undefined is returned.\n * Also no key referring a leaf that is contained within collection will contain index number. The index is passed as an argument to the\n * method.\n * @param form form\n * @param fieldKey dot separated reference to value\n * @param colIndex index of collection item being referenced or 0 otherwise\n * @returns string simple or combined value of a field\n */\n public static getFieldValue(form, fieldKey, colIndex) {\n const fieldIds = fieldKey.split('.');\n const currentFieldId = fieldIds[0];\n const currentForm = form[currentFieldId];\n if (FieldsUtils.isMultiSelectValue(currentForm)) {\n return form[currentFieldId + FieldsUtils.LABEL_SUFFIX].join(', ');\n } else if (FieldsUtils.isCollectionOfSimpleTypes(currentForm)) {\n return currentForm.map(fieldValue => fieldValue['value']).join(', ');\n } else if (FieldsUtils.isCollection(currentForm)) {\n return this.getFieldValue(currentForm[colIndex]['value'], fieldIds.slice(1).join('.'), colIndex);\n } else if (FieldsUtils.isNonEmptyObject(currentForm)) {\n return this.getFieldValue(currentForm, fieldIds.slice(1).join('.'), colIndex);\n } else {\n return currentForm;\n }\n }\n\n /**\n * A recursive method to remove anything with a `---LABEL` suffix.\n * @param data The data to recurse through and remove MultiSelect labels.\n */\n public static removeMultiSelectLabels(data: any): void {\n if (data && typeof data === 'object') {\n if (Array.isArray(data)) {\n for (const item of data) {\n FormValueService.removeMultiSelectLabels(item);\n }\n } else {\n const keys: string[] = Object.keys(data);\n for (const key of keys) {\n // Have we found one a MultiSelect label?\n if (key.indexOf(FieldsUtils.LABEL_SUFFIX) > 0) {\n // If so, remove it.\n delete data[key];\n } else {\n FormValueService.removeMultiSelectLabels(data[key]);\n }\n }\n }\n }\n }\n\n private static isReadOnly(field: CaseField): boolean {\n return field.display_context ? field.display_context.toUpperCase() === 'READONLY' : false;\n }\n\n private static isOptional(field: CaseField): boolean {\n return field.display_context ? field.display_context.toUpperCase() === 'OPTIONAL' : false;\n }\n\n private static isLabel(field: CaseField): boolean {\n if (field.field_type) {\n return field.field_type.type === 'Label';\n } else {\n return false;\n }\n }\n\n private static isEmptyData(data: object): boolean {\n if (data) {\n let allEmpty = true;\n for (const prop of Object.keys(data)) {\n const value = data[prop];\n if (value) {\n if (typeof(value) === 'object') {\n allEmpty = allEmpty && this.isEmptyData(value);\n } else {\n allEmpty = false;\n }\n }\n }\n return allEmpty;\n }\n return true;\n }\n\n /**\n * Should we clear out optional, empty, complex objects?\n * @param clearEmpty False property if we simply want to skip it.\n * @param data The data to assess for \"emptiness\".\n * @param field The CaseField that will tell us if this is optional.\n */\n private static clearOptionalEmpty(clearEmpty: boolean, data: object, field: CaseField): boolean {\n if (clearEmpty) {\n return FormValueService.isOptional(field) && FormValueService.isEmptyData(data);\n }\n return false;\n }\n\n constructor(private readonly fieldTypeSanitiser: FieldTypeSanitiser) {\n }\n\n public sanitise(rawValue: object): object {\n return this.sanitiseObject(rawValue);\n }\n\n public sanitiseCaseReference(reference: string): string {\n // strip non digits\n const s: string = reference.replace(/[\\D]/g, '');\n if (s.length > 16) {\n return s.substr(s.length - 16, 16);\n }\n return s;\n }\n\n public filterCurrentPageFields(caseFields: CaseField[], editForm: any): any {\n const cloneForm = JSON.parse(JSON.stringify(editForm));\n Object.keys(cloneForm['data']).forEach((key) => {\n if (caseFields.findIndex((element) => element.id === key) < 0) {\n delete cloneForm['data'][key];\n }\n });\n return cloneForm;\n }\n\n public sanitiseDynamicLists(caseFields: CaseField[], editForm: any): any {\n return this.fieldTypeSanitiser.sanitiseLists(caseFields, editForm.data);\n }\n\n public clearNonCaseFields(data: object, caseFields: CaseField[]) {\n for (const dataKey in data) {\n if (!caseFields.find(cf => cf.id === dataKey)) {\n delete data [dataKey];\n }\n }\n }\n // TODO refactor so that this and remove unnecessary fields have a common iterator that applies functions to each node visited\n public removeNullLabels(data: object, caseFields: CaseField[]) {\n if (data && caseFields && caseFields.length > 0) {\n // check if there is any data at the top level of the form that's not in the caseFields\n for (const field of caseFields) {\n if (field.field_type) {\n switch (field.field_type.type) {\n case 'Label':\n // Delete any labels that are null\n if ((data[field.id] === null) || (data[field.id] === '')) {\n delete data[field.id];\n }\n break;\n case 'Complex':\n // Recurse and remove anything unnecessary from within a complex field.\n this.removeNullLabels(data[field.id], field.field_type.complex_fields);\n break;\n case 'Collection':\n // Get hold of the collection.\n const collection = data[field.id];\n // Check if we actually have a collection to work with.\n if (collection && Array.isArray(collection)) {\n // If this is a collection of complex object, we need to iterate through\n // and clear them out.\n if (field.field_type.collection_field_type.type === 'Complex') {\n // Iterate through the elements and remove any unnecessary fields within.\n for (const item of collection) {\n this.removeNullLabels(item, field.field_type.collection_field_type.complex_fields);\n this.removeNullLabels(item.value, field.field_type.collection_field_type.complex_fields);\n }\n }\n }\n break;\n default:\n break;\n }\n }\n }\n }\n }\n // TODO refactor so that this and remove unnecessary fields have a common iterator that applies functions to each node visited\n public removeEmptyDocuments(data: object, caseFields: CaseField[]) {\n if (data && caseFields && caseFields.length > 0) {\n // check if there is any data at the top level of the form that's not in the caseFields\n for (const field of caseFields) {\n if (field.field_type) {\n switch (field.field_type.type) {\n case 'Complex':\n // Recurse and remove any empty documents from within a complex field.\n this.removeEmptyDocuments(data[field.id], field.field_type.complex_fields);\n break;\n case 'Collection':\n // Get hold of the collection.\n const collection = data[field.id];\n // Check if we actually have a collection to work with.\n if (collection && Array.isArray(collection)) {\n // If this is a collection of complex object, we need to iterate through\n // and clear out empty documents\n if (field.field_type.collection_field_type.type === 'Complex') {\n // Iterate through the elements and remove any empty documents within.\n for (const item of collection) {\n this.removeEmptyDocuments(item, field.field_type.collection_field_type.complex_fields);\n this.removeEmptyDocuments(item.value, field.field_type.collection_field_type.complex_fields);\n }\n }\n }\n break;\n case 'Document':\n // Ensure this is executed only if the Document field is NOT hidden and is empty of data; hidden Document\n // fields are handled by the filterRawFormValues() function in CaseEditSubmit component\n if (field.hidden !== true && FormValueService.isEmptyData(data[field.id])) {\n delete data[field.id];\n }\n break;\n default:\n break;\n }\n }\n }\n }\n }\n /**\n * Clear out unnecessary fields from a data object, based on an array of CaseFields.\n * This method is recursive and will call itself if it encounters particular field types.\n *\n * @param data The object to be tidied up.\n * @param caseFields The CaseFields that need to be cleaned up.\n * @param clearEmpty Whether or not we should clear out empty, optional, complex objects.\n * @param clearNonCase Whether or not we should clear out non-case fields at the top level.\n */\n public removeUnnecessaryFields(data: object, caseFields: CaseField[], clearEmpty = false, clearNonCase = false): void {\n if (data && caseFields && caseFields.length > 0) {\n // check if there is any data at the top level of the form that's not in the caseFields\n if (clearNonCase) {\n this.clearNonCaseFields(data, caseFields);\n }\n for (const field of caseFields) {\n if (!FormValueService.isLabel(field) && FormValueService.isReadOnly(field)) {\n // Retain anything that is readonly and not a label.\n continue;\n }\n if (field.hidden === true && field.display_context !== 'HIDDEN') {\n // Delete anything that is hidden (that is NOT readonly), and that\n // hasn't had its display_context overridden to make it hidden.\n delete data[field.id];\n } else if (field.field_type) {\n switch (field.field_type.type) {\n case 'Label':\n // Delete any labels.\n delete data[field.id];\n break;\n case 'Document':\n if (FormValueService.isEmptyData(data[field.id])) {\n delete data[field.id];\n }\n break;\n case 'Complex':\n this.removeUnnecessaryFields(data[field.id], field.field_type.complex_fields, clearEmpty);\n // Also remove any optional complex objects that are completely empty.\n // EUI-4244: Ritesh's fix, passing true instead of clearEmpty.\n if (FormValueService.clearOptionalEmpty(true, data[field.id], field)) {\n delete data[field.id];\n }\n break;\n case 'Collection':\n // Check for valid collection data\n this.removeInvalidCollectionData(data, field);\n // Get hold of the collection.\n const collection = data[field.id];\n // Check if we actually have a collection to work with.\n if (collection && Array.isArray(collection)) {\n // If this is a collection of complex object, we need to iterate through\n // and clear them out.\n if (field.field_type.collection_field_type.type === 'Complex') {\n // Iterate through the elements and remove any unnecessary fields within.\n for (const item of collection) {\n this.removeUnnecessaryFields(item, field.field_type.collection_field_type.complex_fields, clearEmpty);\n this.removeUnnecessaryFields(item.value, field.field_type.collection_field_type.complex_fields, false);\n }\n }\n }\n break;\n default:\n break;\n }\n }\n }\n }\n\n // Clear out any MultiSelect labels.\n FormValueService.removeMultiSelectLabels(data);\n }\n\n /**\n * Remove any empty or invalid arry with only id\n *\n * @param data The object tree of form values on which to perform the removal\n * @param field domain model object for each field\n */\n public removeInvalidCollectionData(data: object, field: CaseField) {\n if (data[field.id] && data[field.id].length > 0) {\n for (const objCollection of data[field.id]) {\n if (Object.keys(objCollection).length === 1 && Object.keys(objCollection).indexOf('id') > -1) {\n data[field.id] = [];\n }\n }\n }\n }\n\n /**\n * Remove any empty collection fields where a value of greater than zero is specified in the field's {@link FieldType}\n * `min` attribute.\n *\n * @param data The object tree of form values on which to perform the removal\n * @param caseFields The list of underlying {@link CaseField} domain model objects for each field\n */\n public removeEmptyCollectionsWithMinValidation(data: object, caseFields: CaseField[]): void {\n if (data && caseFields && caseFields.length > 0) {\n for (const field of caseFields) {\n if (field.field_type.type === 'Collection' && field.field_type.min > 0 && data[field.id] &&\n Array.isArray(data[field.id]) && data[field.id].length === 0) {\n delete data[field.id];\n }\n }\n }\n }\n\n private sanitiseObject(rawObject: object): object {\n if (!rawObject) {\n return rawObject;\n }\n\n let sanitisedObject = {};\n const documentFieldKeys = ['document_url', 'document_binary_url', 'document_filename'];\n for (const key in rawObject) {\n // If the key is one of documentFieldKeys, it means the field is of Document type. If the value of any of these\n // properties is null, the entire sanitised object to be returned should be null\n if (documentFieldKeys.indexOf(key) > -1 && rawObject[key] == null) {\n sanitisedObject = null;\n break;\n } else if ('CaseReference' === key) {\n sanitisedObject[key] = this.sanitiseValue(this.sanitiseCaseReference(String(rawObject[key])));\n } else {\n sanitisedObject[key] = this.sanitiseValue(rawObject[key]);\n if (Array.isArray(sanitisedObject[key])) {\n // If the 'sanitised' array is empty, whereas the original array had 1 or more items\n // delete the property from the sanatised object\n if (sanitisedObject[key].length === 0 && rawObject[key].length > 0) {\n delete sanitisedObject[key];\n }\n }\n }\n }\n return sanitisedObject;\n }\n\n private sanitiseArray(rawArray: any[]): any[] {\n if (!rawArray) {\n return rawArray;\n }\n\n rawArray.forEach(item => {\n if (item && item.hasOwnProperty('value')) {\n item.value = this.sanitiseValue(item.value);\n }\n });\n\n // Filter the array to ensure only truthy values are returned; double-bang operator returns the boolean true/false\n // association of a value. In addition, if the array contains items with a \"value\" object property, return only\n // those whose value object contains non-empty values, including for any descendant objects\n return rawArray\n .filter(item => !!item)\n .filter(item => item.hasOwnProperty('value') ? FieldsUtils.containsNonEmptyValues(item.value) : true);\n }\n\n private sanitiseValue(rawValue: any): any {\n if (Array.isArray(rawValue)) {\n return this.sanitiseArray(rawValue);\n }\n\n switch (typeof rawValue) {\n case 'object':\n return this.sanitiseObject(rawValue);\n case 'string':\n return rawValue.trim();\n case 'number':\n return String(rawValue);\n default:\n return rawValue;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { FieldsUtils } from '../../../services/fields/fields.utils';\nimport { FormValueService } from '../../../services/form/form-value.service';\n\n// @dynamic\n@Injectable()\nexport class PlaceholderService {\n\n public resolvePlaceholders(pageFormFields: object, stringToResolve: string): string {\n const ps = new PlaceholderService.PlaceholderSubstitutor({pageFormFields, stringToResolve});\n return ps.resolvePlaceholders();\n }\n\n}\n\nexport namespace PlaceholderService {\n export class PlaceholderSubstitutor {\n private static readonly PLACEHOLDER_CONTENT_PATTERN = /^[a-zA-Z0-9_.\\]\\[]+$/;\n private static readonly PLACEHOLDER_PATTERN = /\\$\\{[a-zA-Z0-9_.\\]\\[]+\\}/;\n private static readonly STARTING_PLACEHOLDER = '$';\n private static readonly CLOSING_PLACEHOLDER = '}';\n private static readonly OPENING_PLACEHOLDER = '{';\n private static readonly NEW_LINE = `\n___\n`;\n\n private static readonly PLACEHOLDER_START =\n PlaceholderSubstitutor.STARTING_PLACEHOLDER + PlaceholderSubstitutor.OPENING_PLACEHOLDER;\n private static readonly PLACEHOLDER_END = PlaceholderSubstitutor.CLOSING_PLACEHOLDER;\n\n private stringToResolve: string;\n private scanIndex: number;\n private numberCollectionItemsAsPlaceholder: number;\n private collectionItemIndex: number;\n private fieldIdToSubstitute: string;\n private startSubstitutionIndex: number;\n private isCollecting: boolean;\n private readonly resolvedFormValues = [];\n private readonly pageFormFields: object;\n private readonly originalStringToResolve: string;\n\n private static wrapPlaceholder(str: string): string {\n return `${this.PLACEHOLDER_START}${str}${this.PLACEHOLDER_END}`;\n }\n\n constructor(values: { stringToResolve: string, pageFormFields: object }) {\n this.stringToResolve = values.stringToResolve;\n this.originalStringToResolve = values.stringToResolve;\n this.pageFormFields = values.pageFormFields;\n }\n\n public resolvePlaceholders(): string {\n while (this.hasUnresolvedPlaceholder()) {\n this.resetPlaceholderSubstitutor();\n while (this.doesPlaceholderContainCollectionItems()) {\n while (this.isScanningStringToResolve()) {\n if (this.isStartPlaceholderAndNotCollecting()) {\n this.setStartCollecting();\n } else if (this.isCollecting) {\n if (this.isClosingPlaceholder()) {\n this.substitute();\n } else if (!this.isOpeningPlaceholder()) {\n this.appendCharacter();\n }\n }\n this.scanIndex++;\n }\n this.appendOriginalStringIfCollectionItemAsPlaceholder();\n }\n }\n return this.stringToResolve;\n }\n\n private isScanningStringToResolve(): boolean {\n return this.scanIndex < this.stringToResolve.length;\n }\n\n private doesPlaceholderContainCollectionItems(): boolean {\n return this.numberCollectionItemsAsPlaceholder-- > 0;\n }\n\n private hasUnresolvedPlaceholder(): boolean {\n return this.stringToResolve\n && typeof this.stringToResolve === 'string'\n && !!this.stringToResolve.match(PlaceholderSubstitutor.PLACEHOLDER_PATTERN);\n }\n\n private isStartPlaceholderAndNotCollecting(): boolean {\n return this.isStartingPlaceholder() && !this.isCollecting;\n }\n\n private isOpeningPlaceholder(): boolean {\n return this.stringToResolve.charAt(this.scanIndex) === PlaceholderSubstitutor.OPENING_PLACEHOLDER;\n }\n\n private isClosingPlaceholder(): boolean {\n return this.stringToResolve.charAt(this.scanIndex) === PlaceholderSubstitutor.CLOSING_PLACEHOLDER;\n }\n\n private resetPlaceholderSubstitutor(): void {\n this.scanIndex = 0;\n this.numberCollectionItemsAsPlaceholder = 1;\n this.collectionItemIndex = 0;\n this.fieldIdToSubstitute = '';\n this.startSubstitutionIndex = -1;\n this.isCollecting = false;\n this.resolvedFormValues[this.collectionItemIndex] = {};\n }\n\n private substitute(): void {\n if (this.isMatchingPlaceholderPattern() && this.isFieldIdInFormFields()) {\n this.updateNumberOfCollectionItemsAsPlaceholder();\n if (this.isFieldIdToSubstituteReferringItself()) {\n this.substituteWithEmptyString();\n } else {\n this.substituteFromFormFields();\n }\n } else {\n this.substituteWithEmptyString();\n }\n this.isCollecting = false;\n this.fieldIdToSubstitute = '';\n }\n\n private appendOriginalStringIfCollectionItemAsPlaceholder(): void {\n if (this.collectionItemIndex < this.numberCollectionItemsAsPlaceholder - 1) {\n this.stringToResolve += PlaceholderSubstitutor.NEW_LINE + this.originalStringToResolve;\n this.collectionItemIndex += 1;\n this.resolvedFormValues[this.collectionItemIndex] = {};\n }\n }\n\n private setStartCollecting(): void {\n this.isCollecting = true;\n this.startSubstitutionIndex = this.scanIndex;\n }\n\n private appendCharacter(): void {\n this.fieldIdToSubstitute += this.stringToResolve.charAt(this.scanIndex);\n }\n\n private isMatchingPlaceholderPattern(): boolean {\n return !!this.fieldIdToSubstitute.match(PlaceholderSubstitutor.PLACEHOLDER_CONTENT_PATTERN);\n }\n\n private isFieldIdInFormFields(): boolean {\n return this.getFieldValue() !== undefined;\n }\n\n private isFieldIdToSubstituteReferringItself(): boolean {\n const placeholder = PlaceholderSubstitutor.wrapPlaceholder(this.fieldIdToSubstitute);\n const value = this.getSubstitutionValueOrEmpty();\n return placeholder === value;\n }\n\n private getSubstitutionValueLengthOrZero(): number {\n return this.pageFormFields[this.fieldIdToSubstitute] ? this.getSubstitutionValueOrEmpty().toString().length : 0;\n }\n\n /**\n * Gets the value from `this` field, which could be any of a number of different types:\n * string | number | object | string[] | object[] | maybe others...\n * @returns The value associated with `this` field.\n */\n private getFieldValue(): any {\n if (this.resolvedFormValues[this.collectionItemIndex][this.fieldIdToSubstitute]) {\n return this.resolvedFormValues[this.collectionItemIndex][this.fieldIdToSubstitute];\n } else {\n const fieldValue = FormValueService.getFieldValue(this.pageFormFields, this.fieldIdToSubstitute, this.collectionItemIndex);\n this.resolvedFormValues[this.collectionItemIndex][this.fieldIdToSubstitute] = fieldValue;\n return this.resolvedFormValues[this.collectionItemIndex][this.fieldIdToSubstitute];\n }\n }\n\n private getSubstitutionValueOrEmpty(): string {\n const fieldValue = this.getFieldValue();\n return fieldValue ? fieldValue : '';\n }\n\n private getNumberOfCollectionItemsIfAny(): number {\n const fieldIds = this.fieldIdToSubstitute.split('.');\n let pageFormFieldsClone = FieldsUtils.cloneObject(this.pageFormFields);\n let numberCollectionItemsAsPlaceholder = 1;\n\n // tslint:disable-next-line\n for (let index = 0; index < fieldIds.length; index++) {\n if (FieldsUtils.isCollection(pageFormFieldsClone)) {\n numberCollectionItemsAsPlaceholder = pageFormFieldsClone.length;\n break;\n } else if (pageFormFieldsClone[fieldIds[index]] === undefined) {\n break;\n } else {\n pageFormFieldsClone = pageFormFieldsClone[fieldIds[index]];\n }\n }\n return numberCollectionItemsAsPlaceholder;\n }\n\n private isStartingPlaceholder(): boolean {\n return this.stringToResolve.charAt(this.scanIndex) === PlaceholderSubstitutor.STARTING_PLACEHOLDER;\n }\n\n private updateNumberOfCollectionItemsAsPlaceholder(): void {\n if (this.fieldIdToSubstitute.split('.').length > 1) {\n const newNumber = this.getNumberOfCollectionItemsIfAny();\n this.numberCollectionItemsAsPlaceholder = Math.max(newNumber, this.numberCollectionItemsAsPlaceholder);\n }\n }\n\n private substituteFromFormFields(): void {\n this.doSubstitution(this.getSubstitutionValueOrEmpty());\n this.resetScanIndexAfterSubstitution();\n }\n\n private substituteWithEmptyString(): void {\n this.doSubstitution('');\n this.scanIndex = this.startSubstitutionIndex;\n }\n\n private doSubstitution(value: string): void {\n const placeholder = PlaceholderSubstitutor.wrapPlaceholder(this.fieldIdToSubstitute);\n const replacedString = this.stringToResolve.substring(this.startSubstitutionIndex).replace(placeholder, value);\n this.stringToResolve = this.stringToResolve.substring(0, this.startSubstitutionIndex).concat(replacedString);\n }\n\n private resetScanIndexAfterSubstitution(): void {\n this.scanIndex = this.startSubstitutionIndex + this.getSubstitutionValueLengthOrZero();\n }\n }\n}\n","import { Directive, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { CaseField } from '../../domain/definition/case-field.model';\nimport { FieldsUtils } from '../../services/fields/fields.utils';\nimport { PlaceholderService } from './services/placeholder.service';\n\n@Directive({ selector: '[ccdLabelSubstitutor]' })\n/**\n * Checks all labels and substitutes any placholders that reference other fields values.\n */\nexport class LabelSubstitutorDirective implements OnInit, OnDestroy {\n\n @Input() public caseField: CaseField;\n @Input() public contextFields: CaseField[] = [];\n @Input() public formGroup: FormGroup;\n @Input() public elementsToSubstitute: string[] = ['label', 'hint_text'];\n\n private initialLabel: string;\n private initialHintText: string;\n\n constructor(\n private readonly fieldsUtils: FieldsUtils,\n private readonly placeholderService: PlaceholderService\n ) {}\n\n public ngOnInit(): void {\n this.initialLabel = this.caseField.label;\n this.initialHintText = this.caseField.hint_text;\n this.formGroup = this.formGroup || new FormGroup({});\n\n const fields: object = this.getReadOnlyAndFormFields();\n\n if (this.shouldSubstitute('label')) {\n this.caseField.label = this.resolvePlaceholders(fields, this.caseField.label);\n }\n if (this.shouldSubstitute('hint_text')) {\n this.caseField.hint_text = this.resolvePlaceholders(fields, this.caseField.hint_text);\n }\n if (this.shouldSubstitute('value')) {\n this.caseField.value = this.resolvePlaceholders(fields, this.caseField.value);\n }\n }\n\n public ngOnDestroy(): void {\n this.caseField.label = this.initialLabel;\n this.caseField.hint_text = this.initialHintText;\n }\n\n private shouldSubstitute(element: string): boolean {\n return this.elementsToSubstitute.find(e => e === element) !== undefined;\n }\n\n private getReadOnlyAndFormFields(): object {\n const formFields: object = this.getFormFieldsValuesIncludingDisabled();\n // TODO: Delete following line when @Input contextFields is fixed - https://tools.hmcts.net/jira/browse/RDM-3504\n const uniqueContextFields: CaseField[] = this.removeDuplicates(this.contextFields);\n return this.fieldsUtils.mergeLabelCaseFieldsAndFormFields(uniqueContextFields, formFields);\n }\n\n private removeDuplicates(original: CaseField[]): CaseField[] {\n const unique: CaseField[] = [];\n original.forEach(caseField => {\n const isUnique = unique.filter(e => e.id === caseField.id).length === 0;\n if (isUnique) {\n unique.push(caseField);\n }\n });\n return unique;\n }\n\n private getFormFieldsValuesIncludingDisabled(): object {\n return this.formGroup.getRawValue();\n }\n\n private resolvePlaceholders(fields: object, stringToResolve: string): string {\n return this.placeholderService.resolvePlaceholders(fields, stringToResolve);\n }\n}\n","import { CurrencyPipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FieldsUtils } from '../../services/fields/fields.utils';\nimport { LabelSubstitutorDirective } from './label-substitutor.directive';\n\n@NgModule({\n declarations: [\n LabelSubstitutorDirective\n ],\n exports: [\n LabelSubstitutorDirective\n ],\n providers: [\n FieldsUtils,\n CurrencyPipe,\n ]\n})\nexport class LabelSubstitutorModule {}\n","import { AfterContentInit, Directive, ElementRef, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[focusElement]'\n})\n/**\n * Focuses the host element after the content of the view has been initialised. Works on writable fields. If the\n * directive is used on more than one element, the last element to be initialised will be in focus.\n * NOTE:\n * The directive focuses on the element only for the very first time when the content into the component's view, the\n * view that the directive is in is initialised. Refocusing the element will require explicit focusing for e.g. by\n * calling this directives focus() method from the host component.\n */\nexport class FocusElementDirective implements AfterContentInit {\n\n constructor(private readonly el: ElementRef, private readonly renderer: Renderer2) {\n }\n\n public ngAfterContentInit(): void {\n this.focus();\n }\n\n public focus(): void {\n if (this.el.nativeElement) {\n const focusElement = this.renderer.selectRootElement(this.el.nativeElement, true);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { FocusElementDirective } from './focus-element.directive';\n\n@NgModule({\n declarations: [\n FocusElementDirective\n ],\n exports: [\n FocusElementDirective\n ]\n})\nexport class FocusElementModule {\n}\n","export class ActivityInfo {\n public forename: string;\n public surname: string;\n}\n\nexport class Activity {\n public caseId: string;\n public viewers: ActivityInfo[];\n public editors: ActivityInfo[];\n public unknownViewers: number;\n public unknownEditors: number;\n}\n\nexport enum DisplayMode {\n BANNER,\n ICON\n}\n","export class AddressModel {\n public AddressLine1 = '';\n public AddressLine2 = '';\n public AddressLine3 = '';\n public PostTown = '';\n public County = '';\n public PostCode = '';\n public Country = '';\n}\n","import { AlertLevel } from './alert-level.model';\n\nexport class Alert {\n public level: AlertLevel;\n public message: string;\n}\n","import { Type } from 'class-transformer';\nimport { ShowCondition } from '../../../directives/conditional-show/domain/conditional-show.model';\nimport { CaseField } from '../../../domain/definition/case-field.model';\nimport { Orderable } from '../../../domain/order/orderable.model';\nimport { WizardPageField } from './wizard-page-field.model';\n\n// @dynamic\nexport class WizardPage implements Orderable {\n\n public id: string;\n public label: string;\n public order?: number;\n\n @Type(() => WizardPageField)\n public wizard_page_fields: WizardPageField[];\n\n @Type(() => CaseField)\n public case_fields: CaseField[];\n\n public show_condition?: string;\n\n public parsedShowCondition: ShowCondition;\n\n public getCol1Fields(): CaseField[] {\n return this.case_fields?.filter(f =>\n !f.wizardProps.page_column_no || f.wizardProps.page_column_no === 1);\n }\n public getCol2Fields(): CaseField[] {\n return this.case_fields?.filter(f => f.wizardProps.page_column_no === 2);\n }\n\n public isMultiColumn(): boolean {\n return this.getCol2Fields()?.length > 0;\n }\n}\n","import { Type } from 'class-transformer';\nimport { WizardPage } from '../../components/case-editor/domain/wizard-page.model';\nimport { CaseField } from '../definition/case-field.model';\n\n// @dynamic\nexport class CaseEventTrigger {\n\n public id: string;\n public name: string;\n public description?: string;\n public case_id?: string;\n\n @Type(() => CaseField)\n public case_fields: CaseField[];\n\n public event_token: string;\n\n @Type(() => WizardPage)\n public wizard_pages: WizardPage[];\n\n public show_summary?: boolean;\n public show_event_notes?: boolean;\n public end_button_label?: string;\n public can_save_draft?: boolean;\n\n public hasFields(): boolean {\n return this.case_fields && this.case_fields.length !== 0;\n }\n\n public hasPages(): boolean {\n return this.wizard_pages && this.wizard_pages.length !== 0;\n }\n}\n","export class CaseViewEvent {\n public id: number;\n public timestamp: string;\n public summary: string;\n public comment: string;\n public event_id: string;\n public event_name: string;\n public state_id: string;\n public state_name: string;\n public user_id: number;\n public user_last_name: string;\n public user_first_name: string;\n public significant_item: {\n type: string,\n description: string,\n url: string\n };\n}\n","import { Orderable } from '../order';\n\nexport class CaseViewTrigger implements Orderable {\n public static readonly DELETE = 'DELETE';\n\n public id: string;\n public name: string;\n public description: string;\n public order?: number;\n}\n","import { Orderable } from '../order';\nimport { AccessControlList } from './access-control-list.model';\nimport { EventCaseField } from './event-case-field.model';\n\nexport class CaseEvent implements Orderable {\n public id: string;\n public name: string;\n public post_state: string;\n public pre_states: string[];\n public case_fields: EventCaseField[];\n public description: string;\n public order?: number;\n public acls?: AccessControlList[];\n}\n","import { Orderable } from '../order';\n\nexport class CaseState implements Orderable {\n public id: string;\n public name: string;\n public description: string;\n public order?: number;\n}\n","import { CaseEvent } from './case-event.model';\nimport { CaseState } from './case-state.model';\n\n// Light clone of CaseType to be used in Jurisdiction class\n// to avoid cyclic dependency\nexport class CaseTypeLite {\n public id: string;\n public name: string;\n public events: CaseEvent[];\n public states: CaseState[];\n public description: string;\n}\n","import { Type } from 'class-transformer';\nimport { CaseEvent } from './case-event.model';\nimport { CaseField } from './case-field.model';\nimport { CaseState } from './case-state.model';\nimport { Jurisdiction } from './jurisdiction.model';\n\n// @dynamics\nexport class CaseType {\n public id: string;\n public name: string;\n public events: CaseEvent[];\n public states: CaseState[];\n\n @Type(() => CaseField)\n public case_fields: CaseField[];\n\n public description: string;\n public jurisdiction: Jurisdiction;\n public printEnabled?: boolean;\n}\n","export class EventCaseField {\n public case_field_id: string;\n public showCondition: string;\n}\n","import { Banner } from './banner.model';\nimport { CaseTypeLite } from './case-type-lite.model';\n\nexport class Jurisdiction {\n public id: string;\n public name: string;\n public description: string;\n public caseTypes: CaseTypeLite[];\n}\n","export class Banner {\n public bannerDescription: string;\n public bannerUrlText: string;\n public bannerUrl: string;\n public bannerViewed: boolean;\n public bannerEnabled: boolean;\n}\n","import { Type } from 'class-transformer';\nimport { CaseField } from '../definition';\nimport { Orderable } from '../order';\n\n// @dynamic\nexport class CaseTab implements Orderable {\n public id: string;\n public label: string;\n public order?: number;\n @Type(() => CaseField)\n public fields: CaseField[];\n public show_condition?: string;\n}\n","import { Type } from 'class-transformer';\nimport { CaseField } from '../definition';\nimport { CaseTab } from './case-tab.model';\nimport { CaseViewEvent } from './case-view-event.model';\nimport { CaseViewTrigger } from './case-view-trigger.model';\n\n// @dynamic\nexport class CaseView {\n public case_id?: string;\n public case_type: {\n id: string,\n name: string,\n description?: string,\n jurisdiction: {\n id: string,\n name: string,\n description?: string\n },\n printEnabled?: boolean\n };\n public state: {\n id: string,\n name: string,\n description?: string\n title_display?: string\n };\n public channels: string[];\n @Type(() => CaseTab)\n public tabs: CaseTab[];\n public triggers: CaseViewTrigger[];\n public events: CaseViewEvent[];\n @Type(() => CaseField)\n public metadataFields?: CaseField[];\n public basicFields?: {\n caseNameHmctsInternal?: string,\n caseManagementLocation?: {\n baseLocation?: number\n }\n };\n}\n","export class CasePrintDocument {\n public name: string;\n public type: string;\n public url: string;\n}\n","export class HRef {\n public href: string;\n}\n\nexport class DocumentLinks {\n public self: HRef;\n public binary: HRef;\n}\n\nexport class Document {\n public _links: DocumentLinks;\n public originalDocumentName: string;\n public hashToken?: string;\n}\n\nexport class Embedded {\n public documents: Document[];\n}\n\nexport class DocumentData {\n public _embedded: Embedded;\n public documents: Document[];\n}\n\nexport class FormDocument {\n public document_url: string;\n public document_binary_url: string;\n public document_filename: string;\n public document_hash?: string;\n}\n","import { HttpErrorResponse } from '@angular/common/http';\n\nexport class HttpError {\n\n constructor() {\n this.timestamp = new Date().toISOString();\n this.error = HttpError.DEFAULT_ERROR;\n this.message = HttpError.DEFAULT_MESSAGE;\n this.status = HttpError.DEFAULT_STATUS;\n this.exception = null;\n this.path = null;\n this.details = null;\n this.callbackErrors = null;\n this.callbackWarnings = null;\n }\n private static readonly DEFAULT_ERROR = 'Unknown error';\n private static readonly DEFAULT_MESSAGE = 'Something unexpected happened, our technical staff have been automatically notified';\n private static readonly DEFAULT_STATUS = 500;\n\n public timestamp: string;\n public status: number;\n public error: string;\n public exception: string;\n public message: string;\n public path: string;\n public details?: any;\n public callbackErrors?: any;\n public callbackWarnings?: any;\n public static from(response: HttpErrorResponse): HttpError {\n const error = new HttpError();\n\n // Check that the HttpErrorResponse contains an \"error\" object before mapping the error properties\n if (!!(response && response.error)) {\n Object.keys(error).forEach(key => {\n error[key] = response.error.hasOwnProperty(key) && response.error[key] ? response.error[key] : error[key];\n });\n }\n\n return error;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { OrganisationVm } from '../../services/organisation';\nimport { SimpleOrganisationModel } from './simple-organisation.model';\n\n@Injectable()\nexport class OrganisationConverter {\n\n private static toSimpleAddress(organisationModel: OrganisationVm): string {\n let simpleAddress = '';\n if (organisationModel.addressLine1) { simpleAddress += organisationModel.addressLine1 + '<br>'; }\n if (organisationModel.addressLine2) { simpleAddress += organisationModel.addressLine2 + '<br>'; }\n if (organisationModel.addressLine3) { simpleAddress += organisationModel.addressLine3 + '<br>'; }\n if (organisationModel.townCity) { simpleAddress += organisationModel.townCity + '<br>'; }\n if (organisationModel.county) { simpleAddress += organisationModel.county + '<br>'; }\n if (organisationModel.country) { simpleAddress += organisationModel.country + '<br>'; }\n if (organisationModel.postCode) { simpleAddress += organisationModel.postCode + '<br>'; }\n return simpleAddress;\n }\n\n public toSimpleOrganisationModel(organisationModel: OrganisationVm): SimpleOrganisationModel {\n return {\n organisationIdentifier: organisationModel.organisationIdentifier,\n name: organisationModel.name,\n address: OrganisationConverter.toSimpleAddress(organisationModel)\n };\n }\n}\n","import { Type } from 'class-transformer';\nimport { Jurisdiction } from '../definition/jurisdiction.model';\n\nfunction hasRoles(profile: Profile): boolean {\n if (profile.user && profile.user.idam && Array.isArray(profile.user.idam.roles)) {\n return profile.user.idam.roles.length > 0;\n }\n return false;\n}\n\n// @dynamic\nexport class Profile {\n public user: {\n idam: {\n id: string,\n email: string,\n forename: string,\n surname: string,\n roles: string[]\n }\n };\n\n public channels: string[];\n\n @Type(() => Jurisdiction)\n public jurisdictions: Jurisdiction[];\n\n public default: {\n workbasket: {\n jurisdiction_id: string,\n case_type_id: string,\n state_id: string\n }\n };\n\n public isSolicitor(): boolean {\n if (hasRoles(this)) {\n return this.user.idam.roles.find(r => r.endsWith('-solicitor')) !== undefined;\n }\n return false;\n }\n\n public isCourtAdmin(): boolean {\n if (hasRoles(this)) {\n return this.user.idam.roles.find(r => r.endsWith('-courtadmin')) !== undefined;\n }\n return false;\n }\n}\n","import { FieldType } from '../definition';\n\nexport class Field {\n constructor(\n public id: string,\n public field_type: FieldType,\n public elementPath?: string,\n public value?: string,\n public label?: string,\n public metadata?: boolean\n ) { }\n}\n","import { FieldType } from '../definition';\n\nexport class SearchResultViewColumn {\n public case_field_id: string;\n public case_field_type: FieldType;\n public display_context?: string;\n public display_context_parameter?: string;\n public label: string;\n public order: number;\n}\n","import { Type } from 'class-transformer';\nimport { CaseField } from '../definition';\n\n// @dynamic\nexport class SearchResultViewItem {\n public case_id: string;\n public case_fields: object;\n @Type(() => CaseField)\n public hydrated_case_fields?: CaseField[];\n public columns?: object;\n public supplementary_data?: any;\n public display_context_parameter?: any;\n}\n","import { CaseDetails } from './case-details.model';\n\nexport const DRAFT_PREFIX = 'DRAFT';\nexport const DRAFT_QUERY_PARAM = 'draft';\nexport class Draft {\n\n public id: string;\n public document?: CaseDetails;\n public type?: string;\n public created?: string;\n public updated?: string;\n public static stripDraftId(draftId: string): string {\n return draftId.slice(DRAFT_PREFIX.length);\n }\n\n public static isDraft(id: string): boolean {\n return String(id).startsWith(DRAFT_PREFIX);\n }\n}\n","import { Type } from 'class-transformer';\nimport { Draft } from '../draft.model';\nimport { SearchResultViewColumn } from './search-result-view-column.model';\nimport { SearchResultViewItem } from './search-result-view-item.model';\n\n// @dynamic\nexport class SearchResultView {\n @Type(() => SearchResultViewColumn)\n public columns: SearchResultViewColumn[];\n\n @Type(() => SearchResultViewItem)\n public results: SearchResultViewItem[];\n public result_error?: string;\n\n public hasDrafts() {\n return this.results[0]\n && this.results[0].case_id\n && Draft.isDraft(this.results[0].case_id);\n }\n}\n","export class CaseDetails {\n public id: string;\n public jurisdiction: string;\n public case_type_id: string;\n public state: string;\n public created_date?: string;\n public last_modified?: string;\n public locked_by_user_id?: string;\n public security_level?: string;\n public case_data?: object;\n}\n","export class CaseEventData {\n public event: {\n id: string;\n summary: string;\n description: string;\n };\n public data?: object;\n public event_data?: object; // full event data\n public event_token: string;\n public ignore_warning: boolean;\n public draft_id?: string;\n public case_reference?: string;\n}\n","import { Orderable } from '../order/orderable.model';\nimport { Field } from '../search/field.model';\n\nexport class WorkbasketInputModel implements Orderable {\n constructor(\n public label: string,\n public order: number,\n public field: Field,\n public metadata?: boolean,\n public display_context_parameter?: string) {\n }\n}\n\nexport class WorkbasketInput {\n public workbasketInputs: WorkbasketInputModel[];\n}\n","export class PaginationMetadata {\n public total_results_count: number;\n public total_pages_count: number;\n}\n","export enum SortOrder {\n\n ASCENDING, DESCENDING, UNSORTED\n\n}\n","import { SearchResultViewItemComparator } from './search-result-view-item-comparator';\nimport { SortOrder } from './sort-order';\n\nexport class SortParameters {\n\n public comparator: SearchResultViewItemComparator;\n public sortOrder: SortOrder;\n\n constructor(comparator: SearchResultViewItemComparator, sortOrder: SortOrder) {\n this.comparator = comparator;\n this.sortOrder = sortOrder;\n }\n\n}\n","export class ComplexFieldOverride {\n public complex_field_element_id: string;\n public display_context: string;\n public label?: string;\n public hint_text?: string;\n public show_condition?: string;\n}\n","import { CaseField, FieldType } from '../domain/definition';\nimport { AccessControlList } from '../domain/definition/access-control-list.model';\n\nexport class CaseFieldBuilder {\n\n private readonly caseField: CaseField = new CaseField();\n public static create(): CaseFieldBuilder {\n return new CaseFieldBuilder();\n }\n\n public withACLs(acls: AccessControlList[]): CaseFieldBuilder {\n this.caseField.acls = acls;\n return this;\n }\n\n public withId(id: string): CaseFieldBuilder {\n this.caseField.id = id;\n return this;\n }\n\n public withFieldType(field_type: FieldType): CaseFieldBuilder {\n this.caseField.field_type = field_type;\n return this;\n }\n\n public withDisplayContext(display_context: string): CaseFieldBuilder {\n this.caseField.display_context = display_context;\n return this;\n }\n\n public withDisplayContextParameter(display_context_parameter: string): CaseFieldBuilder {\n this.caseField.display_context_parameter = display_context_parameter;\n return this;\n }\n\n public withHidden(hidden: boolean): CaseFieldBuilder {\n this.caseField.hidden = hidden;\n return this;\n }\n\n public withHintText(hint_text: string): CaseFieldBuilder {\n this.caseField.hint_text = hint_text;\n return this;\n }\n\n public withLabel(label: string): CaseFieldBuilder {\n this.caseField.label = label;\n return this;\n }\n\n public withOrder(order: number): CaseFieldBuilder {\n this.caseField.order = order;\n return this;\n }\n\n public withSecurityLabel(security_label: string): CaseFieldBuilder {\n this.caseField.security_label = security_label;\n return this;\n }\n\n public withShowCondition(show_condition: string): CaseFieldBuilder {\n this.caseField.show_condition = show_condition;\n return this;\n }\n\n public withShowSummaryContentOption(option: number): CaseFieldBuilder {\n this.caseField.show_summary_content_option = option;\n return this;\n }\n\n public withValue(value: any): CaseFieldBuilder {\n this.caseField.value = value;\n return this;\n }\n\n public withListValue(value: any): CaseFieldBuilder {\n this.caseField.list_items = value;\n return this;\n }\n\n public build(): CaseField {\n return this.caseField;\n }\n}\n","import { ComplexFieldOverride } from '../components/case-editor/domain/wizard-page-field-complex-override.model';\nimport { WizardPageField } from '../components/case-editor/domain/wizard-page-field.model';\nimport { WizardPage } from '../components/case-editor/domain/wizard-page.model';\nimport { ShowCondition } from '../directives/conditional-show/domain/conditional-show.model';\nimport { CaseEventTrigger } from '../domain/case-view/case-event-trigger.model';\nimport { AccessControlList } from '../domain/definition/access-control-list.model';\nimport { CaseField } from '../domain/definition/case-field.model';\nimport { FieldTypeEnum } from '../domain/definition/field-type-enum.model';\nimport { FieldType } from '../domain/definition/field-type.model';\nimport { FixedListItem } from '../domain/definition/fixed-list-item.model';\nimport { CaseFieldBuilder } from './case-field-builder';\n\nexport const textFieldType = (): FieldType => {\n return {\n id: 'Text',\n type: 'Text',\n complex_fields: []\n };\n};\n\nexport const createCaseEventTrigger = (id: string,\n name: string,\n case_id: string,\n show_summary: boolean,\n case_fields: CaseField[],\n wizard_pages = [],\n can_save_draft = false): CaseEventTrigger => {\n const eventTrigger = new CaseEventTrigger();\n\n eventTrigger.id = id;\n eventTrigger.name = name;\n eventTrigger.case_id = case_id;\n eventTrigger.show_summary = show_summary;\n eventTrigger.wizard_pages = wizard_pages;\n eventTrigger.event_token = 'test-token';\n eventTrigger.case_fields = case_fields;\n eventTrigger.can_save_draft = can_save_draft;\n return eventTrigger;\n};\n\nexport const aCaseField = (id: string, label: string, type: FieldTypeEnum, display_context: string,\n show_summary_content_option: number, typeComplexFields: CaseField[] = [],\n retain_hidden_value?: boolean, hidden?: boolean): CaseField => {\n return ({\n id: id || 'personFirstName',\n field_type: {\n id: type.toString() || 'Text',\n type: type || 'Text',\n complex_fields: typeComplexFields || []\n },\n display_context: display_context || 'OPTIONAL',\n label: label || 'First name',\n show_summary_content_option,\n retain_hidden_value: retain_hidden_value || false,\n hidden: hidden || false\n }) as CaseField;\n};\n\nexport const createWizardPage = (id: string,\n label: string,\n order: number,\n wizardPageFields: WizardPageField[] = [],\n caseFields: CaseField[] = [],\n showCondition: string,\n parsedShowCondition: ShowCondition = null): WizardPage => {\n const wizardPage = new WizardPage();\n wizardPage.id = id;\n wizardPage.label = label;\n wizardPage.order = order;\n wizardPage.wizard_page_fields = wizardPageFields;\n wizardPage.case_fields = caseFields;\n wizardPage.show_condition = showCondition;\n wizardPage.parsedShowCondition = parsedShowCondition;\n return wizardPage;\n};\n\nexport const createWizardPageField = (id: string,\n order: number,\n pageColumnNumber: number,\n complexFieldOverrides: ComplexFieldOverride[] = []): WizardPageField => {\n const wizardPageField = new WizardPageField();\n wizardPageField.case_field_id = id;\n wizardPageField.order = order;\n wizardPageField.page_column_no = pageColumnNumber;\n wizardPageField.complex_field_overrides = complexFieldOverrides;\n return wizardPageField;\n};\n\nexport const createComplexFieldOverride = (id: string,\n order: number,\n displayContext: string,\n label: string,\n hint: string,\n showCondition: string): ComplexFieldOverride => {\n const complexFieldOverride = new ComplexFieldOverride();\n complexFieldOverride.complex_field_element_id = id;\n complexFieldOverride.display_context = displayContext;\n complexFieldOverride.label = label;\n complexFieldOverride.hint_text = hint;\n complexFieldOverride.show_condition = showCondition;\n return complexFieldOverride;\n};\n\nexport const createHiddenComplexFieldOverride = (id: string): ComplexFieldOverride => {\n const complexFieldOverride = new ComplexFieldOverride();\n complexFieldOverride.complex_field_element_id = id;\n complexFieldOverride.display_context = 'HIDDEN';\n return complexFieldOverride;\n};\n\nexport const createCaseField = (id: string,\n label: string,\n hint: string,\n fieldType: FieldType,\n display_context: string,\n order = undefined,\n show_condition = undefined,\n ACLs: AccessControlList[] = undefined,\n hidden?: boolean): CaseField => {\n return CaseFieldBuilder.create()\n .withId(id || 'personFirstName')\n .withFieldType(fieldType || textFieldType())\n .withDisplayContext(display_context || 'OPTIONAL')\n .withLabel(label || 'First name')\n .withHintText(hint || 'First name hint text')\n .withShowSummaryContentOption(0)\n .withOrder(order)\n .withShowCondition(show_condition || undefined)\n .withACLs(ACLs)\n .withHidden(hidden || false)\n .build();\n};\n\nexport const newCaseField = (id: string,\n label: string,\n hint: string,\n fieldType: FieldType,\n display_context: string,\n order = undefined): CaseFieldBuilder => {\n return CaseFieldBuilder.create()\n .withId(id || 'personFirstName')\n .withFieldType(fieldType || textFieldType())\n .withDisplayContext(display_context || 'OPTIONAL')\n .withHintText(hint || 'First name hint text')\n .withLabel(label || 'First name')\n .withOrder(order)\n .withShowSummaryContentOption(0);\n};\n\nexport const createFieldType = (typeId: string,\n type: FieldTypeEnum,\n complex_fields: CaseField[] = [],\n collection_field_type: FieldType = undefined): FieldType => {\n return {\n id: typeId || 'Text',\n type: type || 'Text',\n complex_fields: complex_fields || [],\n collection_field_type: collection_field_type || undefined\n };\n};\n\nexport const createFixedListFieldType = (typeId: string,\n fixedListItems: FixedListItem[] = []): FieldType => {\n return {\n id: 'FixedList-' + typeId,\n type: 'FixedList',\n fixed_list_items: fixedListItems || []\n };\n};\n\nexport const createMultiSelectListFieldType = (typeId: string,\n fixedListItems: FixedListItem[] = []): FieldType => {\n return {\n id: 'MultiSelectList-' + typeId,\n type: 'MultiSelectList',\n fixed_list_items: fixedListItems || []\n };\n};\n\nexport const createACL = (role: string, create: boolean, read: boolean, update: boolean, _delete: boolean): AccessControlList => {\n return ({\n role: role || 'roleX',\n create,\n read,\n update,\n delete: _delete\n }) as AccessControlList;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Draft, DRAFT_PREFIX } from '../../domain/draft.model';\n\n@Pipe({\n name: 'ccdCaseReference'\n})\nexport class CaseReferencePipe implements PipeTransform {\n\n public transform(caseReference: string): string {\n if (!caseReference) {\n return '';\n }\n if (Draft.isDraft(caseReference)) {\n return DRAFT_PREFIX;\n } else {\n const regex = /(?:\\/)?(\\d{4})(\\d{4})(\\d{4})(\\d{4})/g;\n const result = String(caseReference).replace(regex, (match,\n g1, g2, g3, g4) => {\n const isLink = match[0] === '/';\n if (isLink) {\n return match;\n }\n\n return [g1, g2, g3, g4].join('-');\n });\n\n return result;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { PlaceholderService } from '../../directives/substitutor/services/placeholder.service';\nimport { CaseField } from '../../domain/definition/case-field.model';\nimport { FieldsUtils } from '../../services/fields/fields.utils';\n\n@Pipe({\n name: 'ccdCaseTitle'\n})\nexport class CcdCaseTitlePipe implements PipeTransform {\n constructor(private readonly placeholderService: PlaceholderService, private readonly fieldsUtils: FieldsUtils) {\n }\n public transform(caseTitle: string, caseFields: CaseField[], values: any): any {\n const caseFieldValues = this.getReadOnlyAndFormFields(values, caseFields);\n const result = this.placeholderService.resolvePlaceholders(caseFieldValues, caseTitle);\n return result;\n }\n\n private getReadOnlyAndFormFields(formGroup, caseFields: CaseField[]): any {\n return this.fieldsUtils.mergeLabelCaseFieldsAndFormFields(caseFields, formGroup.getRawValue());\n }\n\n}\n","export enum SortOrder {\n\n ASCENDING, DESCENDING, UNSORTED\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isUndefined } from 'util';\nimport { SortOrder } from '../../../components/palette/complex/sort-order';\nimport { SearchResultViewItem } from '../../../domain/search/search-result-view-item.model';\nimport { SortParameters } from '../../../domain/search/sorting/sort-parameters';\n\n@Pipe({\n name: 'ccdSortSearchResult'\n})\nexport class SortSearchResultPipe implements PipeTransform {\n\n public transform(searchResults: SearchResultViewItem[], sortParameters: SortParameters) {\n\n if (isUndefined(searchResults) || isUndefined(sortParameters)) {\n return searchResults;\n }\n return searchResults.sort(\n (a, b) => {\n return sortParameters.comparator.compare(a, b)\n * (sortParameters.sortOrder === SortOrder.DESCENDING ? 1 : -1);\n }\n );\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CaseReferencePipe } from './case-reference';\nimport { CcdCaseTitlePipe } from './case-title';\nimport { SortSearchResultPipe } from './search-result/sorting/sort-search-result.pipe';\n\n@NgModule({\n imports: [\n CommonModule,\n ],\n declarations: [\n CaseReferencePipe,\n SortSearchResultPipe,\n CcdCaseTitlePipe\n ],\n exports: [\n CaseReferencePipe,\n SortSearchResultPipe,\n CcdCaseTitlePipe\n ]\n})\nexport class PipesModule {}\n","export interface AccessManagementBasicViewMockModel {\n active?: boolean;\n basicFields?: {\n caseNameHmctsInternal?: string,\n caseManagementLocation?: {\n baseLocation?: number\n }\n };\n accessProcess?: string;\n}\n\nexport interface AccessManagementRequestReviewMockModel {\n active?: boolean;\n details?: {\n caseName: string;\n caseReference: string;\n dateSubmitted: string;\n requestFrom: string;\n reasonForCaseAccess: string;\n };\n accessProcess?: string;\n}\n\nexport abstract class AbstractAppConfig {\n public abstract load(): Promise<void>;\n public abstract getLoginUrl(): string;\n public abstract getApiUrl(): string;\n public abstract getCaseDataUrl(): string;\n public abstract getDocumentManagementUrl(): string;\n public getDocumentManagementUrlV2(): string {\n return undefined;\n }\n public getDocumentSecureMode(): boolean {\n return undefined;\n }\n public abstract getRemoteDocumentManagementUrl(): string;\n public abstract getHrsUrl(): string;\n public abstract getRemoteHrsUrl(): string;\n public abstract getAnnotationApiUrl(): string;\n public abstract getPostcodeLookupUrl(): string;\n public abstract getOAuth2ClientId(): string;\n public abstract getPaymentsUrl(): string;\n public abstract getPayBulkScanBaseUrl(): string;\n public abstract getCreateOrUpdateDraftsUrl(ctid: string): string;\n public abstract getViewOrDeleteDraftsUrl(did: string): string;\n public abstract getActivityUrl(): string;\n public abstract getActivityNexPollRequestMs(): number;\n public abstract getActivityRetry(): number;\n public abstract getActivityBatchCollectionDelayMs(): number;\n public abstract getActivityMaxRequestPerBatch(): number;\n public abstract getCaseHistoryUrl(caseId: string, eventId: string): string;\n public abstract getPrintServiceUrl(): string;\n /**\n * Dummy version replacing deprecated `getRemotePrintServiceUrl()`, to be removed in next major release\n * @deprecated\n * @returns `undefined`\n */\n public getRemotePrintServiceUrl(): string {\n return undefined;\n }\n public abstract getPaginationPageSize(): number;\n public abstract getBannersUrl(): string;\n public abstract getPrdUrl(): string;\n public abstract getCacheTimeOut(): number;\n public abstract getWorkAllocationApiUrl(): string;\n public getUserInfoApiUrl(): string {\n return undefined;\n }\n public getAccessManagementMode(): boolean {\n return undefined;\n }\n public getAccessManagementBasicViewMock(): AccessManagementBasicViewMockModel {\n return undefined;\n }\n public getAccessManagementRequestReviewMockModel(): AccessManagementRequestReviewMockModel {\n return undefined;\n }\n public getLocationRefApiUrl(): string {\n return undefined;\n }\n public getCamRoleAssignmentsApiUrl(): string {\n return undefined;\n }\n public abstract getRefundsUrl(): string;\n public abstract getPaymentReturnUrl(): string;\n}\n\nexport class CaseEditorConfig {\n public api_url: string;\n public case_data_url: string;\n public document_management_url: string;\n public document_management_url_v2: string;\n public hrs_url: string;\n public document_management_secure_enabled: boolean;\n public login_url: string;\n public oauth2_client_id: string;\n public postcode_lookup_url: string;\n public remote_document_management_url: string;\n public remote_hrs_url: string;\n public annotation_api_url: string;\n public payments_url: string;\n public pay_bulk_scan_url: string;\n public activity_batch_collection_delay_ms: number;\n public activity_next_poll_request_ms: number;\n public activity_retry: number;\n public activity_url: string;\n public activity_max_request_per_batch: number;\n public print_service_url: string;\n /**\n * remote_print_service_url marked as optional since deprecation, ahead of removal in next major release\n * @deprecated\n */\n public remote_print_service_url?: string;\n public pagination_page_size: number;\n public prd_url: string;\n public cache_time_out: number;\n public work_allocation_api_url: string;\n public user_info_api_url: string;\n public access_management_mode?: boolean;\n public access_management_basic_view_mock?: {\n active?: boolean,\n basicFields?: {\n caseNameHmctsInternal?: string,\n caseManagementLocation?: {\n baseLocation?: number\n }\n },\n accessProcess?: string\n };\n public access_management_request_review_mock?: {\n active?: boolean;\n details?: {\n caseName: string;\n caseReference: string;\n dateSubmitted: string;\n requestFrom: string;\n reasonForCaseAccess: string;\n };\n accessProcess?: string;\n };\n public location_ref_api_url?: string;\n public cam_role_assignments_api_url?: string;\n public refunds_url: string;\n public payment_return_url: string;\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { AbstractAppConfig } from '../../../app.config';\n\n/**\n * `Oauth2Service` and `AuthService` cannot be merged as it creates a cyclic dependency on `AuthService` through `HttpErrorService`.\n */\n@Injectable()\nexport class AuthService {\n\n private static readonly PATH_OAUTH2_REDIRECT = '/oauth2redirect';\n\n constructor(private readonly appConfig: AbstractAppConfig,\n @Inject(DOCUMENT) private readonly document: any) {}\n\n public signIn(): void {\n const loginUrl = this.appConfig.getLoginUrl();\n const clientId = this.appConfig.getOAuth2ClientId();\n const redirectUri = encodeURIComponent(this.redirectUri());\n\n this.document.location.href = `${loginUrl}?response_type=code&client_id=${clientId}&redirect_uri=${redirectUri}`;\n }\n\n public redirectUri(): string {\n return this.document.location.origin + AuthService.PATH_OAUTH2_REDIRECT;\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { HttpError } from '../../domain/http/http-error.model';\nimport { AuthService } from '../auth/auth.service';\n\n\n@Injectable()\nexport class HttpErrorService {\n\n constructor(private readonly authService: AuthService) {}\n\n private static readonly CONTENT_TYPE = 'Content-Type';\n private static readonly JSON = 'json';\n\n private error: HttpError;\n public static convertToHttpError(error: HttpErrorResponse | any): HttpError {\n if (error instanceof HttpError) {\n return error;\n }\n let httpError = new HttpError();\n if (error instanceof HttpErrorResponse) {\n if (error.headers\n && error.headers.get(HttpErrorService.CONTENT_TYPE)\n && error.headers.get(HttpErrorService.CONTENT_TYPE).indexOf(HttpErrorService.JSON) !== -1) {\n try {\n httpError = HttpError.from(error);\n } catch (e) {\n console.error(e, e.message);\n }\n }\n if (!httpError.status) {\n httpError.status = error.status;\n }\n } else if (error) {\n if (error.message) {\n httpError.message = error.message;\n }\n if (error.status) {\n httpError.status = error.status;\n }\n }\n return httpError;\n }\n\n public setError(error: HttpError) {\n this.error = error;\n }\n\n public removeError(): HttpError {\n const error = this.error;\n this.error = null;\n return error;\n }\n\n public handle(error: HttpErrorResponse | any, redirectIfNotAuthorised = true): Observable<never> {\n const httpError: HttpError = HttpErrorService.convertToHttpError(error);\n if (redirectIfNotAuthorised && (httpError.status === 401 || httpError.status === 403)) {\n this.authService.signIn();\n }\n return throwError(httpError);\n }\n}\n","import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { HttpError } from '../../domain/http/http-error.model';\nimport { HttpErrorService } from './http-error.service';\n\n@Injectable()\nexport class HttpService {\n\n private static readonly HEADER_ACCEPT = 'Accept';\n private static readonly HEADER_CONTENT_TYPE = 'Content-Type';\n\n constructor(\n private readonly httpclient: HttpClient,\n private readonly httpErrorService: HttpErrorService\n ) {}\n\n /**\n *\n * @param url Url resolved using UrlResolverService\n * @param options OptionsType\n * @returns Observable<any> return value\n * @see UrlResolverService\n */\n\n public get(\n url: string,\n options?: OptionsType,\n redirectIfNotAuthorised = true,\n errorHandler?: (error: HttpErrorResponse) => HttpError): Observable<any> {\n return this.httpclient\n .get(url, this.setDefaultValue(options))\n .pipe(\n catchError((res: HttpErrorResponse) => {\n let error: HttpErrorResponse | HttpError = res;\n if (typeof errorHandler === 'function') {\n error = errorHandler(res);\n }\n return this.httpErrorService.handle(error, redirectIfNotAuthorised);\n })\n );\n }\n\n /**\n *\n * @param url Url resolved using UrlResolverService\n * @param body Body for post\n * @param options OptionsType\n * @returns Observable<any> return value\n * @see UrlResolverService\n */\n public post(url: string, body: any, options?: OptionsType, redirectIfNotAuthorised = true): Observable<any> {\n return this.httpclient\n .post(url, body, this.setDefaultValue(options))\n .pipe(\n catchError((res: HttpErrorResponse) => {\n return this.httpErrorService.handle(res, redirectIfNotAuthorised);\n })\n );\n }\n\n /**\n *\n * @param url Url resolved using UrlResolverService\n * @param body Body for post\n * @param options OptionsType\n * @returns Observable<any> return value\n * @see UrlResolverService\n */\n public put(url: string, body: any, options?: OptionsType): Observable<any> {\n return this.httpclient\n .put(url, body, this.setDefaultValue(options))\n .pipe(\n catchError((res: HttpErrorResponse) => {\n return this.httpErrorService.handle(res);\n })\n );\n }\n\n /**\n *\n * @param url Url resolved using UrlResolverService\n * @param options OptionsType\n * @returns Observable<any> return value\n * @see UrlResolverService\n */\n public delete(url: string, options?: OptionsType): Observable<any> {\n return this.httpclient\n .delete(url, this.setDefaultValue(options))\n .pipe(\n catchError((res: HttpErrorResponse) => {\n return this.httpErrorService.handle(res);\n })\n );\n }\n\n public setDefaultValue(options?: OptionsType): OptionsType {\n options = options || {observe: 'body'};\n options.withCredentials = true;\n\n if (!options.headers) {\n options.headers = new HttpHeaders()\n .set(HttpService.HEADER_ACCEPT, 'application/json')\n .set(HttpService.HEADER_CONTENT_TYPE, 'application/json');\n }\n return options;\n }\n}\n\nexport interface OptionsType {\n headers?: HttpHeaders;\n observe: 'body';\n params?: HttpParams | { [param: string]: string | string[]; };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class SessionStorageService {\n\n /**\n * Get an item from the session storage.\n */\n public getItem(key: string): string {\n return sessionStorage.getItem(key);\n }\n\n /**\n * Set an item in the session storage.\n */\n public setItem(key: string, value: string): void {\n sessionStorage.setItem(key, value);\n }\n\n /**\n * Remove an item from the session storage.\n */\n public removeItem(key: string): void {\n sessionStorage.removeItem(key);\n }\n\n /**\n * Clear all the items held in session storage.\n */\n public clear(): void {\n sessionStorage.clear();\n }\n}\n","import { HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { AbstractAppConfig } from '../../../app.config';\nimport { Activity } from '../../domain/activity/activity.model';\nimport { HttpError } from '../../domain/http/http-error.model';\nimport { HttpErrorService, HttpService, OptionsType } from '../http';\nimport { SessionStorageService } from '../session';\n\n// @dynamic\n@Injectable()\nexport class ActivityService {\n public static get ACTIVITY_VIEW() { return 'view'; }\n public static get ACTIVITY_EDIT() { return 'edit'; }\n\n constructor(\n private readonly http: HttpService,\n private readonly appConfig: AbstractAppConfig,\n private readonly sessionStorageService: SessionStorageService\n ) {}\n\n public get isEnabled(): boolean {\n return this.activityUrl() && this.userAuthorised;\n }\n public static readonly DUMMY_CASE_REFERENCE = '0';\n\n private userAuthorised: boolean = undefined;\n\n private static handleHttpError(response: HttpErrorResponse): HttpError {\n const error: HttpError = HttpErrorService.convertToHttpError(response);\n if (response.status && response.status !== error.status) {\n error.status = response.status;\n }\n return error;\n }\n\n public getOptions(): OptionsType {\n const userDetails = JSON.parse(this.sessionStorageService.getItem('userDetails'));\n const headers = new HttpHeaders().set('Content-Type', 'application/json').set('Authorization', userDetails.token);\n const options: OptionsType = {\n headers,\n withCredentials: true,\n observe: 'body',\n };\n return options;\n }\n\n public getActivities(...caseId: string[]): Observable<Activity[]> {\n try {\n const options = this.getOptions();\n const url = this.activityUrl() + `/cases/${caseId.join(',')}/activity`;\n return this.http\n .get(url, options, false, ActivityService.handleHttpError)\n .pipe(\n map(response => response)\n );\n } catch (error) {\n console.log('user may not be authenticated.' + error);\n }\n }\n\n public postActivity(caseId: string, activity: string): Observable<Activity[]> {\n try {\n const options = this.getOptions();\n const url = this.activityUrl() + `/cases/${caseId}/activity`;\n const body = { activity };\n return this.http\n .post(url, body, options, false)\n .pipe(\n map(response => response)\n );\n } catch (error) {\n console.log('user may not be authenticated.' + error);\n }\n }\n\n public verifyUserIsAuthorized(): void {\n if (this.sessionStorageService.getItem('userDetails') === undefined) {\n return;\n }\n if (this.activityUrl() && this.userAuthorised === undefined) {\n this.getActivities(ActivityService.DUMMY_CASE_REFERENCE).subscribe(\n () => this.userAuthorised = true,\n error => {\n if ([401, 403].indexOf(error.status) > -1) {\n this.userAuthorised = false;\n } else {\n this.userAuthorised = true;\n }\n }\n );\n }\n }\n\n private activityUrl(): string {\n return this.appConfig.getActivityUrl();\n }\n\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport polling, { IOptions } from 'rx-polling';\nimport { EMPTY, Observable, Subject, Subscription } from 'rxjs';\nimport { AbstractAppConfig } from '../../../app.config';\nimport { Activity } from '../../domain/activity/activity.model';\nimport { ActivityService } from './activity.service';\n\n// @dynamic\n@Injectable()\nexport class ActivityPollingService {\n\n private readonly pendingRequests = new Map<string, Subject<Activity>>();\n private currentTimeoutHandle: any;\n private pollActivitiesSubscription: Subscription;\n private readonly pollConfig: IOptions;\n private readonly batchCollectionDelayMs: number;\n private readonly maxRequestsPerBatch: number;\n\n constructor(private readonly activityService: ActivityService, private readonly ngZone: NgZone, private readonly config: AbstractAppConfig) {\n this.pollConfig = {\n interval: config.getActivityNexPollRequestMs(),\n attempts: config.getActivityRetry(),\n backgroundPolling: true\n };\n this.batchCollectionDelayMs = config.getActivityBatchCollectionDelayMs();\n this.maxRequestsPerBatch = config.getActivityMaxRequestPerBatch();\n }\n\n public get isEnabled(): boolean {\n return this.activityService.isEnabled;\n }\n\n public subscribeToActivity(caseId: string, done: (activity: Activity) => void): Subject<Activity> {\n if (!this.isEnabled) {\n return new Subject<Activity>();\n }\n\n let subject = this.pendingRequests.get(caseId);\n if (subject) {\n subject.subscribe(done);\n } else {\n subject = new Subject<Activity>();\n subject.subscribe(done);\n this.pendingRequests.set(caseId, subject);\n }\n if (this.pendingRequests.size === 1) {\n this.ngZone.runOutsideAngular(() => {\n this.currentTimeoutHandle = setTimeout(\n () => this.ngZone.run(() => {\n // console.log('timeout: flushing requests')\n this.flushRequests();\n }),\n this.batchCollectionDelayMs);\n });\n }\n\n if (this.pendingRequests.size >= this.maxRequestsPerBatch) {\n // console.log('max pending hit: flushing requests');\n this.flushRequests();\n }\n return subject;\n }\n\n public stopPolling() {\n if (this.pollActivitiesSubscription) {\n this.pollActivitiesSubscription.unsubscribe();\n }\n }\n\n public flushRequests(): void {\n if (this.currentTimeoutHandle) {\n clearTimeout(this.currentTimeoutHandle);\n this.currentTimeoutHandle = undefined;\n }\n\n const requests = new Map(this.pendingRequests);\n this.pendingRequests.clear();\n this.performBatchRequest(requests);\n }\n\n public pollActivities(...caseIds: string[]): Observable<Activity[]> {\n if (!this.isEnabled) {\n return EMPTY;\n }\n\n return polling(this.activityService.getActivities(...caseIds), this.pollConfig);\n }\n\n public postViewActivity(caseId: string): Observable<Activity[]> {\n return this.postActivity(caseId, ActivityService.ACTIVITY_VIEW);\n }\n\n public postEditActivity(caseId: string): Observable<Activity[]> {\n return this.postActivity(caseId, ActivityService.ACTIVITY_EDIT);\n }\n\n protected performBatchRequest(requests: Map<string, Subject<Activity>>): void {\n const caseIds = Array.from(requests.keys()).join();\n // console.log('issuing batch request for cases: ' + caseIds);\n this.ngZone.runOutsideAngular( () => {\n // run polling outside angular zone so it does not trigger change detection\n this.pollActivitiesSubscription = this.pollActivities(caseIds).subscribe(\n // process activity inside zone so it triggers change detection for activity.component.ts\n (activities: Activity[]) => this.ngZone.run( () => {\n activities.forEach((activity) => {\n // console.log('pushing activity: ' + activity.caseId);\n requests.get(activity.caseId).next(activity);\n });\n },\n (err) => {\n console.log('error: ' + err);\n Array.from(requests.values()).forEach((subject) => subject.error(err));\n }\n )\n );\n });\n }\n\n private postActivity(caseId: string, activityType: string): Observable<Activity[]> {\n if (!this.isEnabled) {\n return EMPTY;\n }\n\n const pollingConfig = {\n ...this.pollConfig,\n interval: 5000 // inline with CCD Backend\n };\n\n return polling(this.activityService.postActivity(caseId, activityType), pollingConfig);\n }\n}\n","import { AddressModel } from '../../domain/addresses/address.model';\nimport { AddressesService } from './addresses.service';\n\n/**\n * Moving all this logic here into Address Parser class, so that it\n * will be easier for us when we move this parsing logic to into\n * `Shim` java service.\n */\n export class AddressParser {\n public parse(address: any) {\n const classification = `${address.CLASSIFICATION_CODE}`;\n const addressModel = new AddressModel();\n addressModel.AddressLine1 = this.parseAddressLine1(classification, address);\n addressModel.AddressLine2 = this.parseAddressLine2(classification, address);\n addressModel.AddressLine3 = this.parseAddressLine3(classification, address);\n addressModel.PostCode = address.POSTCODE;\n addressModel.PostTown = address.POST_TOWN;\n addressModel.Country = AddressesService.UK;\n return addressModel;\n }\n\n private parseAddressLine1(classification: string, address: any) {\n let addressLine = '';\n if (classification === AddressesService.RD06) {\n addressLine =\n `${address.SUB_BUILDING_NAME} ${address.ORGANISATION_NAME} ${address.DEPARTMENT_NAME} ${address.PO_BOX_NUMBER}`;\n } else {\n addressLine =\n `${address.ORGANISATION_NAME}${this.prefixWithCommaIfPresent(address.BUILDING_NAME)}` +\n `${address.DEPARTMENT_NAME} ${address.PO_BOX_NUMBER}`;\n }\n return this.removeNonAddressValues(addressLine);\n }\n\n private parseAddressLine2(classification: string, address: any) {\n let addressLine = '';\n if (classification === AddressesService.RD06) {\n addressLine = `${address.BUILDING_NAME} `;\n } else {\n addressLine =\n `${address.SUB_BUILDING_NAME} ${address.BUILDING_NUMBER} ${address.THOROUGHFARE_NAME}`;\n }\n return this.removeNonAddressValues(addressLine);\n }\n\n private parseAddressLine3(classification: string, address: any) {\n let addressLine = '';\n if (classification === AddressesService.RD06) {\n addressLine =\n `${address.BUILDING_NUMBER} ${address.THOROUGHFARE_NAME}`;\n } else {\n addressLine =\n `${address.DEPENDENT_LOCALITY} ${address.DOUBLE_DEPENDENT_LOCALITY} ${address.DEPENDENT_THOROUGHFARE_NAME}`;\n }\n return this.removeNonAddressValues(addressLine);\n }\n\n private removeNonAddressValues(line: string) {\n line = line.replace(' null', ' ').replace('null ', ' ');\n line = this.removeUndefinedString(line);\n line = this.removeInitialComma(line);\n line = this.removeEmptySpaces(line);\n return line;\n }\n\n private removeUndefinedString(value: string) {\n return value.replace(new RegExp('undefined', 'gi'), '');\n }\n\n private removeEmptySpaces(value: string) {\n return value.replace(new RegExp(' +', 'gi'), ' ').trim();\n }\n\n private removeInitialComma(value: string) {\n return value.replace(new RegExp('^,', 'gi'), '');\n }\n\n private prefixWithCommaIfPresent(value: string) {\n return value ? ', ' + value : value;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AbstractAppConfig } from '../../../app.config';\nimport { AddressModel } from '../../domain/addresses';\nimport { HttpService } from '../http';\nimport { AddressParser } from './address-parser';\n\n@Injectable()\nexport class AddressesService {\n\n public static readonly DPA = 'DPA';\n\n public static readonly UK = 'United Kingdom';\n\n public static readonly RD06 = 'RD06';\n\n constructor(private readonly http: HttpService, private readonly appConfig: AbstractAppConfig) {\n }\n\n public getAddressesForPostcode(postcode: string): Observable<AddressModel[]> {\n return this.http\n .get(this.appConfig.getPostcodeLookupUrl()\n .replace('${postcode}', postcode), undefined, false)\n .pipe(\n map(res => res.results))\n .pipe(\n map(output => output.map(addresses =>\n this.format(new AddressParser().parse(addresses[AddressesService.DPA]))\n ))\n );\n }\n\n private format(addressModel: AddressModel) {\n return this.formatAddressLines(this.shiftAddressLinesUp(addressModel));\n }\n\n private formatAddressLines(addressModel: AddressModel) {\n ['AddressLine1', 'AddressLine2', 'AddressLine3', 'PostTown'].forEach(value => {\n addressModel[value] = this.toCapitalCase(addressModel[value]);\n });\n return addressModel;\n }\n\n private shiftAddressLinesUp(addressModel: AddressModel) {\n if (addressModel.AddressLine2 === '') {\n addressModel.AddressLine2 = addressModel.AddressLine3;\n addressModel.AddressLine3 = '';\n }\n if (addressModel.AddressLine1 === '') {\n addressModel.AddressLine1 = addressModel.AddressLine2;\n addressModel.AddressLine2 = '';\n }\n return addressModel;\n }\n\n private toCapitalCase(sentence: string) {\n sentence = sentence.toLowerCase();\n sentence.split(' ').forEach((value, index) => {\n sentence = sentence.replace(value, value.charAt(0).toUpperCase() + value.substr(1));\n }\n );\n return sentence;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { ConnectableObservable, Observable, Observer } from 'rxjs';\nimport { publish, refCount } from 'rxjs/operators';\nimport { AlertLevel } from '../../domain/alert/alert-level.model';\nimport { Alert } from '../../domain/alert/alert.model';\n\n@Injectable()\nexport class AlertService {\n // the preserved messages\n public preservedError = '';\n public preservedWarning = '';\n public preservedSuccess = '';\n\n // TODO: Remove\n public message: string;\n public level: AlertLevel;\n\n public successes: ConnectableObservable<Alert>;\n public errors: ConnectableObservable<Alert>;\n public warnings: ConnectableObservable<Alert>;\n // TODO: Remove\n public alerts: ConnectableObservable<Alert>;\n\n private successObserver: Observer<Alert>;\n private errorObserver: Observer<Alert>;\n private warningObserver: Observer<Alert>;\n // TODO: Remove\n private alertObserver: Observer<Alert>;\n\n private preserveAlerts = false;\n\n constructor(private readonly router: Router) {\n\n this.successes = Observable\n .create(observer => this.successObserver = observer).pipe(\n publish(),\n refCount()\n );\n this.successes.subscribe();\n\n this.errors = Observable\n .create(observer => this.errorObserver = observer).pipe(\n publish(),\n refCount()\n );\n this.errors.subscribe();\n\n this.warnings = Observable\n .create(observer => this.warningObserver = observer).pipe(\n publish(),\n refCount()\n );\n this.warnings.subscribe();\n\n // TODO: Remove\n this.alerts = Observable\n .create(observer => this.alertObserver = observer).pipe(\n publish(),\n refCount()\n );\n this.alerts.subscribe();\n\n this.router\n .events\n .subscribe(event => {\n if (event instanceof NavigationStart) {\n // if there is no longer a preserve alerts setting for the page then clear all observers and preserved messages\n if (!this.preserveAlerts) {\n this.clear();\n }\n // if not, then set the preserving of alerts to false so rendering to a new page\n this.preserveAlerts = false;\n }\n });\n }\n\n public clear(): void {\n this.successObserver.next(null);\n this.errorObserver.next(null);\n this.warningObserver.next(null);\n this.preservedError = '';\n this.preservedWarning = '';\n this.preservedSuccess = '';\n\n // EUI-3381.\n this.alertObserver.next(null);\n this.message = '';\n }\n\n public error(message: string): void {\n this.preservedError = this.preserveMessages(message);\n const alert: Alert = { level: 'error', message };\n this.errorObserver.next(alert);\n\n // EUI-3381.\n this.push(alert);\n }\n\n public warning(message: string): void {\n this.preservedWarning = this.preserveMessages(message);\n const alert: Alert = { level: 'warning', message };\n this.warningObserver.next(alert);\n\n // EUI-3381.\n this.push(alert);\n }\n\n public success(message: string, preserve = false): void {\n this.preservedSuccess = this.preserveMessages(message);\n this.preserveAlerts = preserve || this.preserveAlerts;\n const alert: Alert = { level: 'success', message };\n this.successObserver.next(alert);\n\n // EUI-3381.\n this.push(alert);\n }\n\n public setPreserveAlerts(preserve: boolean, urlInfo?: string[]) {\n // if there is no url setting then just preserve the messages\n if (!urlInfo) {\n this.preserveAlerts = preserve;\n } else {\n // check if the url includes the sting given\n this.preserveAlerts = this.currentUrlIncludesInfo(preserve, urlInfo);\n }\n }\n\n public currentUrlIncludesInfo(preserve: boolean, urlInfo: string[]): boolean {\n // loop through the list of strings and check the router includes all of them\n for (const urlSnip of urlInfo) {\n if (!this.router.url.includes(urlSnip)) {\n // return the opposite boolean value if the router does not include one of the strings\n return !preserve;\n }\n }\n // return the boolean value if all strings are in the url\n return preserve;\n }\n\n public isPreserveAlerts(): boolean {\n return this.preserveAlerts;\n }\n\n public preserveMessages(message: string): string {\n // preserve the messages if set to preserve them\n if (this.isPreserveAlerts()) {\n return message;\n } else {\n return '';\n }\n }\n\n // TODO: Remove\n public push(msgObject) {\n this.message = msgObject.message;\n this.level = msgObject.level;\n\n this.alertObserver.next({\n level: this.level,\n message: this.message\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CaseField } from '../../domain/definition/case-field.model';\n\n@Injectable()\nexport class CaseFieldService {\n\n public isOptional (field: CaseField) {\n if (!field || !field.display_context) {\n return false;\n }\n return field.display_context.toUpperCase() === 'OPTIONAL';\n }\n\n public isReadOnly (field: CaseField) {\n if (!field || !field.display_context) {\n return false;\n }\n return field.display_context.toUpperCase() === 'READONLY';\n }\n\n public isMandatory (field: CaseField) {\n if (!field || !field.display_context) {\n return false;\n }\n return field.display_context.toUpperCase() === 'MANDATORY';\n }\n\n public isLabel (field: CaseField) {\n if (!field || !field.field_type) {\n return false;\n }\n return field.field_type.type === 'Label';\n }\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { AbstractAppConfig } from '../../../app.config';\nimport { DocumentData } from '../../domain/document/document-data.model';\nimport { HttpService } from '../http';\n\n@Injectable()\nexport class DocumentManagementService {\n private static readonly PDF = 'pdf';\n private static readonly IMAGE = 'image';\n private static readonly WORD = 'word';\n private static readonly EXCEL = 'excel';\n private static readonly POWERPOINT = 'powerpoint';\n private static readonly TXT = 'txt';\n private static readonly RTF = 'rtf';\n\n // This delay has been added to give enough time to the user on the UI to see the info messages on the document upload\n // field for cases when uploads are very fast.\n private static readonly RESPONSE_DELAY = 1000;\n\n private static readonly imagesList: string[] = ['GIF', 'JPG', 'JPEG', 'PNG', 'gif', 'jpg', 'jpeg', 'png'];\n private static readonly wordList: string[] = ['DOC', 'DOCX', 'doc', 'docx'];\n private static readonly excelList: string[] = ['XLS', 'XLSX', 'xls', 'xlsx'];\n private static readonly powerpointList: string[] = ['PPT', 'PPTX', 'ppt', 'pptx'];\n\n constructor(private readonly http: HttpService, private readonly appConfig: AbstractAppConfig) {}\n\n public uploadFile(formData: FormData): Observable<DocumentData> {\n const url = this.getDocStoreUrl();\n // Do not set any headers, such as \"Accept\" or \"Content-Type\", with null values; this is not permitted with the\n // Angular HttpClient in @angular/common/http. Just create and pass a new HttpHeaders object. Angular will add the\n // correct headers and values automatically\n const headers = new HttpHeaders();\n return this.http\n .post(url, formData, {headers, observe: 'body'})\n .pipe(delay(DocumentManagementService.RESPONSE_DELAY));\n }\n\n public getMediaViewerInfo(documentFieldValue: any): string {\n const mediaViewerInfo = {\n document_binary_url: this.transformDocumentUrl(documentFieldValue.document_binary_url),\n document_filename: documentFieldValue.document_filename,\n content_type: this.getContentType(documentFieldValue),\n annotation_api_url: this.appConfig.getAnnotationApiUrl(),\n case_id: documentFieldValue.id,\n case_jurisdiction: documentFieldValue.jurisdiction\n };\n return JSON.stringify(mediaViewerInfo);\n }\n\n public getContentType(documentFieldValue: any): string {\n let fileExtension = '<unknown>';\n if (documentFieldValue.document_filename) {\n const position = documentFieldValue.document_filename.lastIndexOf('.');\n if (position === documentFieldValue.document_filename.length) {\n fileExtension = '';\n } else if (position >= 0) {\n fileExtension = documentFieldValue.document_filename.slice(position + 1);\n }\n }\n if (this.isImage(fileExtension)) {\n return DocumentManagementService.IMAGE;\n } else if (this.isWord(fileExtension)) {\n return DocumentManagementService.WORD;\n } else if (this.isExcel(fileExtension)) {\n return DocumentManagementService.EXCEL;\n } else if (this.isPowerpoint(fileExtension)) {\n return DocumentManagementService.POWERPOINT;\n } else if (fileExtension.toLowerCase() === 'txt') {\n return DocumentManagementService.TXT;\n } else if (fileExtension.toLowerCase() === 'rtf') {\n return DocumentManagementService.RTF;\n } else if (fileExtension.toLowerCase() === 'pdf') {\n return DocumentManagementService.PDF;\n } else {\n return fileExtension;\n }\n }\n\n public isImage(imageType: string): boolean {\n return DocumentManagementService.imagesList.find(e => e === imageType) !== undefined;\n }\n\n public isWord(wordType: string): boolean {\n return DocumentManagementService.wordList.find(e => e === wordType) !== undefined;\n }\n\n public isExcel(excelType: string): boolean {\n return DocumentManagementService.excelList.find(e => e === excelType) !== undefined;\n }\n\n public isPowerpoint(powerpointType: string): boolean {\n return DocumentManagementService.powerpointList.find(e => e === powerpointType) !== undefined;\n }\n\n private transformDocumentUrl(documentBinaryUrl: string): string {\n const remoteHrsPattern = new RegExp(this.appConfig.getRemoteHrsUrl());\n documentBinaryUrl = documentBinaryUrl.replace(remoteHrsPattern, this.appConfig.getHrsUrl());\n const remoteDocumentManagementPattern = new RegExp(this.appConfig.getRemoteDocumentManagementUrl());\n return documentBinaryUrl.replace(remoteDocumentManagementPattern, this.getDocStoreUrl());\n }\n\n private getDocStoreUrl(): string {\n return this.appConfig.getDocumentSecureMode() ? this.appConfig.getDocumentManagementUrlV2() : this.appConfig.getDocumentManagementUrl();\n }\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { AbstractAppConfig } from '../../../app.config';\nimport { CaseEventData } from '../../domain/case-event-data.model';\nimport { CaseView } from '../../domain/case-view/case-view.model';\nimport { Draft, DRAFT_PREFIX } from '../../domain/draft.model';\nimport { HttpErrorService, HttpService } from '../http';\n\n@Injectable()\nexport class DraftService {\n\n public static readonly V2_MEDIATYPE_DRAFT_CREATE =\n 'application/vnd.uk.gov.hmcts.ccd-data-store-api.ui-draft-create.v2+json;charset=UTF-8';\n public static readonly V2_MEDIATYPE_DRAFT_UPDATE =\n 'application/vnd.uk.gov.hmcts.ccd-data-store-api.ui-draft-update.v2+json;charset=UTF-8';\n public static readonly V2_MEDIATYPE_DRAFT_READ =\n 'application/vnd.uk.gov.hmcts.ccd-data-store-api.ui-draft-read.v2+json;charset=UTF-8';\n public static readonly V2_MEDIATYPE_DRAFT_DELETE =\n 'application/vnd.uk.gov.hmcts.ccd-data-store-api.ui-draft-delete.v2+json;charset=UTF-8';\n\n constructor(\n private readonly http: HttpService,\n private readonly appConfig: AbstractAppConfig,\n private readonly errorService: HttpErrorService\n ) {}\n\n public createDraft(ctid: string, eventData: CaseEventData): Observable<Draft> {\n const saveDraftEndpoint = this.appConfig.getCreateOrUpdateDraftsUrl(ctid);\n const headers = new HttpHeaders()\n .set('experimental', 'true')\n .set('Accept', DraftService.V2_MEDIATYPE_DRAFT_CREATE)\n .set('Content-Type', 'application/json');\n return this.http\n .post(saveDraftEndpoint, eventData, {headers, observe: 'body'})\n .pipe(catchError((error: any): any => {\n this.errorService.setError(error);\n return throwError(error);\n }));\n }\n\n public updateDraft(ctid: string, draftId: string, eventData: CaseEventData): Observable<Draft> {\n const saveDraftEndpoint = this.appConfig.getCreateOrUpdateDraftsUrl(ctid) + draftId;\n const headers = new HttpHeaders()\n .set('experimental', 'true')\n .set('Accept', DraftService.V2_MEDIATYPE_DRAFT_UPDATE)\n .set('Content-Type', 'application/json');\n return this.http\n .put(saveDraftEndpoint, eventData, {headers, observe: 'body'})\n .pipe(catchError((error: any): any => {\n this.errorService.setError(error);\n return throwError(error);\n }));\n }\n\n public getDraft(draftId: string): Observable<CaseView> {\n const url = this.appConfig.getViewOrDeleteDraftsUrl(draftId.slice(DRAFT_PREFIX.length));\n const headers = new HttpHeaders()\n .set('experimental', 'true')\n .set('Accept', DraftService.V2_MEDIATYPE_DRAFT_READ)\n .set('Content-Type', 'application/json');\n return this.http\n .get(url, {headers, observe: 'body'})\n .pipe(\n catchError((error: any): any => {\n this.errorService.setError(error);\n return throwError(error);\n })\n );\n }\n\n public deleteDraft(draftId: string): Observable<{} | any> {\n const url = this.appConfig.getViewOrDeleteDraftsUrl(draftId.slice(DRAFT_PREFIX.length));\n const headers = new HttpHeaders()\n .set('experimental', 'true')\n .set('Accept', DraftService.V2_MEDIATYPE_DRAFT_DELETE)\n .set('Content-Type', 'application/json');\n return this.http\n .delete(url, {headers, observe: 'body'}).pipe(\n catchError((error: any): any => {\n this.errorService.setError(error);\n return throwError(error);\n })\n );\n }\n\n public createOrUpdateDraft(caseTypeId: string, draftId: string, caseEventData: CaseEventData): Observable<Draft> {\n if (!draftId) {\n return this.createDraft(caseTypeId, caseEventData);\n } else {\n return this.updateDraft(caseTypeId, Draft.stripDraftId(draftId), caseEventData);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class ErrorNotifierService {\n public errorSource: Subject<any> = new Subject<any>();\n public error = this.errorSource.asObservable();\n\n public announceError(error: any) {\n this.errorSource.next(error);\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class EventStatusService {\n public static readonly CALLBACK_STATUS_INCOMPLETE = 'INCOMPLETE_CALLBACK';\n public static readonly DELETE_DRAFT_STATUS_INCOMPLETE = 'INCOMPLETE_DELETE_DRAFT';\n public static readonly CALLBACK_STATUS_COMPLETE = 'CALLBACK_COMPLETED';\n public static readonly DELETE_DRAFT_STATUS_COMPLETE = 'DELETE_DRAFT_COMPLETED';\n\n public static isIncomplete (eventStatus: string) {\n if (!eventStatus) {\n return false;\n }\n return EventStatusService.CALLBACK_STATUS_INCOMPLETE === eventStatus\n || EventStatusService.DELETE_DRAFT_STATUS_INCOMPLETE === eventStatus;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\n\nimport { WizardPageField } from '../../components/case-editor/domain/wizard-page-field.model';\nimport { WizardPage } from '../../components/case-editor/domain/wizard-page.model';\nimport { Wizard } from '../../components/case-editor/domain/wizard.model';\nimport { ShowCondition } from '../../directives/conditional-show/domain/conditional-show.model';\nimport { CaseEventTrigger } from '../../domain/case-view/case-event-trigger.model';\nimport { CaseField } from '../../domain/definition/case-field.model';\nimport { FieldTypeEnum } from '../../domain/definition/field-type-enum.model';\nimport { FieldsUtils } from './fields.utils';\n\n// @dynamic\n@Injectable()\nexport class FieldsPurger {\n\n constructor(private readonly fieldsUtils: FieldsUtils) {}\n\n /**\n * Deletes a field value by setting the value of the corresponding {@link FormControl} to null (or an empty array\n * if the field type is `Collection`), except when the field type is `Complex` or `Document`. For `Complex` field\n * types, this recursive method is called until simple or \"base\" field types are reached. For `Document` field\n * types, its _sub-field_ `FormControl` values are set to null.\n *\n * @param formGroup The `FormGroup` instance containing the `FormControl` for the specified field\n * @param field The `CaseField` whose value is to be deleted in the backend\n * @param parentField Reference to the parent `CaseField`. Used for checking specifically where a Complex field and\n * its sub-fields have `retain_hidden_value` set to `true`, but the field's parent has it set to `false` or undefined\n */\n public deleteFieldValue(formGroup: FormGroup, field: CaseField, parentField?: CaseField): void {\n const fieldType: FieldTypeEnum = field.field_type.type;\n const fieldControl = formGroup.get(field.id);\n\n if (fieldControl) {\n switch (fieldType) {\n case 'Complex':\n /**\n * If the field is a Complex type, loop over its sub-fields and call deleteFieldValue() for:\n *\n * * Any sub-fields where retain_hidden_value is false/undefined, if the parent field has\n * retain_hidden_value = true;\n * * ALL sub-fields if the parent field has retain_hidden_value = true BUT its _own_ parent has\n * retain_hidden_value = false/undefined (thus overriding anything else);\n * * ALL sub-fields if the parent field has retain_hidden_value = false/undefined;\n * * Any Complex sub-fields *regardless of their retain_hidden_value* (in order to inspect the sub-fields\n * of a Complex type within another Complex type)\n */\n if (field.field_type.complex_fields.length > 0) {\n for (const complexSubField of field.field_type.complex_fields) {\n if ((complexSubField.field_type.type === 'Complex' && complexSubField.field_type.complex_fields.length > 0) ||\n (complexSubField.field_type.type !== 'Complex' &&\n (field.retain_hidden_value\n ? !complexSubField.retain_hidden_value || (parentField && !parentField.retain_hidden_value)\n : true))) {\n // The fieldControl is cast to a FormGroup because a Complex field type uses this as its underlying\n // implementation\n this.deleteFieldValue(fieldControl as FormGroup, complexSubField, field);\n }\n }\n }\n break;\n case 'Collection':\n // If it is a collection of Complex types, loop through each one; else fall through to be handled as a\n // collection of simple types (in the same way as MultiSelectList), unless it's a collection of Document\n // types, which requires different handling\n const collectionFieldType = field.field_type.collection_field_type;\n if (collectionFieldType.type === 'Complex' && collectionFieldType.complex_fields.length > 0) {\n // Get the array of Complex field values\n const complexFieldValues = fieldControl.value as any[];\n\n // For each Complex field value, get the ID of each sub-field within it and use as a key to find the\n // corresponding sub-CaseField (which contains the field type information)\n if (complexFieldValues) {\n complexFieldValues.forEach((fieldValue, index) => Object.keys(fieldValue.value).forEach(subFieldId => {\n // Find the sub-CaseField corresponding to the sub-field ID\n let subCaseField: CaseField;\n for (const caseField of collectionFieldType.complex_fields) {\n if (caseField.id === subFieldId) {\n subCaseField = caseField;\n break;\n }\n }\n\n // Recursively delete the sub-field value, passing in the parent FormGroup\n const parentFormGroup: FormGroup = (fieldControl as FormArray).at(index).get('value') as FormGroup;\n this.deleteFieldValue(parentFormGroup, subCaseField);\n }));\n }\n break;\n } else if (collectionFieldType.type === 'Document') {\n // Get the array of Document field values\n const documentFieldValues = fieldControl.value as any[];\n\n // For each Document field value, set all its property values to null (this is not accepted by the\n // back-end but will be handled by sanitiseObject() in FormValueService before sending - see below for\n // the single Document case)\n if (documentFieldValues) {\n documentFieldValues.forEach((fieldValue, index) => Object.keys(fieldValue.value).forEach(subFieldId => {\n // Get the FormGroup containing the FormControl for the sub-field and set its value to null\n (fieldControl as FormArray).at(index).get(`value.${subFieldId}`).setValue(null);\n }));\n }\n break;\n }\n // Omitted \"break\" is intentional because a collection should be handled as per MultiSelectList if it is\n // not a collection of Complex types\n // tslint:disable-next-line: no-switch-case-fall-through\n case 'MultiSelectList':\n // Field control should be a FormArray, so map each of its values to null\n // NOTE: The FormArray cannot just be set to an empty array because Angular checks that all existing values\n // of a FormArray are present; setting the control's value to an empty array causes a runtime error\n fieldControl.setValue(fieldControl.value.map(() => null));\n break;\n case 'Document':\n // NOTE: The field control (a FormGroup in this case) cannot just be set to null because Angular checks that\n // all existing values of a FormGroup are present; setting the control's value to null causes a runtime error\n const documentFieldValue = fieldControl.value;\n for (const key in documentFieldValue) {\n if (fieldControl.get(key)) {\n // The back-end doesn't accept null as a valid value for any of the Document field type properties but\n // this is handled by sanitiseObject() in FormValueService, returning a null object for the entire\n // Document field, if any of its properties is null - which is accepted by the back-end\n fieldControl.get(key).setValue(null);\n }\n }\n break;\n // Note: the default case applies to DynamicList fields, too\n default:\n fieldControl.setValue(null);\n }\n }\n }\n\n public clearHiddenFields(form: FormGroup, wizard: Wizard, eventTrigger: CaseEventTrigger, currentPageId: string): void {\n this.clearHiddenFieldForFieldShowCondition(currentPageId, form, wizard, eventTrigger);\n this.clearHiddenFieldForPageShowCondition(form, wizard, eventTrigger);\n }\n\n private clearHiddenFieldForPageShowCondition(form: FormGroup, wizard: Wizard, eventTrigger: CaseEventTrigger): void {\n const currentEventState = this.fieldsUtils.getCurrentEventState(eventTrigger, form);\n wizard.pages.forEach(wp => {\n if (this.hasShowConditionPage(wp, currentEventState)) {\n const condition = new ShowCondition(wp.show_condition);\n if (this.isHidden(condition, currentEventState)) {\n this.resetPage(form, wp);\n }\n }\n });\n }\n\n private clearHiddenFieldForFieldShowCondition(currentPageId: string, form: FormGroup, wizard: Wizard,\n eventTrigger: CaseEventTrigger): void {\n const formFields = form.getRawValue();\n const currentPage: WizardPage = wizard.getPage(currentPageId, this.fieldsUtils.buildCanShowPredicate(eventTrigger, form));\n currentPage.wizard_page_fields.forEach(wpf => {\n const case_field = this.findCaseFieldByWizardPageFieldId(currentPage, wpf);\n if (this.hasShowConditionField(case_field, formFields)) {\n const condition = new ShowCondition(case_field.show_condition);\n if (this.isHidden(condition, formFields.data) && !(this.isReadonly(case_field))) {\n this.resetField(form, case_field);\n }\n }\n this.retainHiddenValueByFieldType(case_field, form);\n });\n }\n\n private retainHiddenValueByFieldType(field: CaseField, form: any): void {\n // so far only applies to the new field type OrganisationPolicy which needs to retain the default case role value\n // for other case fields there should be no side effects\n if (field && field.field_type && field.field_type.id === 'OrganisationPolicy') {\n // <bubble_wrap>\n // Doing some null checking to stop it from falling over.\n const data: FormGroup = form.get('data') as FormGroup;\n if (data) {\n const fieldGroup: FormGroup = data.controls[field.id] as FormGroup;\n if (fieldGroup) {\n const caseRoleFormControl: FormControl = fieldGroup.get('OrgPolicyCaseAssignedRole') as FormControl;\n if (caseRoleFormControl) {\n caseRoleFormControl.enable();\n }\n }\n }\n // </bubble_wrap>\n }\n }\n\n private isHidden(condition: ShowCondition, formFields: any): boolean {\n return !condition.match(formFields);\n }\n\n private findCaseFieldByWizardPageFieldId(currentPage: WizardPage, wizardPageField: WizardPageField): CaseField {\n return currentPage.case_fields.find(cf => cf.id === wizardPageField.case_field_id);\n }\n\n private hasShowConditionPage(wizardPage: WizardPage, formFields: any): boolean {\n return wizardPage.show_condition && formFields[this.getShowConditionKey(wizardPage.show_condition)];\n }\n\n private hasShowConditionField(case_field: CaseField, formFields: any): boolean {\n return case_field.show_condition && formFields.data[this.getShowConditionKey(case_field.show_condition)];\n }\n\n private getShowConditionKey(show_condition: string): string {\n // Need to allow for negated conditions, i.e. !=, as well as regular ones (=)\n // Also need to allow for conditions specified using the \"CONTAINS\" keyword\n return show_condition.split(/!=|=|CONTAINS/)[0];\n }\n\n private resetField(form: FormGroup, field: CaseField): void {\n /**\n * If the hidden field's value is to be retained, do nothing (except if it is a Complex type or collection of\n * Complex types). This is a change to the previous behaviour (which used to clear the field value but remove it\n * from submission as an update to the back-end). The new behaviour is to leave the field as is, so if the field\n * is hidden but then un-hidden before form submission, any previously entered value is retained.\n *\n * For Complex field types, an additional check of sub-fields is required. The same applies to a collection of\n * Complex types.\n */\n if (field.retain_hidden_value) {\n const fieldType: FieldTypeEnum = field.field_type.type;\n // If the field is a Complex type, loop over its sub-fields and call deleteFieldValue() for any sub-fields\n // where retain_hidden_value is false, OR for any Complex sub-fields *regardless of their retain_hidden_value*\n // (in order to inspect the sub-fields of a Complex type within another Complex type)\n if (fieldType === 'Complex' && field.field_type.complex_fields.length > 0) {\n for (const complexSubField of field.field_type.complex_fields) {\n if ((complexSubField.field_type.type === 'Complex' && complexSubField.field_type.complex_fields.length > 0) ||\n !complexSubField.retain_hidden_value) {\n // Check for the existence of the parent FormGroup corresponding to the Complex field; if it exists, call\n // deleteFieldValue() to delete the sub-field\n const parentFormGroup = (form.get('data') as FormGroup).controls[field.id] as FormGroup;\n if (parentFormGroup) {\n this.deleteFieldValue(parentFormGroup, complexSubField);\n }\n }\n }\n } else if (fieldType === 'Collection' && field.field_type.collection_field_type.type === 'Complex' &&\n field.field_type.collection_field_type.complex_fields.length > 0) {\n // If the field is a collection of Complex types, loop through each one and call deleteFieldValue() for any\n // sub-fields where retain_hidden_value is false, OR for any Complex sub-fields *regardless of their\n // retain_hidden_value* (in order to inspect the sub-fields of a Complex type within another Complex type)\n\n // Get the array of field controls corresponding to the Complex field values\n const fieldControls = (form.get('data') as FormGroup).controls[field.id] as FormArray;\n\n if (fieldControls) {\n // Get the array of Complex field values\n const complexFieldValues = fieldControls.value as any[];\n\n // For each Complex field value, get the ID of each sub-field within it and use as a key to find the\n // corresponding sub-CaseField (which contains the field type information)\n if (complexFieldValues) {\n complexFieldValues.forEach((fieldValue, index) => Object.keys(fieldValue.value).forEach(subFieldId => {\n // Find the sub-CaseField corresponding to the sub-field ID\n let subCaseField: CaseField;\n for (const caseField of field.field_type.collection_field_type.complex_fields) {\n if (caseField.id === subFieldId) {\n subCaseField = caseField;\n break;\n }\n }\n\n // Recursively delete the sub-field value if retain_hidden_value is false, OR if the sub-field type is\n // Complex and regardless of retain_hidden_value, passing in the parent FormGroup\n if (subCaseField &&\n ((subCaseField.field_type.type === 'Complex' && subCaseField.field_type.complex_fields.length > 0) ||\n !subCaseField.retain_hidden_value)) {\n const parentFormGroup: FormGroup = fieldControls.at(index).get('value') as FormGroup;\n this.deleteFieldValue(parentFormGroup, subCaseField);\n }\n }));\n }\n }\n }\n } else {\n // Delete the field value\n this.deleteFieldValue(form.get('data') as FormGroup, field);\n }\n }\n\n private resetPage(form: FormGroup, wizardPage: WizardPage): void {\n wizardPage.wizard_page_fields.forEach(wpf => {\n const case_field = this.findCaseFieldByWizardPageFieldId(wizardPage, wpf);\n this.resetField(form, case_field);\n });\n }\n\n private getType(elem: any): string {\n return Object.prototype.toString.call(elem).slice(8, -1);\n }\n\n private isObject(elem: any): boolean {\n return this.getType(elem) === 'Object';\n }\n\n // TODO: call isReadOnly on CaseFields once we make it available\n private isReadonly(case_field: CaseField): boolean {\n return case_field.display_context.toUpperCase() === 'READONLY';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\n\n@Injectable()\nexport class FormErrorService {\n\n public mapFieldErrors(errors: { id: string; message: string }[], form: FormGroup, errorKey: string): void {\n\n errors.forEach(error => {\n const formControl = this.getFormControl(form, error.id);\n\n if (formControl) {\n formControl.setErrors({\n [errorKey]: error.message\n });\n }\n });\n }\n\n private getFormControl(form: FormGroup, fieldId: string): FormControl {\n const fields = fieldId.split('.');\n\n let group: FormGroup = form;\n let inArray = false;\n let control: FormControl;\n fields.every((field, index) => {\n if (index === fields.length - 1) {\n control = group.controls[field] as FormControl;\n } else {\n group = group.controls[field] as FormGroup;\n\n if (inArray && group.controls['value']) {\n group = group.controls['value'] as FormGroup;\n }\n\n if (group && group.constructor && FormArray.name === group.constructor.name) {\n inArray = true;\n } else {\n inArray = false;\n }\n }\n return !!group;\n });\n\n return control;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Jurisdiction } from '../../domain/definition/jurisdiction.model';\n\n@Injectable()\nexport class JurisdictionService {\n\n public readonly selectedJurisdictionSource = new Subject<Jurisdiction>();\n\n public selectedJurisdiction = this.selectedJurisdictionSource.asObservable();\n\n public announceSelectedJurisdiction(jurisdiction: Jurisdiction) {\n this.selectedJurisdictionSource.next(jurisdiction);\n }\n\n}\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AbstractAppConfig } from '../../../app.config';\nimport { Banner } from '../../domain/definition/banner.model';\nimport { HttpService } from '../http/http.service';\n\n@Injectable()\nexport class BannersService {\n public static readonly V2_MEDIATYPE_BANNERS = 'application/vnd.uk.gov.hmcts.ccd-data-store-api.ui-banners.v2+json;charset=UTF-8';\n\n constructor(private readonly httpService: HttpService, private readonly appConfig: AbstractAppConfig) {\n }\n\n public getBanners(jurisdictionReferences: string[]): Observable<Banner[]> {\n const url = this.appConfig.getBannersUrl();\n const headers = new HttpHeaders()\n .set('experimental', 'true')\n .set('Accept', BannersService.V2_MEDIATYPE_BANNERS)\n .set('Content-Type', 'application/json');\n let params = new HttpParams();\n jurisdictionReferences.forEach(reference => params = params.append('ids', reference));\n return this.httpService\n .get(url, {params, headers, observe: 'body'})\n .pipe(\n map(body => body.banners)\n );\n }\n}\n","export enum NavigationOrigin {\n DRAFT_DELETED,\n ERROR_DELETING_DRAFT,\n DRAFT_RESUMED,\n EVENT_TRIGGERED,\n NO_READ_ACCESS_REDIRECTION\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class NavigationNotifierService {\n public navigationSource: BehaviorSubject<any> = new BehaviorSubject<any>({});\n public navigation = this.navigationSource.asObservable();\n\n public announceNavigation(origin: any) {\n this.navigationSource.next(origin);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Orderable } from '../../domain/order/orderable.model';\n\n// @dynamic\n@Injectable()\nexport class OrderService {\n\n /**\n * @deprecated Use `sort` function instead or `compareAsc`\n */\n public sortAsc: (a:Orderable, b:Orderable)=> number = OrderService.DEFAULT_COMPARE_FUNCTION;\n private static readonly DEFAULT_COMPARE_FUNCTION = (a: Orderable, b: Orderable) => {\n const aOrdered = a.order === 0 || a.order;\n const bOrdered = b.order === 0 || b.order;\n\n if (!aOrdered) {\n return !bOrdered ? 0 : 1;\n }\n\n if (!bOrdered) {\n return -1;\n }\n\n return a.order - b.order;\n }\n\n /**\n * Clone and sort array. Ascending order used by default.\n *\n * @param array Array to sort\n * @returns Orderable[] Sorted clone array.\n */\n public sort<T extends Orderable>(array: T[], sortingFunction = this.sortAsc): T[] {\n return array\n .slice()\n .sort(sortingFunction);\n }\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { plainToClass } from 'class-transformer';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AbstractAppConfig } from '../../../app.config';\nimport { Profile } from '../../domain/profile/profile.model';\nimport { HttpService } from '../http/http.service';\n\n@Injectable()\nexport class ProfileService {\n\n public static readonly V2_MEDIATYPE_USER_PROFILE =\n 'application/vnd.uk.gov.hmcts.ccd-data-store-api.ui-user-profile.v2+json;charset=UTF-8';\n private static readonly URL = '/internal/profile';\n\n constructor(private readonly httpService: HttpService, private readonly appConfig: AbstractAppConfig) {}\n\n public get(): Observable<Profile> {\n const url = this.appConfig.getCaseDataUrl() + ProfileService.URL;\n const headers = new HttpHeaders()\n .set('experimental', 'true')\n .set('Accept', ProfileService.V2_MEDIATYPE_USER_PROFILE)\n .set('Content-Type', 'application/json');\n\n return this.httpService\n .get(url, {headers, observe: 'body'})\n .pipe(\n map((p: object) => plainToClass(Profile, p))\n );\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Profile } from '../../domain/profile/profile.model';\n\n@Injectable()\nexport class ProfileNotifier {\n public readonly profileSource: BehaviorSubject<Profile> = new BehaviorSubject<Profile>(new Profile());\n public profile = this.profileSource.asObservable();\n\n public announceProfile(profile: Profile) {\n this.profileSource.next(profile);\n }\n\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { OptionsType } from '..';\n\n@Injectable()\nexport class RequestOptionsBuilder {\n\n public static readonly FIELD_PREFIX = 'case.';\n\n /**\n * Assess the value to see if it should be included in the request options.\n * If it's null or an \"empty\" string, it shouldn't be.\n *\n * @param value The value to be assessed.\n */\n private static includeParam(value: any): boolean {\n if (value) {\n if (typeof(value) === 'string') {\n return value.trim().length > 0;\n }\n return true;\n }\n return false;\n }\n\n public buildOptions(metaCriteria: object, caseCriteria: object, view?: SearchView): OptionsType {\n // TODO: This should probably be the now built-in URLSearchParams but it\n // requires a bigger refactor and there are bigger fish to fry right now.\n let params = new HttpParams();\n\n if (view) {\n params = params.set('view', view);\n }\n\n if (metaCriteria) {\n for (const criterion of Object.keys(metaCriteria)) {\n // EUI-3490. Make sure the parameter should be included for adding it.\n // This was already handled by the old URLSearchParams mechanism.\n if (RequestOptionsBuilder.includeParam(metaCriteria[criterion])) {\n params = params.set(criterion, metaCriteria[criterion]);\n }\n }\n }\n\n if (caseCriteria) {\n for (const criterion of Object.keys(caseCriteria)) {\n if (RequestOptionsBuilder.includeParam(caseCriteria[criterion])) {\n const key = RequestOptionsBuilder.FIELD_PREFIX + criterion;\n const value = caseCriteria[criterion].trim ? caseCriteria[criterion].trim() : caseCriteria[criterion];\n params = params.set(key, value.replace(/’/i, `'`));\n }\n }\n }\n\n const options: OptionsType = { params, observe: 'body'};\n return options;\n }\n\n}\n\nexport type SearchView = 'SEARCH' | 'WORKBASKET';\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nexport abstract class HasLoadingState {\n public get isLoading(): Observable<boolean> {\n return;\n }\n}\n@Injectable()\nexport class LoadingService implements HasLoadingState {\n private readonly registered = new Map<string, string>();\n private readonly loading = new BehaviorSubject<boolean>(false);\n\n public get isLoading(): Observable<boolean> {\n return this.loading.pipe(distinctUntilChanged());\n }\n\n public register(): string {\n const token = this.generateToken();\n this.registered.set(token, token);\n this.loading.next(true);\n return token;\n }\n\n public unregister(token: string): void {\n this.registered.delete(token);\n this.loading.next(this.registered.size > 0);\n }\n\n private generateToken(): string {\n const timestamp = window.performance.now();\n return 'toolkit-loading-' + timestamp; // format: [source-library]-[unique incrementing number]\n }\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { finalize, map } from 'rxjs/operators';\nimport { AbstractAppConfig } from '../../../app.config';\nimport { SearchInput } from '../../components/search-filters';\nimport { SearchResultView } from '../../domain/search/search-result-view.model';\nimport { HttpService, OptionsType } from '../http/http.service';\nimport { LoadingService } from '../loading/loading.service';\nimport { RequestOptionsBuilder, SearchView } from '../request/request.options.builder';\n\n@Injectable()\nexport class SearchService {\n public static readonly V2_MEDIATYPE_SEARCH_INPUTS =\n 'application/vnd.uk.gov.hmcts.ccd-data-store-api.ui-search-input-details.v2+json;charset=UTF-8';\n public static readonly VIEW_SEARCH = 'SEARCH';\n public static readonly VIEW_WORKBASKET = 'WORKBASKET';\n public static readonly FIELD_PREFIX = 'case.';\n private currentJurisdiction: string;\n private currentCaseType: string;\n\n constructor(private readonly appConfig: AbstractAppConfig,\n private readonly httpService: HttpService,\n private readonly requestOptionsBuilder: RequestOptionsBuilder,\n private readonly loadingService: LoadingService) { }\n\n public search(jurisdictionId: string, caseTypeId: string,\n metaCriteria: object, caseCriteria: object, view?: SearchView): Observable<SearchResultView> {\n const url = this.appConfig.getApiUrl() + `/caseworkers/:uid`\n + `/jurisdictions/${jurisdictionId}`\n + `/case-types/${caseTypeId}`\n + `/cases`;\n\n const options: OptionsType = this.requestOptionsBuilder.buildOptions(metaCriteria, caseCriteria, view);\n const loadingToken = this.loadingService.register();\n return this.httpService\n .get(url, options)\n .pipe(\n map(response => response),\n finalize(() => this.loadingService.unregister(loadingToken))\n );\n }\n\n public searchCases(caseTypeId: string,\n metaCriteria: object, caseCriteria: object, view?: SearchView, sort?: {column: string, order: number}): Observable<{}> {\n const url = this.appConfig.getCaseDataUrl() + `/internal/searchCases?ctid=${caseTypeId}&use_case=${view}`;\n\n const options: OptionsType = this.requestOptionsBuilder.buildOptions(metaCriteria, caseCriteria, view);\n const body: {} = {\n sort,\n size: this.appConfig.getPaginationPageSize()\n };\n const loadingToken = this.loadingService.register();\n return this.httpService\n .post(url, body, options)\n .pipe(\n map(response => response),\n finalize(() => this.loadingService.unregister(loadingToken))\n );\n }\n\n public getSearchInputUrl(caseTypeId: string): string {\n return `${this.appConfig.getCaseDataUrl()}/internal/case-types/${caseTypeId}/search-inputs`;\n }\n\n public getSearchInputs(jurisdictionId: string, caseTypeId: string): Observable<SearchInput[]> {\n const url = this.getSearchInputUrl(caseTypeId);\n const headers = new HttpHeaders()\n .set('experimental', 'true')\n .set('Accept', SearchService.V2_MEDIATYPE_SEARCH_INPUTS)\n .set('Content-Type', 'application/json');\n this.currentJurisdiction = jurisdictionId;\n this.currentCaseType = caseTypeId;\n return this.httpService\n .get(url, { headers, observe: 'body' })\n .pipe(\n map(body => {\n const searchInputs = body.searchInputs;\n if (this.isDataValid(jurisdictionId, caseTypeId)) {\n searchInputs.forEach(item => {\n item.field.label = item.label;\n item.field.display_context_parameter = item.display_context_parameter;\n });\n } else {\n throw new Error('Response expired');\n }\n return searchInputs;\n })\n );\n }\n\n public isDataValid(jurisdictionId: string, caseTypeId: string): boolean {\n return this.currentJurisdiction === jurisdictionId && this.currentCaseType === caseTypeId;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\n\n@Injectable()\nexport class RouterHelperService {\n public getUrlSegmentsFromRoot(route: ActivatedRouteSnapshot): string[] {\n return route.pathFromRoot\n .filter(r => r.url && r.url.length)\n .reduce((acc, r) => {\n r.url.forEach(url => {\n acc.push(url.path);\n });\n return acc;\n }, []);\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class WindowService {\n public locationAssign(url: string): void {\n window.location.assign(url);\n }\n\n public setLocalStorage(key: string, value: string) {\n window.localStorage.setItem(key, value);\n }\n\n public getLocalStorage(key: string) {\n return window.localStorage.getItem(key);\n }\n\n public clearLocalStorage() {\n window.localStorage.clear();\n }\n\n public removeLocalStorage(key: string) {\n window.localStorage.removeItem(key);\n }\n\n public setSessionStorage(key: string, value: string) {\n window.sessionStorage.setItem(key, value);\n }\n\n public getSessionStorage(key: string) {\n return window.sessionStorage.getItem(key);\n }\n\n public openOnNewTab(url: string): void {\n window.open(url, '_blank');\n }\n\n public confirm(message: string): boolean {\n return window.confirm(message);\n }\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AbstractAppConfig } from '../../../app.config';\nimport { WorkbasketInputModel } from '../../domain';\nimport { HttpService } from '../http/http.service';\n\n@Injectable()\nexport class WorkbasketInputFilterService {\n public static readonly V2_MEDIATYPE_WORKBASKET_INPUT_DETAILS =\n 'application/vnd.uk.gov.hmcts.ccd-data-store-api.ui-workbasket-input-details.v2+json;charset=UTF-8';\n\n private currentJurisdiction: string;\n private currentCaseType: string;\n\n constructor(private readonly httpService: HttpService, private readonly appConfig: AbstractAppConfig) {\n }\n\n public getWorkbasketInputUrl(caseTypeId: string): string {\n return `${this.appConfig.getCaseDataUrl()}/internal/case-types/${caseTypeId}/work-basket-inputs`;\n }\n\n public getWorkbasketInputs(jurisdictionId: string, caseTypeId: string): Observable<WorkbasketInputModel[]> {\n const url = this.getWorkbasketInputUrl(caseTypeId);\n const headers = new HttpHeaders()\n .set('experimental', 'true')\n .set('Accept', WorkbasketInputFilterService.V2_MEDIATYPE_WORKBASKET_INPUT_DETAILS)\n .set('Content-Type', 'application/json');\n\n this.currentJurisdiction = jurisdictionId;\n this.currentCaseType = caseTypeId;\n return this.httpService\n .get(url, {headers, observe: 'body'})\n .pipe(\n map(body => {\n const workbasketInputs = body.workbasketInputs;\n if (this.isDataValid(jurisdictionId, caseTypeId)) {\n workbasketInputs.forEach(item => {\n item.field.label = item.label;\n if (item.display_context_parameter) {\n item.field.display_context_parameter = item.display_context_parameter;\n }\n });\n } else {\n throw new Error('Response expired');\n }\n return workbasketInputs;\n })\n );\n }\n\n public isDataValid(jurisdictionId: string, caseTypeId: string): boolean {\n return this.currentJurisdiction === jurisdictionId && this.currentCaseType === caseTypeId;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AbstractAppConfig as AppConfig } from '../../../app.config';\nimport { CaseTypeLite } from '../../domain/definition/case-type-lite.model';\nimport { Jurisdiction } from '../../domain/definition/jurisdiction.model';\nimport { HttpService } from '../http/http.service';\n\n@Injectable()\nexport class DefinitionsService {\n\n constructor(private readonly http: HttpService, private readonly appConfig: AppConfig) {}\n\n public getCaseTypes(jurisdictionId: string, access: string): Observable<CaseTypeLite[]> {\n const url = this.appConfig.getApiUrl()\n + `/caseworkers/:uid`\n + `/jurisdictions/${jurisdictionId}`\n + `/case-types?access=${access}`;\n\n return this.http\n .get(url).pipe(map(response => response));\n }\n\n public getJurisdictions(access: string): Observable<Jurisdiction[]> {\n const url = this.appConfig.getApiUrl()\n + `/caseworkers/:uid`\n + `/jurisdictions?access=${access}`;\n\n return this.http\n .get(url)\n .pipe(map(response => response));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DefinitionsService } from './definitions.service';\n\n@NgModule({\n providers: [\n DefinitionsService\n ]\n})\n\nexport class DefinitionsModule {}\n","import { Injectable } from '@angular/core';\nimport { isUndefined } from 'util';\nimport { SearchResultViewColumn } from '../../../domain/search/search-result-view-column.model';\nimport { SearchResultViewItem } from '../../../domain/search/search-result-view-item.model';\nimport { SearchResultViewItemComparator } from '../../../domain/search/sorting/search-result-view-item-comparator';\n\n@Injectable()\nexport class SearchResultViewItemComparatorFactory {\n\n public createSearchResultViewItemComparator(column: SearchResultViewColumn): SearchResultViewItemComparator {\n const fieldId = column.case_field_id;\n switch (column.case_field_type.type) {\n case ('MultiSelectList'): {\n return this.textArrayComparator(fieldId);\n }\n case ('Number'):\n case ('MoneyGBP'): {\n return this.numberComparator(fieldId);\n }\n case ('Text'):\n case ('TextArea'):\n case ('Email'):\n case ('Date'):\n case ('DateTime'):\n case ('Label'):\n case ('Postcode'):\n case ('YesOrNo'):\n case ('PhoneUK'):\n case ('FixedList'): {\n return this.stringComparator(fieldId);\n }\n default: {\n return undefined;\n }\n }\n }\n\n private numberComparator(fieldId: string): SearchResultViewItemComparator {\n return {\n compare(a: SearchResultViewItem, b: SearchResultViewItem) {\n let fieldA = a.case_fields[fieldId];\n let fieldB = b.case_fields[fieldId];\n fieldA = isUndefined(fieldA) || fieldA === null ? 0 : fieldA;\n fieldB = isUndefined(fieldB) || fieldB === null ? 0 : fieldB;\n return fieldA - fieldB;\n }\n } as SearchResultViewItemComparator;\n }\n\n private stringComparator(fieldId: string) {\n return {\n compare(a: SearchResultViewItem, b: SearchResultViewItem) {\n let fieldA = a.case_fields[fieldId];\n let fieldB = b.case_fields[fieldId];\n fieldA = isUndefined(fieldA) || fieldA == null ? '' : fieldA.toLowerCase();\n fieldB = isUndefined(fieldB) || fieldB == null ? '' : fieldB.toLowerCase();\n return fieldA === fieldB ? 0 : fieldA > fieldB ? 1 : -1;\n }\n } as SearchResultViewItemComparator;\n }\n\n private textArrayComparator(fieldId: string) {\n return {\n compare(a: SearchResultViewItem, b: SearchResultViewItem) {\n let fieldA = a.case_fields[fieldId];\n let fieldB = b.case_fields[fieldId];\n fieldA = isUndefined(fieldA) || fieldA == null ? '' : fieldA.join().toLowerCase();\n fieldB = isUndefined(fieldB) || fieldB == null ? '' : fieldB.join().toLowerCase();\n return fieldA === fieldB ? 0 : fieldA > fieldB ? 1 : -1;\n }\n } as SearchResultViewItemComparator;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of, timer } from 'rxjs';\nimport { catchError, map, publishReplay, refCount, take } from 'rxjs/operators';\nimport { AbstractAppConfig } from '../../../app.config';\n\nexport interface OrganisationSuperUser {\n firstName: string;\n lastName: string;\n email: string;\n}\n\nexport interface OrganisationAddress {\n addressLine1: string;\n addressLine2: string;\n addressLine3: string;\n townCity: string;\n county: string;\n country: string;\n postCode: string;\n dxAddress: any [];\n}\n\nexport interface Organisation {\n organisationIdentifier: string;\n name: string;\n status: string;\n sraId: string;\n sraRegulated: boolean;\n companyNumber: string;\n companyUrl: string;\n superUser: OrganisationSuperUser;\n paymentAccount: string [];\n contactInformation: OrganisationAddress [];\n}\n\nexport interface OrganisationVm {\n organisationIdentifier: string;\n name: string;\n addressLine1: string;\n addressLine2: string;\n addressLine3: string;\n townCity: string;\n county: string;\n country: string;\n postCode: string;\n}\n\n@Injectable()\nexport class OrganisationService {\n\n constructor(private readonly http: HttpClient,\n private readonly appconfig: AbstractAppConfig) {}\n\n private organisations$: Observable<OrganisationVm[]>;\n public static mapOrganisation(organisations: Organisation[]): OrganisationVm [] {\n const organisationsVm = new Array<OrganisationVm>();\n organisations.forEach(org => {\n let contactInformation = null;\n if (org.contactInformation && org.contactInformation[0]) {\n contactInformation = org.contactInformation[0];\n }\n organisationsVm.push({\n organisationIdentifier: org.organisationIdentifier,\n name: org.name,\n addressLine1: contactInformation !== null ? contactInformation.addressLine1 : null,\n addressLine2: contactInformation !== null ? contactInformation.addressLine2 : null,\n addressLine3: contactInformation !== null ? contactInformation.addressLine3 : null,\n townCity: contactInformation !== null ? contactInformation.townCity : null,\n county: contactInformation !== null ? contactInformation.county : null,\n country: contactInformation !== null ? contactInformation.country : null,\n postCode: contactInformation !== null ? contactInformation.postCode : null,\n });\n });\n return organisationsVm;\n }\n\n public getActiveOrganisations(): Observable<OrganisationVm[]> {\n if (!this.organisations$) {\n const url = this.appconfig.getPrdUrl();\n const cacheTimeOut = this.appconfig.getCacheTimeOut();\n this.organisations$ = this.http.get<Organisation[]>(url)\n .pipe(map((orgs) => OrganisationService.mapOrganisation(orgs)),\n publishReplay(1), refCount(), take(1), catchError(e => {\n console.log(e);\n // Handle error and return blank Observable array\n return of([]);\n }));\n timer(cacheTimeOut).subscribe(() => {\n this.organisations$ = null;\n });\n }\n return this.organisations$;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class BrowserService {\n public isFirefox(): boolean {\n return window.navigator.userAgent.indexOf('Firefox') > -1;\n }\n public isSafari(): boolean {\n const isSafariAgent = window.navigator.userAgent.indexOf('Safari') > -1;\n const isChromeAgent = window.navigator.userAgent.indexOf('Chrome') > -1;\n if ((isChromeAgent) && (isSafariAgent)) {\n return false;\n }\n return isSafariAgent;\n }\n public isIEOrEdge(): boolean {\n return /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { LoadingService } from './loading.service';\n\n@NgModule({\n imports: [\n ],\n declarations: [\n ],\n exports: [\n ],\n providers: [\n LoadingService\n ]\n})\n\nexport class LoadingModule {}\n","import { ActivatedRouteSnapshot } from '@angular/router';\n\nexport class TestRouteSnapshotBuilder {\n private parent: ActivatedRouteSnapshot = null;\n private params: object = {};\n private data: object = {};\n\n public withParent(parent: ActivatedRouteSnapshot): TestRouteSnapshotBuilder {\n this.parent = parent;\n return this;\n }\n\n public withParams(params: object): TestRouteSnapshotBuilder {\n this.params = params;\n return this;\n }\n\n public withData(data: object): TestRouteSnapshotBuilder {\n this.data = data;\n return this;\n }\n\n public build(): ActivatedRouteSnapshot {\n return {\n url: [],\n params: this.params,\n queryParams: [],\n fragment: '',\n data: this.data,\n outlet: null,\n component: null,\n routeConfig: null,\n root: null,\n parent: this.parent,\n firstChild: null,\n children: [],\n pathFromRoot: null,\n paramMap: null,\n queryParamMap: null,\n };\n }\n}\n"],"mappings":"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"}
|