@energycap/components 0.41.1-ECAP-26841-date-input-features.20250108-1012 → 0.42.0
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/{esm2020 → esm2022}/energycap-components.mjs +4 -4
- package/esm2022/lib/components.module.mjs +418 -0
- package/esm2022/lib/controls/banner/banner.component.mjs +109 -0
- package/esm2022/lib/controls/button/button.component.mjs +106 -0
- package/esm2022/lib/controls/button/copy-button-base.directive.mjs +67 -0
- package/{esm2020 → esm2022}/lib/controls/button/copy-button.directive.mjs +28 -28
- package/esm2022/lib/controls/button/copy-table-button.directive.mjs +43 -0
- package/esm2022/lib/controls/calendar/calendar-item.component.mjs +59 -0
- package/esm2022/lib/controls/calendar/calendar.component.mjs +200 -0
- package/esm2022/lib/controls/calendar/calendar.types.mjs +4 -0
- package/esm2022/lib/controls/checkbox/checkbox.component.mjs +140 -0
- package/{esm2020 → esm2022}/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -38
- package/esm2022/lib/controls/combobox/combobox.component.mjs +879 -0
- package/esm2022/lib/controls/date-input/date-input.component.mjs +256 -0
- package/esm2022/lib/controls/dropdown/dropdown.component.mjs +243 -0
- package/esm2022/lib/controls/file-upload/file-upload.component.mjs +261 -0
- package/esm2022/lib/controls/form-control/form-control.component.mjs +104 -0
- package/esm2022/lib/controls/form-control-base.mjs +151 -0
- package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
- package/esm2022/lib/controls/form-group/form-group.component.mjs +261 -0
- package/{esm2020 → esm2022}/lib/controls/help-popover/help-popover.component.mjs +31 -31
- package/esm2022/lib/controls/item-picker/item-picker.component.mjs +329 -0
- package/{esm2020 → esm2022}/lib/controls/link-button/link-button.component.mjs +11 -11
- package/esm2022/lib/controls/menu/menu.component.mjs +485 -0
- package/{esm2020 → esm2022}/lib/controls/navigation/link-item.mjs +1 -1
- package/esm2022/lib/controls/navigation/nav-group.mjs +39 -0
- package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
- package/{esm2020 → esm2022}/lib/controls/navigation/nav-item.mjs +1 -1
- package/esm2022/lib/controls/numericbox/numericbox.component.mjs +372 -0
- package/esm2022/lib/controls/popover/popover.component.mjs +117 -0
- package/{esm2020 → esm2022}/lib/controls/radio-button/radio-button-option.mjs +2 -2
- package/esm2022/lib/controls/radio-button/radio-button.component.mjs +82 -0
- package/esm2022/lib/controls/select/select.component.mjs +88 -0
- package/esm2022/lib/controls/tabs/tabs.component.mjs +47 -0
- package/esm2022/lib/controls/textbox/textbox.component.mjs +155 -0
- package/esm2022/lib/core/cache.service.mjs +105 -0
- package/esm2022/lib/core/custom-validators.mjs +29 -0
- package/esm2022/lib/core/date-time-helper.mjs +220 -0
- package/esm2022/lib/core/error.service.mjs +61 -0
- package/esm2022/lib/core/router-helper.service.mjs +111 -0
- package/esm2022/lib/core/scroll.service.mjs +89 -0
- package/{esm2020 → esm2022}/lib/core/telemetry-tracker.service.mjs +16 -16
- package/{esm2020 → esm2022}/lib/core/telemetry.service.mjs +38 -38
- package/esm2022/lib/core/validation-message.service.mjs +185 -0
- package/{esm2020 → esm2022}/lib/core/validation-patterns.mjs +30 -30
- package/esm2022/lib/core/window.service.mjs +186 -0
- package/esm2022/lib/display/app-bar/app-bar.component.mjs +46 -0
- package/esm2022/lib/display/avatar/avatar.component.mjs +67 -0
- package/esm2022/lib/display/avatar/avatar.service.mjs +64 -0
- package/esm2022/lib/display/confirm/confirm.component.mjs +168 -0
- package/{esm2020 → esm2022}/lib/display/dialog/dialog-content.mjs +1 -1
- package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
- package/{esm2020 → esm2022}/lib/display/dialog/dialog-types.mjs +76 -76
- package/esm2022/lib/display/dialog/dialog.component.mjs +281 -0
- package/{esm2020 → esm2022}/lib/display/dialog/dialog.service.mjs +71 -71
- package/{esm2020 → esm2022}/lib/display/help/help-types.mjs +1 -1
- package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +111 -0
- package/{esm2020 → esm2022}/lib/display/hierarchy/hierarchy-mocks.spec.mjs +53 -53
- package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +61 -0
- package/esm2022/lib/display/item-display/item-display.component.mjs +81 -0
- package/esm2022/lib/display/json-display/json-display.component.mjs +47 -0
- package/esm2022/lib/display/resizable/resizable-base.mjs +120 -0
- package/{esm2020 → esm2022}/lib/display/resizable/resizable.component.mjs +52 -52
- package/{esm2020 → esm2022}/lib/display/spinner/spinner.component.mjs +12 -12
- package/esm2022/lib/display/splash/splash.component.mjs +42 -0
- package/{esm2020 → esm2022}/lib/display/splash/splash.service.mjs +35 -35
- package/{esm2020 → esm2022}/lib/display/table/resizable-column.component.mjs +20 -20
- package/esm2022/lib/display/table/resizable-table.directive.mjs +227 -0
- package/esm2022/lib/display/table/searchable-table.component.mjs +342 -0
- package/{esm2020 → esm2022}/lib/display/table/table-detail-row.component.mjs +19 -19
- package/esm2022/lib/display/table/table-locked-column.component.mjs +58 -0
- package/{esm2020 → esm2022}/lib/display/table/table-master-header-row.component.mjs +14 -14
- package/esm2022/lib/display/table/table-master-row.component.mjs +163 -0
- package/esm2022/lib/display/table/table-pagination.component.mjs +155 -0
- package/esm2022/lib/display/table/table-selectable-row.component.mjs +235 -0
- package/esm2022/lib/display/table/table.component.mjs +249 -0
- package/esm2022/lib/display/tags/tag.mjs +18 -0
- package/esm2022/lib/display/tags/tags.component.mjs +77 -0
- package/esm2022/lib/display/toast/toast/toast.component.mjs +77 -0
- package/{esm2020 → esm2022}/lib/display/toast/toast-types.mjs +7 -7
- package/{esm2020 → esm2022}/lib/display/toast/toast.service.mjs +35 -35
- package/esm2022/lib/display/toast/toaster/toaster.component.mjs +114 -0
- package/{esm2020 → esm2022}/lib/display/tooltip/tooltip.component.mjs +28 -28
- package/{esm2020 → esm2022}/lib/display/tooltip/tooltip.service.mjs +78 -78
- package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +173 -0
- package/{esm2020 → esm2022}/lib/display/tour/tour-types.mjs +33 -33
- package/esm2022/lib/display/tour/tour.component.mjs +398 -0
- package/esm2022/lib/display/tour/tour.service.mjs +75 -0
- package/esm2022/lib/display/tree/tree.component.mjs +135 -0
- package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +58 -0
- package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
- package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +166 -0
- package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
- package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
- package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +62 -0
- package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
- package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
- package/esm2022/lib/shared/display.mjs +6 -0
- package/esm2022/lib/shared/form-group.helper.mjs +67 -0
- package/esm2022/lib/shared/json-helper.mjs +19 -0
- package/esm2022/lib/shared/lodash-helper.mjs +52 -0
- package/esm2022/lib/shared/page/page-base/page-base.component.mjs +387 -0
- package/{esm2020 → esm2022}/lib/shared/page/page-statuses.mjs +22 -22
- package/{esm2020 → esm2022}/lib/shared/page/page-title/page-title.component.mjs +23 -23
- package/esm2022/lib/shared/page/page-view/page-view.component.mjs +147 -0
- package/{esm2020 → esm2022}/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +16 -16
- package/{esm2020 → esm2022}/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +16 -16
- package/{esm2020 → esm2022}/lib/shared/testing/page-base-component-test-helper.spec.mjs +37 -37
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +98 -0
- package/{esm2020 → esm2022}/lib/shared/testing/public-mocks.spec.mjs +148 -148
- package/{esm2020 → esm2022}/lib/shared/testing/spy-factory.spec.mjs +39 -39
- package/{esm2020 → esm2022}/lib/shared/testing/translation-mocks.spec.mjs +56 -56
- package/{esm2020 → esm2022}/lib/shared/user-preference.service.mjs +17 -17
- package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
- package/{esm2020 → esm2022}/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -68
- package/{esm2020 → esm2022}/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -18
- package/esm2022/public-api.mjs +115 -0
- package/{fesm2020 → fesm2022}/energycap-components.mjs +11819 -12972
- package/fesm2022/energycap-components.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/components.module.d.ts +91 -92
- package/lib/controls/banner/banner.component.d.ts +50 -50
- package/lib/controls/button/button.component.d.ts +78 -78
- package/lib/controls/button/copy-button-base.directive.d.ts +20 -20
- package/lib/controls/button/copy-button.directive.d.ts +14 -14
- package/lib/controls/button/copy-table-button.directive.d.ts +19 -19
- package/lib/controls/calendar/calendar-item.component.d.ts +17 -22
- package/lib/controls/calendar/calendar.component.d.ts +54 -52
- package/lib/controls/calendar/calendar.types.d.ts +7 -11
- package/lib/controls/checkbox/checkbox.component.d.ts +65 -65
- package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +25 -25
- package/lib/controls/combobox/combobox.component.d.ts +418 -418
- package/lib/controls/date-input/date-input.component.d.ts +80 -115
- package/lib/controls/dropdown/dropdown.component.d.ts +161 -161
- package/lib/controls/file-upload/file-upload.component.d.ts +124 -124
- package/lib/controls/form-control/form-control.component.d.ts +30 -28
- package/lib/controls/form-control-base.d.ts +110 -110
- package/lib/controls/form-control-label/form-control-label.component.d.ts +73 -73
- package/lib/controls/form-group/form-group.component.d.ts +105 -105
- package/lib/controls/help-popover/help-popover.component.d.ts +11 -11
- package/lib/controls/item-picker/item-picker.component.d.ts +164 -164
- package/lib/controls/link-button/link-button.component.d.ts +5 -5
- package/lib/controls/menu/menu.component.d.ts +255 -255
- package/lib/controls/navigation/link-item.d.ts +32 -32
- package/lib/controls/navigation/nav-group.d.ts +18 -18
- package/lib/controls/navigation/nav-item-active.directive.d.ts +42 -42
- package/lib/controls/navigation/nav-item.d.ts +31 -31
- package/lib/controls/numericbox/numericbox.component.d.ts +148 -148
- package/lib/controls/popover/popover.component.d.ts +51 -51
- package/lib/controls/radio-button/radio-button-option.d.ts +19 -19
- package/lib/controls/radio-button/radio-button.component.d.ts +53 -53
- package/lib/controls/select/select.component.d.ts +44 -44
- package/lib/controls/tabs/tabs.component.d.ts +30 -30
- package/lib/controls/textbox/textbox.component.d.ts +107 -107
- package/lib/core/cache.service.d.ts +33 -33
- package/lib/core/custom-validators.d.ts +20 -20
- package/lib/core/date-time-helper.d.ts +101 -101
- package/lib/core/error.service.d.ts +20 -20
- package/lib/core/router-helper.service.d.ts +48 -48
- package/lib/core/scroll.service.d.ts +36 -36
- package/lib/core/telemetry-tracker.service.d.ts +13 -13
- package/lib/core/telemetry.service.d.ts +31 -31
- package/lib/core/validation-message.service.d.ts +26 -26
- package/lib/core/validation-patterns.d.ts +22 -22
- package/lib/core/window.service.d.ts +116 -116
- package/lib/display/app-bar/app-bar.component.d.ts +20 -20
- package/lib/display/avatar/avatar.component.d.ts +35 -35
- package/lib/display/avatar/avatar.service.d.ts +24 -24
- package/lib/display/confirm/confirm.component.d.ts +123 -123
- package/lib/display/dialog/dialog-content.d.ts +19 -19
- package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +32 -32
- package/lib/display/dialog/dialog-types.d.ts +130 -130
- package/lib/display/dialog/dialog.component.d.ts +120 -120
- package/lib/display/dialog/dialog.service.d.ts +48 -48
- package/lib/display/help/help-types.d.ts +33 -33
- package/lib/display/hierarchy/hierarchy-base.d.ts +97 -97
- package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +53 -53
- package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +34 -34
- package/lib/display/item-display/item-display.component.d.ts +43 -43
- package/lib/display/json-display/json-display.component.d.ts +16 -16
- package/lib/display/resizable/resizable-base.d.ts +67 -67
- package/lib/display/resizable/resizable.component.d.ts +31 -31
- package/lib/display/spinner/spinner.component.d.ts +5 -5
- package/lib/display/splash/splash.component.d.ts +16 -16
- package/lib/display/splash/splash.service.d.ts +22 -22
- package/lib/display/table/resizable-column.component.d.ts +10 -10
- package/lib/display/table/resizable-table.directive.d.ts +93 -93
- package/lib/display/table/searchable-table.component.d.ts +206 -206
- package/lib/display/table/table-detail-row.component.d.ts +8 -8
- package/lib/display/table/table-locked-column.component.d.ts +20 -20
- package/lib/display/table/table-master-header-row.component.d.ts +9 -9
- package/lib/display/table/table-master-row.component.d.ts +113 -113
- package/lib/display/table/table-pagination.component.d.ts +91 -91
- package/lib/display/table/table-selectable-row.component.d.ts +102 -102
- package/lib/display/table/table.component.d.ts +121 -121
- package/lib/display/tags/tag.d.ts +18 -18
- package/lib/display/tags/tags.component.d.ts +48 -48
- package/lib/display/toast/toast/toast.component.d.ts +23 -23
- package/lib/display/toast/toast-types.d.ts +24 -24
- package/lib/display/toast/toast.service.d.ts +20 -20
- package/lib/display/toast/toaster/toaster.component.d.ts +35 -35
- package/lib/display/tooltip/tooltip.component.d.ts +70 -70
- package/lib/display/tooltip/tooltip.service.d.ts +16 -16
- package/lib/display/tooltip-directive/tooltip.directive.d.ts +44 -44
- package/lib/display/tour/tour-types.d.ts +70 -70
- package/lib/display/tour/tour.component.d.ts +147 -147
- package/lib/display/tour/tour.service.d.ts +38 -38
- package/lib/display/tree/tree.component.d.ts +75 -75
- package/lib/display/view-overlay/view-overlay.component.d.ts +38 -38
- package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +14 -14
- package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +60 -60
- package/lib/shared/directives/popup/popup-container.directive.d.ts +101 -101
- package/lib/shared/display/pipes/date-display.pipe.d.ts +21 -21
- package/lib/shared/display/pipes/highlight-text.pipe.d.ts +9 -9
- package/lib/shared/display/pipes/relative-date.pipe.d.ts +36 -36
- package/lib/shared/display/pipes/row-count.pipe.d.ts +23 -23
- package/lib/shared/display/pipes/time-display.pipe.d.ts +18 -18
- package/lib/shared/display.d.ts +42 -42
- package/lib/shared/form-group.helper.d.ts +31 -31
- package/lib/shared/json-helper.d.ts +7 -7
- package/lib/shared/lodash-helper.d.ts +18 -18
- package/lib/shared/page/page-base/page-base.component.d.ts +259 -259
- package/lib/shared/page/page-statuses.d.ts +13 -13
- package/lib/shared/page/page-title/page-title.component.d.ts +9 -9
- package/lib/shared/page/page-view/page-view.component.d.ts +102 -102
- package/lib/shared/testing/copy-button-base-test-injector-factory.spec.d.ts +4 -4
- package/lib/shared/testing/hierarchy-base-test-injector-factory.spec.d.ts +4 -4
- package/lib/shared/testing/page-base-component-test-helper.spec.d.ts +30 -30
- package/lib/shared/testing/page-base-component-test-injector-factory.spec.d.ts +28 -28
- package/lib/shared/testing/public-mocks.spec.d.ts +90 -90
- package/lib/shared/testing/spy-factory.spec.d.ts +27 -27
- package/lib/shared/testing/translation-mocks.spec.d.ts +30 -30
- package/lib/shared/user-preference.service.d.ts +13 -13
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +134 -134
- package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +27 -27
- package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +10 -10
- package/package.json +12 -18
- package/public-api.d.ts +111 -113
- package/schematics/rxjs-7-upgrade/index.d.ts +3 -3
- package/schematics/rxjs-7-upgrade/index.js +67 -67
- package/schematics/rxjs-7-upgrade/index.js.map +1 -1
- package/schematics/rxjs-7-upgrade/schema.d.ts +4 -4
- package/schematics/rxjs-7-upgrade/schema.js +2 -2
- package/schematics/utilities/typescript.d.ts +7 -7
- package/schematics/utilities/typescript.js +41 -41
- package/schematics/utilities/workspace.d.ts +8 -8
- package/schematics/utilities/workspace.js +71 -71
- package/schematics/utilities/workspace.js.map +1 -1
- package/src/assets/locales/en_US.json +1 -9
- package/esm2020/lib/components.module.mjs +0 -423
- package/esm2020/lib/controls/banner/banner.component.mjs +0 -109
- package/esm2020/lib/controls/button/button.component.mjs +0 -106
- package/esm2020/lib/controls/button/copy-button-base.directive.mjs +0 -67
- package/esm2020/lib/controls/button/copy-table-button.directive.mjs +0 -43
- package/esm2020/lib/controls/calendar/calendar-item.component.mjs +0 -91
- package/esm2020/lib/controls/calendar/calendar.component.mjs +0 -248
- package/esm2020/lib/controls/calendar/calendar.types.mjs +0 -2
- package/esm2020/lib/controls/checkbox/checkbox.component.mjs +0 -140
- package/esm2020/lib/controls/combobox/combobox.component.mjs +0 -879
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
- package/esm2020/lib/controls/date-input/date-input.component.mjs +0 -463
- package/esm2020/lib/controls/date-input/date-input.types.mjs +0 -44
- package/esm2020/lib/controls/dropdown/dropdown.component.mjs +0 -243
- package/esm2020/lib/controls/file-upload/file-upload.component.mjs +0 -261
- package/esm2020/lib/controls/form-control/form-control.component.mjs +0 -98
- package/esm2020/lib/controls/form-control-base.mjs +0 -151
- package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
- package/esm2020/lib/controls/form-group/form-group.component.mjs +0 -261
- package/esm2020/lib/controls/item-picker/item-picker.component.mjs +0 -329
- package/esm2020/lib/controls/menu/menu.component.mjs +0 -485
- package/esm2020/lib/controls/navigation/nav-group.mjs +0 -39
- package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
- package/esm2020/lib/controls/numericbox/numericbox.component.mjs +0 -372
- package/esm2020/lib/controls/popover/popover.component.mjs +0 -117
- package/esm2020/lib/controls/radio-button/radio-button.component.mjs +0 -82
- package/esm2020/lib/controls/select/select.component.mjs +0 -88
- package/esm2020/lib/controls/tabs/tabs.component.mjs +0 -47
- package/esm2020/lib/controls/textbox/textbox.component.mjs +0 -155
- package/esm2020/lib/core/cache.service.mjs +0 -105
- package/esm2020/lib/core/custom-validators.mjs +0 -29
- package/esm2020/lib/core/date-time-helper.mjs +0 -228
- package/esm2020/lib/core/error.service.mjs +0 -61
- package/esm2020/lib/core/router-helper.service.mjs +0 -111
- package/esm2020/lib/core/scroll.service.mjs +0 -89
- package/esm2020/lib/core/validation-message.service.mjs +0 -185
- package/esm2020/lib/core/window.service.mjs +0 -186
- package/esm2020/lib/display/app-bar/app-bar.component.mjs +0 -46
- package/esm2020/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2020/lib/display/avatar/avatar.service.mjs +0 -64
- package/esm2020/lib/display/confirm/confirm.component.mjs +0 -168
- package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
- package/esm2020/lib/display/dialog/dialog.component.mjs +0 -281
- package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +0 -111
- package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -61
- package/esm2020/lib/display/item-display/item-display.component.mjs +0 -81
- package/esm2020/lib/display/json-display/json-display.component.mjs +0 -47
- package/esm2020/lib/display/resizable/resizable-base.mjs +0 -120
- package/esm2020/lib/display/splash/splash.component.mjs +0 -42
- package/esm2020/lib/display/table/resizable-table.directive.mjs +0 -227
- package/esm2020/lib/display/table/searchable-table.component.mjs +0 -342
- package/esm2020/lib/display/table/table-locked-column.component.mjs +0 -58
- package/esm2020/lib/display/table/table-master-row.component.mjs +0 -163
- package/esm2020/lib/display/table/table-pagination.component.mjs +0 -155
- package/esm2020/lib/display/table/table-selectable-row.component.mjs +0 -235
- package/esm2020/lib/display/table/table.component.mjs +0 -249
- package/esm2020/lib/display/tags/tag.mjs +0 -18
- package/esm2020/lib/display/tags/tags.component.mjs +0 -77
- package/esm2020/lib/display/toast/toast/toast.component.mjs +0 -77
- package/esm2020/lib/display/toast/toaster/toaster.component.mjs +0 -114
- package/esm2020/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
- package/esm2020/lib/display/tour/tour.component.mjs +0 -398
- package/esm2020/lib/display/tour/tour.service.mjs +0 -75
- package/esm2020/lib/display/tree/tree.component.mjs +0 -135
- package/esm2020/lib/display/view-overlay/view-overlay.component.mjs +0 -58
- package/esm2020/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
- package/esm2020/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
- package/esm2020/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +0 -100
- package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +0 -163
- package/esm2020/lib/shared/display/pipes/date-display.pipe.mjs +0 -50
- package/esm2020/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
- package/esm2020/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
- package/esm2020/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
- package/esm2020/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
- package/esm2020/lib/shared/display.mjs +0 -6
- package/esm2020/lib/shared/form-group.helper.mjs +0 -67
- package/esm2020/lib/shared/json-helper.mjs +0 -19
- package/esm2020/lib/shared/lodash-helper.mjs +0 -51
- package/esm2020/lib/shared/page/page-base/page-base.component.mjs +0 -387
- package/esm2020/lib/shared/page/page-view/page-view.component.mjs +0 -147
- package/esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/esm2020/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
- package/esm2020/public-api.mjs +0 -117
- package/fesm2015/energycap-components.mjs +0 -13371
- package/fesm2015/energycap-components.mjs.map +0 -1
- package/fesm2020/energycap-components.mjs.map +0 -1
- 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.types.d.ts +0 -62
- package/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.d.ts +0 -23
@@ -1,147 +0,0 @@
|
|
1
|
-
import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
|
2
|
-
import { Overlay } from '../../../display/view-overlay/view-overlay.component';
|
3
|
-
import { DialogResult } from '../../../display/dialog/dialog-types';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "../../../display/dialog/dialog.service";
|
6
|
-
import * as i2 from "@angular/common";
|
7
|
-
import * as i3 from "@angular/router";
|
8
|
-
import * as i4 from "@angular/cdk/scrolling";
|
9
|
-
import * as i5 from "../../../controls/button/button.component";
|
10
|
-
import * as i6 from "../../../display/view-overlay/view-overlay.component";
|
11
|
-
import * as i7 from "../../../controls/banner/banner.component";
|
12
|
-
import * as i8 from "../../../controls/dropdown/dropdown.component";
|
13
|
-
import * as i9 from "../page-title/page-title.component";
|
14
|
-
export class PageViewComponent {
|
15
|
-
constructor(dialogService) {
|
16
|
-
this.dialogService = dialogService;
|
17
|
-
/**
|
18
|
-
* Set to true when page-view is inside a dialog to adjust styles and hide breadcrumbs.
|
19
|
-
*/
|
20
|
-
this.isDialog = false;
|
21
|
-
/**
|
22
|
-
* Set to true to enable read only mode. Only a single secondary action will be available
|
23
|
-
*/
|
24
|
-
this.readonly = false;
|
25
|
-
/**
|
26
|
-
* Controls Overlay that masks the page view content. Only the header is not masked when the overlay is visible. Default is pending Overlay with no message
|
27
|
-
*/
|
28
|
-
this.status = new Overlay('pending');
|
29
|
-
/**
|
30
|
-
* Set to false to hide the entire header, including breadcrumbs and error banner. Default is true.
|
31
|
-
*/
|
32
|
-
this.showHeader = true;
|
33
|
-
/**
|
34
|
-
* Label for the actions dropdown in the header. Default is 'Actions'
|
35
|
-
*/
|
36
|
-
this.moreActionsLabel = 'Actions';
|
37
|
-
/**
|
38
|
-
* Label for the secondary button in the header. Default is 'Cancel'
|
39
|
-
*/
|
40
|
-
this.secondaryActionLabel = 'Cancel';
|
41
|
-
this.hideSecondaryAction = false;
|
42
|
-
/** Flag for hiding the tiny close button in the top-right corner of dialog while in pending state only */
|
43
|
-
this.hideCloseOnPending = false;
|
44
|
-
/**
|
45
|
-
* Label for the primary button in the header. Default is 'Save'
|
46
|
-
*/
|
47
|
-
this.primaryActionLabel = 'Save';
|
48
|
-
this.hidePrimaryAction = false;
|
49
|
-
/**
|
50
|
-
* Pins the footer to the bottom of the view and overlays any overflowing content
|
51
|
-
*/
|
52
|
-
this.stickyFooter = true;
|
53
|
-
/**
|
54
|
-
* Prevents content from overflowing the view. Content must manage overflow instead.
|
55
|
-
*/
|
56
|
-
this.fitContent = false;
|
57
|
-
/**
|
58
|
-
* Disables the primary action button
|
59
|
-
*/
|
60
|
-
this.disablePrimaryAction = false;
|
61
|
-
/** Changes the background color for the content and overlay to white */
|
62
|
-
this.bgContent = false;
|
63
|
-
this.onPrimaryAction = new EventEmitter();
|
64
|
-
this.onSecondaryAction = new EventEmitter();
|
65
|
-
}
|
66
|
-
primaryAction(event) {
|
67
|
-
if (this.onPrimaryAction) {
|
68
|
-
this.onPrimaryAction.emit(event);
|
69
|
-
}
|
70
|
-
}
|
71
|
-
secondaryAction(event) {
|
72
|
-
if (this.onSecondaryAction) {
|
73
|
-
this.onSecondaryAction.emit(event);
|
74
|
-
}
|
75
|
-
}
|
76
|
-
closeDialog() {
|
77
|
-
this.dialogService.closeLatestDialog(new DialogResult(false));
|
78
|
-
}
|
79
|
-
}
|
80
|
-
PageViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PageViewComponent, deps: [{ token: i1.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
81
|
-
PageViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PageViewComponent, selector: "ec-page-view", inputs: { isDialog: "isDialog", readonly: "readonly", status: "status", showHeader: "showHeader", errors: "errors", breadcrumbs: "breadcrumbs", title: "title", titleIcon: "titleIcon", subTitle: "subTitle", subTitleUrl: "subTitleUrl", moreActionsLabel: "moreActionsLabel", moreActions: "moreActions", secondaryActionLabel: "secondaryActionLabel", hideSecondaryAction: "hideSecondaryAction", hideCloseOnPending: "hideCloseOnPending", primaryActionLabel: "primaryActionLabel", hidePrimaryAction: "hidePrimaryAction", customTitleTemplate: "customTitleTemplate", customActionsTemplate: "customActionsTemplate", customHeaderTemplate: "customHeaderTemplate", footerTemplate: "footerTemplate", customErrorBannerTemplate: "customErrorBannerTemplate", stickyFooter: "stickyFooter", fitContent: "fitContent", disablePrimaryAction: "disablePrimaryAction", bgContent: "bgContent" }, outputs: { onPrimaryAction: "onPrimaryAction", onSecondaryAction: "onSecondaryAction" }, host: { properties: { "class.bg-content": "this.bgContent" }, classAttribute: "flex-grow" }, ngImport: i0, template: "<div ecOverlay\r\n [status]=\"status?.status\"\r\n [message]=\"status?.message\"\r\n [displayAsMask]=\"true\"\r\n class=\"flex-grow d-flex\"\r\n [ngClass]=\"{'bg-body': !bgContent, 'bg-content': bgContent}\">\r\n <div id=\"PageViewScrollContainer\"\r\n class=\"d-flex flex-column flex-grow scroll-y\"\r\n [class.is-dialog]=\"isDialog\"\r\n [class.fit-content]=\"fitContent\"\r\n [class.sticky-footer]=\"stickyFooter && !!footerTemplate\"\r\n [class.overlay-visible]=\"status?.status !== 'hasData'\"\r\n [class.footer-visible]=\"!!footerTemplate\"\r\n cdkScrollable>\r\n <section>\r\n <ng-content></ng-content>\r\n </section>\r\n\r\n <footer *ngIf=\"footerTemplate\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </footer>\r\n\r\n <header *ngIf=\"showHeader\">\r\n <ol id=\"breadcrumbs\"\r\n *ngIf=\"breadcrumbs?.length && !isDialog\">\r\n <li *ngFor=\"let crumb of breadcrumbs; last as isLast\">\r\n <a *ngIf=\"crumb.url; else label\"\r\n [routerLink]=\"crumb.url\">\r\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\r\n </a>\r\n <ng-template #label>{{crumb.label}}</ng-template>\r\n </li>\r\n </ol>\r\n\r\n <div class=\"titlebar\">\r\n <app-page-title *ngIf=\"!customTitleTemplate; else customTitle\"\r\n [title]=\"title\"\r\n [subTitle]=\"subTitle\"\r\n [subTitleUrl]=\"subTitleUrl\"\r\n [titleIcon]=\"titleIcon\"\r\n class=\"title text-truncate\">\r\n </app-page-title>\r\n\r\n <ng-template #customTitle>\r\n <div class=\"title\">\r\n <ng-container *ngTemplateOutlet=\"customTitleTemplate\"></ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"actions\">\r\n <ec-button id=\"primaryAction\"\r\n class=\"ml-2\"\r\n *ngIf=\"!hidePrimaryAction && onPrimaryAction.observers?.length && !readonly\"\r\n [disabled]=\"status?.status === 'pending' || disablePrimaryAction\"\r\n type=\"primary\"\r\n [label]=\"primaryActionLabel\"\r\n (clicked)=\"primaryAction($event)\">\r\n </ec-button>\r\n <ec-button id=\"secondaryAction\"\r\n class=\"ml-2\"\r\n *ngIf=\"!hideSecondaryAction && onSecondaryAction.observers?.length\"\r\n type=\"secondary\"\r\n [label]=\"readonly ? 'Close' : secondaryActionLabel\"\r\n (clicked)=\"secondaryAction($event)\">\r\n </ec-button>\r\n <ec-dropdown id=\"moreActions\"\r\n *ngIf=\"moreActions?.length && !readonly\"\r\n [disabled]=\"status?.status === 'pending'\"\r\n class=\"ml-2\"\r\n buttonType=\"text\"\r\n [label]=\"moreActionsLabel\"\r\n [items]=\"moreActions\">\r\n </ec-dropdown>\r\n <ng-container *ngTemplateOutlet=\"customActionsTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"customHeaderTemplate\"\r\n class=\"page-header\">\r\n <ng-container *ngTemplateOutlet=\"customHeaderTemplate\"></ng-container>\r\n </div>\r\n\r\n <ec-banner *ngIf=\"!customErrorBannerTemplate && errors; else customErrorBannerOutlet\"\r\n id=\"pageViewErrors\"\r\n [class.border-bottom-0]=\"!isDialog\">\r\n <div [innerHtml]=\"errors\"></div>\r\n </ec-banner>\r\n\r\n <ng-template #customErrorBannerOutlet>\r\n <ec-banner *ngIf=\"errors\"\r\n id=\"pageViewErrors\"\r\n [class.border-bottom-0]=\"!isDialog\">\r\n <ng-container *ngTemplateOutlet=\"customErrorBannerTemplate\"></ng-container>\r\n </ec-banner>\r\n </ng-template>\r\n </header>\r\n </div>\r\n\r\n <ec-button *ngIf=\"isDialog && ( (status?.status === 'pending' && !hideCloseOnPending) || status?.status === 'error')\"\r\n id=\"pageViewDialogClose\"\r\n type=\"icon\"\r\n icon=\"icon-cancel\"\r\n (clicked)=\"closeDialog()\">\r\n </ec-button>\r\n</div>", styles: [":host{flex:1 1;min-height:0;display:flex}header{background-color:var(--ec-background-color-body);position:sticky;top:0;order:1;padding:1rem 1.5rem .5rem;flex:none;z-index:var(--ec-z-index-sticky-page-header)}ol{font-size:var(--ec-font-size-label);line-height:1rem;grid-column:1/3;grid-row:1/2;list-style:none;padding:0;margin:0 0 .25rem}ol li{display:inline}ol li:not(:last-child):after{content:\" / \";display:inline;color:var(--ec-color-secondary-dark)}div[ecOverlay]{position:relative}.titlebar{display:grid;grid-template-columns:auto max-content;grid-template-rows:max-content max-content;gap:0 1rem}.title{grid-column:1/2;grid-row:2/3;align-self:center}.actions{grid-column:2/3;grid-row:2/3;display:flex;flex-direction:row-reverse}ec-banner{margin-top:1rem}section{padding:var(--ec-page-view-padding-section, .5rem 1.5rem 2rem);order:2;flex:1 0 auto;min-height:0}:not(.is-dialog)>section{z-index:0}footer{background-color:var(--ec-background-color-body);order:3;padding:0 1.5rem;height:4.5rem;flex:none;display:flex;align-items:center}.is-dialog header{padding:0}.is-dialog .titlebar{background-color:var(--ec-background-color);padding:1rem}.is-dialog ec-banner{margin:0}.is-dialog section{padding:var(--ec-page-view-padding-section, 1rem 1rem 1.5rem)}.sticky-footer section{padding-bottom:4.5rem}.sticky-footer footer{position:sticky;bottom:0;z-index:var(--ec-z-index-sticky-page-header)}.fit-content>section{flex:1 1;display:flex}.footer-visible section{padding-bottom:0}.overlay-visible header{z-index:var(--ec-z-index-overlay)1}.overlay-visible ec-banner{display:none}:host(.bg-content) header{background-color:var(--ec-background-color)}:host(.bg-content) section{background-color:var(--ec-background-color)}:host(.bg-content) footer{background-color:var(--ec-background-color)}#pageViewDialogClose{position:absolute;top:1rem;right:1rem;z-index:calc(var(--ec-z-index-overlay) + 1)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i5.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "icon", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }, { kind: "component", type: i6.ViewOverlayComponent, selector: "[ecOverlay]", inputs: ["status", "message", "action", "noDataTemplate", "displayAsMask", "overlayClassList"] }, { kind: "component", type: i7.BannerComponent, selector: "ec-banner", inputs: ["hidden", "id", "type", "bannerStyle", "title", "text", "list", "showCloseBtn", "autoHideOnClose", "customIcon", "rememberClosed"], outputs: ["closed"] }, { kind: "component", type: i8.DropdownComponent, selector: "ec-dropdown", inputs: ["id", "autofocus", "status", "disabled", "label", "icon", "buttonType", "buttonAlignment", "buttonTitle", "tabindex", "showArrow", "items", "menuTemplateType", "menuTitle", "menuHeight", "menuWidth", "menuMinWidth", "menuPosition", "menuFooter", "popupFixed", "buttonCustomTemplate", "pending"], outputs: ["itemSelected", "popupOpened"] }, { kind: "component", type: i9.PageTitleComponent, selector: "app-page-title", inputs: ["title", "titleIcon", "subTitle", "subTitleUrl"] }] });
|
82
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PageViewComponent, decorators: [{
|
83
|
-
type: Component,
|
84
|
-
args: [{ selector: 'ec-page-view', host: {
|
85
|
-
class: "flex-grow"
|
86
|
-
}, template: "<div ecOverlay\r\n [status]=\"status?.status\"\r\n [message]=\"status?.message\"\r\n [displayAsMask]=\"true\"\r\n class=\"flex-grow d-flex\"\r\n [ngClass]=\"{'bg-body': !bgContent, 'bg-content': bgContent}\">\r\n <div id=\"PageViewScrollContainer\"\r\n class=\"d-flex flex-column flex-grow scroll-y\"\r\n [class.is-dialog]=\"isDialog\"\r\n [class.fit-content]=\"fitContent\"\r\n [class.sticky-footer]=\"stickyFooter && !!footerTemplate\"\r\n [class.overlay-visible]=\"status?.status !== 'hasData'\"\r\n [class.footer-visible]=\"!!footerTemplate\"\r\n cdkScrollable>\r\n <section>\r\n <ng-content></ng-content>\r\n </section>\r\n\r\n <footer *ngIf=\"footerTemplate\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </footer>\r\n\r\n <header *ngIf=\"showHeader\">\r\n <ol id=\"breadcrumbs\"\r\n *ngIf=\"breadcrumbs?.length && !isDialog\">\r\n <li *ngFor=\"let crumb of breadcrumbs; last as isLast\">\r\n <a *ngIf=\"crumb.url; else label\"\r\n [routerLink]=\"crumb.url\">\r\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\r\n </a>\r\n <ng-template #label>{{crumb.label}}</ng-template>\r\n </li>\r\n </ol>\r\n\r\n <div class=\"titlebar\">\r\n <app-page-title *ngIf=\"!customTitleTemplate; else customTitle\"\r\n [title]=\"title\"\r\n [subTitle]=\"subTitle\"\r\n [subTitleUrl]=\"subTitleUrl\"\r\n [titleIcon]=\"titleIcon\"\r\n class=\"title text-truncate\">\r\n </app-page-title>\r\n\r\n <ng-template #customTitle>\r\n <div class=\"title\">\r\n <ng-container *ngTemplateOutlet=\"customTitleTemplate\"></ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"actions\">\r\n <ec-button id=\"primaryAction\"\r\n class=\"ml-2\"\r\n *ngIf=\"!hidePrimaryAction && onPrimaryAction.observers?.length && !readonly\"\r\n [disabled]=\"status?.status === 'pending' || disablePrimaryAction\"\r\n type=\"primary\"\r\n [label]=\"primaryActionLabel\"\r\n (clicked)=\"primaryAction($event)\">\r\n </ec-button>\r\n <ec-button id=\"secondaryAction\"\r\n class=\"ml-2\"\r\n *ngIf=\"!hideSecondaryAction && onSecondaryAction.observers?.length\"\r\n type=\"secondary\"\r\n [label]=\"readonly ? 'Close' : secondaryActionLabel\"\r\n (clicked)=\"secondaryAction($event)\">\r\n </ec-button>\r\n <ec-dropdown id=\"moreActions\"\r\n *ngIf=\"moreActions?.length && !readonly\"\r\n [disabled]=\"status?.status === 'pending'\"\r\n class=\"ml-2\"\r\n buttonType=\"text\"\r\n [label]=\"moreActionsLabel\"\r\n [items]=\"moreActions\">\r\n </ec-dropdown>\r\n <ng-container *ngTemplateOutlet=\"customActionsTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"customHeaderTemplate\"\r\n class=\"page-header\">\r\n <ng-container *ngTemplateOutlet=\"customHeaderTemplate\"></ng-container>\r\n </div>\r\n\r\n <ec-banner *ngIf=\"!customErrorBannerTemplate && errors; else customErrorBannerOutlet\"\r\n id=\"pageViewErrors\"\r\n [class.border-bottom-0]=\"!isDialog\">\r\n <div [innerHtml]=\"errors\"></div>\r\n </ec-banner>\r\n\r\n <ng-template #customErrorBannerOutlet>\r\n <ec-banner *ngIf=\"errors\"\r\n id=\"pageViewErrors\"\r\n [class.border-bottom-0]=\"!isDialog\">\r\n <ng-container *ngTemplateOutlet=\"customErrorBannerTemplate\"></ng-container>\r\n </ec-banner>\r\n </ng-template>\r\n </header>\r\n </div>\r\n\r\n <ec-button *ngIf=\"isDialog && ( (status?.status === 'pending' && !hideCloseOnPending) || status?.status === 'error')\"\r\n id=\"pageViewDialogClose\"\r\n type=\"icon\"\r\n icon=\"icon-cancel\"\r\n (clicked)=\"closeDialog()\">\r\n </ec-button>\r\n</div>", styles: [":host{flex:1 1;min-height:0;display:flex}header{background-color:var(--ec-background-color-body);position:sticky;top:0;order:1;padding:1rem 1.5rem .5rem;flex:none;z-index:var(--ec-z-index-sticky-page-header)}ol{font-size:var(--ec-font-size-label);line-height:1rem;grid-column:1/3;grid-row:1/2;list-style:none;padding:0;margin:0 0 .25rem}ol li{display:inline}ol li:not(:last-child):after{content:\" / \";display:inline;color:var(--ec-color-secondary-dark)}div[ecOverlay]{position:relative}.titlebar{display:grid;grid-template-columns:auto max-content;grid-template-rows:max-content max-content;gap:0 1rem}.title{grid-column:1/2;grid-row:2/3;align-self:center}.actions{grid-column:2/3;grid-row:2/3;display:flex;flex-direction:row-reverse}ec-banner{margin-top:1rem}section{padding:var(--ec-page-view-padding-section, .5rem 1.5rem 2rem);order:2;flex:1 0 auto;min-height:0}:not(.is-dialog)>section{z-index:0}footer{background-color:var(--ec-background-color-body);order:3;padding:0 1.5rem;height:4.5rem;flex:none;display:flex;align-items:center}.is-dialog header{padding:0}.is-dialog .titlebar{background-color:var(--ec-background-color);padding:1rem}.is-dialog ec-banner{margin:0}.is-dialog section{padding:var(--ec-page-view-padding-section, 1rem 1rem 1.5rem)}.sticky-footer section{padding-bottom:4.5rem}.sticky-footer footer{position:sticky;bottom:0;z-index:var(--ec-z-index-sticky-page-header)}.fit-content>section{flex:1 1;display:flex}.footer-visible section{padding-bottom:0}.overlay-visible header{z-index:var(--ec-z-index-overlay)1}.overlay-visible ec-banner{display:none}:host(.bg-content) header{background-color:var(--ec-background-color)}:host(.bg-content) section{background-color:var(--ec-background-color)}:host(.bg-content) footer{background-color:var(--ec-background-color)}#pageViewDialogClose{position:absolute;top:1rem;right:1rem;z-index:calc(var(--ec-z-index-overlay) + 1)}\n"] }]
|
87
|
-
}], ctorParameters: function () { return [{ type: i1.DialogService }]; }, propDecorators: { isDialog: [{
|
88
|
-
type: Input
|
89
|
-
}], readonly: [{
|
90
|
-
type: Input
|
91
|
-
}], status: [{
|
92
|
-
type: Input
|
93
|
-
}], showHeader: [{
|
94
|
-
type: Input
|
95
|
-
}], errors: [{
|
96
|
-
type: Input
|
97
|
-
}], breadcrumbs: [{
|
98
|
-
type: Input
|
99
|
-
}], title: [{
|
100
|
-
type: Input
|
101
|
-
}], titleIcon: [{
|
102
|
-
type: Input
|
103
|
-
}], subTitle: [{
|
104
|
-
type: Input
|
105
|
-
}], subTitleUrl: [{
|
106
|
-
type: Input
|
107
|
-
}], moreActionsLabel: [{
|
108
|
-
type: Input
|
109
|
-
}], moreActions: [{
|
110
|
-
type: Input
|
111
|
-
}], secondaryActionLabel: [{
|
112
|
-
type: Input
|
113
|
-
}], hideSecondaryAction: [{
|
114
|
-
type: Input
|
115
|
-
}], hideCloseOnPending: [{
|
116
|
-
type: Input
|
117
|
-
}], primaryActionLabel: [{
|
118
|
-
type: Input
|
119
|
-
}], hidePrimaryAction: [{
|
120
|
-
type: Input
|
121
|
-
}], customTitleTemplate: [{
|
122
|
-
type: Input
|
123
|
-
}], customActionsTemplate: [{
|
124
|
-
type: Input
|
125
|
-
}], customHeaderTemplate: [{
|
126
|
-
type: Input
|
127
|
-
}], footerTemplate: [{
|
128
|
-
type: Input
|
129
|
-
}], customErrorBannerTemplate: [{
|
130
|
-
type: Input
|
131
|
-
}], stickyFooter: [{
|
132
|
-
type: Input
|
133
|
-
}], fitContent: [{
|
134
|
-
type: Input
|
135
|
-
}], disablePrimaryAction: [{
|
136
|
-
type: Input
|
137
|
-
}], bgContent: [{
|
138
|
-
type: HostBinding,
|
139
|
-
args: ['class.bg-content']
|
140
|
-
}, {
|
141
|
-
type: Input
|
142
|
-
}], onPrimaryAction: [{
|
143
|
-
type: Output
|
144
|
-
}], onSecondaryAction: [{
|
145
|
-
type: Output
|
146
|
-
}] } });
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvcGFnZS9wYWdlLXZpZXcvcGFnZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvcGFnZS9wYWdlLXZpZXcvcGFnZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBSWpHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7O0FBVXBFLE1BQU0sT0FBTyxpQkFBaUI7SUE4RzVCLFlBQ1UsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUE5R3RDOztXQUVHO1FBQ2EsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQzs7V0FFRztRQUNhLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUM7O1dBRUc7UUFDYSxXQUFNLEdBQWEsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUQ7O1dBRUc7UUFDYSxlQUFVLEdBQVksSUFBSSxDQUFDO1FBb0IzQzs7V0FFRztRQUNhLHFCQUFnQixHQUFZLFNBQVMsQ0FBQztRQU10RDs7V0FFRztRQUNhLHlCQUFvQixHQUFZLFFBQVEsQ0FBQztRQUN6Qyx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFNUMsMEdBQTBHO1FBQzFGLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUVwRDs7V0FFRztRQUNhLHVCQUFrQixHQUFZLE1BQU0sQ0FBQztRQUNyQyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUEyQjFDOztXQUVHO1FBQ2EsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFcEM7O1dBRUc7UUFDYSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5DOztXQUVHO1FBQ2EseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBRTdDLHdFQUF3RTtRQUV4RCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWpCLG9CQUFlLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDeEQsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFJdkUsQ0FBQztJQUVFLGFBQWEsQ0FBQyxLQUFVO1FBQzdCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFTSxlQUFlLENBQUMsS0FBVTtRQUMvQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7OzhHQWhJVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixnbENDZjlCLDQvSkF3R007MkZEekZPLGlCQUFpQjtrQkFSN0IsU0FBUzsrQkFDRSxjQUFjLFFBR2xCO3dCQUNKLEtBQUssRUFBRSxXQUFXO3FCQUNuQjtvR0FNZSxRQUFRO3NCQUF2QixLQUFLO2dCQUtVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBS1UsTUFBTTtzQkFBckIsS0FBSztnQkFLVSxVQUFVO3NCQUF6QixLQUFLO2dCQUtVLE1BQU07c0JBQXJCLEtBQUs7Z0JBS1UsV0FBVztzQkFBMUIsS0FBSztnQkFLVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUtVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFJVSxXQUFXO3NCQUExQixLQUFLO2dCQUtVLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFDVSxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBR1Usa0JBQWtCO3NCQUFqQyxLQUFLO2dCQUtVLGtCQUFrQjtzQkFBakMsS0FBSztnQkFDVSxpQkFBaUI7c0JBQWhDLEtBQUs7Z0JBS1UsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUtVLHFCQUFxQjtzQkFBcEMsS0FBSztnQkFLVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBS1UsY0FBYztzQkFBN0IsS0FBSztnQkFLVSx5QkFBeUI7c0JBQXhDLEtBQUs7Z0JBS1UsWUFBWTtzQkFBM0IsS0FBSztnQkFLVSxVQUFVO3NCQUF6QixLQUFLO2dCQUtVLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFJVSxTQUFTO3NCQUR4QixXQUFXO3VCQUFDLGtCQUFrQjs7c0JBQzlCLEtBQUs7Z0JBRVcsZUFBZTtzQkFBL0IsTUFBTTtnQkFDVSxpQkFBaUI7c0JBQWpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9kaXNwbGF5L2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vLi4vY29udHJvbHMvbWVudS9tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5hdkl0ZW0gfSBmcm9tICcuLi8uLi8uLi9jb250cm9scy9uYXZpZ2F0aW9uL25hdi1pdGVtJztcclxuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uLy4uLy4uL2Rpc3BsYXkvdmlldy1vdmVybGF5L3ZpZXctb3ZlcmxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9kaXNwbGF5L2RpYWxvZy9kaWFsb2ctdHlwZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy1wYWdlLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BhZ2Utdmlldy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiBcImZsZXgtZ3Jvd1wiXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnZVZpZXdDb21wb25lbnQge1xyXG4gIC8qKlxyXG4gICAqIFNldCB0byB0cnVlIHdoZW4gcGFnZS12aWV3IGlzIGluc2lkZSBhIGRpYWxvZyB0byBhZGp1c3Qgc3R5bGVzIGFuZCBoaWRlIGJyZWFkY3J1bWJzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgdG8gdHJ1ZSB0byBlbmFibGUgcmVhZCBvbmx5IG1vZGUuIE9ubHkgYSBzaW5nbGUgc2Vjb25kYXJ5IGFjdGlvbiB3aWxsIGJlIGF2YWlsYWJsZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBDb250cm9scyBPdmVybGF5IHRoYXQgbWFza3MgdGhlIHBhZ2UgdmlldyBjb250ZW50LiBPbmx5IHRoZSBoZWFkZXIgaXMgbm90IG1hc2tlZCB3aGVuIHRoZSBvdmVybGF5IGlzIHZpc2libGUuIERlZmF1bHQgaXMgcGVuZGluZyBPdmVybGF5IHdpdGggbm8gbWVzc2FnZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzdGF0dXM/OiBPdmVybGF5ID0gbmV3IE92ZXJsYXkoJ3BlbmRpbmcnKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRvIGZhbHNlIHRvIGhpZGUgdGhlIGVudGlyZSBoZWFkZXIsIGluY2x1ZGluZyBicmVhZGNydW1icyBhbmQgZXJyb3IgYmFubmVyLiBEZWZhdWx0IGlzIHRydWUuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5cyBhbiBlcnJvciBiYW5uZXIgdW5kZXIgdGhlIHRpdGxlYmFyIHdoZW4gcHJvdmlkZWQgYSB2YWx1ZS5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZXJyb3JzPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBCcmVhZGNydW1icyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGhlYWRlci5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgYnJlYWRjcnVtYnM/OiBOYXZJdGVtW107XHJcblxyXG4gIC8qKlxyXG4gICAqIFRpdGxlIHNldHRpbmdzLiBQYXNzZWQgdG8gdGhlIFBhZ2VUaXRsZUNvbXBvbmVudC5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgdGl0bGU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHRpdGxlSWNvbj86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgc3ViVGl0bGU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHN1YlRpdGxlVXJsPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBMYWJlbCBmb3IgdGhlIGFjdGlvbnMgZHJvcGRvd24gaW4gdGhlIGhlYWRlci4gRGVmYXVsdCBpcyAnQWN0aW9ucydcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgbW9yZUFjdGlvbnNMYWJlbD86IHN0cmluZyA9ICdBY3Rpb25zJztcclxuICAvKipcclxuICAgKiBPcHRpb25zIGZvciB0aGUgYWN0aW9ucyBkcm9wZG93biBpbiB0aGUgaGVhZGVyLiBUaGUgZHJvcGRvd24gaXMgaGlkZGVuIGlmIG5vdCBvcHRpb25zIGFyZSBwcm92aWRlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgbW9yZUFjdGlvbnM/OiBNZW51SXRlbVtdO1xyXG5cclxuICAvKipcclxuICAgKiBMYWJlbCBmb3IgdGhlIHNlY29uZGFyeSBidXR0b24gaW4gdGhlIGhlYWRlci4gRGVmYXVsdCBpcyAnQ2FuY2VsJ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWNvbmRhcnlBY3Rpb25MYWJlbD86IHN0cmluZyA9ICdDYW5jZWwnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBoaWRlU2Vjb25kYXJ5QWN0aW9uID0gZmFsc2U7XHJcblxyXG4gIC8qKiBGbGFnIGZvciBoaWRpbmcgdGhlIHRpbnkgY2xvc2UgYnV0dG9uIGluIHRoZSB0b3AtcmlnaHQgY29ybmVyIG9mIGRpYWxvZyB3aGlsZSBpbiBwZW5kaW5nIHN0YXRlIG9ubHkgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaGlkZUNsb3NlT25QZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIExhYmVsIGZvciB0aGUgcHJpbWFyeSBidXR0b24gaW4gdGhlIGhlYWRlci4gRGVmYXVsdCBpcyAnU2F2ZSdcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgcHJpbWFyeUFjdGlvbkxhYmVsPzogc3RyaW5nID0gJ1NhdmUnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBoaWRlUHJpbWFyeUFjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBSZXBsYWNlcyB0aGUgdGl0bGUsIHN1YnRpdGxlIGFuZCB0aXRsZSBpY29uXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbVRpdGxlVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBJbnNlcnRlZCB0byB0aGUgbGVmdCBvZiB0aGUgZGVmYXVsdCBhY3Rpb25zXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUFjdGlvbnNUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlcGxhY2VzIHRoZSB0aXRsZWJhciBhbmQgYWN0aW9ucyBvZiB0aGUgZGVmYXVsdCBoZWFkZXIuIEJyZWFkY3J1bWJzIGFuZCBlcnJvciBiYW5uZXIgYXJlIG5vdCByZXBsYWNlZC4gQ2Fubm90IGNvbnRhaW4gYSA8aGVhZGVyPiBlbGVtZW50LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21IZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRlbnQgdG8gaW5jbHVkZSBpbiB0aGUgZm9vdGVyXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGZvb3RlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVwbGFjZXMgdGhlIEVycm9yIEJhbm5lciBkZWZhdWx0IHRlbXBsYXRlLiBVc2VmdWwgd2hlbiB3ZSBuZWVkIHRvIHNob3cgbW9yZSB0aGFuIHRleHQgaW4gdGhlIGJhbm5lci5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tRXJyb3JCYW5uZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8qKlxyXG4gICAqIFBpbnMgdGhlIGZvb3RlciB0byB0aGUgYm90dG9tIG9mIHRoZSB2aWV3IGFuZCBvdmVybGF5cyBhbnkgb3ZlcmZsb3dpbmcgY29udGVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzdGlja3lGb290ZXIgPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBQcmV2ZW50cyBjb250ZW50IGZyb20gb3ZlcmZsb3dpbmcgdGhlIHZpZXcuIENvbnRlbnQgbXVzdCBtYW5hZ2Ugb3ZlcmZsb3cgaW5zdGVhZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZml0Q29udGVudCA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBEaXNhYmxlcyB0aGUgcHJpbWFyeSBhY3Rpb24gYnV0dG9uXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVQcmltYXJ5QWN0aW9uID0gZmFsc2U7XHJcblxyXG4gIC8qKiBDaGFuZ2VzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgY29udGVudCBhbmQgb3ZlcmxheSB0byB3aGl0ZSAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYmctY29udGVudCcpXHJcbiAgQElucHV0KCkgcHVibGljIGJnQ29udGVudCA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIG9uUHJpbWFyeUFjdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBvblNlY29uZGFyeUFjdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIHByaW1hcnlBY3Rpb24oZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMub25QcmltYXJ5QWN0aW9uKSB7XHJcbiAgICAgIHRoaXMub25QcmltYXJ5QWN0aW9uLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlY29uZGFyeUFjdGlvbihldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5vblNlY29uZGFyeUFjdGlvbikge1xyXG4gICAgICB0aGlzLm9uU2Vjb25kYXJ5QWN0aW9uLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsb3NlTGF0ZXN0RGlhbG9nKG5ldyBEaWFsb2dSZXN1bHQoZmFsc2UpKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBlY092ZXJsYXlcclxuICAgICBbc3RhdHVzXT1cInN0YXR1cz8uc3RhdHVzXCJcclxuICAgICBbbWVzc2FnZV09XCJzdGF0dXM/Lm1lc3NhZ2VcIlxyXG4gICAgIFtkaXNwbGF5QXNNYXNrXT1cInRydWVcIlxyXG4gICAgIGNsYXNzPVwiZmxleC1ncm93IGQtZmxleFwiXHJcbiAgICAgW25nQ2xhc3NdPVwieydiZy1ib2R5JzogIWJnQ29udGVudCwgJ2JnLWNvbnRlbnQnOiBiZ0NvbnRlbnR9XCI+XHJcbiAgICA8ZGl2IGlkPVwiUGFnZVZpZXdTY3JvbGxDb250YWluZXJcIlxyXG4gICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWdyb3cgc2Nyb2xsLXlcIlxyXG4gICAgICAgICBbY2xhc3MuaXMtZGlhbG9nXT1cImlzRGlhbG9nXCJcclxuICAgICAgICAgW2NsYXNzLmZpdC1jb250ZW50XT1cImZpdENvbnRlbnRcIlxyXG4gICAgICAgICBbY2xhc3Muc3RpY2t5LWZvb3Rlcl09XCJzdGlja3lGb290ZXIgJiYgISFmb290ZXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgIFtjbGFzcy5vdmVybGF5LXZpc2libGVdPVwic3RhdHVzPy5zdGF0dXMgIT09ICdoYXNEYXRhJ1wiXHJcbiAgICAgICAgIFtjbGFzcy5mb290ZXItdmlzaWJsZV09XCIhIWZvb3RlclRlbXBsYXRlXCJcclxuICAgICAgICAgY2RrU2Nyb2xsYWJsZT5cclxuICAgICAgICA8c2VjdGlvbj5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICAgICAgPGZvb3RlciAqbmdJZj1cImZvb3RlclRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZm9vdGVyPlxyXG5cclxuICAgICAgICA8aGVhZGVyICpuZ0lmPVwic2hvd0hlYWRlclwiPlxyXG4gICAgICAgICAgICA8b2wgaWQ9XCJicmVhZGNydW1ic1wiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImJyZWFkY3J1bWJzPy5sZW5ndGggJiYgIWlzRGlhbG9nXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGNydW1iIG9mIGJyZWFkY3J1bWJzOyBsYXN0IGFzIGlzTGFzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiY3J1bWIudXJsOyBlbHNlIGxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJjcnVtYi51cmxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGFiZWw+e3tjcnVtYi5sYWJlbH19PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvb2w+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGViYXJcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtcGFnZS10aXRsZSAqbmdJZj1cIiFjdXN0b21UaXRsZVRlbXBsYXRlOyBlbHNlIGN1c3RvbVRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwidGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdWJUaXRsZV09XCJzdWJUaXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N1YlRpdGxlVXJsXT1cInN1YlRpdGxlVXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVJY29uXT1cInRpdGxlSWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aXRsZSB0ZXh0LXRydW5jYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2FwcC1wYWdlLXRpdGxlPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VzdG9tVGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21UaXRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGVjLWJ1dHRvbiBpZD1cInByaW1hcnlBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVQcmltYXJ5QWN0aW9uICYmIG9uUHJpbWFyeUFjdGlvbi5vYnNlcnZlcnM/Lmxlbmd0aCAmJiAhcmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInN0YXR1cz8uc3RhdHVzID09PSAncGVuZGluZycgfHwgZGlzYWJsZVByaW1hcnlBY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInByaW1hcnlBY3Rpb25MYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJwcmltYXJ5QWN0aW9uKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2VjLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZWMtYnV0dG9uIGlkPVwic2Vjb25kYXJ5QWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFoaWRlU2Vjb25kYXJ5QWN0aW9uICYmIG9uU2Vjb25kYXJ5QWN0aW9uLm9ic2VydmVycz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInJlYWRvbmx5ID8gJ0Nsb3NlJyA6IHNlY29uZGFyeUFjdGlvbkxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cInNlY29uZGFyeUFjdGlvbigkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9lYy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGVjLWRyb3Bkb3duIGlkPVwibW9yZUFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm1vcmVBY3Rpb25zPy5sZW5ndGggJiYgIXJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInN0YXR1cz8uc3RhdHVzID09PSAncGVuZGluZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25UeXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJtb3JlQWN0aW9uc0xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIm1vcmVBY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9lYy1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tQWN0aW9uc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY3VzdG9tSGVhZGVyVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwicGFnZS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21IZWFkZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxlYy1iYW5uZXIgKm5nSWY9XCIhY3VzdG9tRXJyb3JCYW5uZXJUZW1wbGF0ZSAmJiBlcnJvcnM7IGVsc2UgY3VzdG9tRXJyb3JCYW5uZXJPdXRsZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIGlkPVwicGFnZVZpZXdFcnJvcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItYm90dG9tLTBdPVwiIWlzRGlhbG9nXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckh0bWxdPVwiZXJyb3JzXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZWMtYmFubmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjdXN0b21FcnJvckJhbm5lck91dGxldD5cclxuICAgICAgICAgICAgICAgIDxlYy1iYW5uZXIgKm5nSWY9XCJlcnJvcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInBhZ2VWaWV3RXJyb3JzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1ib3R0b20tMF09XCIhaXNEaWFsb2dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tRXJyb3JCYW5uZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9lYy1iYW5uZXI+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9oZWFkZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZWMtYnV0dG9uICpuZ0lmPVwiaXNEaWFsb2cgJiYgKCAoc3RhdHVzPy5zdGF0dXMgPT09ICdwZW5kaW5nJyAmJiAhaGlkZUNsb3NlT25QZW5kaW5nKSB8fCBzdGF0dXM/LnN0YXR1cyA9PT0gJ2Vycm9yJylcIlxyXG4gICAgICAgICAgICAgICBpZD1cInBhZ2VWaWV3RGlhbG9nQ2xvc2VcIlxyXG4gICAgICAgICAgICAgICB0eXBlPVwiaWNvblwiXHJcbiAgICAgICAgICAgICAgIGljb249XCJpY29uLWNhbmNlbFwiXHJcbiAgICAgICAgICAgICAgIChjbGlja2VkKT1cImNsb3NlRGlhbG9nKClcIj5cclxuICAgIDwvZWMtYnV0dG9uPlxyXG48L2Rpdj4iXX0=
|
@@ -1,98 +0,0 @@
|
|
1
|
-
import { Injector } from "@angular/core";
|
2
|
-
import { ActivatedRoute, Router } from "@angular/router";
|
3
|
-
import { TranslateService } from "@ngx-translate/core";
|
4
|
-
import { ErrorService } from "../../core/error.service";
|
5
|
-
import { RouterHelper } from "../../core/router-helper.service";
|
6
|
-
import { ScrollService } from "../../core/scroll.service";
|
7
|
-
import { TelemetryService } from '../../core/telemetry.service';
|
8
|
-
import { DialogService } from "../../display/dialog/dialog.service";
|
9
|
-
import { SplashService } from "../../display/splash/splash.service";
|
10
|
-
import { MockActivatedRoute, mockRouterFactory, mockRouterHelperFactory } from "./public-mocks.spec";
|
11
|
-
import { SpyFactory } from "./spy-factory.spec";
|
12
|
-
import { MockTranslateService } from "./translation-mocks.spec";
|
13
|
-
/**
|
14
|
-
* Contains static methods to create common injectors for unit testing
|
15
|
-
*/
|
16
|
-
export class PageBaseComponentTestInjectorFactory {
|
17
|
-
/**
|
18
|
-
* Get an injector which provides spy and mock objects needed by the @see PageBaseComponent
|
19
|
-
*/
|
20
|
-
static getComponentInjector() {
|
21
|
-
return Injector.create({ providers: [...this.CoreProviders, ...this.ComponentProviders] });
|
22
|
-
}
|
23
|
-
/**
|
24
|
-
* Get an injector which provides spy and mock objects needed by the @see WizardBaseComponent
|
25
|
-
*/
|
26
|
-
static getWizardBaseComponentInjector() {
|
27
|
-
return Injector.create({ providers: [...this.CoreProviders, ...this.ComponentProviders, ...this.WizardProviders] });
|
28
|
-
}
|
29
|
-
}
|
30
|
-
/**
|
31
|
-
* Core services retrieved via the @see Injector in our base classes.
|
32
|
-
*/
|
33
|
-
PageBaseComponentTestInjectorFactory.CoreProviders = [
|
34
|
-
{
|
35
|
-
provide: Router,
|
36
|
-
useFactory: mockRouterFactory,
|
37
|
-
deps: [],
|
38
|
-
},
|
39
|
-
{
|
40
|
-
provide: ScrollService,
|
41
|
-
useFactory: () => {
|
42
|
-
return SpyFactory.createSpy(ScrollService);
|
43
|
-
},
|
44
|
-
deps: []
|
45
|
-
},
|
46
|
-
{
|
47
|
-
provide: ActivatedRoute,
|
48
|
-
useFactory: () => {
|
49
|
-
return new MockActivatedRoute();
|
50
|
-
},
|
51
|
-
deps: [],
|
52
|
-
},
|
53
|
-
{
|
54
|
-
provide: SplashService,
|
55
|
-
useFactory: () => {
|
56
|
-
return SpyFactory.createSpy(SplashService);
|
57
|
-
},
|
58
|
-
deps: []
|
59
|
-
}
|
60
|
-
];
|
61
|
-
/**
|
62
|
-
* Services and such retrieved by @see PageBaseComponent via the @see Injector
|
63
|
-
* in addition to our core services
|
64
|
-
*/
|
65
|
-
PageBaseComponentTestInjectorFactory.ComponentProviders = [
|
66
|
-
{
|
67
|
-
provide: TranslateService,
|
68
|
-
useFactory: () => new MockTranslateService('-T'),
|
69
|
-
deps: []
|
70
|
-
},
|
71
|
-
{ provide: ErrorService, deps: [] },
|
72
|
-
{
|
73
|
-
provide: DialogService,
|
74
|
-
useFactory: () => {
|
75
|
-
return SpyFactory.createSpy(DialogService);
|
76
|
-
},
|
77
|
-
deps: []
|
78
|
-
},
|
79
|
-
{
|
80
|
-
provide: RouterHelper,
|
81
|
-
useFactory: () => mockRouterHelperFactory(),
|
82
|
-
deps: []
|
83
|
-
}
|
84
|
-
];
|
85
|
-
/**
|
86
|
-
* Services and such retrieved by @see WizardBaseComponent via the @see Injector
|
87
|
-
* in addition to our core and @see PageBaseComponent services
|
88
|
-
*/
|
89
|
-
PageBaseComponentTestInjectorFactory.WizardProviders = [
|
90
|
-
{
|
91
|
-
provide: TelemetryService,
|
92
|
-
useFactory: () => {
|
93
|
-
return SpyFactory.createSpy(TelemetryService);
|
94
|
-
},
|
95
|
-
deps: []
|
96
|
-
}
|
97
|
-
];
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1iYXNlLWNvbXBvbmVudC10ZXN0LWluamVjdG9yLWZhY3Rvcnkuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvdGVzdGluZy9wYWdlLWJhc2UtY29tcG9uZW50LXRlc3QtaW5qZWN0b3ItZmFjdG9yeS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0NBQW9DO0lBeUU3Qzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0I7UUFDOUIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRDs7T0FFRztJQUNLLE1BQU0sQ0FBQyw4QkFBOEI7UUFDekMsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4SCxDQUFDOztBQW5GRDs7R0FFRztBQUNZLGtEQUFhLEdBQXFCO0lBQzdDO1FBQ0ksT0FBTyxFQUFFLE1BQU07UUFDZixVQUFVLEVBQUUsaUJBQWlCO1FBQzdCLElBQUksRUFBRSxFQUFFO0tBQ1g7SUFDRDtRQUNJLE9BQU8sRUFBRSxhQUFhO1FBQ3RCLFVBQVUsRUFBRSxHQUFHLEVBQUU7WUFDYixPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDOUMsQ0FBQztRQUNELElBQUksRUFBRSxFQUFFO0tBQ1g7SUFDRDtRQUNJLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLFVBQVUsRUFBRSxHQUFHLEVBQUU7WUFDYixPQUFPLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsSUFBSSxFQUFFLEVBQUU7S0FDWDtJQUNEO1FBQ0ksT0FBTyxFQUFFLGFBQWE7UUFDdEIsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUNiLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUM5QyxDQUFDO1FBQ0QsSUFBSSxFQUFFLEVBQUU7S0FDWDtDQUNKLENBQUM7QUFFRjs7O0dBR0c7QUFDWSx1REFBa0IsR0FBcUI7SUFDbEQ7UUFDSSxPQUFPLEVBQUUsZ0JBQWdCO1FBQ3pCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQztRQUNoRCxJQUFJLEVBQUUsRUFBRTtLQUNYO0lBQ0QsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7SUFDbkM7UUFDSSxPQUFPLEVBQUUsYUFBYTtRQUN0QixVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQ2IsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQzlDLENBQUM7UUFDRCxJQUFJLEVBQUUsRUFBRTtLQUNYO0lBQ0Q7UUFDSSxPQUFPLEVBQUUsWUFBWTtRQUNyQixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsdUJBQXVCLEVBQUU7UUFDM0MsSUFBSSxFQUFFLEVBQUU7S0FDWDtDQUNKLENBQUM7QUFFRjs7O0dBR0c7QUFDWSxvREFBZSxHQUFxQjtJQUMvQztRQUNJLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUNiLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLEVBQUUsRUFBRTtLQUNYO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yLCBTdGF0aWNQcm92aWRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQgeyBFcnJvclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9lcnJvci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFJvdXRlckhlbHBlciB9IGZyb20gXCIuLi8uLi9jb3JlL3JvdXRlci1oZWxwZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTY3JvbGxTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvc2Nyb2xsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVGVsZW1ldHJ5U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdGVsZW1ldHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rpc3BsYXkvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNwbGFzaFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vZGlzcGxheS9zcGxhc2gvc3BsYXNoLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTW9ja0FjdGl2YXRlZFJvdXRlLCBtb2NrUm91dGVyRmFjdG9yeSwgbW9ja1JvdXRlckhlbHBlckZhY3RvcnkgfSBmcm9tIFwiLi9wdWJsaWMtbW9ja3Muc3BlY1wiO1xyXG5pbXBvcnQgeyBTcHlGYWN0b3J5IH0gZnJvbSBcIi4vc3B5LWZhY3Rvcnkuc3BlY1wiO1xyXG5pbXBvcnQgeyBNb2NrVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCIuL3RyYW5zbGF0aW9uLW1vY2tzLnNwZWNcIjtcclxuXHJcbi8qKlxyXG4gKiBDb250YWlucyBzdGF0aWMgbWV0aG9kcyB0byBjcmVhdGUgY29tbW9uIGluamVjdG9ycyBmb3IgdW5pdCB0ZXN0aW5nXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUGFnZUJhc2VDb21wb25lbnRUZXN0SW5qZWN0b3JGYWN0b3J5IHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvcmUgc2VydmljZXMgcmV0cmlldmVkIHZpYSB0aGUgQHNlZSBJbmplY3RvciBpbiBvdXIgYmFzZSBjbGFzc2VzLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyBDb3JlUHJvdmlkZXJzOiBTdGF0aWNQcm92aWRlcltdID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogUm91dGVyLFxyXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiBtb2NrUm91dGVyRmFjdG9yeSxcclxuICAgICAgICAgICAgZGVwczogW10sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IFNjcm9sbFNlcnZpY2UsXHJcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBTcHlGYWN0b3J5LmNyZWF0ZVNweShTY3JvbGxTZXJ2aWNlKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkZXBzOiBbXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2NrQWN0aXZhdGVkUm91dGUoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGVwczogW10sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IFNwbGFzaFNlcnZpY2UsXHJcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBTcHlGYWN0b3J5LmNyZWF0ZVNweShTcGxhc2hTZXJ2aWNlKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkZXBzOiBbXVxyXG4gICAgICAgIH1cclxuICAgIF07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXJ2aWNlcyBhbmQgc3VjaCByZXRyaWV2ZWQgYnkgQHNlZSBQYWdlQmFzZUNvbXBvbmVudCB2aWEgdGhlIEBzZWUgSW5qZWN0b3JcclxuICAgICAqIGluIGFkZGl0aW9uIHRvIG91ciBjb3JlIHNlcnZpY2VzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3RhdGljIENvbXBvbmVudFByb3ZpZGVyczogU3RhdGljUHJvdmlkZXJbXSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IG5ldyBNb2NrVHJhbnNsYXRlU2VydmljZSgnLVQnKSxcclxuICAgICAgICAgICAgZGVwczogW11cclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogRXJyb3JTZXJ2aWNlLCBkZXBzOiBbXSB9LFxyXG4gICAgICAgIHsgXHJcbiAgICAgICAgICAgIHByb3ZpZGU6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBTcHlGYWN0b3J5LmNyZWF0ZVNweShEaWFsb2dTZXJ2aWNlKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkZXBzOiBbXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBSb3V0ZXJIZWxwZXIsXHJcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IG1vY2tSb3V0ZXJIZWxwZXJGYWN0b3J5KCksXHJcbiAgICAgICAgICAgIGRlcHM6IFtdXHJcbiAgICAgICAgfVxyXG4gICAgXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlcnZpY2VzIGFuZCBzdWNoIHJldHJpZXZlZCBieSBAc2VlIFdpemFyZEJhc2VDb21wb25lbnQgdmlhIHRoZSBAc2VlIEluamVjdG9yXHJcbiAgICAgKiBpbiBhZGRpdGlvbiB0byBvdXIgY29yZSBhbmQgQHNlZSBQYWdlQmFzZUNvbXBvbmVudCBzZXJ2aWNlc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyBXaXphcmRQcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBUZWxlbWV0cnlTZXJ2aWNlLFxyXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gU3B5RmFjdG9yeS5jcmVhdGVTcHkoVGVsZW1ldHJ5U2VydmljZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRlcHM6IFtdXHJcbiAgICAgICAgfVxyXG4gICAgXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCBhbiBpbmplY3RvciB3aGljaCBwcm92aWRlcyBzcHkgYW5kIG1vY2sgb2JqZWN0cyBuZWVkZWQgYnkgdGhlIEBzZWUgUGFnZUJhc2VDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBnZXRDb21wb25lbnRJbmplY3RvcigpOiBJbmplY3RvciB7XHJcbiAgICAgICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7IHByb3ZpZGVyczogWy4uLnRoaXMuQ29yZVByb3ZpZGVycywgLi4udGhpcy5Db21wb25lbnRQcm92aWRlcnNdIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IGFuIGluamVjdG9yIHdoaWNoIHByb3ZpZGVzIHNweSBhbmQgbW9jayBvYmplY3RzIG5lZWRlZCBieSB0aGUgQHNlZSBXaXphcmRCYXNlQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgICBwdWJsaWMgc3RhdGljIGdldFdpemFyZEJhc2VDb21wb25lbnRJbmplY3RvcigpOiBJbmplY3RvciB7XHJcbiAgICAgICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7IHByb3ZpZGVyczogWy4uLnRoaXMuQ29yZVByb3ZpZGVycywgLi4udGhpcy5Db21wb25lbnRQcm92aWRlcnMsIC4uLnRoaXMuV2l6YXJkUHJvdmlkZXJzXSB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
@@ -1,246 +0,0 @@
|
|
1
|
-
import { Directive } from '@angular/core';
|
2
|
-
import { upperFirst } from 'lodash';
|
3
|
-
import { takeUntil } from 'rxjs/operators';
|
4
|
-
import { TelemetryService } from '../../../core/telemetry.service';
|
5
|
-
import { PageBaseComponent } from '../../page/page-base/page-base.component';
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
export class WizardBaseComponent extends PageBaseComponent {
|
8
|
-
get tabGroup() {
|
9
|
-
return this._tabGroup;
|
10
|
-
}
|
11
|
-
set tabGroup(value) {
|
12
|
-
this._tabGroup = value;
|
13
|
-
}
|
14
|
-
get currentTab() {
|
15
|
-
return this._currentTab;
|
16
|
-
}
|
17
|
-
constructor(injector) {
|
18
|
-
super(injector);
|
19
|
-
this.isWizardMode = true;
|
20
|
-
this.showWizardSaveSuccess = false;
|
21
|
-
/** True when there are no custom fields or when in wizard mode on the custom fields tab */
|
22
|
-
this.showSave = true;
|
23
|
-
/** True when in wizard mode you do not want to show the next or save button*/
|
24
|
-
this.hideNextSaveButton = false;
|
25
|
-
/** True when in wizard mode and on the custom fields tab */
|
26
|
-
this.showBack = false;
|
27
|
-
this.cancelLabel = 'Cancel';
|
28
|
-
this.dialogId = '';
|
29
|
-
this.telemetryService = injector.get(TelemetryService);
|
30
|
-
}
|
31
|
-
onFirstInit() {
|
32
|
-
this._tabGroup = this.configureTabs();
|
33
|
-
this.setCurrentTab(this._tabGroup.selected);
|
34
|
-
this.subscribeToTabChanges();
|
35
|
-
}
|
36
|
-
onWizardSaveSuccess() { }
|
37
|
-
async onAfterViewInit() {
|
38
|
-
this.updateButtons();
|
39
|
-
}
|
40
|
-
//
|
41
|
-
// PageBase lifecycle hooks. Override in derived class if needed.
|
42
|
-
//
|
43
|
-
async applyModelUpdates() { }
|
44
|
-
async saveToApi() { }
|
45
|
-
onSaveComplete(entityId) { }
|
46
|
-
async onSave(event) {
|
47
|
-
// Mark the current tab as completed if the tab is valid before attempting to save.
|
48
|
-
if (this._currentTab && this.isCurrentTabValid()) {
|
49
|
-
this._currentTab.completed = true;
|
50
|
-
}
|
51
|
-
await super.onSave(event);
|
52
|
-
if (this.showWizardSaveSuccess) {
|
53
|
-
this.onWizardSaveSuccess();
|
54
|
-
this.telemetryService.trackEvent(`${this.dialogId}_WizardSuccess`);
|
55
|
-
}
|
56
|
-
}
|
57
|
-
/**
|
58
|
-
* Navigates to the next tab in the tab group. Calls canGoToNextTab() to determine if navigating to the next tab
|
59
|
-
* is allowed or not. If tab validation succeeds, enables the next tab (if it is disabled) and selects it.
|
60
|
-
* @memberof WizardBaseComponent
|
61
|
-
*/
|
62
|
-
nextTab() {
|
63
|
-
const currentTabIndex = this._tabGroup.items.findIndex(t => t === this._currentTab);
|
64
|
-
// If there is a current tab selected and the current tab is not the last tab,
|
65
|
-
// update the selected tab in the tabGroup to the next tab
|
66
|
-
if (currentTabIndex > -1 && currentTabIndex < this._tabGroup.items.length - 1) {
|
67
|
-
const nextTab = this._tabGroup.items[currentTabIndex + 1];
|
68
|
-
if (this.canGoToNextTab(nextTab)) {
|
69
|
-
// Enable the next tab if it is disabled
|
70
|
-
if (nextTab.disabled) {
|
71
|
-
nextTab.disabled = false;
|
72
|
-
}
|
73
|
-
this._tabGroup.selected = nextTab;
|
74
|
-
this.telemetryService.trackEvent(`${this.dialogId}_${upperFirst(nextTab.id?.toString())}`);
|
75
|
-
}
|
76
|
-
else {
|
77
|
-
this.onTabChangeFailed();
|
78
|
-
}
|
79
|
-
}
|
80
|
-
}
|
81
|
-
/**
|
82
|
-
* Navigates to the previous tab in the tab group. Calls canGoToPreviousTab() to determine if navigating to the previous tab
|
83
|
-
* is allowed or not. Navigates to the tab if validation succeeds
|
84
|
-
* @memberof WizardBaseComponent
|
85
|
-
*/
|
86
|
-
previousTab() {
|
87
|
-
const currentTabIndex = this._tabGroup.items.findIndex(t => t === this._currentTab);
|
88
|
-
// If there is a current tab selected and the current tab is not the first tab,
|
89
|
-
// update the selected tab in the tabGroup to the previous tab
|
90
|
-
if (currentTabIndex > 0 && currentTabIndex < this._tabGroup.items.length) {
|
91
|
-
const prevTab = this._tabGroup.items[currentTabIndex - 1];
|
92
|
-
if (this.canGoToPreviousTab(prevTab)) {
|
93
|
-
this._tabGroup.selected = prevTab;
|
94
|
-
this.telemetryService.trackEvent(`${this.dialogId}_${upperFirst(prevTab.id?.toString())}`);
|
95
|
-
}
|
96
|
-
else {
|
97
|
-
this.onTabChangeFailed();
|
98
|
-
}
|
99
|
-
}
|
100
|
-
}
|
101
|
-
updateButtons() {
|
102
|
-
if (this.isWizardMode) {
|
103
|
-
if (this.currentTab) {
|
104
|
-
const tabIndex = this._tabGroup.items.findIndex(t => t === this.currentTab);
|
105
|
-
if (tabIndex > 0) {
|
106
|
-
// Show the back button and set the label to the previous tab when not on the first tab
|
107
|
-
this.showBack = true;
|
108
|
-
const prevTabKey = this._tabGroup.items[tabIndex - 1].label;
|
109
|
-
this.backLabel = `${this.translateService.instant('Back_TC')}: ${this.translateService.instant(prevTabKey)}`;
|
110
|
-
}
|
111
|
-
else {
|
112
|
-
// Hide the back button when on the first tab
|
113
|
-
this.showBack = false;
|
114
|
-
}
|
115
|
-
if (tabIndex < this._tabGroup.items.length - 1) {
|
116
|
-
// Show the next button and set the label to the next tab when not on the last tab
|
117
|
-
this.showSave = false;
|
118
|
-
const nextTabKey = this._tabGroup.items[tabIndex + 1].label;
|
119
|
-
this.nextLabel = `${this.translateService.instant('Next_TC')}: ${this.translateService.instant(nextTabKey)}`;
|
120
|
-
}
|
121
|
-
else {
|
122
|
-
this.nextLabel = undefined;
|
123
|
-
// Show the save button instead of next when on the last tab
|
124
|
-
this.showSave = true;
|
125
|
-
}
|
126
|
-
}
|
127
|
-
}
|
128
|
-
else {
|
129
|
-
this.showBack = false;
|
130
|
-
this.showSave = true;
|
131
|
-
}
|
132
|
-
}
|
133
|
-
/**
|
134
|
-
* Used to determine whether navigation to the next tab is prevented or not. Fired in nextTab(), but not when a tab is
|
135
|
-
* clicked or selected programmatically. By default, this checks the validity of the current tab's form model and
|
136
|
-
* prevents navigation if it is invalid. Can be overridden if different logic is needed.
|
137
|
-
* @param nextTab - The tab being navigated to
|
138
|
-
* @memberof WizardBaseComponent
|
139
|
-
*/
|
140
|
-
canGoToNextTab(nextTab) {
|
141
|
-
return this.isCurrentTabValid();
|
142
|
-
}
|
143
|
-
/**
|
144
|
-
* Used to determine whether navigation to the previous tab is prevented or not. Fired in previousTab(), but not when a tab is
|
145
|
-
* clicked or selected programmatically. By default, this checks the validity of the current tab's form model and
|
146
|
-
* prevents navigation if it is invalid. Can be overridden if different logic is needed.
|
147
|
-
* @param prevTab - The tab being navigated to
|
148
|
-
* @memberof WizardBaseComponent
|
149
|
-
*/
|
150
|
-
canGoToPreviousTab(prevTab) {
|
151
|
-
return this.isCurrentTabValid();
|
152
|
-
}
|
153
|
-
/**
|
154
|
-
* Used to determine whether navigating away from the current tab is prevented or not. Fired any time the selected tab
|
155
|
-
* changes in the tabGroup. By default, this checks the validity of the current tab's form model and prevents navigation
|
156
|
-
* if it is invalid. Can be overridden if different logic is needed.
|
157
|
-
* @memberof WizardBaseComponent
|
158
|
-
*/
|
159
|
-
canLeaveCurrentTab() {
|
160
|
-
return this.isCurrentTabValid();
|
161
|
-
}
|
162
|
-
/**
|
163
|
-
* Triggers validation on the current wizard tab's form control. Returns true if the form control is valid, false if not.
|
164
|
-
* Returns true if the formModelPath for the tab is not defined or no form control is found. Can be overridden if different
|
165
|
-
* logic is needed to validate the form control for the current tab.
|
166
|
-
* @memberof WizardBaseComponent
|
167
|
-
*/
|
168
|
-
isCurrentTabValid() {
|
169
|
-
if (this._currentTab && this._currentTab.formModelPath) {
|
170
|
-
let formModel = this.formGroup.get(this._currentTab.formModelPath);
|
171
|
-
if (formModel) {
|
172
|
-
formModel.markAllAsTouched();
|
173
|
-
return formModel.valid || formModel.disabled;
|
174
|
-
}
|
175
|
-
}
|
176
|
-
return true;
|
177
|
-
}
|
178
|
-
/**
|
179
|
-
* Fired if navigation to a tab succeeds. Hides the error banner by default, but can be overridden if logic is needed.
|
180
|
-
* @memberof WizardBaseComponent
|
181
|
-
*/
|
182
|
-
onTabChangeSuccess() {
|
183
|
-
this.updateButtons();
|
184
|
-
this.hideErrorBanner();
|
185
|
-
}
|
186
|
-
/**
|
187
|
-
* Fired if navigation to a tab fails. By default, shows the error banner with the default invalid form message, but
|
188
|
-
* can be overridden if different logic is needed.
|
189
|
-
* @memberof WizardBaseComponent
|
190
|
-
*/
|
191
|
-
onTabChangeFailed() {
|
192
|
-
this.showErrorBanner(this.defaultInvalidFormMessage);
|
193
|
-
}
|
194
|
-
/**
|
195
|
-
* Listen for when the tabGroup's selected item is changed (I.E. when a tab is clicked or selected programmatically)
|
196
|
-
* and navigate to that tab.
|
197
|
-
*/
|
198
|
-
subscribeToTabChanges() {
|
199
|
-
// Whenever the tabGroup's selected tab changes, go to the selected tab
|
200
|
-
this._tabGroup.selectedChanges.pipe(takeUntil(this.destroyed)).subscribe(tab => {
|
201
|
-
this.goToTab(tab);
|
202
|
-
});
|
203
|
-
}
|
204
|
-
/**
|
205
|
-
* Triggered when the tabGroup's selected item changes. If the current tab passes validation, updates
|
206
|
-
* the current tab to the selected tab.
|
207
|
-
* @param tab - the tab that was selected
|
208
|
-
*/
|
209
|
-
goToTab(tab) {
|
210
|
-
// Only continue if the current tab is not the tab that was selected. They are the same
|
211
|
-
// when we are resetting the tab group's selected tab back to the current tab when validation fails.
|
212
|
-
// Without this check, we could end up in an infinite loop.
|
213
|
-
if (tab !== this._currentTab) {
|
214
|
-
if (this.canLeaveCurrentTab()) {
|
215
|
-
// Mark the current tab as complete before switching
|
216
|
-
if (this._currentTab) {
|
217
|
-
this._currentTab.completed = true;
|
218
|
-
}
|
219
|
-
this.setCurrentTab(tab);
|
220
|
-
this.onTabChangeSuccess();
|
221
|
-
}
|
222
|
-
else {
|
223
|
-
// Because the tabGroup's selected tab is updated when a tab is clicked before we can run any form validation,
|
224
|
-
// we need to reset the selected tab back to the current tab if validation fails.
|
225
|
-
// Without this we would have no way to prevent the user from leaving the current tab if the form is invalid.
|
226
|
-
this._tabGroup.selected = this._currentTab;
|
227
|
-
this.onTabChangeFailed();
|
228
|
-
}
|
229
|
-
}
|
230
|
-
}
|
231
|
-
/**
|
232
|
-
* Updates the current tab, title, and help.
|
233
|
-
* @param tab Tab to set
|
234
|
-
*/
|
235
|
-
setCurrentTab(tab) {
|
236
|
-
this._currentTab = tab;
|
237
|
-
this.help = tab ? tab.help : undefined;
|
238
|
-
this.title = tab ? tab.title : undefined;
|
239
|
-
}
|
240
|
-
}
|
241
|
-
WizardBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: WizardBaseComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
|
242
|
-
WizardBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: WizardBaseComponent, usesInheritance: true, ngImport: i0 });
|
243
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: WizardBaseComponent, decorators: [{
|
244
|
-
type: Directive
|
245
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
246
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC93aXphcmQvd2l6YXJkLWJhc2Uvd2l6YXJkLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFrQixNQUFNLDBDQUEwQyxDQUFDOztBQWU3RixNQUFNLE9BQWdCLG1CQUFvQixTQUFRLGlCQUFpQjtJQTBCakUsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUMsS0FBZTtRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBT0QsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBTUQsWUFBWSxRQUFrQjtRQUM1QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUE3Q1gsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFDN0IsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBRTlDLDJGQUEyRjtRQUNwRixhQUFRLEdBQVksSUFBSSxDQUFDO1FBRWhDLDhFQUE4RTtRQUN2RSx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFFM0MsNERBQTREO1FBQ3JELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFLMUIsZ0JBQVcsR0FBVyxRQUFRLENBQUM7UUFFL0IsYUFBUSxH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LEdBQUcsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUMzQjtpQkFBTTtnQkFDTCw4R0FBOEc7Z0JBQzlHLGlGQUFpRjtnQkFDakYsNkdBQTZHO2dCQUM3RyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUMxQjtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGFBQWEsQ0FBQyxHQUFlO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMzQyxDQUFDOztnSEF6Um1CLG1CQUFtQjtvR0FBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRHhDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHVwcGVyRmlyc3QgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE5hdkdyb3VwIH0gZnJvbSAnLi4vLi4vLi4vY29udHJvbHMvbmF2aWdhdGlvbi9uYXYtZ3JvdXAnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi4vLi4vLi4vY29udHJvbHMvbmF2aWdhdGlvbi9uYXYtaXRlbSc7XHJcbmltcG9ydCB7IFRlbGVtZXRyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3RlbGVtZXRyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSGVscCB9IGZyb20gJy4uLy4uLy4uL2Rpc3BsYXkvaGVscC9oZWxwLXR5cGVzJztcclxuaW1wb3J0IHsgUGFnZUJhc2VDb21wb25lbnQsIFBhZ2VJbml0UmVzdWx0IH0gZnJvbSAnLi4vLi4vcGFnZS9wYWdlLWJhc2UvcGFnZS1iYXNlLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdpemFyZFRhYiBleHRlbmRzIE5hdkl0ZW0ge1xyXG4gIC8qKlxyXG4gICAqIFBhdGggdG8gYSBmb3JtIGdyb3VwL2FycmF5L2NvbnRyb2wgY29udGFpbmVkIGluIHRoZSBmb3JtJ3MgbWFpbiBmb3JtIGdyb3VwLlxyXG4gICAqIFVzZWQgdG8gbWFwIGEgdGFiIHRvIGl0J3MgZm9ybSBtb2RlbCBmb3IgZm9ybSB2YWxpZGF0aW9uIGluIFdpemFyZEJhc2VDb21wb25lbnQuXHJcbiAgICogU2VlIGh0dHBzOi8vYW5ndWxhci5pby9hcGkvZm9ybXMvQWJzdHJhY3RDb250cm9sI2dldC11c2FnZS1ub3RlcyBmb3IgZGV0YWlscyBvbiBwYXRocy5cclxuICAgKi9cclxuICBmb3JtTW9kZWxQYXRoPzogc3RyaW5nIHwgKHN0cmluZyB8IG51bWJlcilbXTtcclxuICBoZWxwPzogSGVscDtcclxuICB0aXRsZT86IHN0cmluZztcclxuICBjb21wbGV0ZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFdpemFyZEJhc2VDb21wb25lbnQgZXh0ZW5kcyBQYWdlQmFzZUNvbXBvbmVudCB7XHJcblxyXG4gIHB1YmxpYyBpc1dpemFyZE1vZGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93V2l6YXJkU2F2ZVN1Y2Nlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFRydWUgd2hlbiB0aGVyZSBhcmUgbm8gY3VzdG9tIGZpZWxkcyBvciB3aGVuIGluIHdpemFyZCBtb2RlIG9uIHRoZSBjdXN0b20gZmllbGRzIHRhYiAqL1xyXG4gIHB1YmxpYyBzaG93U2F2ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKiBUcnVlIHdoZW4gaW4gd2l6YXJkIG1vZGUgeW91IGRvIG5vdCB3YW50IHRvIHNob3cgdGhlIG5leHQgb3Igc2F2ZSBidXR0b24qL1xyXG4gIHB1YmxpYyBoaWRlTmV4dFNhdmVCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFRydWUgd2hlbiBpbiB3aXphcmQgbW9kZSBhbmQgb24gdGhlIGN1c3RvbSBmaWVsZHMgdGFiICovXHJcbiAgcHVibGljIHNob3dCYWNrOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBMYWJlbHMgZm9yIHRoZSBjYW5jZWwsIG5leHQgYW5kIGJhY2sgYnV0dG9ucyAqL1xyXG4gIHB1YmxpYyBuZXh0TGFiZWw/OiBzdHJpbmc7XHJcbiAgcHVibGljIGJhY2tMYWJlbD86IHN0cmluZztcclxuICBwdWJsaWMgY2FuY2VsTGFiZWw6IHN0cmluZyA9ICdDYW5jZWwnO1xyXG5cclxuICBwdWJsaWMgZGlhbG9nSWQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBDb250YWlucyB0aGUgYXZhaWxhYmxlIHdpemFyZCB0YWJzLiBQYXNzZWQgdG8gVGFic0NvbXBvbmVudC5cclxuICAgKiBAbWVtYmVyb2YgV2l6YXJkQmFzZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3RhYkdyb3VwITogTmF2R3JvdXA7XHJcbiAgcHVibGljIGdldCB0YWJHcm91cCgpOiBOYXZHcm91cCB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGFiR3JvdXA7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgdGFiR3JvdXAodmFsdWU6IE5hdkdyb3VwKSB7XHJcbiAgICB0aGlzLl90YWJHcm91cCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udGFpbnMgdGhlIHRhYiB0aGF0IGlzIGN1cnJlbnRseSBzZWxlY3RlZC5cclxuICAgKiBAbWVtYmVyb2YgV2l6YXJkQmFzZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2N1cnJlbnRUYWI/OiBXaXphcmRUYWI7XHJcbiAgcHVibGljIGdldCBjdXJyZW50VGFiKCk6IFdpemFyZFRhYiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFRhYjtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBpbml0UHJvbWlzZSE6IFByb21pc2U8V2l6YXJkQmFzZUNvbXBvbmVudD47XHJcblxyXG4gIHByb3RlY3RlZCB0ZWxlbWV0cnlTZXJ2aWNlOiBUZWxlbWV0cnlTZXJ2aWNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuXHJcbiAgICB0aGlzLnRlbGVtZXRyeVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoVGVsZW1ldHJ5U2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb25GaXJzdEluaXQoKSB7XHJcbiAgICB0aGlzLl90YWJHcm91cCA9IHRoaXMuY29uZmlndXJlVGFicygpO1xyXG4gICAgdGhpcy5zZXRDdXJyZW50VGFiKHRoaXMuX3RhYkdyb3VwLnNlbGVjdGVkKTtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG9UYWJDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb25Jbml0KCk6IFByb21pc2U8UGFnZUluaXRSZXN1bHQ+O1xyXG5cclxuICBwcm90ZWN0ZWQgb25XaXphcmRTYXZlU3VjY2VzcygpOiB2b2lkIHsgfVxyXG5cclxuICBwcm90ZWN0ZWQgYXN5bmMgb25BZnRlclZpZXdJbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy51cGRhdGVCdXR0b25zKCk7XHJcbiAgfVxyXG5cclxuICAvL1xyXG4gIC8vIFBhZ2VCYXNlIGxpZmVjeWNsZSBob29rcy4gT3ZlcnJpZGUgaW4gZGVyaXZlZCBjbGFzcyBpZiBuZWVkZWQuXHJcbiAgLy9cclxuICBwcm90ZWN0ZWQgYXN5bmMgYXBwbHlNb2RlbFVwZGF0ZXMoKSB7fVxyXG4gIHByb3RlY3RlZCBhc3luYyBzYXZlVG9BcGkoKTogUHJvbWlzZTxudW1iZXJ8dm9pZD4ge31cclxuICBwcm90ZWN0ZWQgb25TYXZlQ29tcGxldGUoZW50aXR5SWQ6IG51bWJlcikge31cclxuXHJcbiAgcHVibGljIGFzeW5jIG9uU2F2ZShldmVudDogRXZlbnQpIHtcclxuICAgIC8vIE1hcmsgdGhlIGN1cnJlbnQgdGFiIGFzIGNvbXBsZXRlZCBpZiB0aGUgdGFiIGlzIHZhbGlkIGJlZm9yZSBhdHRlbXB0aW5nIHRvIHNhdmUuXHJcbiAgICBpZiAodGhpcy5fY3VycmVudFRhYiAmJiB0aGlzLmlzQ3VycmVudFRhYlZhbGlkKCkpIHtcclxuICAgICAgdGhpcy5fY3VycmVudFRhYi5jb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHN1cGVyLm9uU2F2ZShldmVudCk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvd1dpemFyZFNhdmVTdWNjZXNzKSB7XHJcbiAgICAgIHRoaXMub25XaXphcmRTYXZlU3VjY2VzcygpO1xyXG4gICAgICB0aGlzLnRlbGVtZXRyeVNlcnZpY2UudHJhY2tFdmVudChgJHt0aGlzLmRpYWxvZ0lkfV9XaXphcmRTdWNjZXNzYCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIG5leHQgdGFiIGluIHRoZSB0YWIgZ3JvdXAuIENhbGxzIGNhbkdvVG9OZXh0VGFiKCkgdG8gZGV0ZXJtaW5lIGlmIG5hdmlnYXRpbmcgdG8gdGhlIG5leHQgdGFiXHJcbiAgICogaXMgYWxsb3dlZCBvciBub3QuIElmIHRhYiB2YWxpZGF0aW9uIHN1Y2NlZWRzLCBlbmFibGVzIHRoZSBuZXh0IHRhYiAoaWYgaXQgaXMgZGlzYWJsZWQpIGFuZCBzZWxlY3RzIGl0LlxyXG4gICAqIEBtZW1iZXJvZiBXaXphcmRCYXNlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHVibGljIG5leHRUYWIoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50VGFiSW5kZXggPSB0aGlzLl90YWJHcm91cC5pdGVtcy5maW5kSW5kZXgodCA9PiB0ID09PSB0aGlzLl9jdXJyZW50VGFiKTtcclxuICAgIC8vIElmIHRoZXJlIGlzIGEgY3VycmVudCB0YWIgc2VsZWN0ZWQgYW5kIHRoZSBjdXJyZW50IHRhYiBpcyBub3QgdGhlIGxhc3QgdGFiLFxyXG4gICAgLy8gdXBkYXRlIHRoZSBzZWxlY3RlZCB0YWIgaW4gdGhlIHRhYkdyb3VwIHRvIHRoZSBuZXh0IHRhYlxyXG4gICAgaWYgKGN1cnJlbnRUYWJJbmRleCA+IC0xICYmIGN1cnJlbnRUYWJJbmRleCA8IHRoaXMuX3RhYkdyb3VwLml0ZW1zLmxlbmd0aCAtIDEpIHtcclxuICAgICAgY29uc3QgbmV4dFRhYiA9IHRoaXMuX3RhYkdyb3VwLml0ZW1zW2N1cnJlbnRUYWJJbmRleCArIDFdO1xyXG4gICAgICBpZiAodGhpcy5jYW5Hb1RvTmV4dFRhYihuZXh0VGFiKSkge1xyXG4gICAgICAgIC8vIEVuYWJsZSB0aGUgbmV4dCB0YWIgaWYgaXQgaXMgZGlzYWJsZWRcclxuICAgICAgICBpZiAobmV4dFRhYi5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgbmV4dFRhYi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl90YWJHcm91cC5zZWxlY3RlZCA9IG5leHRUYWI7XHJcbiAgICAgICAgdGhpcy50ZWxlbWV0cnlTZXJ2aWNlLnRyYWNrRXZlbnQoYCR7dGhpcy5kaWFsb2dJZH1fJHt1cHBlckZpcnN0KG5leHRUYWIuaWQ/LnRvU3RyaW5nKCkpfWApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25UYWJDaGFuZ2VGYWlsZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBwcmV2aW91cyB0YWIgaW4gdGhlIHRhYiBncm91cC4gQ2FsbHMgY2FuR29Ub1ByZXZpb3VzVGFiKCkgdG8gZGV0ZXJtaW5lIGlmIG5hdmlnYXRpbmcgdG8gdGhlIHByZXZpb3VzIHRhYlxyXG4gICAqIGlzIGFsbG93ZWQgb3Igbm90LiBOYXZpZ2F0ZXMgdG8gdGhlIHRhYiBpZiB2YWxpZGF0aW9uIHN1Y2NlZWRzXHJcbiAgICogQG1lbWJlcm9mIFdpemFyZEJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwdWJsaWMgcHJldmlvdXNUYWIoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50VGFiSW5kZXggPSB0aGlzLl90YWJHcm91cC5pdGVtcy5maW5kSW5kZXgodCA9PiB0ID09PSB0aGlzLl9jdXJyZW50VGFiKTtcclxuICAgIC8vIElmIHRoZXJlIGlzIGEgY3VycmVudCB0YWIgc2VsZWN0ZWQgYW5kIHRoZSBjdXJyZW50IHRhYiBpcyBub3QgdGhlIGZpcnN0IHRhYixcclxuICAgIC8vIHVwZGF0ZSB0aGUgc2VsZWN0ZWQgdGFiIGluIHRoZSB0YWJHcm91cCB0byB0aGUgcHJldmlvdXMgdGFiXHJcbiAgICBpZiAoY3VycmVudFRhYkluZGV4ID4gMCAmJiBjdXJyZW50VGFiSW5kZXggPCB0aGlzLl90YWJHcm91cC5pdGVtcy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgcHJldlRhYiA9IHRoaXMuX3RhYkdyb3VwLml0ZW1zW2N1cnJlbnRUYWJJbmRleCAtIDFdO1xyXG4gICAgICBpZiAodGhpcy5jYW5Hb1RvUHJldmlvdXNUYWIocHJldlRhYikpIHtcclxuICAgICAgICB0aGlzLl90YWJHcm91cC5zZWxlY3RlZCA9IHByZXZUYWI7XHJcbiAgICAgICAgdGhpcy50ZWxlbWV0cnlTZXJ2aWNlLnRyYWNrRXZlbnQoYCR7dGhpcy5kaWFsb2dJZH1fJHt1cHBlckZpcnN0KHByZXZUYWIuaWQ/LnRvU3RyaW5nKCkpfWApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25UYWJDaGFuZ2VGYWlsZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHVwZGF0ZUJ1dHRvbnMoKSB7XHJcbiAgICBpZiAodGhpcy5pc1dpemFyZE1vZGUpIHtcclxuICAgICAgaWYgKHRoaXMuY3VycmVudFRhYikge1xyXG4gICAgICAgIGNvbnN0IHRhYkluZGV4ID0gdGhpcy5fdGFiR3JvdXAuaXRlbXMuZmluZEluZGV4KHQgPT4gdCA9PT0gdGhpcy5jdXJyZW50VGFiKTtcclxuICAgICAgICBpZiAodGFiSW5kZXggPiAwKSB7XHJcbiAgICAgICAgICAvLyBTaG93IHRoZSBiYWNrIGJ1dHRvbiBhbmQgc2V0IHRoZSBsYWJlbCB0byB0aGUgcHJldmlvdXMgdGFiIHdoZW4gbm90IG9uIHRoZSBmaXJzdCB0YWJcclxuICAgICAgICAgIHRoaXMuc2hvd0JhY2sgPSB0cnVlO1xyXG4gICAgICAgICAgY29uc3QgcHJldlRhYktleSA9IHRoaXMuX3RhYkdyb3VwLml0ZW1zW3RhYkluZGV4IC0gMV0ubGFiZWwhO1xyXG4gICAgICAgICAgdGhpcy5iYWNrTGFiZWwgPSBgJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQmFja19UQycpfTogJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChwcmV2VGFiS2V5KX1gO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBIaWRlIHRoZSBiYWNrIGJ1dHRvbiB3aGVuIG9uIHRoZSBmaXJzdCB0YWJcclxuICAgICAgICAgIHRoaXMuc2hvd0JhY2sgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0YWJJbmRleCA8IHRoaXMuX3RhYkdyb3VwLml0ZW1zLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgIC8vIFNob3cgdGhlIG5leHQgYnV0dG9uIGFuZCBzZXQgdGhlIGxhYmVsIHRvIHRoZSBuZXh0IHRhYiB3aGVuIG5vdCBvbiB0aGUgbGFzdCB0YWJcclxuICAgICAgICAgIHRoaXMuc2hvd1NhdmUgPSBmYWxzZTtcclxuICAgICAgICAgIGNvbnN0IG5leHRUYWJLZXkgPSB0aGlzLl90YWJHcm91cC5pdGVtc1t0YWJJbmRleCArIDFdLmxhYmVsITtcclxuICAgICAgICAgIHRoaXMubmV4dExhYmVsID0gYCR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ05leHRfVEMnKX06ICR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQobmV4dFRhYktleSl9YDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5uZXh0TGFiZWwgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAvLyBTaG93IHRoZSBzYXZlIGJ1dHRvbiBpbnN0ZWFkIG9mIG5leHQgd2hlbiBvbiB0aGUgbGFzdCB0YWJcclxuICAgICAgICAgIHRoaXMuc2hvd1NhdmUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93QmFjayA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dTYXZlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlcXVpcmVkIHRvIGNvbmZpZ3VyZSB0aGUgdGFicyBhbmQgZGVmYXVsdCB0YWIgZm9yIHRoZSB3aXphcmQuIFJ1bnMgaW4gb25GaXJzdEluaXQsIGJlZm9yZSBvbkluaXQuXHJcbiAgICogQG1lbWJlcm9mIFdpemFyZEJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY29uZmlndXJlVGFicygpOiBOYXZHcm91cDtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBuYXZpZ2F0aW9uIHRvIHRoZSBuZXh0IHRhYiBpcyBwcmV2ZW50ZWQgb3Igbm90LiBGaXJlZCBpbiBuZXh0VGFiKCksIGJ1dCBub3Qgd2hlbiBhIHRhYiBpc1xyXG4gICAqIGNsaWNrZWQgb3Igc2VsZWN0ZWQgcHJvZ3JhbW1hdGljYWxseS4gQnkgZGVmYXVsdCwgdGhpcyBjaGVja3MgdGhlIHZhbGlkaXR5IG9mIHRoZSBjdXJyZW50IHRhYidzIGZvcm0gbW9kZWwgYW5kXHJcbiAgICogcHJldmVudHMgbmF2aWdhdGlvbiBpZiBpdCBpcyBpbnZhbGlkLiBDYW4gYmUgb3ZlcnJpZGRlbiBpZiBkaWZmZXJlbnQgbG9naWMgaXMgbmVlZGVkLlxyXG4gICAqIEBwYXJhbSBuZXh0VGFiIC0gVGhlIHRhYiBiZWluZyBuYXZpZ2F0ZWQgdG9cclxuICAgKiBAbWVtYmVyb2YgV2l6YXJkQmFzZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBjYW5Hb1RvTmV4dFRhYihuZXh0VGFiOiBXaXphcmRUYWIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzQ3VycmVudFRhYlZhbGlkKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIG5hdmlnYXRpb24gdG8gdGhlIHByZXZpb3VzIHRhYiBpcyBwcmV2ZW50ZWQgb3Igbm90LiBGaXJlZCBpbiBwcmV2aW91c1RhYigpLCBidXQgbm90IHdoZW4gYSB0YWIgaXNcclxuICAgKiBjbGlja2VkIG9yIHNlbGVjdGVkIHByb2dyYW1tYXRpY2FsbHkuIEJ5IGRlZmF1bHQsIHRoaXMgY2hlY2tzIHRoZSB2YWxpZGl0eSBvZiB0aGUgY3VycmVudCB0YWIncyBmb3JtIG1vZGVsIGFuZFxyXG4gICAqIHByZXZlbnRzIG5hdmlnYXRpb24gaWYgaXQgaXMgaW52YWxpZC4gQ2FuIGJlIG92ZXJyaWRkZW4gaWYgZGlmZmVyZW50IGxvZ2ljIGlzIG5lZWRlZC5cclxuICAgKiBAcGFyYW0gcHJldlRhYiAtIFRoZSB0YWIgYmVpbmcgbmF2aWdhdGVkIHRvXHJcbiAgICogQG1lbWJlcm9mIFdpemFyZEJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgY2FuR29Ub1ByZXZpb3VzVGFiKHByZXZUYWI6IFdpemFyZFRhYik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNDdXJyZW50VGFiVmFsaWQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgbmF2aWdhdGluZyBhd2F5IGZyb20gdGhlIGN1cnJlbnQgdGFiIGlzIHByZXZlbnRlZCBvciBub3QuIEZpcmVkIGFueSB0aW1lIHRoZSBzZWxlY3RlZCB0YWJcclxuICAgKiBjaGFuZ2VzIGluIHRoZSB0YWJHcm91cC4gQnkgZGVmYXVsdCwgdGhpcyBjaGVja3MgdGhlIHZhbGlkaXR5IG9mIHRoZSBjdXJyZW50IHRhYidzIGZvcm0gbW9kZWwgYW5kIHByZXZlbnRzIG5hdmlnYXRpb25cclxuICAgKiBpZiBpdCBpcyBpbnZhbGlkLiBDYW4gYmUgb3ZlcnJpZGRlbiBpZiBkaWZmZXJlbnQgbG9naWMgaXMgbmVlZGVkLlxyXG4gICAqIEBtZW1iZXJvZiBXaXphcmRCYXNlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNhbkxlYXZlQ3VycmVudFRhYigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzQ3VycmVudFRhYlZhbGlkKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmlnZ2VycyB2YWxpZGF0aW9uIG9uIHRoZSBjdXJyZW50IHdpemFyZCB0YWIncyBmb3JtIGNvbnRyb2wuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZm9ybSBjb250cm9sIGlzIHZhbGlkLCBmYWxzZSBpZiBub3QuXHJcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBmb3JtTW9kZWxQYXRoIGZvciB0aGUgdGFiIGlzIG5vdCBkZWZpbmVkIG9yIG5vIGZvcm0gY29udHJvbCBpcyBmb3VuZC4gQ2FuIGJlIG92ZXJyaWRkZW4gaWYgZGlmZmVyZW50XHJcbiAgICogbG9naWMgaXMgbmVlZGVkIHRvIHZhbGlkYXRlIHRoZSBmb3JtIGNvbnRyb2wgZm9yIHRoZSBjdXJyZW50IHRhYi5cclxuICAgKiBAbWVtYmVyb2YgV2l6YXJkQmFzZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpc0N1cnJlbnRUYWJWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLl9jdXJyZW50VGFiICYmIHRoaXMuX2N1cnJlbnRUYWIuZm9ybU1vZGVsUGF0aCkge1xyXG4gICAgICBsZXQgZm9ybU1vZGVsID0gdGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMuX2N1cnJlbnRUYWIuZm9ybU1vZGVsUGF0aCk7XHJcbiAgICAgIGlmIChmb3JtTW9kZWwpIHtcclxuICAgICAgICBmb3JtTW9kZWwubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICAgIHJldHVybiBmb3JtTW9kZWwudmFsaWQgfHwgZm9ybU1vZGVsLmRpc2FibGVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpcmVkIGlmIG5hdmlnYXRpb24gdG8gYSB0YWIgc3VjY2VlZHMuIEhpZGVzIHRoZSBlcnJvciBiYW5uZXIgYnkgZGVmYXVsdCwgYnV0IGNhbiBiZSBvdmVycmlkZGVuIGlmIGxvZ2ljIGlzIG5lZWRlZC5cclxuICAgKiBAbWVtYmVyb2YgV2l6YXJkQmFzZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBvblRhYkNoYW5nZVN1Y2Nlc3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZUJ1dHRvbnMoKTtcclxuICAgIHRoaXMuaGlkZUVycm9yQmFubmVyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaXJlZCBpZiBuYXZpZ2F0aW9uIHRvIGEgdGFiIGZhaWxzLiBCeSBkZWZhdWx0LCBzaG93cyB0aGUgZXJyb3IgYmFubmVyIHdpdGggdGhlIGRlZmF1bHQgaW52YWxpZCBmb3JtIG1lc3NhZ2UsIGJ1dFxyXG4gICAqIGNhbiBiZSBvdmVycmlkZGVuIGlmIGRpZmZlcmVudCBsb2dpYyBpcyBuZWVkZWQuXHJcbiAgICogQG1lbWJlcm9mIFdpemFyZEJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgb25UYWJDaGFuZ2VGYWlsZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dFcnJvckJhbm5lcih0aGlzLmRlZmF1bHRJbnZhbGlkRm9ybU1lc3NhZ2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdGVuIGZvciB3aGVuIHRoZSB0YWJHcm91cCdzIHNlbGVjdGVkIGl0ZW0gaXMgY2hhbmdlZCAoSS5FLiB3aGVuIGEgdGFiIGlzIGNsaWNrZWQgb3Igc2VsZWN0ZWQgcHJvZ3JhbW1hdGljYWxseSlcclxuICAgKiBhbmQgbmF2aWdhdGUgdG8gdGhhdCB0YWIuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1RhYkNoYW5nZXMoKSB7XHJcbiAgICAvLyBXaGVuZXZlciB0aGUgdGFiR3JvdXAncyBzZWxlY3RlZCB0YWIgY2hhbmdlcywgZ28gdG8gdGhlIHNlbGVjdGVkIHRhYlxyXG4gICAgdGhpcy5fdGFiR3JvdXAuc2VsZWN0ZWRDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSkuc3Vic2NyaWJlKHRhYiA9PiB7XHJcbiAgICAgIHRoaXMuZ29Ub1RhYih0YWIpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmlnZ2VyZWQgd2hlbiB0aGUgdGFiR3JvdXAncyBzZWxlY3RlZCBpdGVtIGNoYW5nZXMuIElmIHRoZSBjdXJyZW50IHRhYiBwYXNzZXMgdmFsaWRhdGlvbiwgdXBkYXRlc1xyXG4gICAqIHRoZSBjdXJyZW50IHRhYiB0byB0aGUgc2VsZWN0ZWQgdGFiLlxyXG4gICAqIEBwYXJhbSB0YWIgLSB0aGUgdGFiIHRoYXQgd2FzIHNlbGVjdGVkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnb1RvVGFiKHRhYjogV2l6YXJkVGFiKSB7XHJcbiAgICAvLyBPbmx5IGNvbnRpbnVlIGlmIHRoZSBjdXJyZW50IHRhYiBpcyBub3QgdGhlIHRhYiB0aGF0IHdhcyBzZWxlY3RlZC4gVGhleSBhcmUgdGhlIHNhbWVcclxuICAgIC8vIHdoZW4gd2UgYXJlIHJlc2V0dGluZyB0aGUgdGFiIGdyb3VwJ3Mgc2VsZWN0ZWQgdGFiIGJhY2sgdG8gdGhlIGN1cnJlbnQgdGFiIHdoZW4gdmFsaWRhdGlvbiBmYWlscy5cclxuICAgIC8vIFdpdGhvdXQgdGhpcyBjaGVjaywgd2UgY291bGQgZW5kIHVwIGluIGFuIGluZmluaXRlIGxvb3AuXHJcbiAgICBpZiAodGFiICE9PSB0aGlzLl9jdXJyZW50VGFiKSB7XHJcbiAgICAgIGlmICh0aGlzLmNhbkxlYXZlQ3VycmVudFRhYigpKSB7XHJcbiAgICAgICAgLy8gTWFyayB0aGUgY3VycmVudCB0YWIgYXMgY29tcGxldGUgYmVmb3JlIHN3aXRjaGluZ1xyXG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50VGFiKSB7XHJcbiAgICAgICAgICB0aGlzLl9jdXJyZW50VGFiLmNvbXBsZXRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0Q3VycmVudFRhYih0YWIpO1xyXG4gICAgICAgIHRoaXMub25UYWJDaGFuZ2VTdWNjZXNzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gQmVjYXVzZSB0aGUgdGFiR3JvdXAncyBzZWxlY3RlZCB0YWIgaXMgdXBkYXRlZCB3aGVuIGEgdGFiIGlzIGNsaWNrZWQgYmVmb3JlIHdlIGNhbiBydW4gYW55IGZvcm0gdmFsaWRhdGlvbixcclxuICAgICAgICAvLyB3ZSBuZWVkIHRvIHJlc2V0IHRoZSBzZWxlY3RlZCB0YWIgYmFjayB0byB0aGUgY3VycmVudCB0YWIgaWYgdmFsaWRhdGlvbiBmYWlscy5cclxuICAgICAgICAvLyBXaXRob3V0IHRoaXMgd2Ugd291bGQgaGF2ZSBubyB3YXkgdG8gcHJldmVudCB0aGUgdXNlciBmcm9tIGxlYXZpbmcgdGhlIGN1cnJlbnQgdGFiIGlmIHRoZSBmb3JtIGlzIGludmFsaWQuXHJcbiAgICAgICAgdGhpcy5fdGFiR3JvdXAuc2VsZWN0ZWQgPSB0aGlzLl9jdXJyZW50VGFiO1xyXG4gICAgICAgIHRoaXMub25UYWJDaGFuZ2VGYWlsZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgY3VycmVudCB0YWIsIHRpdGxlLCBhbmQgaGVscC5cclxuICAgKiBAcGFyYW0gdGFiIFRhYiB0byBzZXRcclxuICAgKi9cclxuICBwcml2YXRlIHNldEN1cnJlbnRUYWIodGFiPzogV2l6YXJkVGFiKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50VGFiID0gdGFiO1xyXG4gICAgdGhpcy5oZWxwID0gdGFiID8gdGFiLmhlbHAgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnRpdGxlID0gdGFiID8gdGFiLnRpdGxlIDogdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iXX0=
|