@energycap/components 0.42.4-esbuild.20250131-1208 → 0.42.4-esbuild.20250131-1219
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/package.json +7 -11
- package/esm2022/energycap-components.mjs +0 -5
- package/esm2022/lib/components.module.mjs +0 -423
- package/esm2022/lib/controls/banner/banner.component.mjs +0 -109
- package/esm2022/lib/controls/button/button.component.mjs +0 -106
- package/esm2022/lib/controls/button/copy-button-base.directive.mjs +0 -67
- package/esm2022/lib/controls/button/copy-button.directive.mjs +0 -28
- package/esm2022/lib/controls/button/copy-table-button.directive.mjs +0 -43
- package/esm2022/lib/controls/calendar/calendar-item.component.mjs +0 -91
- package/esm2022/lib/controls/calendar/calendar.component.mjs +0 -248
- package/esm2022/lib/controls/calendar/calendar.types.mjs +0 -2
- package/esm2022/lib/controls/checkbox/checkbox.component.mjs +0 -140
- package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +0 -38
- package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -879
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
- package/esm2022/lib/controls/date-input/date-input.component.mjs +0 -464
- package/esm2022/lib/controls/date-input/date-input.types.mjs +0 -44
- package/esm2022/lib/controls/dropdown/dropdown.component.mjs +0 -243
- package/esm2022/lib/controls/file-upload/file-upload.component.mjs +0 -261
- package/esm2022/lib/controls/form-control/form-control.component.mjs +0 -98
- package/esm2022/lib/controls/form-control-base.mjs +0 -151
- package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
- package/esm2022/lib/controls/form-group/form-group.component.mjs +0 -261
- package/esm2022/lib/controls/help-popover/help-popover.component.mjs +0 -31
- package/esm2022/lib/controls/item-picker/item-picker.component.mjs +0 -329
- package/esm2022/lib/controls/link-button/link-button.component.mjs +0 -11
- package/esm2022/lib/controls/menu/menu.component.mjs +0 -485
- package/esm2022/lib/controls/navigation/link-item.mjs +0 -2
- package/esm2022/lib/controls/navigation/nav-group.mjs +0 -39
- package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
- package/esm2022/lib/controls/navigation/nav-item.mjs +0 -2
- package/esm2022/lib/controls/numericbox/numericbox.component.mjs +0 -372
- package/esm2022/lib/controls/popover/popover.component.mjs +0 -117
- package/esm2022/lib/controls/radio-button/radio-button-option.mjs +0 -3
- package/esm2022/lib/controls/radio-button/radio-button.component.mjs +0 -82
- package/esm2022/lib/controls/select/select.component.mjs +0 -88
- package/esm2022/lib/controls/tabs/tabs.component.mjs +0 -47
- package/esm2022/lib/controls/textbox/textbox.component.mjs +0 -155
- package/esm2022/lib/core/cache.service.mjs +0 -105
- package/esm2022/lib/core/custom-validators.mjs +0 -29
- package/esm2022/lib/core/date-time-helper.mjs +0 -228
- package/esm2022/lib/core/error.service.mjs +0 -61
- package/esm2022/lib/core/router-helper.service.mjs +0 -111
- package/esm2022/lib/core/scroll.service.mjs +0 -89
- package/esm2022/lib/core/telemetry-tracker.service.mjs +0 -16
- package/esm2022/lib/core/telemetry.service.mjs +0 -38
- package/esm2022/lib/core/validation-message.service.mjs +0 -185
- package/esm2022/lib/core/validation-patterns.mjs +0 -31
- package/esm2022/lib/core/window.service.mjs +0 -186
- package/esm2022/lib/display/app-bar/app-bar.component.mjs +0 -46
- package/esm2022/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2022/lib/display/avatar/avatar.service.mjs +0 -64
- package/esm2022/lib/display/confirm/confirm.component.mjs +0 -168
- package/esm2022/lib/display/dialog/dialog-content.mjs +0 -2
- package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
- package/esm2022/lib/display/dialog/dialog-types.mjs +0 -77
- package/esm2022/lib/display/dialog/dialog.component.mjs +0 -281
- package/esm2022/lib/display/dialog/dialog.service.mjs +0 -71
- package/esm2022/lib/display/help/help-types.mjs +0 -2
- package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +0 -111
- package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +0 -54
- package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -61
- package/esm2022/lib/display/item-display/item-display.component.mjs +0 -81
- package/esm2022/lib/display/json-display/json-display.component.mjs +0 -47
- package/esm2022/lib/display/resizable/resizable-base.mjs +0 -120
- package/esm2022/lib/display/resizable/resizable.component.mjs +0 -57
- package/esm2022/lib/display/spinner/spinner.component.mjs +0 -12
- package/esm2022/lib/display/splash/splash.component.mjs +0 -42
- package/esm2022/lib/display/splash/splash.service.mjs +0 -35
- package/esm2022/lib/display/table/resizable-column.component.mjs +0 -20
- package/esm2022/lib/display/table/resizable-table.directive.mjs +0 -227
- package/esm2022/lib/display/table/searchable-table.component.mjs +0 -342
- package/esm2022/lib/display/table/table-detail-row.component.mjs +0 -28
- package/esm2022/lib/display/table/table-locked-column.component.mjs +0 -58
- package/esm2022/lib/display/table/table-master-header-row.component.mjs +0 -14
- package/esm2022/lib/display/table/table-master-row.component.mjs +0 -163
- package/esm2022/lib/display/table/table-pagination.component.mjs +0 -155
- package/esm2022/lib/display/table/table-selectable-row.component.mjs +0 -235
- package/esm2022/lib/display/table/table.component.mjs +0 -249
- package/esm2022/lib/display/tags/tag.mjs +0 -18
- package/esm2022/lib/display/tags/tags.component.mjs +0 -77
- package/esm2022/lib/display/toast/toast/toast.component.mjs +0 -77
- package/esm2022/lib/display/toast/toast-types.mjs +0 -8
- package/esm2022/lib/display/toast/toast.service.mjs +0 -35
- package/esm2022/lib/display/toast/toaster/toaster.component.mjs +0 -114
- package/esm2022/lib/display/tooltip/tooltip.component.mjs +0 -28
- package/esm2022/lib/display/tooltip/tooltip.service.mjs +0 -78
- package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
- package/esm2022/lib/display/tour/tour-types.mjs +0 -34
- package/esm2022/lib/display/tour/tour.component.mjs +0 -398
- package/esm2022/lib/display/tour/tour.service.mjs +0 -75
- package/esm2022/lib/display/tree/tree.component.mjs +0 -135
- package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +0 -58
- package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
- package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
- package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +0 -100
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +0 -166
- package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +0 -50
- package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
- package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
- package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
- package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
- package/esm2022/lib/shared/display.mjs +0 -6
- package/esm2022/lib/shared/form-group.helper.mjs +0 -67
- package/esm2022/lib/shared/json-helper.mjs +0 -19
- package/esm2022/lib/shared/lodash-helper.mjs +0 -52
- package/esm2022/lib/shared/page/page-base/page-base.component.mjs +0 -387
- package/esm2022/lib/shared/page/page-statuses.mjs +0 -23
- package/esm2022/lib/shared/page/page-title/page-title.component.mjs +0 -23
- package/esm2022/lib/shared/page/page-view/page-view.component.mjs +0 -147
- package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +0 -17
- package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +0 -38
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/esm2022/lib/shared/testing/public-mocks.spec.mjs +0 -148
- package/esm2022/lib/shared/testing/spy-factory.spec.mjs +0 -40
- package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +0 -57
- package/esm2022/lib/shared/user-preference.service.mjs +0 -17
- package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
- package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +0 -68
- package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +0 -18
- package/esm2022/public-api.mjs +0 -117
- package/fesm2022/energycap-components.mjs +0 -13219
- package/fesm2022/energycap-components.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/components.module.d.ts +0 -92
- package/lib/controls/banner/banner.component.d.ts +0 -50
- package/lib/controls/button/button.component.d.ts +0 -78
- package/lib/controls/button/copy-button-base.directive.d.ts +0 -20
- package/lib/controls/button/copy-button.directive.d.ts +0 -14
- package/lib/controls/button/copy-table-button.directive.d.ts +0 -19
- package/lib/controls/calendar/calendar-item.component.d.ts +0 -22
- package/lib/controls/calendar/calendar.component.d.ts +0 -52
- package/lib/controls/calendar/calendar.types.d.ts +0 -11
- package/lib/controls/checkbox/checkbox.component.d.ts +0 -65
- package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +0 -25
- package/lib/controls/combobox/combobox.component.d.ts +0 -418
- package/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.d.ts +0 -42
- package/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.d.ts +0 -21
- package/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.d.ts +0 -21
- package/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.d.ts +0 -21
- package/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.d.ts +0 -18
- package/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.d.ts +0 -18
- package/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.d.ts +0 -21
- package/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.d.ts +0 -20
- package/lib/controls/date-input/date-input.component.d.ts +0 -115
- package/lib/controls/date-input/date-input.types.d.ts +0 -62
- package/lib/controls/dropdown/dropdown.component.d.ts +0 -161
- package/lib/controls/file-upload/file-upload.component.d.ts +0 -124
- package/lib/controls/form-control/form-control.component.d.ts +0 -28
- package/lib/controls/form-control-base.d.ts +0 -110
- package/lib/controls/form-control-label/form-control-label.component.d.ts +0 -73
- package/lib/controls/form-group/form-group.component.d.ts +0 -105
- package/lib/controls/help-popover/help-popover.component.d.ts +0 -11
- package/lib/controls/item-picker/item-picker.component.d.ts +0 -164
- package/lib/controls/link-button/link-button.component.d.ts +0 -5
- package/lib/controls/menu/menu.component.d.ts +0 -255
- package/lib/controls/navigation/link-item.d.ts +0 -32
- package/lib/controls/navigation/nav-group.d.ts +0 -18
- package/lib/controls/navigation/nav-item-active.directive.d.ts +0 -42
- package/lib/controls/navigation/nav-item.d.ts +0 -31
- package/lib/controls/numericbox/numericbox.component.d.ts +0 -148
- package/lib/controls/popover/popover.component.d.ts +0 -51
- package/lib/controls/radio-button/radio-button-option.d.ts +0 -19
- package/lib/controls/radio-button/radio-button.component.d.ts +0 -53
- package/lib/controls/select/select.component.d.ts +0 -44
- package/lib/controls/tabs/tabs.component.d.ts +0 -30
- package/lib/controls/textbox/textbox.component.d.ts +0 -107
- package/lib/core/cache.service.d.ts +0 -33
- package/lib/core/custom-validators.d.ts +0 -20
- package/lib/core/date-time-helper.d.ts +0 -101
- package/lib/core/error.service.d.ts +0 -20
- package/lib/core/router-helper.service.d.ts +0 -48
- package/lib/core/scroll.service.d.ts +0 -36
- package/lib/core/telemetry-tracker.service.d.ts +0 -13
- package/lib/core/telemetry.service.d.ts +0 -31
- package/lib/core/validation-message.service.d.ts +0 -26
- package/lib/core/validation-patterns.d.ts +0 -22
- package/lib/core/window.service.d.ts +0 -116
- package/lib/display/app-bar/app-bar.component.d.ts +0 -20
- package/lib/display/avatar/avatar.component.d.ts +0 -35
- package/lib/display/avatar/avatar.service.d.ts +0 -24
- package/lib/display/confirm/confirm.component.d.ts +0 -123
- package/lib/display/dialog/dialog-content.d.ts +0 -19
- package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +0 -32
- package/lib/display/dialog/dialog-types.d.ts +0 -130
- package/lib/display/dialog/dialog.component.d.ts +0 -120
- package/lib/display/dialog/dialog.service.d.ts +0 -48
- package/lib/display/help/help-types.d.ts +0 -33
- package/lib/display/hierarchy/hierarchy-base.d.ts +0 -97
- package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +0 -53
- package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +0 -34
- package/lib/display/item-display/item-display.component.d.ts +0 -43
- package/lib/display/json-display/json-display.component.d.ts +0 -16
- package/lib/display/resizable/resizable-base.d.ts +0 -67
- package/lib/display/resizable/resizable.component.d.ts +0 -31
- package/lib/display/spinner/spinner.component.d.ts +0 -5
- package/lib/display/splash/splash.component.d.ts +0 -16
- package/lib/display/splash/splash.service.d.ts +0 -22
- package/lib/display/table/resizable-column.component.d.ts +0 -10
- package/lib/display/table/resizable-table.directive.d.ts +0 -93
- package/lib/display/table/searchable-table.component.d.ts +0 -206
- package/lib/display/table/table-detail-row.component.d.ts +0 -8
- package/lib/display/table/table-locked-column.component.d.ts +0 -20
- package/lib/display/table/table-master-header-row.component.d.ts +0 -9
- package/lib/display/table/table-master-row.component.d.ts +0 -113
- package/lib/display/table/table-pagination.component.d.ts +0 -91
- package/lib/display/table/table-selectable-row.component.d.ts +0 -102
- package/lib/display/table/table.component.d.ts +0 -121
- package/lib/display/tags/tag.d.ts +0 -18
- package/lib/display/tags/tags.component.d.ts +0 -48
- package/lib/display/toast/toast/toast.component.d.ts +0 -23
- package/lib/display/toast/toast-types.d.ts +0 -24
- package/lib/display/toast/toast.service.d.ts +0 -20
- package/lib/display/toast/toaster/toaster.component.d.ts +0 -35
- package/lib/display/tooltip/tooltip.component.d.ts +0 -70
- package/lib/display/tooltip/tooltip.service.d.ts +0 -16
- package/lib/display/tooltip-directive/tooltip.directive.d.ts +0 -44
- package/lib/display/tour/tour-types.d.ts +0 -70
- package/lib/display/tour/tour.component.d.ts +0 -147
- package/lib/display/tour/tour.service.d.ts +0 -38
- package/lib/display/tree/tree.component.d.ts +0 -75
- package/lib/display/view-overlay/view-overlay.component.d.ts +0 -38
- package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +0 -14
- package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +0 -60
- package/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.d.ts +0 -23
- package/lib/shared/directives/popup/popup-container.directive.d.ts +0 -101
- package/lib/shared/display/pipes/date-display.pipe.d.ts +0 -21
- package/lib/shared/display/pipes/highlight-text.pipe.d.ts +0 -9
- package/lib/shared/display/pipes/relative-date.pipe.d.ts +0 -36
- package/lib/shared/display/pipes/row-count.pipe.d.ts +0 -23
- package/lib/shared/display/pipes/time-display.pipe.d.ts +0 -18
- package/lib/shared/display.d.ts +0 -42
- package/lib/shared/form-group.helper.d.ts +0 -31
- package/lib/shared/json-helper.d.ts +0 -7
- package/lib/shared/lodash-helper.d.ts +0 -18
- package/lib/shared/page/page-base/page-base.component.d.ts +0 -259
- package/lib/shared/page/page-statuses.d.ts +0 -13
- package/lib/shared/page/page-title/page-title.component.d.ts +0 -9
- package/lib/shared/page/page-view/page-view.component.d.ts +0 -102
- package/lib/shared/testing/copy-button-base-test-injector-factory.spec.d.ts +0 -4
- package/lib/shared/testing/hierarchy-base-test-injector-factory.spec.d.ts +0 -4
- package/lib/shared/testing/page-base-component-test-helper.spec.d.ts +0 -30
- package/lib/shared/testing/page-base-component-test-injector-factory.spec.d.ts +0 -28
- package/lib/shared/testing/public-mocks.spec.d.ts +0 -90
- package/lib/shared/testing/spy-factory.spec.d.ts +0 -27
- package/lib/shared/testing/translation-mocks.spec.d.ts +0 -30
- package/lib/shared/user-preference.service.d.ts +0 -13
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +0 -134
- package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +0 -27
- package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +0 -10
- package/public-api.d.ts +0 -113
- package/schematics/collection.json +0 -10
- package/schematics/rxjs-7-upgrade/index.d.ts +0 -3
- package/schematics/rxjs-7-upgrade/index.js +0 -68
- package/schematics/rxjs-7-upgrade/index.js.map +0 -1
- package/schematics/rxjs-7-upgrade/schema.d.ts +0 -4
- package/schematics/rxjs-7-upgrade/schema.js +0 -3
- package/schematics/rxjs-7-upgrade/schema.js.map +0 -1
- package/schematics/rxjs-7-upgrade/schema.json +0 -14
- package/schematics/utilities/typescript.d.ts +0 -7
- package/schematics/utilities/typescript.js +0 -42
- package/schematics/utilities/typescript.js.map +0 -1
- package/schematics/utilities/workspace.d.ts +0 -8
- package/schematics/utilities/workspace.js +0 -72
- package/schematics/utilities/workspace.js.map +0 -1
- package/src/assets/images/email-icon.png +0 -0
- package/src/assets/images/email-logo.png +0 -0
- package/src/assets/images/favicon-ech.svg +0 -7
- package/src/assets/images/favicon-esa.svg +0 -6
- package/src/assets/images/favicon-eum.svg +0 -6
- package/src/assets/images/favicon.svg +0 -5
- package/src/assets/images/icon-carbonhub.svg +0 -10
- package/src/assets/images/icon-eum.svg +0 -5
- package/src/assets/images/icon-ucp.svg +0 -5
- package/src/assets/images/icon-wattics.svg +0 -5
- package/src/assets/images/icon.svg +0 -4
- package/src/assets/images/logo.svg +0 -3
- package/src/assets/images/splash.gif +0 -0
- package/src/assets/locales/en_US.json +0 -59
- package/src/assets/scripts/unsupported-browser.js +0 -17
- package/src/styles/_base.scss +0 -38
- package/src/styles/_colors.scss +0 -96
- package/src/styles/_core.scss +0 -4
- package/src/styles/_functions.scss +0 -114
- package/src/styles/_global-variables.scss +0 -232
- package/src/styles/_icons.scss +0 -24
- package/src/styles/bootstrap/_grid.scss +0 -34
- package/src/styles/bootstrap/_reboot.scss +0 -323
- package/src/styles/components/_card.scss +0 -21
- package/src/styles/components/_link-icons.scss +0 -38
- package/src/styles/components/_splash.scss +0 -57
- package/src/styles/components/_unsupported-browsers.scss +0 -24
- package/src/styles/email/_email-base.scss +0 -228
- package/src/styles/email/email.scss +0 -43
- package/src/styles/index.scss +0 -27
- package/src/styles/mixins/_animations.scss +0 -18
- package/src/styles/mixins/_button-base.scss +0 -185
- package/src/styles/mixins/_card-base.scss +0 -40
- package/src/styles/mixins/_common.scss +0 -52
- package/src/styles/mixins/_dialog-base.scss +0 -96
- package/src/styles/mixins/_form-control-base.scss +0 -641
- package/src/styles/mixins/_login.scss +0 -74
- package/src/styles/mixins/_menu-base.scss +0 -153
- package/src/styles/mixins/_overlay-base.scss +0 -33
- package/src/styles/mixins/_resizable-base.scss +0 -57
- package/src/styles/mixins/_spinner-base.scss +0 -34
- package/src/styles/mixins/_table-base.scss +0 -298
- package/src/styles/mixins/_tabs-base.scss +0 -110
- package/src/styles/mixins/_tags-base.scss +0 -116
- package/src/styles/mixins/_text.scss +0 -89
- package/src/styles/mixins.scss +0 -15
- package/src/styles/utilities/_borders.scss +0 -30
- package/src/styles/utilities/_common.scss +0 -49
- package/src/styles/utilities/_layout.scss +0 -116
- package/src/styles/utilities/_spacing.scss +0 -65
- package/src/styles/utilities/_text.scss +0 -139
@@ -1,52 +0,0 @@
|
|
1
|
-
import { get, orderBy, sortBy } from "lodash";
|
2
|
-
/** A wrapper around the lodash sortBy that supports treating upper case and lower case text as the same.
|
3
|
-
* If the underlying property value is not a string (or is null or undefined) this function will behave just like lodash's original
|
4
|
-
* The original array is not modified, and the result is a newly created array to avoid any side effects (just like the lodash implementation)
|
5
|
-
* String properties are normalized by case for comparisons to prevent sorting AbC as ACb
|
6
|
-
* @param items - the set of items to sort. Expected to be a set of complex objects to sort by the given properties
|
7
|
-
* @param properties - a list of values, each of which can be number, date, string, etc property types.
|
8
|
-
* Can be the name or path to the property to look at, passed to the lodash get function so "address.line1" works if item is
|
9
|
-
* a meter object like {meterName: 'name', addres: { line1: '100 Factory Street' } }
|
10
|
-
* @see https://lodash.com/docs/4.17.10#get
|
11
|
-
*/
|
12
|
-
export function sortByIgnoreCase(items, properties) {
|
13
|
-
let iteratees = [];
|
14
|
-
iteratees = properties.map(prop => {
|
15
|
-
return (item) => safeToLower(item, prop);
|
16
|
-
});
|
17
|
-
return sortBy(items, iteratees);
|
18
|
-
}
|
19
|
-
/**
|
20
|
-
* A wrapper around the lodash orderBy that supports treating upper case and lower case text as the same.
|
21
|
-
* @param items - the set of items to sort. Expected to be a set of complex objects to sort by the given properties
|
22
|
-
* @param properties - a list of values, each of which can be number, date, string, etc property types.
|
23
|
-
* @param direction - the direction in which to sort, the pass in an array of directions to match an array of properties
|
24
|
-
*/
|
25
|
-
export function orderByIgnoreCase(items, properties, direction) {
|
26
|
-
let iteratees = [];
|
27
|
-
iteratees = properties.map(prop => {
|
28
|
-
// Treat nulls as empty string to sort them at the bottom when decending, helpful when looking at dates
|
29
|
-
return (item) => safeToLower(item, prop) || '';
|
30
|
-
});
|
31
|
-
return orderBy(items, iteratees, direction);
|
32
|
-
}
|
33
|
-
/**
|
34
|
-
* Convert the provided item's property to the lowercase version of it if that property
|
35
|
-
* has a value and the value is a string. Non-string or null/undefined values are kept exactly as they were
|
36
|
-
* @param item - the object on which the value will be read and interpreted
|
37
|
-
* @param prop - the name or path to the property to look at, passed to the lodash get function so "address.line1" works if item is
|
38
|
-
* a meter object like {meterName: 'name', address: { line1: '100 Factory Street' } }
|
39
|
-
* @see https://lodash.com/docs/4.17.10#get
|
40
|
-
*/
|
41
|
-
function safeToLower(item, prop) {
|
42
|
-
let value = get(item, prop);
|
43
|
-
if (item && typeof value === 'string') {
|
44
|
-
return value.toLowerCase();
|
45
|
-
}
|
46
|
-
else {
|
47
|
-
// @ts-ignore
|
48
|
-
return item[prop];
|
49
|
-
}
|
50
|
-
}
|
51
|
-
;
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9kYXNoLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvbG9kYXNoLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFOUM7Ozs7Ozs7OztFQVNFO0FBQ0YsTUFBTSxVQUFVLGdCQUFnQixDQUFJLEtBQVUsRUFBRSxVQUFvQjtJQUNsRSxJQUFJLFNBQVMsR0FBZ0UsRUFBRSxDQUFDO0lBRWhGLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQSxFQUFFO1FBQy9CLE9BQU8sQ0FBQyxJQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFbEMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFJLEtBQVUsRUFBRSxVQUFvQixFQUFFLFNBQStCO0lBQ3BHLElBQUksU0FBUyxHQUFnRSxFQUFFLENBQUM7SUFFaEYsU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDaEMsdUdBQXVHO1FBQ3ZHLE9BQU8sQ0FBQyxJQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BELENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsV0FBVyxDQUFJLElBQU8sRUFBRSxJQUFZO0lBQzNDLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUIsSUFBRyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFDLENBQUM7UUFDcEMsT0FBZ0IsS0FBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7U0FBTSxDQUFDO1FBQ04sYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7QUFDSCxDQUFDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldCwgb3JkZXJCeSwgc29ydEJ5IH0gZnJvbSBcImxvZGFzaFwiO1xyXG5cclxuLyoqIEEgd3JhcHBlciBhcm91bmQgdGhlIGxvZGFzaCBzb3J0QnkgdGhhdCBzdXBwb3J0cyB0cmVhdGluZyB1cHBlciBjYXNlIGFuZCBsb3dlciBjYXNlIHRleHQgYXMgdGhlIHNhbWUuICBcclxuICogSWYgdGhlIHVuZGVybHlpbmcgcHJvcGVydHkgdmFsdWUgaXMgbm90IGEgc3RyaW5nIChvciBpcyBudWxsIG9yIHVuZGVmaW5lZCkgdGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBqdXN0IGxpa2UgbG9kYXNoJ3Mgb3JpZ2luYWxcclxuICogVGhlIG9yaWdpbmFsIGFycmF5IGlzIG5vdCBtb2RpZmllZCwgYW5kIHRoZSByZXN1bHQgaXMgYSBuZXdseSBjcmVhdGVkIGFycmF5IHRvIGF2b2lkIGFueSBzaWRlIGVmZmVjdHMgKGp1c3QgbGlrZSB0aGUgbG9kYXNoIGltcGxlbWVudGF0aW9uKVxyXG4gKiBTdHJpbmcgcHJvcGVydGllcyBhcmUgbm9ybWFsaXplZCBieSBjYXNlIGZvciBjb21wYXJpc29ucyB0byBwcmV2ZW50IHNvcnRpbmcgQWJDIGFzIEFDYlxyXG4gKiBAcGFyYW0gaXRlbXMgLSB0aGUgc2V0IG9mIGl0ZW1zIHRvIHNvcnQuIEV4cGVjdGVkIHRvIGJlIGEgc2V0IG9mIGNvbXBsZXggb2JqZWN0cyB0byBzb3J0IGJ5IHRoZSBnaXZlbiBwcm9wZXJ0aWVzXHJcbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIC0gYSBsaXN0IG9mIHZhbHVlcywgZWFjaCBvZiB3aGljaCBjYW4gYmUgbnVtYmVyLCBkYXRlLCBzdHJpbmcsIGV0YyBwcm9wZXJ0eSB0eXBlcy4gXHJcbiAqICAgICAgICBDYW4gYmUgdGhlIG5hbWUgb3IgcGF0aCB0byB0aGUgcHJvcGVydHkgdG8gbG9vayBhdCwgcGFzc2VkIHRvIHRoZSBsb2Rhc2ggZ2V0IGZ1bmN0aW9uIHNvIFwiYWRkcmVzcy5saW5lMVwiIHdvcmtzIGlmIGl0ZW0gaXNcclxuICogICAgICAgIGEgbWV0ZXIgb2JqZWN0IGxpa2Uge21ldGVyTmFtZTogJ25hbWUnLCBhZGRyZXM6IHsgbGluZTE6ICcxMDAgRmFjdG9yeSBTdHJlZXQnIH0gfVxyXG4gKiBAc2VlIGh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzLzQuMTcuMTAjZ2V0XHJcbiovXHJcbmV4cG9ydCBmdW5jdGlvbiBzb3J0QnlJZ25vcmVDYXNlPFQ+KGl0ZW1zOiBUW10sIHByb3BlcnRpZXM6IHN0cmluZ1tdKSA6IFRbXSB7XHJcbiAgbGV0IGl0ZXJhdGVlczogKCh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgY29sbGVjdGlvbjogQXJyYXlMaWtlPFQ+KT0+IFQpW10gPSBbXTtcclxuXHJcbiAgaXRlcmF0ZWVzID0gcHJvcGVydGllcy5tYXAocHJvcD0+e1xyXG4gICAgcmV0dXJuIChpdGVtOiBUKSA9PiBzYWZlVG9Mb3dlcihpdGVtLCBwcm9wKTtcclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIHNvcnRCeShpdGVtcywgaXRlcmF0ZWVzKTtcclxuICBcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgd3JhcHBlciBhcm91bmQgdGhlIGxvZGFzaCBvcmRlckJ5IHRoYXQgc3VwcG9ydHMgdHJlYXRpbmcgdXBwZXIgY2FzZSBhbmQgbG93ZXIgY2FzZSB0ZXh0IGFzIHRoZSBzYW1lLlxyXG4gKiBAcGFyYW0gaXRlbXMgLSB0aGUgc2V0IG9mIGl0ZW1zIHRvIHNvcnQuIEV4cGVjdGVkIHRvIGJlIGEgc2V0IG9mIGNvbXBsZXggb2JqZWN0cyB0byBzb3J0IGJ5IHRoZSBnaXZlbiBwcm9wZXJ0aWVzXHJcbiAqIEBwYXJhbSBwcm9wZXJ0aWVzIC0gYSBsaXN0IG9mIHZhbHVlcywgZWFjaCBvZiB3aGljaCBjYW4gYmUgbnVtYmVyLCBkYXRlLCBzdHJpbmcsIGV0YyBwcm9wZXJ0eSB0eXBlcy4gXHJcbiAqIEBwYXJhbSBkaXJlY3Rpb24gLSB0aGUgZGlyZWN0aW9uIGluIHdoaWNoIHRvIHNvcnQsIHRoZSBwYXNzIGluIGFuIGFycmF5IG9mIGRpcmVjdGlvbnMgdG8gbWF0Y2ggYW4gYXJyYXkgb2YgcHJvcGVydGllc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG9yZGVyQnlJZ25vcmVDYXNlPFQ+KGl0ZW1zOiBUW10sIHByb3BlcnRpZXM6IHN0cmluZ1tdLCBkaXJlY3Rpb24/OiBBcnJheTxcImFzY1wifFwiZGVzY1wiPik6IFRbXSB7XHJcbiAgbGV0IGl0ZXJhdGVlczogKCh2YWx1ZTogVCwgaW5kZXg6IG51bWJlciwgY29sbGVjdGlvbjogQXJyYXlMaWtlPFQ+KT0+IFQpW10gPSBbXTtcclxuXHJcbiAgaXRlcmF0ZWVzID0gcHJvcGVydGllcy5tYXAocHJvcCA9PiB7XHJcbiAgICAvLyBUcmVhdCBudWxscyBhcyBlbXB0eSBzdHJpbmcgdG8gc29ydCB0aGVtIGF0IHRoZSBib3R0b20gd2hlbiBkZWNlbmRpbmcsIGhlbHBmdWwgd2hlbiBsb29raW5nIGF0IGRhdGVzXHJcbiAgICByZXR1cm4gKGl0ZW06IFQpID0+IHNhZmVUb0xvd2VyKGl0ZW0sIHByb3ApIHx8ICcnO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gb3JkZXJCeShpdGVtcywgaXRlcmF0ZWVzLCBkaXJlY3Rpb24pO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCB0aGUgcHJvdmlkZWQgaXRlbSdzIHByb3BlcnR5IHRvIHRoZSBsb3dlcmNhc2UgdmVyc2lvbiBvZiBpdCBpZiB0aGF0IHByb3BlcnR5XHJcbiAqIGhhcyBhIHZhbHVlIGFuZCB0aGUgdmFsdWUgaXMgYSBzdHJpbmcuIE5vbi1zdHJpbmcgb3IgbnVsbC91bmRlZmluZWQgdmFsdWVzIGFyZSBrZXB0IGV4YWN0bHkgYXMgdGhleSB3ZXJlXHJcbiAqIEBwYXJhbSBpdGVtIC0gdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgdmFsdWUgd2lsbCAgYmUgcmVhZCBhbmQgaW50ZXJwcmV0ZWRcclxuICogQHBhcmFtIHByb3AgLSB0aGUgbmFtZSBvciBwYXRoIHRvIHRoZSBwcm9wZXJ0eSB0byBsb29rIGF0LCBwYXNzZWQgdG8gdGhlIGxvZGFzaCBnZXQgZnVuY3Rpb24gc28gXCJhZGRyZXNzLmxpbmUxXCIgd29ya3MgaWYgaXRlbSBpc1xyXG4gKiBhIG1ldGVyIG9iamVjdCBsaWtlIHttZXRlck5hbWU6ICduYW1lJywgYWRkcmVzczogeyBsaW5lMTogJzEwMCBGYWN0b3J5IFN0cmVldCcgfSB9XHJcbiAqIEBzZWUgaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3MvNC4xNy4xMCNnZXRcclxuICovXHJcbmZ1bmN0aW9uIHNhZmVUb0xvd2VyPFQ+KGl0ZW06IFQsIHByb3A6IHN0cmluZyl7XHJcbiAgbGV0IHZhbHVlID0gZ2V0KGl0ZW0sIHByb3ApO1xyXG4gIGlmKGl0ZW0gJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyl7XHJcbiAgICByZXR1cm4gKDxzdHJpbmc+dmFsdWUpLnRvTG93ZXJDYXNlKCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJldHVybiBpdGVtW3Byb3BdO1xyXG4gIH1cclxufTsiXX0=
|
@@ -1,387 +0,0 @@
|
|
1
|
-
import { Directive, HostBinding } from '@angular/core';
|
2
|
-
import { UntypedFormGroup } from '@angular/forms';
|
3
|
-
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
|
4
|
-
import { TranslateService } from '@ngx-translate/core';
|
5
|
-
import { lastValueFrom, ReplaySubject, Subject } from 'rxjs';
|
6
|
-
import { filter, take, takeUntil } from 'rxjs/operators';
|
7
|
-
import { ErrorService } from '../../../core/error.service';
|
8
|
-
import { RouterHelper } from '../../../core/router-helper.service';
|
9
|
-
import { ScrollService } from '../../../core/scroll.service';
|
10
|
-
import { DialogService } from '../../../display/dialog/dialog.service';
|
11
|
-
import { SplashService } from '../../../display/splash/splash.service';
|
12
|
-
import { Overlay } from '../../../display/view-overlay/view-overlay.component';
|
13
|
-
import { PageStatus, PageStatuses } from '../page-statuses';
|
14
|
-
import * as i0 from "@angular/core";
|
15
|
-
export class PageInitResult {
|
16
|
-
constructor() {
|
17
|
-
this.title = '';
|
18
|
-
this.subTitle = '';
|
19
|
-
this.subTitleUrl = '';
|
20
|
-
}
|
21
|
-
}
|
22
|
-
export class PageBaseComponent {
|
23
|
-
constructor(injector) {
|
24
|
-
/** Default css classes applied to host element */
|
25
|
-
this.classList = 'd-flex flex-grow';
|
26
|
-
/**
|
27
|
-
* Title for the page displayed in the header
|
28
|
-
*/
|
29
|
-
this.title = '';
|
30
|
-
/**
|
31
|
-
* Sub title for the page displayed in the header
|
32
|
-
*/
|
33
|
-
this.subTitle = '';
|
34
|
-
/**
|
35
|
-
* Sub title url for the page displayed in the header
|
36
|
-
*/
|
37
|
-
this.subTitleUrl = '';
|
38
|
-
/**
|
39
|
-
* Status overlay for the page
|
40
|
-
*/
|
41
|
-
this.status = new Overlay('pending', 'Loading');
|
42
|
-
/**
|
43
|
-
* Form group to be used if needed by the page
|
44
|
-
*/
|
45
|
-
this.formGroup = new UntypedFormGroup({});
|
46
|
-
/**
|
47
|
-
* Default invalid form message, override if a more specific message is needed
|
48
|
-
*/
|
49
|
-
this.defaultInvalidFormMessage = 'PleaseCorrectForm_SC';
|
50
|
-
/**
|
51
|
-
* Default unknown save error message, override if a more specific message is needed
|
52
|
-
*/
|
53
|
-
this.defaultUnknownSaveError = 'PageBaseUnknownSaveError_SC';
|
54
|
-
/**
|
55
|
-
* Used to opt out of hiding the splash screen when the page is loaded
|
56
|
-
*/
|
57
|
-
this.skipHideSplashOnComplete = false;
|
58
|
-
/**
|
59
|
-
* When set to true any navigation end events that are strictly query param changes will
|
60
|
-
* not call the onNavigationEnd function. This allows pages to change the view with query
|
61
|
-
* params and not trigger a full refresh.
|
62
|
-
*/
|
63
|
-
this.ignoreQueryParamsOnNavigationChange = false;
|
64
|
-
this.previousUrl = "";
|
65
|
-
/**
|
66
|
-
* Used to unsubscribe from observables
|
67
|
-
*/
|
68
|
-
this.destroyed = new Subject();
|
69
|
-
/**
|
70
|
-
* Used to know when the page has been loaded, this will be completed
|
71
|
-
* after onAfterViewInit
|
72
|
-
*/
|
73
|
-
this._afterViewInitComplete = new ReplaySubject();
|
74
|
-
this.afterViewInitComplete = this._afterViewInitComplete;
|
75
|
-
/**
|
76
|
-
* Errors to be shown for the component.
|
77
|
-
* Automatically populated on promise rejection from save and shared with the UI.
|
78
|
-
*/
|
79
|
-
this._errors = '';
|
80
|
-
this.errorService = injector.get(ErrorService);
|
81
|
-
this.translateService = injector.get(TranslateService);
|
82
|
-
this.scrollService = injector.get(ScrollService);
|
83
|
-
this.router = injector.get(Router);
|
84
|
-
this.activatedRoute = injector.get(ActivatedRoute);
|
85
|
-
this.dialogService = injector.get(DialogService);
|
86
|
-
this.splashService = injector.get(SplashService);
|
87
|
-
this.routerHelper = injector.get(RouterHelper);
|
88
|
-
}
|
89
|
-
get errors() {
|
90
|
-
return this._errors;
|
91
|
-
}
|
92
|
-
/**
|
93
|
-
* Optional lifecycle hook that is called as part of the Angular ngOnInit lifecycle hook.
|
94
|
-
* Called before onInit is called for the first time. Add setup logic here that does
|
95
|
-
* not need to be run on every reload.
|
96
|
-
*/
|
97
|
-
onFirstInit() { }
|
98
|
-
async ngOnInit() {
|
99
|
-
try {
|
100
|
-
this.showStatus(PageStatus.Loading);
|
101
|
-
this.setUpRouterSubscriptions();
|
102
|
-
this.onFirstInit();
|
103
|
-
this.initPromise = this.onInit();
|
104
|
-
await this.initPromise;
|
105
|
-
}
|
106
|
-
catch (error) {
|
107
|
-
this.splashService.hideSplash();
|
108
|
-
this.onError(error);
|
109
|
-
}
|
110
|
-
;
|
111
|
-
}
|
112
|
-
/**
|
113
|
-
* This method is called just after the Angular Lifecycle event ngOnAfterViewInit.
|
114
|
-
* It fires after all sub-components have gone through their initialization phase.
|
115
|
-
* It is in this phase that the view components should already exist, so a derived class should
|
116
|
-
* load data from the API to populate any view components. The promise that
|
117
|
-
* is returned must not resolve until all required data has completely loaded
|
118
|
-
*/
|
119
|
-
async onAfterViewInit() { }
|
120
|
-
;
|
121
|
-
async ngAfterViewInit() {
|
122
|
-
try {
|
123
|
-
const initResult = await this.initPromise;
|
124
|
-
this.parseInitResult(initResult);
|
125
|
-
await this.onAfterViewInit();
|
126
|
-
this._afterViewInitComplete.next();
|
127
|
-
this._afterViewInitComplete.complete();
|
128
|
-
await this.onFormLoadComplete();
|
129
|
-
if (this.status.status === 'pending') {
|
130
|
-
this.showStatus(PageStatus.Loaded);
|
131
|
-
}
|
132
|
-
if (!this.skipHideSplashOnComplete) {
|
133
|
-
this.splashService.hideSplash();
|
134
|
-
}
|
135
|
-
}
|
136
|
-
catch (error) {
|
137
|
-
this.splashService.hideSplash();
|
138
|
-
this.onError(error);
|
139
|
-
}
|
140
|
-
}
|
141
|
-
/**
|
142
|
-
* A lifecycle method that executes once all data has been loaded
|
143
|
-
* through ngAfterViewInit and from local storage if required.
|
144
|
-
* It is at this point that you can subscribe to changes on the form
|
145
|
-
* reliably
|
146
|
-
*
|
147
|
-
* @protected
|
148
|
-
* @memberof PageBaseComponent
|
149
|
-
*/
|
150
|
-
async onFormLoadComplete() { }
|
151
|
-
/**
|
152
|
-
* A lifecycle hook that is called after every NavigationEnd event.
|
153
|
-
*/
|
154
|
-
onNavigationEnd() { }
|
155
|
-
/**
|
156
|
-
* Reload the component kicking off the ngOnInit and ngAfterViewInit lifecycle hooks.
|
157
|
-
* Any state that needs to be reset should be done so before calling this method.
|
158
|
-
*/
|
159
|
-
reload() {
|
160
|
-
this._afterViewInitComplete = new ReplaySubject();
|
161
|
-
this.showStatus(PageStatus.Loading);
|
162
|
-
this.initPromise = this.onInit();
|
163
|
-
this.ngAfterViewInit();
|
164
|
-
}
|
165
|
-
/**
|
166
|
-
* When overridden in a derived class this method will sync the form state
|
167
|
-
* into the object that will be persisted to the API. The value should not
|
168
|
-
* actually be sent to the API yet.
|
169
|
-
*/
|
170
|
-
async applyModelUpdates() { }
|
171
|
-
;
|
172
|
-
/**
|
173
|
-
* Save the model state to the API and return a promise that
|
174
|
-
* contains the updated entityID. The promise should be rejected
|
175
|
-
* if the save fails and errors and the overlay status will be updated
|
176
|
-
* accordingly
|
177
|
-
*/
|
178
|
-
async saveToApi() { }
|
179
|
-
;
|
180
|
-
/**
|
181
|
-
* Called after the save has completed successfully.
|
182
|
-
* It is the responsibility of the derived class to navigate
|
183
|
-
* to a properties/status page or emit appropriately if within a dialog
|
184
|
-
* @param entityId
|
185
|
-
*/
|
186
|
-
onSaveComplete(entityId) { }
|
187
|
-
;
|
188
|
-
/**
|
189
|
-
* Function called when the user clicks save. We will first touch all controls to show validation messages
|
190
|
-
* if the form is invalid. If the form is valid we will attempt to save and any errors will be reported
|
191
|
-
* back to the user
|
192
|
-
* @param event
|
193
|
-
*/
|
194
|
-
async onSave(event) {
|
195
|
-
this.formGroup.markAllAsTouched();
|
196
|
-
// If the form has pending async validators, wait for it them to complete before proceeding
|
197
|
-
if (this.formGroup.pending) {
|
198
|
-
// Show the saving overlay when the form has pending async validators
|
199
|
-
this.showStatus(PageStatus.Saving);
|
200
|
-
await lastValueFrom(this.formGroup.statusChanges.pipe(filter(status => status !== 'PENDING'), take(1), takeUntil(this.destroyed)));
|
201
|
-
}
|
202
|
-
if (this.formGroup.valid) {
|
203
|
-
await this.save();
|
204
|
-
}
|
205
|
-
else {
|
206
|
-
// Remove the saving overlay to display any errors
|
207
|
-
this.showStatus(PageStatus.Loaded);
|
208
|
-
// Only show the banner with the generic message if the parent component hasn't already set one
|
209
|
-
// by implementing onSave for additional validation
|
210
|
-
if (this.errors === '') {
|
211
|
-
this.showErrorBanner(this.defaultInvalidFormMessage);
|
212
|
-
}
|
213
|
-
if (this.scrollContainerSelector) {
|
214
|
-
setTimeout(() => {
|
215
|
-
this.scrollService.scrollToItem(this.scrollContainerSelector, ".ng-invalid");
|
216
|
-
});
|
217
|
-
}
|
218
|
-
}
|
219
|
-
}
|
220
|
-
/**
|
221
|
-
* Function available to trigger a save and bypass the form validation checks.
|
222
|
-
* This is useful if the user chooses a remove action from within an edit dialog. If the dialog form is invalid
|
223
|
-
* that is no concern to the user if they wish to remove the item they are editing.
|
224
|
-
* @param event
|
225
|
-
*/
|
226
|
-
async onSaveWithoutValidate(event) {
|
227
|
-
await this.save();
|
228
|
-
}
|
229
|
-
/**
|
230
|
-
* Function called when the component is destroyed
|
231
|
-
*/
|
232
|
-
ngOnDestroy() {
|
233
|
-
this.destroyed.next();
|
234
|
-
this.destroyed.unsubscribe();
|
235
|
-
}
|
236
|
-
/**
|
237
|
-
* Function that will log an error that is passed in to the console
|
238
|
-
* @param e
|
239
|
-
*/
|
240
|
-
onError(error) {
|
241
|
-
this.errorService.logConsoleError(error);
|
242
|
-
this.showErrorOverlay(error);
|
243
|
-
}
|
244
|
-
/**
|
245
|
-
* Show an error message in a whole-page overlay. This will prevent any more
|
246
|
-
* interactions with the page. It can take a string error message or a raw API
|
247
|
-
* error that needs to be parsed. If the API error isn't something we can handle
|
248
|
-
* a generic message is shown instead
|
249
|
-
* @param {(Error | string)} error
|
250
|
-
*/
|
251
|
-
showErrorOverlay(error) {
|
252
|
-
this.getErrorMessage(error).subscribe((translatedMessage) => {
|
253
|
-
this.status.setStatus('error', translatedMessage);
|
254
|
-
});
|
255
|
-
}
|
256
|
-
/**
|
257
|
-
* Show an error in the banner at the top of the screen. This will not produce a
|
258
|
-
* whole-page overlay like the function showError will. It can take a string error message
|
259
|
-
* or raw API error that needs to be parsed. If the API error isn't something we can handle,
|
260
|
-
* a generic message (customizable via unknownErrorDefault) is shown instead.
|
261
|
-
* @param error
|
262
|
-
* @param unknownErrorDefault
|
263
|
-
*/
|
264
|
-
showErrorBanner(error, unknownErrorDefault) {
|
265
|
-
this.getErrorMessage(error, unknownErrorDefault).subscribe((translatedMessage) => {
|
266
|
-
this._errors = translatedMessage;
|
267
|
-
this.showStatus(PageStatus.Loaded);
|
268
|
-
});
|
269
|
-
}
|
270
|
-
/**
|
271
|
-
* Parses and translates an API error or error string.
|
272
|
-
* @param e
|
273
|
-
* @param unknownErrorDefault
|
274
|
-
*/
|
275
|
-
getErrorMessage(e, unknownErrorDefault) {
|
276
|
-
let extractedMessage = this.errorService.parseApiError(e, unknownErrorDefault);
|
277
|
-
return this.translateService.get(extractedMessage);
|
278
|
-
}
|
279
|
-
/**
|
280
|
-
* Clear the errors to hide the errors banner.
|
281
|
-
*/
|
282
|
-
hideErrorBanner() {
|
283
|
-
this._errors = '';
|
284
|
-
}
|
285
|
-
/**
|
286
|
-
* Change the display status to overlay the whole page while loading or saving
|
287
|
-
* and clear it when the form is ready
|
288
|
-
* @protected
|
289
|
-
* @param {PageStatus} status
|
290
|
-
* @memberof FormBaseComponent
|
291
|
-
*/
|
292
|
-
showStatus(status) {
|
293
|
-
let knownStatus = PageStatuses[status];
|
294
|
-
if (knownStatus) {
|
295
|
-
this.status.setStatus(knownStatus.status, knownStatus.message, undefined, knownStatus.noDataTemplate, knownStatus.overlayClassList);
|
296
|
-
}
|
297
|
-
}
|
298
|
-
/**
|
299
|
-
* Allows the component to enter a pending status and execute a function that on completion will return the status
|
300
|
-
* to hasData. If an error occurs within the callback an error banner can be shown.
|
301
|
-
* @param callback
|
302
|
-
* @param pendingMessage - optional custom pending message
|
303
|
-
* @returns
|
304
|
-
*/
|
305
|
-
async runBlockingAction(callback, pendingMessage) {
|
306
|
-
this.hideErrorBanner();
|
307
|
-
this.status.setStatus('pending', pendingMessage);
|
308
|
-
return callback().catch(error => {
|
309
|
-
this.showErrorBanner(error);
|
310
|
-
// Throw the error for any downstream components that may be listening and need to react
|
311
|
-
// to any errors happening within this callback
|
312
|
-
throw (error);
|
313
|
-
}).finally(() => {
|
314
|
-
this.showStatus(PageStatus.Loaded);
|
315
|
-
});
|
316
|
-
}
|
317
|
-
;
|
318
|
-
/**
|
319
|
-
* Parses the page init result and sets the necessary properties on the page
|
320
|
-
* @param result
|
321
|
-
*/
|
322
|
-
parseInitResult(result) {
|
323
|
-
this.initResult = result;
|
324
|
-
this.title = result.title;
|
325
|
-
this.subTitle = result.subTitle;
|
326
|
-
this.subTitleUrl = result.subTitleUrl;
|
327
|
-
this.breadcrumbs = result.breadcrumbs;
|
328
|
-
this.help = result.help;
|
329
|
-
}
|
330
|
-
/**
|
331
|
-
* Controls the page status, triggers the save action and handles errors thrown.
|
332
|
-
*/
|
333
|
-
async save() {
|
334
|
-
this.showStatus(PageStatus.Saving);
|
335
|
-
try {
|
336
|
-
await this.applyModelUpdates();
|
337
|
-
let entityId = await this.saveToApi() || -1;
|
338
|
-
this._errors = '';
|
339
|
-
this.onSaveComplete(entityId);
|
340
|
-
}
|
341
|
-
catch (error) {
|
342
|
-
//clear the "saving" overlay and show the message at the top of the view through the errors property
|
343
|
-
this.showErrorBanner(error, this.defaultUnknownSaveError);
|
344
|
-
this.splashService.hideSplash();
|
345
|
-
}
|
346
|
-
}
|
347
|
-
/**
|
348
|
-
* Sets up the router event subscriptions
|
349
|
-
*/
|
350
|
-
setUpRouterSubscriptions() {
|
351
|
-
if (!this.navigationEndSubscription && !this.destroyed.closed) {
|
352
|
-
this.previousUrl = this.router.url;
|
353
|
-
// React to navigation events
|
354
|
-
this.navigationEndSubscription = this.router.events.pipe(takeUntil(this.destroyed), filter(e => e instanceof NavigationEnd)).subscribe(e => {
|
355
|
-
try {
|
356
|
-
let currentUrl = e.url;
|
357
|
-
if (this.ignoreQueryParamsOnNavigationChange) {
|
358
|
-
if (this.previousUrl.split('?')[0] !== currentUrl.split('?')[0]) {
|
359
|
-
this.navigationEndHandler(e.url);
|
360
|
-
}
|
361
|
-
}
|
362
|
-
else {
|
363
|
-
if (this.previousUrl !== currentUrl) {
|
364
|
-
this.navigationEndHandler(e.url);
|
365
|
-
}
|
366
|
-
}
|
367
|
-
}
|
368
|
-
catch (error) {
|
369
|
-
this.onError(error);
|
370
|
-
}
|
371
|
-
});
|
372
|
-
}
|
373
|
-
}
|
374
|
-
navigationEndHandler(url) {
|
375
|
-
this.previousUrl = url;
|
376
|
-
this.onNavigationEnd();
|
377
|
-
}
|
378
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PageBaseComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
|
379
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: PageBaseComponent, host: { properties: { "class": "this.classList" } }, ngImport: i0 }); }
|
380
|
-
}
|
381
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PageBaseComponent, decorators: [{
|
382
|
-
type: Directive
|
383
|
-
}], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { classList: [{
|
384
|
-
type: HostBinding,
|
385
|
-
args: ['class']
|
386
|
-
}] } });
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvcGFnZS9wYWdlLWJhc2UvcGFnZS1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxXQUFXLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQWMsYUFBYSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDdkYsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFNUQsTUFBTSxPQUFPLGNBQWM7SUFBM0I7UUFDRSxVQUFLLEdBQVksRUFBRSxDQUFDO1FBQ3BCLGFBQVEsR0FB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QUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVPLG9CQUFvQixDQUFDLEdBQVc7UUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7K0dBaGNtQixpQkFBaUI7bUdBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEdEMsU0FBUzs2RUFHd0IsU0FBUztzQkFBeEMsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTmF2SXRlbSB9IGZyb20gJy4uLy4uLy4uL2NvbnRyb2xzL25hdmlnYXRpb24vbmF2LWl0ZW0nO1xyXG5pbXBvcnQgeyBFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2Vycm9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXJIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3JvdXRlci1oZWxwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNjcm9sbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3Njcm9sbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2Rpc3BsYXkvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGVscCB9IGZyb20gJy4uLy4uLy4uL2Rpc3BsYXkvaGVscC9oZWxwLXR5cGVzJztcclxuaW1wb3J0IHsgU3BsYXNoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2Rpc3BsYXkvc3BsYXNoL3NwbGFzaC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uLy4uLy4uL2Rpc3BsYXkvdmlldy1vdmVybGF5L3ZpZXctb3ZlcmxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYWdlU3RhdHVzLCBQYWdlU3RhdHVzZXMgfSBmcm9tICcuLi9wYWdlLXN0YXR1c2VzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdlSW5pdFJlc3VsdCB7XHJcbiAgdGl0bGU/OiBzdHJpbmcgPSAnJztcclxuICBzdWJUaXRsZT86IHN0cmluZyA9ICcnO1xyXG4gIHN1YlRpdGxlVXJsPzogc3RyaW5nID0gJyc7XHJcbiAgYnJlYWRjcnVtYnM/OiBOYXZJdGVtW107XHJcbiAgaGVscD86IEhlbHA7XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFnZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgLyoqIERlZmF1bHQgY3NzIGNsYXNzZXMgYXBwbGllZCB0byBob3N0IGVsZW1lbnQgKi9cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHJvdGVjdGVkIGNsYXNzTGlzdCA9ICdkLWZsZXggZmxleC1ncm93JztcclxuXHJcbiAgLyoqXHJcbiAgICogVGl0bGUgZm9yIHRoZSBwYWdlIGRpc3BsYXllZCBpbiB0aGUgaGVhZGVyXHJcbiAgICovXHJcbiAgcHVibGljIHRpdGxlPzogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YiB0aXRsZSBmb3IgdGhlIHBhZ2UgZGlzcGxheWVkIGluIHRoZSBoZWFkZXJcclxuICAgKi9cclxuICBwdWJsaWMgc3ViVGl0bGU/OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogU3ViIHRpdGxlIHVybCBmb3IgdGhlIHBhZ2UgZGlzcGxheWVkIGluIHRoZSBoZWFkZXJcclxuICAgKi9cclxuICBwdWJsaWMgc3ViVGl0bGVVcmw/OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogU3RhdHVzIG92ZXJsYXkgZm9yIHRoZSBwYWdlXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXR1czogT3ZlcmxheSA9IG5ldyBPdmVybGF5KCdwZW5kaW5nJywgJ0xvYWRpbmcnKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQnJlYWRjcnVtYnMgZGlzcGxheWVkIGluIHRoZSBoZWFkZXJcclxuICAgKi9cclxuICBwdWJsaWMgYnJlYWRjcnVtYnM/OiBOYXZJdGVtW107XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc3VsdCByZXR1cm5lZCBmcm9tIHRoZSBvbkluaXQgZnVuY3Rpb25cclxuICAgKi9cclxuICBwdWJsaWMgaW5pdFJlc3VsdCE6IFBhZ2VJbml0UmVzdWx0O1xyXG5cclxuICAvKipcclxuICAgKiBIZWxwIGluZm9ybWF0aW9uIGZvciB0aGUgY29tcG9uZW50LCB3aGljaCBjYW4gb25seSBiZSBzZXQgdGhyb3VnaCBvbkluaXRcclxuICAgKi9cclxuICBwdWJsaWMgaGVscDogSGVscCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybSBncm91cCB0byBiZSB1c2VkIGlmIG5lZWRlZCBieSB0aGUgcGFnZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmF1bHQgaW52YWxpZCBmb3JtIG1lc3NhZ2UsIG92ZXJyaWRlIGlmIGEgbW9yZSBzcGVjaWZpYyBtZXNzYWdlIGlzIG5lZWRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWZhdWx0SW52YWxpZEZvcm1NZXNzYWdlOiBzdHJpbmcgPSAnUGxlYXNlQ29ycmVjdEZvcm1fU0MnO1xyXG5cclxuICAvKipcclxuICAgKiBEZWZhdWx0IHVua25vd24gc2F2ZSBlcnJvciBtZXNzYWdlLCBvdmVycmlkZSBpZiBhIG1vcmUgc3BlY2lmaWMgbWVzc2FnZSBpcyBuZWVkZWRcclxuICAgKi9cclxuICBwdWJsaWMgZGVmYXVsdFVua25vd25TYXZlRXJyb3I6IHN0cmluZyA9ICdQYWdlQmFzZVVua25vd25TYXZlRXJyb3JfU0MnO1xyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIG9wdCBvdXQgb2YgaGlkaW5nIHRoZSBzcGxhc2ggc2NyZWVuIHdoZW4gdGhlIHBhZ2UgaXMgbG9hZGVkXHJcbiAgICovXHJcbiAgcHVibGljIHNraXBIaWRlU3BsYXNoT25Db21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBXaGVuIHNldCB0byB0cnVlIGFueSBuYXZpZ2F0aW9uIGVuZCBldmVudHMgdGhhdCBhcmUgc3RyaWN0bHkgcXVlcnkgcGFyYW0gY2hhbmdlcyB3aWxsXHJcbiAgICogbm90IGNhbGwgdGhlIG9uTmF2aWdhdGlvbkVuZCBmdW5jdGlvbi4gVGhpcyBhbGxvd3MgcGFnZXMgdG8gY2hhbmdlIHRoZSB2aWV3IHdpdGggcXVlcnlcclxuICAgKiBwYXJhbXMgYW5kIG5vdCB0cmlnZ2VyIGEgZnVsbCByZWZyZXNoLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBpZ25vcmVRdWVyeVBhcmFtc09uTmF2aWdhdGlvbkNoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHByZXZpb3VzVXJsOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIHVuc3Vic2NyaWJlIGZyb20gb2JzZXJ2YWJsZXNcclxuICAgKi9cclxuICBwdWJsaWMgZGVzdHJveWVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlZCB0byBrbm93IHdoZW4gdGhlIHBhZ2UgaGFzIGJlZW4gbG9hZGVkLCB0aGlzIHdpbGwgYmUgY29tcGxldGVkXHJcbiAgICogYWZ0ZXIgb25BZnRlclZpZXdJbml0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfYWZ0ZXJWaWV3SW5pdENvbXBsZXRlOiBSZXBsYXlTdWJqZWN0PHZvaWQ+ID0gbmV3IFJlcGxheVN1YmplY3QoKTtcclxuICBwdWJsaWMgYWZ0ZXJWaWV3SW5pdENvbXBsZXRlOiBPYnNlcnZhYmxlPHZvaWQ+ID0gdGhpcy5fYWZ0ZXJWaWV3SW5pdENvbXBsZXRlO1xyXG5cclxuICAvKipcclxuICAgKiBJZiBkZWZpbmVkIHRoZSBmb3JtIHdpbGwgYXV0b21hdGljYWxseSBzY3JvbGwgdG8gdGhlIGZpcnN0IGludmFsaWQgZm9ybSBjb250cm9sXHJcbiAgICogaWYgaXQncyBvdXRzaWRlIG9mIHRoZSB2aWV3XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNjcm9sbENvbnRhaW5lclNlbGVjdG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmlwdGlvbiB0byB0aGUgcm91dGVyIGV2ZW50cyBOYXZpZ2F0aW9uRW5kXHJcbiAgICogVXNlZCB0byBrbm93IGlmIGFscmVhZHkgc3Vic2NyaWJlZCB0b1xyXG4gICAqL1xyXG4gIHByaXZhdGUgbmF2aWdhdGlvbkVuZFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ29tbW9uIHNlcnZpY2VzIHVzZWQgYnkgcGFnZS1iYXNlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGVycm9yU2VydmljZTogRXJyb3JTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCBzY3JvbGxTZXJ2aWNlOiBTY3JvbGxTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcjtcclxuICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlO1xyXG4gIHByb3RlY3RlZCBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCBzcGxhc2hTZXJ2aWNlOiBTcGxhc2hTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCByb3V0ZXJIZWxwZXI6IFJvdXRlckhlbHBlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICB0aGlzLmVycm9yU2VydmljZSA9IGluamVjdG9yLmdldChFcnJvclNlcnZpY2UpO1xyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG4gICAgdGhpcy5zY3JvbGxTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNjcm9sbFNlcnZpY2UpO1xyXG4gICAgdGhpcy5yb3V0ZXIgPSBpbmplY3Rvci5nZXQoUm91dGVyKTtcclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUgPSBpbmplY3Rvci5nZXQoQWN0aXZhdGVkUm91dGUpO1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KERpYWxvZ1NlcnZpY2UpO1xyXG4gICAgdGhpcy5zcGxhc2hTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNwbGFzaFNlcnZpY2UpO1xyXG4gICAgdGhpcy5yb3V0ZXJIZWxwZXIgPSBpbmplY3Rvci5nZXQoUm91dGVySGVscGVyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVycm9ycyB0byBiZSBzaG93biBmb3IgdGhlIGNvbXBvbmVudC5cclxuICAgKiBBdXRvbWF0aWNhbGx5IHBvcHVsYXRlZCBvbiBwcm9taXNlIHJlamVjdGlvbiBmcm9tIHNhdmUgYW5kIHNoYXJlZCB3aXRoIHRoZSBVSS5cclxuICAgKi9cclxuICBwcml2YXRlIF9lcnJvcnM6IHN0cmluZyA9ICcnO1xyXG4gIHB1YmxpYyBnZXQgZXJyb3JzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWwgbGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYXMgcGFydCBvZiB0aGUgQW5ndWxhciBuZ09uSW5pdCBsaWZlY3ljbGUgaG9vay5cclxuICAgKiBDYWxsZWQgYmVmb3JlIG9uSW5pdCBpcyBjYWxsZWQgZm9yIHRoZSBmaXJzdCB0aW1lLiBBZGQgc2V0dXAgbG9naWMgaGVyZSB0aGF0IGRvZXNcclxuICAgKiBub3QgbmVlZCB0byBiZSBydW4gb24gZXZlcnkgcmVsb2FkLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBvbkZpcnN0SW5pdCgpOiB2b2lkIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgaW4gdGhlIGRlcml2ZWQgY2xhc3MgYXMgcGFydCBvZiB0aGUgQW5ndWxhciBuZ09uSW5pdFxyXG4gICAqIGxpZmVjeWNsZSBob29rLiBJdCBtdXN0IHByb3ZpZGUgYSBQYWdlSW5pdFJlc3VsdCBiYWNrIHRvIHRoZSBiYXNlIGNsYXNzIHRvIHByb3Blcmx5XHJcbiAgICogc2V0IHVwIHRoZSBwYWdlLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvbkluaXQoKTogUHJvbWlzZTxQYWdlSW5pdFJlc3VsdD47XHJcbiAgcHJvdGVjdGVkIGluaXRQcm9taXNlITogUHJvbWlzZTxQYWdlSW5pdFJlc3VsdD47XHJcblxyXG4gIHB1YmxpYyBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2hvd1N0YXR1cyhQYWdlU3RhdHVzLkxvYWRpbmcpO1xyXG4gICAgICB0aGlzLnNldFVwUm91dGVyU3Vic2NyaXB0aW9ucygpO1xyXG4gICAgICB0aGlzLm9uRmlyc3RJbml0KCk7XHJcbiAgICAgIHRoaXMuaW5pdFByb21pc2UgPSB0aGlzLm9uSW5pdCgpO1xyXG5cclxuICAgICAgYXdhaXQgdGhpcy5pbml0UHJvbWlzZTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHRoaXMuc3BsYXNoU2VydmljZS5oaWRlU3BsYXNoKCk7XHJcbiAgICAgIHRoaXMub25FcnJvcihlcnJvcik7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGp1c3QgYWZ0ZXIgdGhlIEFuZ3VsYXIgTGlmZWN5Y2xlIGV2ZW50IG5nT25BZnRlclZpZXdJbml0LlxyXG4gICAqIEl0IGZpcmVzIGFmdGVyIGFsbCBzdWItY29tcG9uZW50cyBoYXZlIGdvbmUgdGhyb3VnaCB0aGVpciBpbml0aWFsaXphdGlvbiBwaGFzZS5cclxuICAgKiBJdCBpcyBpbiB0aGlzIHBoYXNlIHRoYXQgdGhlIHZpZXcgY29tcG9uZW50cyBzaG91bGQgYWxyZWFkeSBleGlzdCwgc28gYSBkZXJpdmVkIGNsYXNzIHNob3VsZFxyXG4gICAqIGxvYWQgZGF0YSBmcm9tIHRoZSBBUEkgdG8gcG9wdWxhdGUgYW55IHZpZXcgY29tcG9uZW50cy4gVGhlIHByb21pc2UgdGhhdFxyXG4gICAqIGlzIHJldHVybmVkIG11c3Qgbm90IHJlc29sdmUgdW50aWwgYWxsIHJlcXVpcmVkIGRhdGEgaGFzIGNvbXBsZXRlbHkgbG9hZGVkXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFzeW5jIG9uQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHsgfTtcclxuICBwdWJsaWMgYXN5bmMgbmdBZnRlclZpZXdJbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgaW5pdFJlc3VsdCA9IGF3YWl0IHRoaXMuaW5pdFByb21pc2U7XHJcbiAgICAgIHRoaXMucGFyc2VJbml0UmVzdWx0KGluaXRSZXN1bHQpO1xyXG5cclxuICAgICAgYXdhaXQgdGhpcy5vbkFmdGVyVmlld0luaXQoKTtcclxuXHJcbiAgICAgIHRoaXMuX2FmdGVyVmlld0luaXRDb21wbGV0ZS5uZXh0KCk7XHJcbiAgICAgIHRoaXMuX2FmdGVyVmlld0luaXRDb21wbGV0ZS5jb21wbGV0ZSgpO1xyXG5cclxuICAgICAgYXdhaXQgdGhpcy5vbkZvcm1Mb2FkQ29tcGxldGUoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnN0YXR1cy5zdGF0dXMgPT09ICdwZW5kaW5nJykge1xyXG4gICAgICAgIHRoaXMuc2hvd1N0YXR1cyhQYWdlU3RhdHVzLkxvYWRlZCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy5za2lwSGlkZVNwbGFzaE9uQ29tcGxldGUpIHtcclxuICAgICAgICB0aGlzLnNwbGFzaFNlcnZpY2UuaGlkZVNwbGFzaCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgdGhpcy5zcGxhc2hTZXJ2aWNlLmhpZGVTcGxhc2goKTtcclxuICAgICAgdGhpcy5vbkVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgbGlmZWN5Y2xlIG1ldGhvZCB0aGF0IGV4ZWN1dGVzIG9uY2UgYWxsIGRhdGEgaGFzIGJlZW4gbG9hZGVkXHJcbiAgICogdGhyb3VnaCBuZ0FmdGVyVmlld0luaXQgYW5kIGZyb20gbG9jYWwgc3RvcmFnZSBpZiByZXF1aXJlZC5cclxuICAgKiBJdCBpcyBhdCB0aGlzIHBvaW50IHRoYXQgeW91IGNhbiBzdWJzY3JpYmUgdG8gY2hhbmdlcyBvbiB0aGUgZm9ybVxyXG4gICAqIHJlbGlhYmx5XHJcbiAgICpcclxuICAgKiBAcHJvdGVjdGVkXHJcbiAgICogQG1lbWJlcm9mIFBhZ2VCYXNlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFzeW5jIG9uRm9ybUxvYWRDb21wbGV0ZSgpOiBQcm9taXNlPGFueT4geyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgbGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgZXZlcnkgTmF2aWdhdGlvbkVuZCBldmVudC5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgb25OYXZpZ2F0aW9uRW5kKCk6IHZvaWQgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbG9hZCB0aGUgY29tcG9uZW50IGtpY2tpbmcgb2ZmIHRoZSBuZ09uSW5pdCBhbmQgbmdBZnRlclZpZXdJbml0IGxpZmVjeWNsZSBob29rcy5cclxuICAgKiBBbnkgc3RhdGUgdGhhdCBuZWVkcyB0byBiZSByZXNldCBzaG91bGQgYmUgZG9uZSBzbyBiZWZvcmUgY2FsbGluZyB0aGlzIG1ldGhvZC5cclxuICAgKi9cclxuICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYWZ0ZXJWaWV3SW5pdENvbXBsZXRlID0gbmV3IFJlcGxheVN1YmplY3QoKTtcclxuXHJcbiAgICB0aGlzLnNob3dTdGF0dXMoUGFnZVN0YXR1cy5Mb2FkaW5nKTtcclxuICAgIHRoaXMuaW5pdFByb21pc2UgPSB0aGlzLm9uSW5pdCgpO1xyXG4gICAgdGhpcy5uZ0FmdGVyVmlld0luaXQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZW4gb3ZlcnJpZGRlbiBpbiBhIGRlcml2ZWQgY2xhc3MgdGhpcyBtZXRob2Qgd2lsbCBzeW5jIHRoZSBmb3JtIHN0YXRlXHJcbiAgICogaW50byB0aGUgb2JqZWN0IHRoYXQgd2lsbCBiZSBwZXJzaXN0ZWQgdG8gdGhlIEFQSS4gVGhlIHZhbHVlIHNob3VsZCBub3RcclxuICAgKiBhY3R1YWxseSBiZSBzZW50IHRvIHRoZSBBUEkgeWV0LlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhc3luYyBhcHBseU1vZGVsVXBkYXRlcygpOiBQcm9taXNlPHZvaWQ+IHsgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZSB0aGUgbW9kZWwgc3RhdGUgdG8gdGhlIEFQSSBhbmQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0XHJcbiAgICogY29udGFpbnMgdGhlIHVwZGF0ZWQgZW50aXR5SUQuIFRoZSBwcm9taXNlIHNob3VsZCBiZSByZWplY3RlZFxyXG4gICAqIGlmIHRoZSBzYXZlIGZhaWxzIGFuZCBlcnJvcnMgYW5kIHRoZSBvdmVybGF5IHN0YXR1cyB3aWxsIGJlIHVwZGF0ZWRcclxuICAgKiBhY2NvcmRpbmdseVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhc3luYyBzYXZlVG9BcGkoKTogUHJvbWlzZTxudW1iZXIgfCB2b2lkPiB7IH07XHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGxlZCBhZnRlciB0aGUgc2F2ZSBoYXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS5cclxuICAgKiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGRlcml2ZWQgY2xhc3MgdG8gbmF2aWdhdGVcclxuICAgKiB0byBhIHByb3BlcnRpZXMvc3RhdHVzIHBhZ2Ugb3IgZW1pdCBhcHByb3ByaWF0ZWx5IGlmIHdpdGhpbiBhIGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBlbnRpdHlJZFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBvblNhdmVDb21wbGV0ZShlbnRpdHlJZD86IG51bWJlcik6IHZvaWQgeyB9O1xyXG5cclxuICAvKipcclxuICAgKiBGdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgdXNlciBjbGlja3Mgc2F2ZS4gIFdlIHdpbGwgZmlyc3QgdG91Y2ggYWxsIGNvbnRyb2xzIHRvIHNob3cgdmFsaWRhdGlvbiBtZXNzYWdlc1xyXG4gICAqIGlmIHRoZSBmb3JtIGlzIGludmFsaWQuICBJZiB0aGUgZm9ybSBpcyB2YWxpZCB3ZSB3aWxsIGF0dGVtcHQgdG8gc2F2ZSBhbmQgYW55IGVycm9ycyB3aWxsIGJlIHJlcG9ydGVkXHJcbiAgICogYmFjayB0byB0aGUgdXNlclxyXG4gICAqIEBwYXJhbSBldmVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBvblNhdmUoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcblxyXG4gICAgLy8gSWYgdGhlIGZvcm0gaGFzIHBlbmRpbmcgYXN5bmMgdmFsaWRhdG9ycywgd2FpdCBmb3IgaXQgdGhlbSB0byBjb21wbGV0ZSBiZWZvcmUgcHJvY2VlZGluZ1xyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLnBlbmRpbmcpIHtcclxuICAgICAgLy8gU2hvdyB0aGUgc2F2aW5nIG92ZXJsYXkgd2hlbiB0aGUgZm9ybSBoYXMgcGVuZGluZyBhc3luYyB2YWxpZGF0b3JzXHJcbiAgICAgIHRoaXMuc2hvd1N0YXR1cyhQYWdlU3RhdHVzLlNhdmluZyk7XHJcbiAgICAgIGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5mb3JtR3JvdXAuc3RhdHVzQ2hhbmdlcy5waXBlKGZpbHRlcihzdGF0dXMgPT4gc3RhdHVzICE9PSAnUEVORElORycpLCB0YWtlKDEpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLnZhbGlkKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuc2F2ZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gUmVtb3ZlIHRoZSBzYXZpbmcgb3ZlcmxheSB0byBkaXNwbGF5IGFueSBlcnJvcnNcclxuICAgICAgdGhpcy5zaG93U3RhdHVzKFBhZ2VTdGF0dXMuTG9hZGVkKTtcclxuICAgICAgXHJcbiAgICAgIC8vIE9ubHkgc2hvdyB0aGUgYmFubmVyIHdpdGggdGhlIGdlbmVyaWMgbWVzc2FnZSBpZiB0aGUgcGFyZW50IGNvbXBvbmVudCBoYXNuJ3QgYWxyZWFkeSBzZXQgb25lXHJcbiAgICAgIC8vIGJ5IGltcGxlbWVudGluZyBvblNhdmUgZm9yIGFkZGl0aW9uYWwgdmFsaWRhdGlvblxyXG4gICAgICBpZiAodGhpcy5lcnJvcnMgPT09ICcnKSB7XHJcbiAgICAgICAgdGhpcy5zaG93RXJyb3JCYW5uZXIodGhpcy5kZWZhdWx0SW52YWxpZEZvcm1NZXNzYWdlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuc2Nyb2xsQ29udGFpbmVyU2VsZWN0b3IpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2Nyb2xsU2VydmljZS5zY3JvbGxUb0l0ZW0odGhpcy5zY3JvbGxDb250YWluZXJTZWxlY3RvciEsIFwiLm5nLWludmFsaWRcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIGF2YWlsYWJsZSB0byB0cmlnZ2VyIGEgc2F2ZSBhbmQgYnlwYXNzIHRoZSBmb3JtIHZhbGlkYXRpb24gY2hlY2tzLlxyXG4gICAqIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSB1c2VyIGNob29zZXMgYSByZW1vdmUgYWN0aW9uIGZyb20gd2l0aGluIGFuIGVkaXQgZGlhbG9nLiBJZiB0aGUgZGlhbG9nIGZvcm0gaXMgaW52YWxpZFxyXG4gICAqIHRoYXQgaXMgbm8gY29uY2VybiB0byB0aGUgdXNlciBpZiB0aGV5IHdpc2ggdG8gcmVtb3ZlIHRoZSBpdGVtIHRoZXkgYXJlIGVkaXRpbmcuXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgcHVibGljIGFzeW5jIG9uU2F2ZVdpdGhvdXRWYWxpZGF0ZShldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuc2F2ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcclxuICAgKi9cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gdGhhdCB3aWxsIGxvZyBhbiBlcnJvciB0aGF0IGlzIHBhc3NlZCBpbiB0byB0aGUgY29uc29sZVxyXG4gICAqIEBwYXJhbSBlXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG9uRXJyb3IoZXJyb3I6IEVycm9yKTogdm9pZCB7XHJcbiAgICB0aGlzLmVycm9yU2VydmljZS5sb2dDb25zb2xlRXJyb3IoZXJyb3IpO1xyXG4gICAgdGhpcy5zaG93RXJyb3JPdmVybGF5KGVycm9yKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgYW4gZXJyb3IgbWVzc2FnZSBpbiBhIHdob2xlLXBhZ2Ugb3ZlcmxheS4gVGhpcyB3aWxsIHByZXZlbnQgYW55IG1vcmVcclxuICAgKiBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgcGFnZS4gSXQgY2FuIHRha2UgYSBzdHJpbmcgZXJyb3IgbWVzc2FnZSBvciBhIHJhdyBBUElcclxuICAgKiBlcnJvciB0aGF0IG5lZWRzIHRvIGJlIHBhcnNlZC4gSWYgdGhlIEFQSSBlcnJvciBpc24ndCBzb21ldGhpbmcgd2UgY2FuIGhhbmRsZVxyXG4gICAqIGEgZ2VuZXJpYyBtZXNzYWdlIGlzIHNob3duIGluc3RlYWRcclxuICAgKiBAcGFyYW0geyhFcnJvciB8IHN0cmluZyl9IGVycm9yXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNob3dFcnJvck92ZXJsYXkoZXJyb3I6IEVycm9yIHwgc3RyaW5nKSB7XHJcbiAgICB0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikuc3Vic2NyaWJlKCh0cmFuc2xhdGVkTWVzc2FnZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cygnZXJyb3InLCB0cmFuc2xhdGVkTWVzc2FnZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgYW4gZXJyb3IgaW4gdGhlIGJhbm5lciBhdCB0aGUgdG9wIG9mIHRoZSBzY3JlZW4uICBUaGlzIHdpbGwgbm90IHByb2R1Y2UgYVxyXG4gICAqIHdob2xlLXBhZ2Ugb3ZlcmxheSBsaWtlIHRoZSBmdW5jdGlvbiBzaG93RXJyb3Igd2lsbC4gIEl0IGNhbiB0YWtlIGEgc3RyaW5nIGVycm9yIG1lc3NhZ2VcclxuICAgKiBvciByYXcgQVBJIGVycm9yIHRoYXQgbmVlZHMgdG8gYmUgcGFyc2VkLiAgSWYgdGhlIEFQSSBlcnJvciBpc24ndCBzb21ldGhpbmcgd2UgY2FuIGhhbmRsZSxcclxuICAgKiBhIGdlbmVyaWMgbWVzc2FnZSAoY3VzdG9taXphYmxlIHZpYSB1bmtub3duRXJyb3JEZWZhdWx0KSBpcyBzaG93biBpbnN0ZWFkLlxyXG4gICAqIEBwYXJhbSBlcnJvclxyXG4gICAqIEBwYXJhbSB1bmtub3duRXJyb3JEZWZhdWx0XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNob3dFcnJvckJhbm5lcihlcnJvcjogRXJyb3IgfCBzdHJpbmcsIHVua25vd25FcnJvckRlZmF1bHQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yLCB1bmtub3duRXJyb3JEZWZhdWx0KS5zdWJzY3JpYmUoKHRyYW5zbGF0ZWRNZXNzYWdlOiBzdHJpbmcpID0+IHtcclxuICAgICAgdGhpcy5fZXJyb3JzID0gdHJhbnNsYXRlZE1lc3NhZ2U7XHJcbiAgICAgIHRoaXMuc2hvd1N0YXR1cyhQYWdlU3RhdHVzLkxvYWRlZCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlcyBhbmQgdHJhbnNsYXRlcyBhbiBBUEkgZXJyb3Igb3IgZXJyb3Igc3RyaW5nLlxyXG4gICAqIEBwYXJhbSBlXHJcbiAgICogQHBhcmFtIHVua25vd25FcnJvckRlZmF1bHRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0RXJyb3JNZXNzYWdlKGU6IEVycm9yIHwgc3RyaW5nLCB1bmtub3duRXJyb3JEZWZhdWx0Pzogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGxldCBleHRyYWN0ZWRNZXNzYWdlID0gdGhpcy5lcnJvclNlcnZpY2UucGFyc2VBcGlFcnJvcihlLCB1bmtub3duRXJyb3JEZWZhdWx0KTtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KGV4dHJhY3RlZE1lc3NhZ2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgdGhlIGVycm9ycyB0byBoaWRlIHRoZSBlcnJvcnMgYmFubmVyLlxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBoaWRlRXJyb3JCYW5uZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9lcnJvcnMgPSAnJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZSB0aGUgZGlzcGxheSBzdGF0dXMgdG8gb3ZlcmxheSB0aGUgd2hvbGUgcGFnZSB3aGlsZSBsb2FkaW5nIG9yIHNhdmluZ1xyXG4gICAqIGFuZCBjbGVhciBpdCB3aGVuIHRoZSBmb3JtIGlzIHJlYWR5XHJcbiAgICogQHByb3RlY3RlZFxyXG4gICAqIEBwYXJhbSB7UGFnZVN0YXR1c30gc3RhdHVzXHJcbiAgICogQG1lbWJlcm9mIEZvcm1CYXNlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHNob3dTdGF0dXMoc3RhdHVzOiBQYWdlU3RhdHVzKSB7XHJcbiAgICBsZXQga25vd25TdGF0dXMgPSBQYWdlU3RhdHVzZXNbc3RhdHVzXTtcclxuICAgIGlmIChrbm93blN0YXR1cykge1xyXG4gICAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoa25vd25TdGF0dXMuc3RhdHVzLCBrbm93blN0YXR1cy5tZXNzYWdlLCB1bmRlZmluZWQsIGtub3duU3RhdHVzLm5vRGF0YVRlbXBsYXRlLCBrbm93blN0YXR1cy5vdmVybGF5Q2xhc3NMaXN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbG93cyB0aGUgY29tcG9uZW50IHRvIGVudGVyIGEgcGVuZGluZyBzdGF0dXMgYW5kIGV4ZWN1dGUgYSBmdW5jdGlvbiB0aGF0IG9uIGNvbXBsZXRpb24gd2lsbCByZXR1cm4gdGhlIHN0YXR1c1xyXG4gICAqIHRvIGhhc0RhdGEuIElmIGFuIGVycm9yIG9jY3VycyB3aXRoaW4gdGhlIGNhbGxiYWNrIGFuIGVycm9yIGJhbm5lciBjYW4gYmUgc2hvd24uXHJcbiAgICogQHBhcmFtIGNhbGxiYWNrXHJcbiAgICogQHBhcmFtIHBlbmRpbmdNZXNzYWdlIC0gb3B0aW9uYWwgY3VzdG9tIHBlbmRpbmcgbWVzc2FnZVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFzeW5jIHJ1bkJsb2NraW5nQWN0aW9uKGNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPGFueT4sIHBlbmRpbmdNZXNzYWdlPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHRoaXMuaGlkZUVycm9yQmFubmVyKCk7XHJcbiAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ3BlbmRpbmcnLCBwZW5kaW5nTWVzc2FnZSk7XHJcblxyXG4gICAgcmV0dXJuIGNhbGxiYWNrKCkuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICB0aGlzLnNob3dFcnJvckJhbm5lcihlcnJvcik7XHJcbiAgICAgIC8vIFRocm93IHRoZSBlcnJvciBmb3IgYW55IGRvd25zdHJlYW0gY29tcG9uZW50cyB0aGF0IG1heSBiZSBsaXN0ZW5pbmcgYW5kIG5lZWQgdG8gcmVhY3RcclxuICAgICAgLy8gdG8gYW55IGVycm9ycyBoYXBwZW5pbmcgd2l0aGluIHRoaXMgY2FsbGJhY2tcclxuICAgICAgdGhyb3cgKGVycm9yKTtcclxuICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dTdGF0dXMoUGFnZVN0YXR1cy5Mb2FkZWQpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogUGFyc2VzIHRoZSBwYWdlIGluaXQgcmVzdWx0IGFuZCBzZXRzIHRoZSBuZWNlc3NhcnkgcHJvcGVydGllcyBvbiB0aGUgcGFnZVxyXG4gICAqIEBwYXJhbSByZXN1bHRcclxuICAgKi9cclxuICBwcml2YXRlIHBhcnNlSW5pdFJlc3VsdChyZXN1bHQ6IFBhZ2VJbml0UmVzdWx0KTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLnRpdGxlID0gcmVzdWx0LnRpdGxlO1xyXG4gICAgdGhpcy5zdWJUaXRsZSA9IHJlc3VsdC5zdWJUaXRsZTtcclxuICAgIHRoaXMuc3ViVGl0bGVVcmwgPSByZXN1bHQuc3ViVGl0bGVVcmw7XHJcbiAgICB0aGlzLmJyZWFkY3J1bWJzID0gcmVzdWx0LmJyZWFkY3J1bWJzO1xyXG4gICAgdGhpcy5oZWxwID0gcmVzdWx0LmhlbHA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb250cm9scyB0aGUgcGFnZSBzdGF0dXMsIHRyaWdnZXJzIHRoZSBzYXZlIGFjdGlvbiBhbmQgaGFuZGxlcyBlcnJvcnMgdGhyb3duLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgYXN5bmMgc2F2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2hvd1N0YXR1cyhQYWdlU3RhdHVzLlNhdmluZyk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy5hcHBseU1vZGVsVXBkYXRlcygpO1xyXG4gICAgICBsZXQgZW50aXR5SWQgPSBhd2FpdCB0aGlzLnNhdmVUb0FwaSgpIHx8IC0xO1xyXG5cclxuICAgICAgdGhpcy5fZXJyb3JzID0gJyc7XHJcblxyXG4gICAgICB0aGlzLm9uU2F2ZUNvbXBsZXRlKGVudGl0eUlkKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIC8vY2xlYXIgdGhlIFwic2F2aW5nXCIgb3ZlcmxheSBhbmQgc2hvdyB0aGUgbWVzc2FnZSBhdCB0aGUgdG9wIG9mIHRoZSB2aWV3IHRocm91Z2ggdGhlIGVycm9ycyBwcm9wZXJ0eVxyXG4gICAgICB0aGlzLnNob3dFcnJvckJhbm5lcihlcnJvciwgdGhpcy5kZWZhdWx0VW5rbm93blNhdmVFcnJvcik7XHJcbiAgICAgIHRoaXMuc3BsYXNoU2VydmljZS5oaWRlU3BsYXNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHVwIHRoZSByb3V0ZXIgZXZlbnQgc3Vic2NyaXB0aW9uc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0VXBSb3V0ZXJTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLm5hdmlnYXRpb25FbmRTdWJzY3JpcHRpb24gJiYgIXRoaXMuZGVzdHJveWVkLmNsb3NlZCkge1xyXG4gICAgICB0aGlzLnByZXZpb3VzVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG5cclxuICAgICAgLy8gUmVhY3QgdG8gbmF2aWdhdGlvbiBldmVudHNcclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uRW5kU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSxcclxuICAgICAgICBmaWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXHJcbiAgICAgICkuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBsZXQgY3VycmVudFVybDogc3RyaW5nID0gKDxOYXZpZ2F0aW9uRW5kPmUpLnVybDtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5pZ25vcmVRdWVyeVBhcmFtc09uTmF2aWdhdGlvbkNoYW5nZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2aW91c1VybC5zcGxpdCgnPycpWzBdICE9PSBjdXJyZW50VXJsLnNwbGl0KCc/JylbMF0pIHtcclxuICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25FbmRIYW5kbGVyKCg8TmF2aWdhdGlvbkVuZD5lKS51cmwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2aW91c1VybCAhPT0gY3VycmVudFVybCkge1xyXG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkVuZEhhbmRsZXIoKDxOYXZpZ2F0aW9uRW5kPmUpLnVybCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgdGhpcy5vbkVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kSGFuZGxlcih1cmw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5wcmV2aW91c1VybCA9IHVybDtcclxuICAgIHRoaXMub25OYXZpZ2F0aW9uRW5kKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
@@ -1,23 +0,0 @@
|
|
1
|
-
export var PageStatus;
|
2
|
-
(function (PageStatus) {
|
3
|
-
PageStatus["Loading"] = "loading";
|
4
|
-
PageStatus["Loaded"] = "loaded";
|
5
|
-
PageStatus["Saving"] = "saving";
|
6
|
-
PageStatus["NoData"] = "noData";
|
7
|
-
})(PageStatus || (PageStatus = {}));
|
8
|
-
;
|
9
|
-
export class PageStatuses {
|
10
|
-
static get loading() {
|
11
|
-
return { status: "pending", message: "Loading" };
|
12
|
-
}
|
13
|
-
static get loaded() {
|
14
|
-
return { status: "hasData", message: "" };
|
15
|
-
}
|
16
|
-
static get saving() {
|
17
|
-
return { status: "pending", message: "Saving" };
|
18
|
-
}
|
19
|
-
static get noData() {
|
20
|
-
return { status: "noData", message: "No data is available" };
|
21
|
-
}
|
22
|
-
}
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1zdGF0dXNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvcGFnZS9wYWdlLXN0YXR1c2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLFVBS1g7QUFMRCxXQUFZLFVBQVU7SUFDcEIsaUNBQW1CLENBQUE7SUFDbkIsK0JBQWlCLENBQUE7SUFDakIsK0JBQWlCLENBQUE7SUFDakIsK0JBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUxXLFVBQVUsS0FBVixVQUFVLFFBS3JCO0FBQUEsQ0FBQztBQUVGLE1BQU0sT0FBTyxZQUFZO0lBQ2hCLE1BQU0sS0FBSyxPQUFPO1FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRU0sTUFBTSxLQUFLLE1BQU07UUFDdEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFTSxNQUFNLEtBQUssTUFBTTtRQUN0QixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVNLE1BQU0sS0FBSyxNQUFNO1FBQ3RCLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxDQUFDO0lBQy9ELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpc3BsYXlTdGF0dXMgfSBmcm9tICcuLi9kaXNwbGF5J1xyXG5cclxuZXhwb3J0IGVudW0gUGFnZVN0YXR1cyB7XHJcbiAgTG9hZGluZyA9ICdsb2FkaW5nJyxcclxuICBMb2FkZWQgPSAnbG9hZGVkJyxcclxuICBTYXZpbmcgPSAnc2F2aW5nJyxcclxuICBOb0RhdGEgPSAnbm9EYXRhJ1xyXG59O1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhZ2VTdGF0dXNlcyB7XHJcbiAgcHVibGljIHN0YXRpYyBnZXQgbG9hZGluZygpOiBEaXNwbGF5U3RhdHVzIHtcclxuICAgIHJldHVybiB7IHN0YXR1czogXCJwZW5kaW5nXCIsIG1lc3NhZ2U6IFwiTG9hZGluZ1wiIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldCBsb2FkZWQoKTogRGlzcGxheVN0YXR1cyB7XHJcbiAgICByZXR1cm4geyBzdGF0dXM6IFwiaGFzRGF0YVwiLCBtZXNzYWdlOiBcIlwiIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldCBzYXZpbmcoKTogRGlzcGxheVN0YXR1cyB7XHJcbiAgICByZXR1cm4geyBzdGF0dXM6IFwicGVuZGluZ1wiLCBtZXNzYWdlOiBcIlNhdmluZ1wiIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldCBub0RhdGEoKTogRGlzcGxheVN0YXR1cyB7XHJcbiAgICByZXR1cm4geyBzdGF0dXM6IFwibm9EYXRhXCIsIG1lc3NhZ2U6IFwiTm8gZGF0YSBpcyBhdmFpbGFibGVcIiB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|
@@ -1,23 +0,0 @@
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
import * as i1 from "@angular/common";
|
4
|
-
import * as i2 from "@angular/router";
|
5
|
-
export class PageTitleComponent {
|
6
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PageTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
7
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PageTitleComponent, selector: "app-page-title", inputs: { title: "title", titleIcon: "titleIcon", subTitle: "subTitle", subTitleUrl: "subTitleUrl" }, host: { classAttribute: "d-flex" }, ngImport: i0, template: "<i *ngIf=\"titleIcon\"\r\n class=\"flex-shrink mr-1 my-1 ec-icon ec-icon-md {{titleIcon}}\"></i>\r\n<div class=\"text-truncate\">\r\n <h1 *ngIf=\"title\"\r\n class=\"text-title-1 mb-0 py-1 text-truncate\"\r\n title=\"{{title}}\">{{title}}</h1>\r\n <p *ngIf=\"subTitle && !subTitleUrl\"\r\n class=\"text-caption-1 mb-0 mt-n1 text-truncate\">{{subTitle}}</p>\r\n <a *ngIf=\"subTitle && subTitleUrl\"\r\n id=\"subTitle_link\"\r\n class=\"d-block text-truncate mb-0 mt-n1 font-size-small\"\r\n routerLink=\"{{subTitleUrl}}\"\r\n target=\"_self\">\r\n {{subTitle}}\r\n </a>\r\n</div>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
|
8
|
-
}
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PageTitleComponent, decorators: [{
|
10
|
-
type: Component,
|
11
|
-
args: [{ selector: 'app-page-title', host: {
|
12
|
-
class: 'd-flex'
|
13
|
-
}, template: "<i *ngIf=\"titleIcon\"\r\n class=\"flex-shrink mr-1 my-1 ec-icon ec-icon-md {{titleIcon}}\"></i>\r\n<div class=\"text-truncate\">\r\n <h1 *ngIf=\"title\"\r\n class=\"text-title-1 mb-0 py-1 text-truncate\"\r\n title=\"{{title}}\">{{title}}</h1>\r\n <p *ngIf=\"subTitle && !subTitleUrl\"\r\n class=\"text-caption-1 mb-0 mt-n1 text-truncate\">{{subTitle}}</p>\r\n <a *ngIf=\"subTitle && subTitleUrl\"\r\n id=\"subTitle_link\"\r\n class=\"d-block text-truncate mb-0 mt-n1 font-size-small\"\r\n routerLink=\"{{subTitleUrl}}\"\r\n target=\"_self\">\r\n {{subTitle}}\r\n </a>\r\n</div>" }]
|
14
|
-
}], propDecorators: { title: [{
|
15
|
-
type: Input
|
16
|
-
}], titleIcon: [{
|
17
|
-
type: Input
|
18
|
-
}], subTitle: [{
|
19
|
-
type: Input
|
20
|
-
}], subTitleUrl: [{
|
21
|
-
type: Input
|
22
|
-
}] } });
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10aXRsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3BhZ2UvcGFnZS10aXRsZS9wYWdlLXRpdGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvcGFnZS9wYWdlLXRpdGxlL3BhZ2UtdGl0bGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFTakQsTUFBTSxPQUFPLGtCQUFrQjsrR0FBbEIsa0JBQWtCO21HQUFsQixrQkFBa0IsZ01DVC9CLHduQkFlTTs7NEZETk8sa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLGdCQUFnQixRQUVwQjt3QkFDSixLQUFLLEVBQUUsUUFBUTtxQkFDaEI7OEJBR2UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXBhZ2UtdGl0bGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLXRpdGxlLmNvbXBvbmVudC5odG1sJyxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ2QtZmxleCdcclxuICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYWdlVGl0bGVDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZT86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgdGl0bGVJY29uPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJUaXRsZT86IHN0cmluZzsgXHJcbiAgQElucHV0KCkgcHVibGljIHN1YlRpdGxlVXJsPzogc3RyaW5nOyBcclxufVxyXG4iLCI8aSAqbmdJZj1cInRpdGxlSWNvblwiXHJcbiAgIGNsYXNzPVwiZmxleC1zaHJpbmsgbXItMSBteS0xIGVjLWljb24gZWMtaWNvbi1tZCB7e3RpdGxlSWNvbn19XCI+PC9pPlxyXG48ZGl2IGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxyXG4gICA8aDEgKm5nSWY9XCJ0aXRsZVwiXHJcbiAgICAgICBjbGFzcz1cInRleHQtdGl0bGUtMSBtYi0wIHB5LTEgdGV4dC10cnVuY2F0ZVwiXHJcbiAgICAgICB0aXRsZT1cInt7dGl0bGV9fVwiPnt7dGl0bGV9fTwvaDE+XHJcbiAgIDxwICpuZ0lmPVwic3ViVGl0bGUgJiYgIXN1YlRpdGxlVXJsXCJcclxuICAgICAgY2xhc3M9XCJ0ZXh0LWNhcHRpb24tMSBtYi0wIG10LW4xIHRleHQtdHJ1bmNhdGVcIj57e3N1YlRpdGxlfX08L3A+XHJcbiAgIDxhICpuZ0lmPVwic3ViVGl0bGUgJiYgc3ViVGl0bGVVcmxcIlxyXG4gICAgICBpZD1cInN1YlRpdGxlX2xpbmtcIlxyXG4gICAgICBjbGFzcz1cImQtYmxvY2sgdGV4dC10cnVuY2F0ZSBtYi0wIG10LW4xIGZvbnQtc2l6ZS1zbWFsbFwiXHJcbiAgICAgIHJvdXRlckxpbms9XCJ7e3N1YlRpdGxlVXJsfX1cIlxyXG4gICAgICB0YXJnZXQ9XCJfc2VsZlwiPlxyXG4gICAgICB7e3N1YlRpdGxlfX1cclxuICAgPC9hPlxyXG48L2Rpdj4iXX0=
|