@energycap/components 0.31.5 → 0.32.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/energycap-components.min.css +2 -2
- package/energycap-email.min.css +1 -1
- package/esm2020/energycap-components.mjs +5 -0
- package/esm2020/lib/components.module.mjs +386 -0
- package/esm2020/lib/controls/banner/banner.component.mjs +106 -0
- package/esm2020/lib/controls/button/button.component.mjs +106 -0
- package/esm2020/lib/controls/button/copy-button.directive.mjs +65 -0
- package/esm2020/lib/controls/checkbox/checkbox.component.mjs +139 -0
- package/esm2020/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -0
- package/esm2020/lib/controls/combobox/combobox.component.mjs +841 -0
- package/esm2020/lib/controls/dropdown/dropdown.component.mjs +237 -0
- package/esm2020/lib/controls/file-upload/file-upload.component.mjs +169 -0
- package/esm2020/lib/controls/form-control/form-control.component.mjs +86 -0
- package/esm2020/lib/controls/form-control-base.mjs +143 -0
- package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
- package/esm2020/lib/controls/form-group/form-group.component.mjs +252 -0
- package/esm2020/lib/controls/help-popover/help-popover.component.mjs +28 -0
- package/esm2020/lib/controls/item-picker/item-picker.component.mjs +233 -0
- package/esm2020/lib/controls/link-button/link-button.component.mjs +11 -0
- package/esm2020/lib/controls/menu/menu.component.mjs +443 -0
- package/{esm2015/lib/controls/navigation/link-item.js → esm2020/lib/controls/navigation/link-item.mjs} +0 -0
- package/{esm2015/lib/controls/navigation/nav-group.js → esm2020/lib/controls/navigation/nav-group.mjs} +0 -0
- package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
- package/{esm2015/lib/controls/navigation/nav-item.js → esm2020/lib/controls/navigation/nav-item.mjs} +0 -0
- package/esm2020/lib/controls/numericbox/numericbox.component.mjs +371 -0
- package/esm2020/lib/controls/popover/popover.component.mjs +84 -0
- package/{esm2015/lib/controls/radio-button/radio-button-option.js → esm2020/lib/controls/radio-button/radio-button-option.mjs} +0 -0
- package/esm2020/lib/controls/radio-button/radio-button.component.mjs +81 -0
- package/esm2020/lib/controls/select/select.component.mjs +87 -0
- package/esm2020/lib/controls/tabs/tabs.component.mjs +47 -0
- package/esm2020/lib/controls/textbox/textbox.component.mjs +154 -0
- package/{esm2015/lib/core/cache.service.js → esm2020/lib/core/cache.service.mjs} +9 -8
- package/{esm2015/lib/core/custom-validators.js → esm2020/lib/core/custom-validators.mjs} +0 -0
- package/{esm2015/lib/core/date-time-helper.js → esm2020/lib/core/date-time-helper.mjs} +0 -0
- package/esm2020/lib/core/error.service.mjs +57 -0
- package/esm2020/lib/core/scroll.service.mjs +89 -0
- package/esm2020/lib/core/telemetry-tracker.service.mjs +16 -0
- package/esm2020/lib/core/telemetry.service.mjs +38 -0
- package/esm2020/lib/core/validation-message.service.mjs +181 -0
- package/{esm2015/lib/core/validation-patterns.js → esm2020/lib/core/validation-patterns.mjs} +0 -0
- package/esm2020/lib/core/window.service.mjs +182 -0
- package/esm2020/lib/display/app-bar/app-bar.component.mjs +46 -0
- package/esm2020/lib/display/avatar/avatar.component.mjs +67 -0
- package/{esm2015/lib/display/avatar/avatar.service.js → esm2020/lib/display/avatar/avatar.service.mjs} +9 -7
- package/esm2020/lib/display/confirm/confirm.component.mjs +131 -0
- package/{esm2015/lib/display/dialog/dialog-content.js → esm2020/lib/display/dialog/dialog-content.mjs} +0 -0
- package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
- package/{esm2015/lib/display/dialog/dialog-types.js → esm2020/lib/display/dialog/dialog-types.mjs} +0 -0
- package/esm2020/lib/display/dialog/dialog.component.mjs +242 -0
- package/esm2020/lib/display/dialog/dialog.service.mjs +71 -0
- package/{esm2015/lib/display/help/help-types.js → esm2020/lib/display/help/help-types.mjs} +0 -0
- package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +106 -0
- package/{esm2015/lib/display/hierarchy/hierarchy-mocks.spec.js → esm2020/lib/display/hierarchy/hierarchy-mocks.spec.mjs} +5 -9
- package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +59 -0
- package/esm2020/lib/display/item-display/item-display.component.mjs +67 -0
- package/esm2020/lib/display/json-display/json-display.component.mjs +47 -0
- package/esm2020/lib/display/resizable/resizable-base.mjs +120 -0
- package/esm2020/lib/display/resizable/resizable.component.mjs +57 -0
- package/esm2020/lib/display/spinner/spinner.component.mjs +12 -0
- package/esm2020/lib/display/splash/splash.component.mjs +42 -0
- package/esm2020/lib/display/splash/splash.service.mjs +35 -0
- package/esm2020/lib/display/table/resizable-column.component.mjs +20 -0
- package/esm2020/lib/display/table/resizable-table.directive.mjs +227 -0
- package/esm2020/lib/display/table/searchable-table.component.mjs +338 -0
- package/esm2020/lib/display/table/table-detail-row.component.mjs +27 -0
- package/esm2020/lib/display/table/table-locked-column.component.mjs +58 -0
- package/esm2020/lib/display/table/table-master-header-row.component.mjs +11 -0
- package/esm2020/lib/display/table/table-master-row.component.mjs +150 -0
- package/esm2020/lib/display/table/table-pagination.component.mjs +150 -0
- package/esm2020/lib/display/table/table-selectable-row.component.mjs +235 -0
- package/esm2020/lib/display/table/table.component.mjs +244 -0
- package/esm2020/lib/display/tags/tag.mjs +15 -0
- package/esm2020/lib/display/tags/tags.component.mjs +77 -0
- package/esm2020/lib/display/toast/toast/toast.component.mjs +77 -0
- package/{esm2015/lib/display/toast/toast-types.js → esm2020/lib/display/toast/toast-types.mjs} +0 -0
- package/esm2020/lib/display/toast/toast.service.mjs +35 -0
- package/esm2020/lib/display/toast/toaster/toaster.component.mjs +114 -0
- package/esm2020/lib/display/tooltip/tooltip.component.mjs +25 -0
- package/esm2020/lib/display/tooltip/tooltip.service.mjs +63 -0
- package/esm2020/lib/display/tree/tree.component.mjs +125 -0
- package/esm2020/lib/display/view-overlay/view-overlay.component.mjs +58 -0
- package/esm2020/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
- package/esm2020/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
- package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +163 -0
- package/esm2020/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
- package/esm2020/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
- package/esm2020/lib/shared/display/pipes/relative-date.pipe.mjs +48 -0
- package/esm2020/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
- package/esm2020/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
- package/{esm2015/lib/shared/display.js → esm2020/lib/shared/display.mjs} +0 -0
- package/esm2020/lib/shared/form-group.helper.mjs +67 -0
- package/{esm2015/lib/shared/json-helper.js → esm2020/lib/shared/json-helper.mjs} +0 -0
- package/{esm2015/lib/shared/lodash-helper.js → esm2020/lib/shared/lodash-helper.mjs} +0 -0
- package/esm2020/lib/shared/page/page-base/page-base.component.mjs +339 -0
- package/{esm2015/lib/shared/page/page-statuses.js → esm2020/lib/shared/page/page-statuses.mjs} +0 -0
- package/esm2020/lib/shared/page/page-title/page-title.component.mjs +23 -0
- package/esm2020/lib/shared/page/page-view/page-view.component.mjs +121 -0
- package/{esm2015/lib/shared/testing/hierarchy-base-test-injector-factory.spec.js → esm2020/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs} +0 -0
- package/esm2020/lib/shared/testing/page-base-component-test-helper.spec.mjs +30 -0
- package/{esm2015/lib/shared/testing/page-base-component-test-injector-factory.spec.js → esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs} +0 -0
- package/esm2020/lib/shared/testing/public-mocks.spec.mjs +132 -0
- package/{esm2015/lib/shared/testing/spy-factory.spec.js → esm2020/lib/shared/testing/spy-factory.spec.mjs} +0 -0
- package/{esm2015/lib/shared/testing/translation-mocks.spec.js → esm2020/lib/shared/testing/translation-mocks.spec.mjs} +0 -0
- package/esm2020/lib/shared/user-preference.service.mjs +17 -0
- package/esm2020/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
- package/esm2020/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -0
- package/esm2020/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/energycap-components.mjs +10090 -0
- package/fesm2015/energycap-components.mjs.map +1 -0
- package/fesm2020/energycap-components.mjs +9999 -0
- package/fesm2020/energycap-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components.module.d.ts +72 -0
- package/lib/controls/banner/banner.component.d.ts +3 -0
- package/lib/controls/button/button.component.d.ts +3 -0
- package/lib/controls/button/copy-button.directive.d.ts +3 -0
- package/lib/controls/checkbox/checkbox.component.d.ts +3 -0
- package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +3 -0
- package/lib/controls/combobox/combobox.component.d.ts +5 -2
- package/lib/controls/dropdown/dropdown.component.d.ts +3 -0
- package/lib/controls/file-upload/file-upload.component.d.ts +5 -2
- package/lib/controls/form-control/form-control.component.d.ts +3 -0
- package/lib/controls/form-control-base.d.ts +3 -0
- package/lib/controls/form-control-label/form-control-label.component.d.ts +3 -0
- package/lib/controls/form-group/form-group.component.d.ts +6 -3
- package/lib/controls/help-popover/help-popover.component.d.ts +3 -0
- package/lib/controls/item-picker/item-picker.component.d.ts +5 -2
- package/lib/controls/link-button/link-button.component.d.ts +3 -0
- package/lib/controls/menu/menu.component.d.ts +3 -0
- package/lib/controls/navigation/nav-item-active.directive.d.ts +3 -0
- package/lib/controls/numericbox/numericbox.component.d.ts +5 -2
- package/lib/controls/popover/popover.component.d.ts +3 -0
- package/lib/controls/radio-button/radio-button.component.d.ts +3 -0
- package/lib/controls/select/select.component.d.ts +3 -0
- package/lib/controls/tabs/tabs.component.d.ts +3 -0
- package/lib/controls/textbox/textbox.component.d.ts +3 -0
- package/lib/core/cache.service.d.ts +3 -0
- package/lib/core/error.service.d.ts +3 -0
- package/lib/core/scroll.service.d.ts +3 -0
- package/lib/core/telemetry-tracker.service.d.ts +3 -0
- package/lib/core/telemetry.service.d.ts +3 -0
- package/lib/core/validation-message.service.d.ts +3 -0
- package/lib/core/window.service.d.ts +3 -0
- package/lib/display/app-bar/app-bar.component.d.ts +3 -0
- package/lib/display/avatar/avatar.component.d.ts +3 -0
- package/lib/display/avatar/avatar.service.d.ts +3 -0
- package/lib/display/confirm/confirm.component.d.ts +5 -2
- package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +3 -0
- package/lib/display/dialog/dialog.component.d.ts +3 -0
- package/lib/display/dialog/dialog.service.d.ts +3 -0
- package/lib/display/hierarchy/hierarchy-base.d.ts +3 -0
- package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +3 -0
- package/lib/display/item-display/item-display.component.d.ts +3 -0
- package/lib/display/json-display/json-display.component.d.ts +5 -2
- package/lib/display/resizable/resizable-base.d.ts +3 -0
- package/lib/display/resizable/resizable.component.d.ts +3 -0
- package/lib/display/spinner/spinner.component.d.ts +3 -0
- package/lib/display/splash/splash.component.d.ts +3 -0
- package/lib/display/splash/splash.service.d.ts +3 -0
- package/lib/display/table/resizable-column.component.d.ts +3 -0
- package/lib/display/table/resizable-table.directive.d.ts +3 -0
- package/lib/display/table/searchable-table.component.d.ts +6 -3
- package/lib/display/table/table-detail-row.component.d.ts +3 -0
- package/lib/display/table/table-locked-column.component.d.ts +3 -0
- package/lib/display/table/table-master-header-row.component.d.ts +3 -0
- package/lib/display/table/table-master-row.component.d.ts +3 -0
- package/lib/display/table/table-pagination.component.d.ts +3 -0
- package/lib/display/table/table-selectable-row.component.d.ts +5 -2
- package/lib/display/table/table.component.d.ts +3 -0
- package/lib/display/tags/tags.component.d.ts +3 -0
- package/lib/display/toast/toast/toast.component.d.ts +3 -0
- package/lib/display/toast/toast.service.d.ts +3 -0
- package/lib/display/toast/toaster/toaster.component.d.ts +3 -0
- package/lib/display/tooltip/tooltip.component.d.ts +3 -0
- package/lib/display/tooltip/tooltip.service.d.ts +3 -0
- package/lib/display/tree/tree.component.d.ts +3 -0
- package/lib/display/view-overlay/view-overlay.component.d.ts +3 -0
- package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +3 -0
- package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +3 -0
- package/lib/shared/directives/popup/popup-container.directive.d.ts +3 -0
- package/lib/shared/display/pipes/date-display.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/highlight-text.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/relative-date.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/row-count.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/time-display.pipe.d.ts +3 -0
- package/lib/shared/form-group.helper.d.ts +5 -2
- package/lib/shared/page/page-base/page-base.component.d.ts +5 -2
- package/lib/shared/page/page-title/page-title.component.d.ts +3 -0
- package/lib/shared/page/page-view/page-view.component.d.ts +3 -0
- package/lib/shared/testing/public-mocks.spec.d.ts +7 -0
- package/lib/shared/user-preference.service.d.ts +3 -0
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +3 -0
- package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +3 -0
- package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +3 -0
- package/package.json +27 -15
- package/src/styles/_functions.scss +6 -4
- package/src/styles/_icons.scss +1 -1
- package/src/styles/mixins/_control-base.scss +2 -2
- package/src/styles/mixins/_form-control-base.scss +3 -1
- package/src/styles/mixins/_spinner-base.scss +3 -1
- package/bundles/energycap-components.umd.js +0 -10646
- package/bundles/energycap-components.umd.js.map +0 -1
- package/bundles/energycap-components.umd.min.js +0 -17
- package/bundles/energycap-components.umd.min.js.map +0 -1
- package/energycap-components.d.ts +0 -7
- package/energycap-components.metadata.json +0 -1
- package/esm2015/energycap-components.js +0 -8
- package/esm2015/lib/components.module.js +0 -238
- package/esm2015/lib/controls/banner/banner.component.js +0 -94
- package/esm2015/lib/controls/button/button.component.js +0 -89
- package/esm2015/lib/controls/button/copy-button.directive.js +0 -63
- package/esm2015/lib/controls/checkbox/checkbox.component.js +0 -137
- package/esm2015/lib/controls/collapsible-toggle/collapsible-toggle.component.js +0 -35
- package/esm2015/lib/controls/combobox/combobox.component.js +0 -819
- package/esm2015/lib/controls/dropdown/dropdown.component.js +0 -207
- package/esm2015/lib/controls/file-upload/file-upload.component.js +0 -172
- package/esm2015/lib/controls/form-control/form-control.component.js +0 -65
- package/esm2015/lib/controls/form-control-base.js +0 -140
- package/esm2015/lib/controls/form-control-label/form-control-label.component.js +0 -139
- package/esm2015/lib/controls/form-group/form-group.component.js +0 -254
- package/esm2015/lib/controls/help-popover/help-popover.component.js +0 -22
- package/esm2015/lib/controls/item-picker/item-picker.component.js +0 -216
- package/esm2015/lib/controls/link-button/link-button.component.js +0 -12
- package/esm2015/lib/controls/menu/menu.component.js +0 -424
- package/esm2015/lib/controls/navigation/nav-item-active.directive.js +0 -86
- package/esm2015/lib/controls/numericbox/numericbox.component.js +0 -362
- package/esm2015/lib/controls/popover/popover.component.js +0 -85
- package/esm2015/lib/controls/radio-button/radio-button.component.js +0 -78
- package/esm2015/lib/controls/select/select.component.js +0 -89
- package/esm2015/lib/controls/tabs/tabs.component.js +0 -42
- package/esm2015/lib/controls/textbox/textbox.component.js +0 -149
- package/esm2015/lib/core/error.service.js +0 -56
- package/esm2015/lib/core/scroll.service.js +0 -88
- package/esm2015/lib/core/telemetry-tracker.service.js +0 -14
- package/esm2015/lib/core/telemetry.service.js +0 -40
- package/esm2015/lib/core/validation-message.service.js +0 -185
- package/esm2015/lib/core/window.service.js +0 -191
- package/esm2015/lib/display/app-bar/app-bar.component.js +0 -42
- package/esm2015/lib/display/avatar/avatar.component.js +0 -73
- package/esm2015/lib/display/confirm/confirm.component.js +0 -127
- package/esm2015/lib/display/dialog/dialog-group/dialog-group.component.js +0 -65
- package/esm2015/lib/display/dialog/dialog.component.js +0 -229
- package/esm2015/lib/display/dialog/dialog.service.js +0 -69
- package/esm2015/lib/display/hierarchy/hierarchy-base.js +0 -106
- package/esm2015/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.js +0 -58
- package/esm2015/lib/display/item-display/item-display.component.js +0 -57
- package/esm2015/lib/display/json-display/json-display.component.js +0 -44
- package/esm2015/lib/display/resizable/resizable-base.js +0 -119
- package/esm2015/lib/display/resizable/resizable.component.js +0 -57
- package/esm2015/lib/display/spinner/spinner.component.js +0 -12
- package/esm2015/lib/display/splash/splash.component.js +0 -45
- package/esm2015/lib/display/splash/splash.service.js +0 -34
- package/esm2015/lib/display/table/resizable-column.component.js +0 -23
- package/esm2015/lib/display/table/resizable-table.directive.js +0 -223
- package/esm2015/lib/display/table/searchable-table.component.js +0 -303
- package/esm2015/lib/display/table/table-detail-row.component.js +0 -21
- package/esm2015/lib/display/table/table-locked-column.component.js +0 -53
- package/esm2015/lib/display/table/table-master-header-row.component.js +0 -11
- package/esm2015/lib/display/table/table-master-row.component.js +0 -141
- package/esm2015/lib/display/table/table-pagination.component.js +0 -146
- package/esm2015/lib/display/table/table-selectable-row.component.js +0 -216
- package/esm2015/lib/display/table/table.component.js +0 -210
- package/esm2015/lib/display/tags/tag.js +0 -15
- package/esm2015/lib/display/tags/tags.component.js +0 -73
- package/esm2015/lib/display/toast/toast/toast.component.js +0 -70
- package/esm2015/lib/display/toast/toast.service.js +0 -34
- package/esm2015/lib/display/toast/toaster/toaster.component.js +0 -117
- package/esm2015/lib/display/tooltip/tooltip.component.js +0 -24
- package/esm2015/lib/display/tooltip/tooltip.service.js +0 -64
- package/esm2015/lib/display/tree/tree.component.js +0 -100
- package/esm2015/lib/display/view-overlay/view-overlay.component.js +0 -50
- package/esm2015/lib/shared/directives/click-area-for/click-area-for.directive.js +0 -25
- package/esm2015/lib/shared/directives/if-viewport-width/if-viewport-width.directive.js +0 -112
- package/esm2015/lib/shared/directives/popup/popup-container.directive.js +0 -160
- package/esm2015/lib/shared/display/pipes/date-display.pipe.js +0 -49
- package/esm2015/lib/shared/display/pipes/highlight-text.pipe.js +0 -26
- package/esm2015/lib/shared/display/pipes/relative-date.pipe.js +0 -49
- package/esm2015/lib/shared/display/pipes/row-count.pipe.js +0 -47
- package/esm2015/lib/shared/display/pipes/time-display.pipe.js +0 -40
- package/esm2015/lib/shared/form-group.helper.js +0 -65
- package/esm2015/lib/shared/page/page-base/page-base.component.js +0 -356
- package/esm2015/lib/shared/page/page-title/page-title.component.js +0 -19
- package/esm2015/lib/shared/page/page-view/page-view.component.js +0 -94
- package/esm2015/lib/shared/testing/page-base-component-test-helper.spec.js +0 -35
- package/esm2015/lib/shared/testing/public-mocks.spec.js +0 -126
- package/esm2015/lib/shared/user-preference.service.js +0 -15
- package/esm2015/lib/shared/wizard/wizard-base/wizard-base.component.js +0 -260
- package/esm2015/lib/shared/wizard/wizard-buttons/wizard-buttons.component.js +0 -54
- package/esm2015/lib/shared/wizard/wizard-progress/wizard-progress.component.js +0 -18
- package/fesm2015/energycap-components.js +0 -9638
- package/fesm2015/energycap-components.js.map +0 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { clickEvent } from "./translation-mocks.spec";
|
|
2
|
+
export class PageBaseComponentTestHelper {
|
|
3
|
+
constructor(component) {
|
|
4
|
+
this._component = component;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Shortcut to access the component's controls
|
|
8
|
+
*/
|
|
9
|
+
get controls() {
|
|
10
|
+
return this._component.formGroup.controls;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Call and await ngOnInit and ngAfterViewInit
|
|
14
|
+
*
|
|
15
|
+
* @returns {Promise<void>}
|
|
16
|
+
*/
|
|
17
|
+
async initialize() {
|
|
18
|
+
await this._component.ngOnInit();
|
|
19
|
+
await this._component.ngAfterViewInit();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Simulate clicking of "Save" button
|
|
23
|
+
*
|
|
24
|
+
* @returns {Promise<void>}
|
|
25
|
+
*/
|
|
26
|
+
async clickSave() {
|
|
27
|
+
await this._component.onSave(clickEvent);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1iYXNlLWNvbXBvbmVudC10ZXN0LWhlbHBlci5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC90ZXN0aW5nL3BhZ2UtYmFzZS1jb21wb25lbnQtdGVzdC1oZWxwZXIuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdEQsTUFBTSxPQUFPLDJCQUEyQjtJQVV0QyxZQUFZLFNBQVk7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQVREOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFNRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFDckIsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFBhZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uL3BhZ2UvcGFnZS1iYXNlL3BhZ2UtYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgY2xpY2tFdmVudCB9IGZyb20gXCIuL3RyYW5zbGF0aW9uLW1vY2tzLnNwZWNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdlQmFzZUNvbXBvbmVudFRlc3RIZWxwZXI8VCBleHRlbmRzIFBhZ2VCYXNlQ29tcG9uZW50PiB7XHJcbiAgcHJpdmF0ZSBfY29tcG9uZW50OiBUO1xyXG5cclxuICAvKipcclxuICAgKiBTaG9ydGN1dCB0byBhY2Nlc3MgdGhlIGNvbXBvbmVudCdzIGNvbnRyb2xzXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBjb250cm9scygpOiB7IFtrZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbCB9IHtcclxuICAgIHJldHVybiB0aGlzLl9jb21wb25lbnQuZm9ybUdyb3VwLmNvbnRyb2xzO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoY29tcG9uZW50OiBUKSB7XHJcbiAgICB0aGlzLl9jb21wb25lbnQgPSBjb21wb25lbnQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxsIGFuZCBhd2FpdCBuZ09uSW5pdCBhbmQgbmdBZnRlclZpZXdJbml0XHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMuX2NvbXBvbmVudC5uZ09uSW5pdCgpO1xyXG4gICAgYXdhaXQgdGhpcy5fY29tcG9uZW50Lm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2ltdWxhdGUgY2xpY2tpbmcgb2YgXCJTYXZlXCIgYnV0dG9uXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgY2xpY2tTYXZlKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5fY29tcG9uZW50Lm9uU2F2ZShjbGlja0V2ZW50KTtcclxuICB9XHJcbn1cclxuIl19
|
|
File without changes
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview
|
|
3
|
+
* Test mocks that can be used by consumers of this library.
|
|
4
|
+
* If you do not want to export a mock, add it to `common-mocks.spec.ts` instead.
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter, Input, Output, Pipe, Directive, Injectable } from '@angular/core';
|
|
7
|
+
import { Subject } from 'rxjs';
|
|
8
|
+
import { Router } from '@angular/router';
|
|
9
|
+
import { SpyFactory } from './spy-factory.spec';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
/**
|
|
12
|
+
* Mock dialog based on the content type, used to test open and close functionality
|
|
13
|
+
* @deprecated Most components that need a dialog should use `dialogService.openDialog()`, which is much easier to test
|
|
14
|
+
* and does not require the use of this class. It is included for legacy test support only.
|
|
15
|
+
*/
|
|
16
|
+
export class MockDialog {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.opened = new EventEmitter();
|
|
19
|
+
this.closed = new EventEmitter();
|
|
20
|
+
this.displayAsPanel = false;
|
|
21
|
+
}
|
|
22
|
+
async open(component, context, options) {
|
|
23
|
+
this.lastContext = context;
|
|
24
|
+
this.componentRef = {
|
|
25
|
+
instance: new MockDialogContent()
|
|
26
|
+
};
|
|
27
|
+
this.opened.emit();
|
|
28
|
+
}
|
|
29
|
+
close(result) {
|
|
30
|
+
this.closed.emit(result);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
MockDialog.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MockDialog, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
34
|
+
MockDialog.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: MockDialog, inputs: { size: "size" }, outputs: { opened: "opened", closed: "closed" }, ngImport: i0 });
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MockDialog, decorators: [{
|
|
36
|
+
type: Directive
|
|
37
|
+
}], propDecorators: { size: [{
|
|
38
|
+
type: Input
|
|
39
|
+
}], opened: [{
|
|
40
|
+
type: Output
|
|
41
|
+
}], closed: [{
|
|
42
|
+
type: Output
|
|
43
|
+
}] } });
|
|
44
|
+
;
|
|
45
|
+
/**
|
|
46
|
+
* Mocked dialog content to test save and cancel
|
|
47
|
+
*/
|
|
48
|
+
export class MockDialogContent {
|
|
49
|
+
constructor() {
|
|
50
|
+
this.dialogId = 'MockID';
|
|
51
|
+
this.onOpen = (openContext) => { this.openArg = openContext; };
|
|
52
|
+
this.onDialogSave = new EventEmitter();
|
|
53
|
+
this.onDialogCancel = new EventEmitter();
|
|
54
|
+
this.destroyed = new Subject();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
;
|
|
58
|
+
/**
|
|
59
|
+
* Mocked DateDisplayPipe
|
|
60
|
+
*/
|
|
61
|
+
export class MockDateDisplayPipe {
|
|
62
|
+
transform(value) {
|
|
63
|
+
return '01/01/2017';
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
MockDateDisplayPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MockDateDisplayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
67
|
+
MockDateDisplayPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: MockDateDisplayPipe, name: "dateDisplay" });
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MockDateDisplayPipe, decorators: [{
|
|
69
|
+
type: Pipe,
|
|
70
|
+
args: [{ name: 'dateDisplay' }]
|
|
71
|
+
}] });
|
|
72
|
+
/** Return a Router spy object that can be used as a mock in tests.*/
|
|
73
|
+
export function mockRouterFactory() {
|
|
74
|
+
const mockRouter = SpyFactory.createSpy(Router);
|
|
75
|
+
mockRouter.isActive.and.returnValue(false);
|
|
76
|
+
mockRouter.navigate.and.returnValue(Promise.resolve(true));
|
|
77
|
+
Object.defineProperty(mockRouter, 'events', { value: new Subject(), configurable: true });
|
|
78
|
+
Object.defineProperty(mockRouter, 'url', { value: '/current/route/url', writable: true });
|
|
79
|
+
return mockRouter;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Mock {@link ActivatedRoute} for spying on route and query parameters
|
|
83
|
+
*
|
|
84
|
+
* @example <caption>Declare!</caption>
|
|
85
|
+
* let mockActivatedRoute: MockActivatedRoute = new MockActivatedRoute();
|
|
86
|
+
* let paramMapSpy: jasmine.Spy;
|
|
87
|
+
* let queryParamMapSpy: jasmine.Spy;
|
|
88
|
+
* @example <caption>Provide!</caption>
|
|
89
|
+
* providers: [
|
|
90
|
+
* ...
|
|
91
|
+
* { provide: ActivatedRoute, useValue: mockActivatedRoute },
|
|
92
|
+
* ...
|
|
93
|
+
* ]
|
|
94
|
+
* @example <caption>Spy!</caption>
|
|
95
|
+
* paramMapSpy = spyOn(mockActivatedRoute.snapshot.paramMap, 'get');
|
|
96
|
+
* queryParamMapSpy = spyOn(mockActivatedRoute.snapshot.queryParamMap, 'get');
|
|
97
|
+
* @example <caption>Manipulate!</caption>
|
|
98
|
+
* paramMapSpy.and.returnValue("1234");
|
|
99
|
+
* queryParamMapSpy.and.returnValue("4321");
|
|
100
|
+
*/
|
|
101
|
+
export class MockActivatedRoute {
|
|
102
|
+
constructor() {
|
|
103
|
+
this.snapshot = {
|
|
104
|
+
paramMap: {
|
|
105
|
+
get: function (name) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
queryParamMap: {
|
|
110
|
+
get: function (name) {
|
|
111
|
+
return null;
|
|
112
|
+
},
|
|
113
|
+
getAll: function (name) {
|
|
114
|
+
return [];
|
|
115
|
+
},
|
|
116
|
+
has: function (name) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
routeConfig: {},
|
|
121
|
+
};
|
|
122
|
+
this.paramMap = new Subject();
|
|
123
|
+
this.queryParamMap = new Subject();
|
|
124
|
+
this.routeConfig = {};
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
MockActivatedRoute.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MockActivatedRoute, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
128
|
+
MockActivatedRoute.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MockActivatedRoute });
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MockActivatedRoute, decorators: [{
|
|
130
|
+
type: Injectable
|
|
131
|
+
}] });
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLW1vY2tzLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3Rlc3RpbmcvcHVibGljLW1vY2tzLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBZ0IsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUF1QixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFaEQ7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxVQUFVO0lBRHZCO1FBR3FCLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNwRCxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDOUQsbUJBQWMsR0FBWSxLQUFLLENBQUM7S0FnQjFDO0lBWlUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFpQyxFQUFFLE9BQVcsRUFBRSxPQUF1QjtRQUNyRixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFzQjtZQUNuQyxRQUFRLEVBQUUsSUFBSSxpQkFBaUIsRUFBSztTQUN2QyxDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQXdCO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7O3VHQW5CUSxVQUFVOzJGQUFWLFVBQVU7MkZBQVYsVUFBVTtrQkFEdEIsU0FBUzs4QkFFVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNXLE1BQU07c0JBQXRCLE1BQU07Z0JBQ1UsTUFBTTtzQkFBdEIsTUFBTTs7QUFpQlYsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUE5QjtRQUNXLGFBQVEsR0FBVyxRQUFRLENBQUM7UUFFNUIsV0FBTSxHQUEwQyxDQUFDLFdBQVcsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDaEcsaUJBQVksR0FBb0IsSUFBSSxZQUFZLEVBQUssQ0FBQztRQUN0RCxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTlELGNBQVMsR0FBaUIsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQUN4RCxDQUFDO0NBQUE7QUFBQSxDQUFDO0FBRUY7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzVCLFNBQVMsQ0FBQyxLQUE0QjtRQUNsQyxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDOztnSEFIUSxtQkFBbUI7OEdBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTs7QUFPN0IscUVBQXFFO0FBQ3JFLE1BQU0sVUFBVSxpQkFBaUI7SUFDN0IsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxPQUFPLEVBQVMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFMUYsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUVJLGFBQVEsR0FBRztZQUNQLFFBQVEsRUFBRTtnQkFDTixHQUFHLEVBQUUsVUFBVSxJQUFZO29CQUN2QixPQUFPLElBQUksQ0FBQztnQkFDaEIsQ0FBQzthQUNKO1lBQ0QsYUFBYSxFQUFFO2dCQUNYLEdBQUcsRUFBRSxVQUFVLElBQVk7b0JBQ3ZCLE9BQU8sSUFBSSxDQUFDO2dCQUNoQixDQUFDO2dCQUVELE1BQU0sRUFBRSxVQUFVLElBQVk7b0JBQzFCLE9BQU8sRUFBRSxDQUFDO2dCQUNkLENBQUM7Z0JBRUQsR0FBRyxFQUFFLFVBQVUsSUFBWTtvQkFDdkIsT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUM7YUFDSjtZQUNELFdBQVcsRUFBRSxFQUFFO1NBQ2xCLENBQUM7UUFDRixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN6QixrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDOUIsZ0JBQVcsR0FBRyxFQUFFLENBQUE7S0FDbkI7OytHQXpCWSxrQkFBa0I7bUhBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBmaWxlb3ZlcnZpZXdcclxuICogVGVzdCBtb2NrcyB0aGF0IGNhbiBiZSB1c2VkIGJ5IGNvbnN1bWVycyBvZiB0aGlzIGxpYnJhcnkuXHJcbiAqIElmIHlvdSBkbyBub3Qgd2FudCB0byBleHBvcnQgYSBtb2NrLCBhZGQgaXQgdG8gYGNvbW1vbi1tb2Nrcy5zcGVjLnRzYCBpbnN0ZWFkLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBUeXBlLCBEaXJlY3RpdmUsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEaWFsb2dSZXN1bHQsIERpYWxvZ09wdGlvbnMgfSBmcm9tICcuLi8uLi9kaXNwbGF5L2RpYWxvZy9kaWFsb2ctdHlwZXMnO1xyXG5pbXBvcnQgeyBEaWFsb2dDb250ZW50IH0gZnJvbSAnLi4vLi4vZGlzcGxheS9kaWFsb2cvZGlhbG9nLWNvbnRlbnQnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTcHlGYWN0b3J5IH0gZnJvbSAnLi9zcHktZmFjdG9yeS5zcGVjJztcclxuaW1wb3J0IHt9IGZyb20gJ2phc21pbmUnO1xyXG4vKipcclxuICogTW9jayBkaWFsb2cgYmFzZWQgb24gdGhlIGNvbnRlbnQgdHlwZSwgdXNlZCB0byB0ZXN0IG9wZW4gYW5kIGNsb3NlIGZ1bmN0aW9uYWxpdHlcclxuICogQGRlcHJlY2F0ZWQgTW9zdCBjb21wb25lbnRzIHRoYXQgbmVlZCBhIGRpYWxvZyBzaG91bGQgdXNlIGBkaWFsb2dTZXJ2aWNlLm9wZW5EaWFsb2coKWAsIHdoaWNoIGlzIG11Y2ggZWFzaWVyIHRvIHRlc3RcclxuICogICAgICAgICAgICAgICBhbmQgZG9lcyBub3QgcmVxdWlyZSB0aGUgdXNlIG9mIHRoaXMgY2xhc3MuIEl0IGlzIGluY2x1ZGVkIGZvciBsZWdhY3kgdGVzdCBzdXBwb3J0IG9ubHkuXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIE1vY2tEaWFsb2c8VD4ge1xyXG4gICAgQElucHV0KCkgcHVibGljIHNpemU/OiBudW1iZXIgfCAneHNtYWxsJyB8ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSc7XHJcbiAgICBAT3V0cHV0KCkgcHVibGljIG9wZW5lZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBwdWJsaWMgY2xvc2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgcHVibGljIGRpc3BsYXlBc1BhbmVsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIGNvbXBvbmVudFJlZiE6IENvbXBvbmVudFJlZjxhbnk+O1xyXG4gICAgcHVibGljIGxhc3RDb250ZXh0PzogVDtcclxuICAgIHB1YmxpYyBhc3luYyBvcGVuKGNvbXBvbmVudDogVHlwZTxEaWFsb2dDb250ZW50PFQ+PiwgY29udGV4dD86IFQsIG9wdGlvbnM/OiBEaWFsb2dPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdGhpcy5sYXN0Q29udGV4dCA9IGNvbnRleHQ7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSA8Q29tcG9uZW50UmVmPGFueT4+e1xyXG4gICAgICAgICAgICBpbnN0YW5jZTogbmV3IE1vY2tEaWFsb2dDb250ZW50PFQ+KClcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLm9wZW5lZC5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlKHJlc3VsdD86IERpYWxvZ1Jlc3VsdDxUPik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2xvc2VkLmVtaXQocmVzdWx0KTtcclxuICAgIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBNb2NrZWQgZGlhbG9nIGNvbnRlbnQgdG8gdGVzdCBzYXZlIGFuZCBjYW5jZWxcclxuICovXHJcbmV4cG9ydCBjbGFzcyBNb2NrRGlhbG9nQ29udGVudDxUPiBpbXBsZW1lbnRzIERpYWxvZ0NvbnRlbnQ8VD4ge1xyXG4gICAgcHVibGljIGRpYWxvZ0lkOiBzdHJpbmcgPSAnTW9ja0lEJztcclxuICAgIHB1YmxpYyBvcGVuQXJnOiBUIHwgdW5kZWZpbmVkO1xyXG4gICAgcHVibGljIG9uT3BlbjogKG9wZW5Db250ZXh0PzogVCB8IHVuZGVmaW5lZCkgPT4gdm9pZCA9IChvcGVuQ29udGV4dCkgPT4geyB0aGlzLm9wZW5BcmcgPSBvcGVuQ29udGV4dDsgfVxyXG4gICAgcHVibGljIG9uRGlhbG9nU2F2ZTogRXZlbnRFbWl0dGVyPFQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xyXG4gICAgcHVibGljIG9uRGlhbG9nQ2FuY2VsOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHVibGljIGRlc3Ryb3llZDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIE1vY2tlZCBEYXRlRGlzcGxheVBpcGVcclxuICovXHJcbkBQaXBlKHsgbmFtZTogJ2RhdGVEaXNwbGF5JyB9KVxyXG5leHBvcnQgY2xhc3MgTW9ja0RhdGVEaXNwbGF5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gICAgdHJhbnNmb3JtKHZhbHVlPzogRGF0ZSB8IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiAnMDEvMDEvMjAxNyc7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKiBSZXR1cm4gYSBSb3V0ZXIgc3B5IG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgbW9jayBpbiB0ZXN0cy4qL1xyXG5leHBvcnQgZnVuY3Rpb24gbW9ja1JvdXRlckZhY3RvcnkoKTogamFzbWluZS5TcHlPYmo8Um91dGVyPiB7XHJcbiAgICBjb25zdCBtb2NrUm91dGVyID0gU3B5RmFjdG9yeS5jcmVhdGVTcHkoUm91dGVyKTtcclxuICAgIG1vY2tSb3V0ZXIuaXNBY3RpdmUuYW5kLnJldHVyblZhbHVlKGZhbHNlKTtcclxuICAgIG1vY2tSb3V0ZXIubmF2aWdhdGUuYW5kLnJldHVyblZhbHVlKFByb21pc2UucmVzb2x2ZSh0cnVlKSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobW9ja1JvdXRlciwgJ2V2ZW50cycsIHsgdmFsdWU6IG5ldyBTdWJqZWN0PEV2ZW50PigpLCBjb25maWd1cmFibGU6IHRydWUgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobW9ja1JvdXRlciwgJ3VybCcsIHsgdmFsdWU6ICcvY3VycmVudC9yb3V0ZS91cmwnLCB3cml0YWJsZTogdHJ1ZSB9KTtcclxuXHJcbiAgICByZXR1cm4gbW9ja1JvdXRlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1vY2sge0BsaW5rIEFjdGl2YXRlZFJvdXRlfSBmb3Igc3B5aW5nIG9uIHJvdXRlIGFuZCBxdWVyeSBwYXJhbWV0ZXJzXHJcbiAqXHJcbiAqIEBleGFtcGxlIDxjYXB0aW9uPkRlY2xhcmUhPC9jYXB0aW9uPlxyXG4gKiBsZXQgbW9ja0FjdGl2YXRlZFJvdXRlOiBNb2NrQWN0aXZhdGVkUm91dGUgPSBuZXcgTW9ja0FjdGl2YXRlZFJvdXRlKCk7XHJcbiAqIGxldCBwYXJhbU1hcFNweTogamFzbWluZS5TcHk7XHJcbiAqIGxldCBxdWVyeVBhcmFtTWFwU3B5OiBqYXNtaW5lLlNweTtcclxuICogQGV4YW1wbGUgPGNhcHRpb24+UHJvdmlkZSE8L2NhcHRpb24+XHJcbiAqIHByb3ZpZGVyczogW1xyXG4gKiAgICAgIC4uLlxyXG4gKiAgICAgIHsgcHJvdmlkZTogQWN0aXZhdGVkUm91dGUsIHVzZVZhbHVlOiBtb2NrQWN0aXZhdGVkUm91dGUgfSxcclxuICogICAgICAuLi5cclxuICogICAgXVxyXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5TcHkhPC9jYXB0aW9uPlxyXG4gKiBwYXJhbU1hcFNweSA9IHNweU9uKG1vY2tBY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcCwgJ2dldCcpO1xyXG4gKiBxdWVyeVBhcmFtTWFwU3B5ID0gc3B5T24obW9ja0FjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAsICdnZXQnKTtcclxuICogQGV4YW1wbGUgPGNhcHRpb24+TWFuaXB1bGF0ZSE8L2NhcHRpb24+XHJcbiAqIHBhcmFtTWFwU3B5LmFuZC5yZXR1cm5WYWx1ZShcIjEyMzRcIik7XHJcbiAqIHF1ZXJ5UGFyYW1NYXBTcHkuYW5kLnJldHVyblZhbHVlKFwiNDMyMVwiKTtcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1vY2tBY3RpdmF0ZWRSb3V0ZSB7XHJcbiAgICBzbmFwc2hvdCA9IHtcclxuICAgICAgICBwYXJhbU1hcDoge1xyXG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBxdWVyeVBhcmFtTWFwOiB7XHJcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBnZXRBbGw6IGZ1bmN0aW9uIChuYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBoYXM6IGZ1bmN0aW9uIChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcm91dGVDb25maWc6IHt9LFxyXG4gICAgfTtcclxuICAgIHBhcmFtTWFwID0gbmV3IFN1YmplY3QoKTtcclxuICAgIHF1ZXJ5UGFyYW1NYXAgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgcm91dGVDb25maWcgPSB7fVxyXG59Il19
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class UserPreferenceService {
|
|
5
|
+
getPreferences() {
|
|
6
|
+
return of({ preference: { dateFormat: 'MM/DD/YYYY', timeFormat: 'h:mm:ss a' } });
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
UserPreferenceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UserPreferenceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10
|
+
UserPreferenceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UserPreferenceService, providedIn: 'root' });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UserPreferenceService, decorators: [{
|
|
12
|
+
type: Injectable,
|
|
13
|
+
args: [{
|
|
14
|
+
providedIn: 'root'
|
|
15
|
+
}]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcmVmZXJlbmNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3VzZXItcHJlZmVyZW5jZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFVdEMsTUFBTSxPQUFPLHFCQUFxQjtJQUV6QixjQUFjO1FBQ2pCLE9BQU8sRUFBRSxDQUFDLEVBQUMsVUFBVSxFQUFDLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7O2tIQUpVLHFCQUFxQjtzSEFBckIscUJBQXFCLGNBRnRCLE1BQU07MkZBRUwscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNaLFVBQVUsRUFBRSxNQUFNO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERhdGVQcmVmZXJlbmNlQ29udGFpbmVyIHtcclxuICBwcmVmZXJlbmNlOiB7ZGF0ZUZvcm1hdDogc3RyaW5nfG51bGx8dW5kZWZpbmVkLCB0aW1lRm9ybWF0OiBzdHJpbmd8bnVsbHx1bmRlZmluZWR9IHwgbnVsbCB8IHVuZGVmaW5lZFxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbnByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlclByZWZlcmVuY2VTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIGdldFByZWZlcmVuY2VzKCk6IE9ic2VydmFibGU8RGF0ZVByZWZlcmVuY2VDb250YWluZXI+IHsgXHJcbiAgICAgIHJldHVybiBvZih7cHJlZmVyZW5jZTp7ZGF0ZUZvcm1hdDogJ01NL0REL1lZWVknLCB0aW1lRm9ybWF0OiAnaDptbTpzcyBhJ319KTtcclxuICB9XHJcbiAgXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,246 @@
|
|
|
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
|
+
constructor(injector) {
|
|
9
|
+
super(injector);
|
|
10
|
+
this.isWizardMode = true;
|
|
11
|
+
this.showWizardSaveSuccess = false;
|
|
12
|
+
/** True when there are no custom fields or when in wizard mode on the custom fields tab */
|
|
13
|
+
this.showSave = true;
|
|
14
|
+
/** True when in wizard mode you do not want to show the next or save button*/
|
|
15
|
+
this.hideNextSaveButton = false;
|
|
16
|
+
/** True when in wizard mode and on the custom fields tab */
|
|
17
|
+
this.showBack = false;
|
|
18
|
+
this.cancelLabel = 'Cancel';
|
|
19
|
+
this.dialogId = '';
|
|
20
|
+
this.telemetryService = injector.get(TelemetryService);
|
|
21
|
+
}
|
|
22
|
+
get tabGroup() {
|
|
23
|
+
return this._tabGroup;
|
|
24
|
+
}
|
|
25
|
+
set tabGroup(value) {
|
|
26
|
+
this._tabGroup = value;
|
|
27
|
+
}
|
|
28
|
+
get currentTab() {
|
|
29
|
+
return this._currentTab;
|
|
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;
|
|
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: "14.2.0", ngImport: i0, type: WizardBaseComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
242
|
+
WizardBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: WizardBaseComponent, usesInheritance: true, ngImport: i0 });
|
|
243
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: WizardBaseComponent, decorators: [{
|
|
244
|
+
type: Directive
|
|
245
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC93aXphcmQvd2l6YXJkLWJhc2Uvd2l6YXJkLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFrQixNQUFNLDBDQUEwQyxDQUFDOztBQWU3RixNQUFNLE9BQWdCLG1CQUFvQixTQUFRLGlCQUFpQjtJQThDakUsWUFBWSxRQUFrQjtRQUM1QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUE3Q1gsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFDN0IsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBRTlDLDJGQUEyRjtRQUNwRixhQUFRLEdBQVksSUFBSSxDQUFDO1FBRWhDLDhFQUE4RTtRQUN2RSx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFFM0MsNERBQTREO1FBQ3JELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFLMUIsZ0JBQVcsR0FBVyxRQUFRLENBQUM7UUFFL0IsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQThCM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBeEJELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQVcsUUFBUSxDQUFDLEtBQWU7UUFDakMsSUFBSSxD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Q3hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQzNCO2lCQUFNO2dCQUNMLDhHQUE4RztnQkFDOUcsaUZBQWlGO2dCQUNqRiw2R0FBNkc7Z0JBQzdHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2FBQzFCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssYUFBYSxDQUFDLEdBQWU7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzNDLENBQUM7O2dIQXpSbUIsbUJBQW1CO29HQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFEeEMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdXBwZXJGaXJzdCB9IGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTmF2R3JvdXAgfSBmcm9tICcuLi8uLi8uLi9jb250cm9scy9uYXZpZ2F0aW9uL25hdi1ncm91cCc7XHJcbmltcG9ydCB7IE5hdkl0ZW0gfSBmcm9tICcuLi8uLi8uLi9jb250cm9scy9uYXZpZ2F0aW9uL25hdi1pdGVtJztcclxuaW1wb3J0IHsgVGVsZW1ldHJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdGVsZW1ldHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIZWxwIH0gZnJvbSAnLi4vLi4vLi4vZGlzcGxheS9oZWxwL2hlbHAtdHlwZXMnO1xyXG5pbXBvcnQgeyBQYWdlQmFzZUNvbXBvbmVudCwgUGFnZUluaXRSZXN1bHQgfSBmcm9tICcuLi8uLi9wYWdlL3BhZ2UtYmFzZS9wYWdlLWJhc2UuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgV2l6YXJkVGFiIGV4dGVuZHMgTmF2SXRlbSB7XHJcbiAgLyoqXHJcbiAgICogUGF0aCB0byBhIGZvcm0gZ3JvdXAvYXJyYXkvY29udHJvbCBjb250YWluZWQgaW4gdGhlIGZvcm0ncyBtYWluIGZvcm0gZ3JvdXAuXHJcbiAgICogVXNlZCB0byBtYXAgYSB0YWIgdG8gaXQncyBmb3JtIG1vZGVsIGZvciBmb3JtIHZhbGlkYXRpb24gaW4gV2l6YXJkQmFzZUNvbXBvbmVudC5cclxuICAgKiBTZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9mb3Jtcy9BYnN0cmFjdENvbnRyb2wjZ2V0LXVzYWdlLW5vdGVzIGZvciBkZXRhaWxzIG9uIHBhdGhzLlxyXG4gICAqL1xyXG4gIGZvcm1Nb2RlbFBhdGg/OiBzdHJpbmcgfCAoc3RyaW5nIHwgbnVtYmVyKVtdO1xyXG4gIGhlbHA/OiBIZWxwO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGNvbXBsZXRlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV2l6YXJkQmFzZUNvbXBvbmVudCBleHRlbmRzIFBhZ2VCYXNlQ29tcG9uZW50IHtcclxuXHJcbiAgcHVibGljIGlzV2l6YXJkTW9kZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHNob3dXaXphcmRTYXZlU3VjY2VzczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogVHJ1ZSB3aGVuIHRoZXJlIGFyZSBubyBjdXN0b20gZmllbGRzIG9yIHdoZW4gaW4gd2l6YXJkIG1vZGUgb24gdGhlIGN1c3RvbSBmaWVsZHMgdGFiICovXHJcbiAgcHVibGljIHNob3dTYXZlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqIFRydWUgd2hlbiBpbiB3aXphcmQgbW9kZSB5b3UgZG8gbm90IHdhbnQgdG8gc2hvdyB0aGUgbmV4dCBvciBzYXZlIGJ1dHRvbiovXHJcbiAgcHVibGljIGhpZGVOZXh0U2F2ZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogVHJ1ZSB3aGVuIGluIHdpemFyZCBtb2RlIGFuZCBvbiB0aGUgY3VzdG9tIGZpZWxkcyB0YWIgKi9cclxuICBwdWJsaWMgc2hvd0JhY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIExhYmVscyBmb3IgdGhlIGNhbmNlbCwgbmV4dCBhbmQgYmFjayBidXR0b25zICovXHJcbiAgcHVibGljIG5leHRMYWJlbD86IHN0cmluZztcclxuICBwdWJsaWMgYmFja0xhYmVsPzogc3RyaW5nO1xyXG4gIHB1YmxpYyBjYW5jZWxMYWJlbDogc3RyaW5nID0gJ0NhbmNlbCc7XHJcblxyXG4gIHB1YmxpYyBkaWFsb2dJZDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRhaW5zIHRoZSBhdmFpbGFibGUgd2l6YXJkIHRhYnMuIFBhc3NlZCB0byBUYWJzQ29tcG9uZW50LlxyXG4gICAqIEBtZW1iZXJvZiBXaXphcmRCYXNlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfdGFiR3JvdXAhOiBOYXZHcm91cDtcclxuICBwdWJsaWMgZ2V0IHRhYkdyb3VwKCk6IE5hdkdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLl90YWJHcm91cDtcclxuICB9XHJcbiAgcHVibGljIHNldCB0YWJHcm91cCh2YWx1ZTogTmF2R3JvdXApIHtcclxuICAgIHRoaXMuX3RhYkdyb3VwID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb250YWlucyB0aGUgdGFiIHRoYXQgaXMgY3VycmVudGx5IHNlbGVjdGVkLlxyXG4gICAqIEBtZW1iZXJvZiBXaXphcmRCYXNlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfY3VycmVudFRhYj86IFdpemFyZFRhYjtcclxuICBwdWJsaWMgZ2V0IGN1cnJlbnRUYWIoKTogV2l6YXJkVGFiIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50VGFiO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGluaXRQcm9taXNlITogUHJvbWlzZTxXaXphcmRCYXNlQ29tcG9uZW50PjtcclxuXHJcbiAgcHJvdGVjdGVkIHRlbGVtZXRyeVNlcnZpY2U6IFRlbGVtZXRyeVNlcnZpY2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgc3VwZXIoaW5qZWN0b3IpO1xyXG5cclxuICAgIHRoaXMudGVsZW1ldHJ5U2VydmljZSA9IGluamVjdG9yLmdldChUZWxlbWV0cnlTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbkZpcnN0SW5pdCgpIHtcclxuICAgIHRoaXMuX3RhYkdyb3VwID0gdGhpcy5jb25maWd1cmVUYWJzKCk7XHJcbiAgICB0aGlzLnNldEN1cnJlbnRUYWIodGhpcy5fdGFiR3JvdXAuc2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUb1RhYkNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvbkluaXQoKTogUHJvbWlzZTxQYWdlSW5pdFJlc3VsdD47XHJcblxyXG4gIHByb3RlY3RlZCBvbldpemFyZFNhdmVTdWNjZXNzKCk6IHZvaWQgeyB9XHJcblxyXG4gIHByb3RlY3RlZCBhc3luYyBvbkFmdGVyVmlld0luaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnVwZGF0ZUJ1dHRvbnMoKTtcclxuICB9XHJcblxyXG4gIC8vXHJcbiAgLy8gUGFnZUJhc2UgbGlmZWN5Y2xlIGhvb2tzLiBPdmVycmlkZSBpbiBkZXJpdmVkIGNsYXNzIGlmIG5lZWRlZC5cclxuICAvL1xyXG4gIHByb3RlY3RlZCBhc3luYyBhcHBseU1vZGVsVXBkYXRlcygpIHt9XHJcbiAgcHJvdGVjdGVkIGFzeW5jIHNhdmVUb0FwaSgpOiBQcm9taXNlPG51bWJlcnx2b2lkPiB7fVxyXG4gIHByb3RlY3RlZCBvblNhdmVDb21wbGV0ZShlbnRpdHlJZDogbnVtYmVyKSB7fVxyXG5cclxuICBwdWJsaWMgYXN5bmMgb25TYXZlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgLy8gTWFyayB0aGUgY3VycmVudCB0YWIgYXMgY29tcGxldGVkIGlmIHRoZSB0YWIgaXMgdmFsaWQgYmVmb3JlIGF0dGVtcHRpbmcgdG8gc2F2ZS5cclxuICAgIGlmICh0aGlzLl9jdXJyZW50VGFiICYmIHRoaXMuaXNDdXJyZW50VGFiVmFsaWQoKSkge1xyXG4gICAgICB0aGlzLl9jdXJyZW50VGFiLmNvbXBsZXRlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXdhaXQgc3VwZXIub25TYXZlKGV2ZW50KTtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93V2l6YXJkU2F2ZVN1Y2Nlc3MpIHtcclxuICAgICAgdGhpcy5vbldpemFyZFNhdmVTdWNjZXNzKCk7XHJcbiAgICAgIHRoaXMudGVsZW1ldHJ5U2VydmljZS50cmFja0V2ZW50KGAke3RoaXMuZGlhbG9nSWR9X1dpemFyZFN1Y2Nlc3NgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgbmV4dCB0YWIgaW4gdGhlIHRhYiBncm91cC4gQ2FsbHMgY2FuR29Ub05leHRUYWIoKSB0byBkZXRlcm1pbmUgaWYgbmF2aWdhdGluZyB0byB0aGUgbmV4dCB0YWJcclxuICAgKiBpcyBhbGxvd2VkIG9yIG5vdC4gSWYgdGFiIHZhbGlkYXRpb24gc3VjY2VlZHMsIGVuYWJsZXMgdGhlIG5leHQgdGFiIChpZiBpdCBpcyBkaXNhYmxlZCkgYW5kIHNlbGVjdHMgaXQuXHJcbiAgICogQG1lbWJlcm9mIFdpemFyZEJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwdWJsaWMgbmV4dFRhYigpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRUYWJJbmRleCA9IHRoaXMuX3RhYkdyb3VwLml0ZW1zLmZpbmRJbmRleCh0ID0+IHQgPT09IHRoaXMuX2N1cnJlbnRUYWIpO1xyXG4gICAgLy8gSWYgdGhlcmUgaXMgYSBjdXJyZW50IHRhYiBzZWxlY3RlZCBhbmQgdGhlIGN1cnJlbnQgdGFiIGlzIG5vdCB0aGUgbGFzdCB0YWIsXHJcbiAgICAvLyB1cGRhdGUgdGhlIHNlbGVjdGVkIHRhYiBpbiB0aGUgdGFiR3JvdXAgdG8gdGhlIG5leHQgdGFiXHJcbiAgICBpZiAoY3VycmVudFRhYkluZGV4ID4gLTEgJiYgY3VycmVudFRhYkluZGV4IDwgdGhpcy5fdGFiR3JvdXAuaXRlbXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICBjb25zdCBuZXh0VGFiID0gdGhpcy5fdGFiR3JvdXAuaXRlbXNbY3VycmVudFRhYkluZGV4ICsgMV07XHJcbiAgICAgIGlmICh0aGlzLmNhbkdvVG9OZXh0VGFiKG5leHRUYWIpKSB7XHJcbiAgICAgICAgLy8gRW5hYmxlIHRoZSBuZXh0IHRhYiBpZiBpdCBpcyBkaXNhYmxlZFxyXG4gICAgICAgIGlmIChuZXh0VGFiLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICBuZXh0VGFiLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3RhYkdyb3VwLnNlbGVjdGVkID0gbmV4dFRhYjtcclxuICAgICAgICB0aGlzLnRlbGVtZXRyeVNlcnZpY2UudHJhY2tFdmVudChgJHt0aGlzLmRpYWxvZ0lkfV8ke3VwcGVyRmlyc3QobmV4dFRhYi5pZD8udG9TdHJpbmcoKSl9YCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vblRhYkNoYW5nZUZhaWxlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIHByZXZpb3VzIHRhYiBpbiB0aGUgdGFiIGdyb3VwLiBDYWxscyBjYW5Hb1RvUHJldmlvdXNUYWIoKSB0byBkZXRlcm1pbmUgaWYgbmF2aWdhdGluZyB0byB0aGUgcHJldmlvdXMgdGFiXHJcbiAgICogaXMgYWxsb3dlZCBvciBub3QuIE5hdmlnYXRlcyB0byB0aGUgdGFiIGlmIHZhbGlkYXRpb24gc3VjY2VlZHNcclxuICAgKiBAbWVtYmVyb2YgV2l6YXJkQmFzZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwcmV2aW91c1RhYigpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRUYWJJbmRleCA9IHRoaXMuX3RhYkdyb3VwLml0ZW1zLmZpbmRJbmRleCh0ID0+IHQgPT09IHRoaXMuX2N1cnJlbnRUYWIpO1xyXG4gICAgLy8gSWYgdGhlcmUgaXMgYSBjdXJyZW50IHRhYiBzZWxlY3RlZCBhbmQgdGhlIGN1cnJlbnQgdGFiIGlzIG5vdCB0aGUgZmlyc3QgdGFiLFxyXG4gICAgLy8gdXBkYXRlIHRoZSBzZWxlY3RlZCB0YWIgaW4gdGhlIHRhYkdyb3VwIHRvIHRoZSBwcmV2aW91cyB0YWJcclxuICAgIGlmIChjdXJyZW50VGFiSW5kZXggPiAwICYmIGN1cnJlbnRUYWJJbmRleCA8IHRoaXMuX3RhYkdyb3VwLml0ZW1zLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBwcmV2VGFiID0gdGhpcy5fdGFiR3JvdXAuaXRlbXNbY3VycmVudFRhYkluZGV4IC0gMV07XHJcbiAgICAgIGlmICh0aGlzLmNhbkdvVG9QcmV2aW91c1RhYihwcmV2VGFiKSkge1xyXG4gICAgICAgIHRoaXMuX3RhYkdyb3VwLnNlbGVjdGVkID0gcHJldlRhYjtcclxuICAgICAgICB0aGlzLnRlbGVtZXRyeVNlcnZpY2UudHJhY2tFdmVudChgJHt0aGlzLmRpYWxvZ0lkfV8ke3VwcGVyRmlyc3QocHJldlRhYi5pZD8udG9TdHJpbmcoKSl9YCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vblRhYkNoYW5nZUZhaWxlZCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdXBkYXRlQnV0dG9ucygpIHtcclxuICAgIGlmICh0aGlzLmlzV2l6YXJkTW9kZSkge1xyXG4gICAgICBpZiAodGhpcy5jdXJyZW50VGFiKSB7XHJcbiAgICAgICAgY29uc3QgdGFiSW5kZXggPSB0aGlzLl90YWJHcm91cC5pdGVtcy5maW5kSW5kZXgodCA9PiB0ID09PSB0aGlzLmN1cnJlbnRUYWIpO1xyXG4gICAgICAgIGlmICh0YWJJbmRleCA+IDApIHtcclxuICAgICAgICAgIC8vIFNob3cgdGhlIGJhY2sgYnV0dG9uIGFuZCBzZXQgdGhlIGxhYmVsIHRvIHRoZSBwcmV2aW91cyB0YWIgd2hlbiBub3Qgb24gdGhlIGZpcnN0IHRhYlxyXG4gICAgICAgICAgdGhpcy5zaG93QmFjayA9IHRydWU7XHJcbiAgICAgICAgICBjb25zdCBwcmV2VGFiS2V5ID0gdGhpcy5fdGFiR3JvdXAuaXRlbXNbdGFiSW5kZXggLSAxXS5sYWJlbCE7XHJcbiAgICAgICAgICB0aGlzLmJhY2tMYWJlbCA9IGAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdCYWNrX1RDJyl9OiAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHByZXZUYWJLZXkpfWA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIEhpZGUgdGhlIGJhY2sgYnV0dG9uIHdoZW4gb24gdGhlIGZpcnN0IHRhYlxyXG4gICAgICAgICAgdGhpcy5zaG93QmFjayA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRhYkluZGV4IDwgdGhpcy5fdGFiR3JvdXAuaXRlbXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgLy8gU2hvdyB0aGUgbmV4dCBidXR0b24gYW5kIHNldCB0aGUgbGFiZWwgdG8gdGhlIG5leHQgdGFiIHdoZW4gbm90IG9uIHRoZSBsYXN0IHRhYlxyXG4gICAgICAgICAgdGhpcy5zaG93U2F2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgY29uc3QgbmV4dFRhYktleSA9IHRoaXMuX3RhYkdyb3VwLml0ZW1zW3RhYkluZGV4ICsgMV0ubGFiZWwhO1xyXG4gICAgICAgICAgdGhpcy5uZXh0TGFiZWwgPSBgJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnTmV4dF9UQycpfTogJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChuZXh0VGFiS2V5KX1gO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm5leHRMYWJlbCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgIC8vIFNob3cgdGhlIHNhdmUgYnV0dG9uIGluc3RlYWQgb2YgbmV4dCB3aGVuIG9uIHRoZSBsYXN0IHRhYlxyXG4gICAgICAgICAgdGhpcy5zaG93U2F2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dCYWNrID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2hvd1NhdmUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVxdWlyZWQgdG8gY29uZmlndXJlIHRoZSB0YWJzIGFuZCBkZWZhdWx0IHRhYiBmb3IgdGhlIHdpemFyZC4gUnVucyBpbiBvbkZpcnN0SW5pdCwgYmVmb3JlIG9uSW5pdC5cclxuICAgKiBAbWVtYmVyb2YgV2l6YXJkQmFzZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjb25maWd1cmVUYWJzKCk6IE5hdkdyb3VwO1xyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIG5hdmlnYXRpb24gdG8gdGhlIG5leHQgdGFiIGlzIHByZXZlbnRlZCBvciBub3QuIEZpcmVkIGluIG5leHRUYWIoKSwgYnV0IG5vdCB3aGVuIGEgdGFiIGlzXHJcbiAgICogY2xpY2tlZCBvciBzZWxlY3RlZCBwcm9ncmFtbWF0aWNhbGx5LiBCeSBkZWZhdWx0LCB0aGlzIGNoZWNrcyB0aGUgdmFsaWRpdHkgb2YgdGhlIGN1cnJlbnQgdGFiJ3MgZm9ybSBtb2RlbCBhbmRcclxuICAgKiBwcmV2ZW50cyBuYXZpZ2F0aW9uIGlmIGl0IGlzIGludmFsaWQuIENhbiBiZSBvdmVycmlkZGVuIGlmIGRpZmZlcmVudCBsb2dpYyBpcyBuZWVkZWQuXHJcbiAgICogQHBhcmFtIG5leHRUYWIgLSBUaGUgdGFiIGJlaW5nIG5hdmlnYXRlZCB0b1xyXG4gICAqIEBtZW1iZXJvZiBXaXphcmRCYXNlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNhbkdvVG9OZXh0VGFiKG5leHRUYWI6IFdpemFyZFRhYik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNDdXJyZW50VGFiVmFsaWQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgbmF2aWdhdGlvbiB0byB0aGUgcHJldmlvdXMgdGFiIGlzIHByZXZlbnRlZCBvciBub3QuIEZpcmVkIGluIHByZXZpb3VzVGFiKCksIGJ1dCBub3Qgd2hlbiBhIHRhYiBpc1xyXG4gICAqIGNsaWNrZWQgb3Igc2VsZWN0ZWQgcHJvZ3JhbW1hdGljYWxseS4gQnkgZGVmYXVsdCwgdGhpcyBjaGVja3MgdGhlIHZhbGlkaXR5IG9mIHRoZSBjdXJyZW50IHRhYidzIGZvcm0gbW9kZWwgYW5kXHJcbiAgICogcHJldmVudHMgbmF2aWdhdGlvbiBpZiBpdCBpcyBpbnZhbGlkLiBDYW4gYmUgb3ZlcnJpZGRlbiBpZiBkaWZmZXJlbnQgbG9naWMgaXMgbmVlZGVkLlxyXG4gICAqIEBwYXJhbSBwcmV2VGFiIC0gVGhlIHRhYiBiZWluZyBuYXZpZ2F0ZWQgdG9cclxuICAgKiBAbWVtYmVyb2YgV2l6YXJkQmFzZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBjYW5Hb1RvUHJldmlvdXNUYWIocHJldlRhYjogV2l6YXJkVGFiKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0N1cnJlbnRUYWJWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBuYXZpZ2F0aW5nIGF3YXkgZnJvbSB0aGUgY3VycmVudCB0YWIgaXMgcHJldmVudGVkIG9yIG5vdC4gRmlyZWQgYW55IHRpbWUgdGhlIHNlbGVjdGVkIHRhYlxyXG4gICAqIGNoYW5nZXMgaW4gdGhlIHRhYkdyb3VwLiBCeSBkZWZhdWx0LCB0aGlzIGNoZWNrcyB0aGUgdmFsaWRpdHkgb2YgdGhlIGN1cnJlbnQgdGFiJ3MgZm9ybSBtb2RlbCBhbmQgcHJldmVudHMgbmF2aWdhdGlvblxyXG4gICAqIGlmIGl0IGlzIGludmFsaWQuIENhbiBiZSBvdmVycmlkZGVuIGlmIGRpZmZlcmVudCBsb2dpYyBpcyBuZWVkZWQuXHJcbiAgICogQG1lbWJlcm9mIFdpemFyZEJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgY2FuTGVhdmVDdXJyZW50VGFiKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNDdXJyZW50VGFiVmFsaWQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyaWdnZXJzIHZhbGlkYXRpb24gb24gdGhlIGN1cnJlbnQgd2l6YXJkIHRhYidzIGZvcm0gY29udHJvbC4gUmV0dXJucyB0cnVlIGlmIHRoZSBmb3JtIGNvbnRyb2wgaXMgdmFsaWQsIGZhbHNlIGlmIG5vdC5cclxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGZvcm1Nb2RlbFBhdGggZm9yIHRoZSB0YWIgaXMgbm90IGRlZmluZWQgb3Igbm8gZm9ybSBjb250cm9sIGlzIGZvdW5kLiBDYW4gYmUgb3ZlcnJpZGRlbiBpZiBkaWZmZXJlbnRcclxuICAgKiBsb2dpYyBpcyBuZWVkZWQgdG8gdmFsaWRhdGUgdGhlIGZvcm0gY29udHJvbCBmb3IgdGhlIGN1cnJlbnQgdGFiLlxyXG4gICAqIEBtZW1iZXJvZiBXaXphcmRCYXNlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGlzQ3VycmVudFRhYlZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuX2N1cnJlbnRUYWIgJiYgdGhpcy5fY3VycmVudFRhYi5mb3JtTW9kZWxQYXRoKSB7XHJcbiAgICAgIGxldCBmb3JtTW9kZWwgPSB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5fY3VycmVudFRhYi5mb3JtTW9kZWxQYXRoKTtcclxuICAgICAgaWYgKGZvcm1Nb2RlbCkge1xyXG4gICAgICAgIGZvcm1Nb2RlbC5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgcmV0dXJuIGZvcm1Nb2RlbC52YWxpZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaXJlZCBpZiBuYXZpZ2F0aW9uIHRvIGEgdGFiIHN1Y2NlZWRzLiBIaWRlcyB0aGUgZXJyb3IgYmFubmVyIGJ5IGRlZmF1bHQsIGJ1dCBjYW4gYmUgb3ZlcnJpZGRlbiBpZiBsb2dpYyBpcyBuZWVkZWQuXHJcbiAgICogQG1lbWJlcm9mIFdpemFyZEJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgb25UYWJDaGFuZ2VTdWNjZXNzKCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGRhdGVCdXR0b25zKCk7XHJcbiAgICB0aGlzLmhpZGVFcnJvckJhbm5lcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmlyZWQgaWYgbmF2aWdhdGlvbiB0byBhIHRhYiBmYWlscy4gQnkgZGVmYXVsdCwgc2hvd3MgdGhlIGVycm9yIGJhbm5lciB3aXRoIHRoZSBkZWZhdWx0IGludmFsaWQgZm9ybSBtZXNzYWdlLCBidXRcclxuICAgKiBjYW4gYmUgb3ZlcnJpZGRlbiBpZiBkaWZmZXJlbnQgbG9naWMgaXMgbmVlZGVkLlxyXG4gICAqIEBtZW1iZXJvZiBXaXphcmRCYXNlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG9uVGFiQ2hhbmdlRmFpbGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93RXJyb3JCYW5uZXIodGhpcy5kZWZhdWx0SW52YWxpZEZvcm1NZXNzYWdlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RlbiBmb3Igd2hlbiB0aGUgdGFiR3JvdXAncyBzZWxlY3RlZCBpdGVtIGlzIGNoYW5nZWQgKEkuRS4gd2hlbiBhIHRhYiBpcyBjbGlja2VkIG9yIHNlbGVjdGVkIHByb2dyYW1tYXRpY2FsbHkpXHJcbiAgICogYW5kIG5hdmlnYXRlIHRvIHRoYXQgdGFiLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9UYWJDaGFuZ2VzKCkge1xyXG4gICAgLy8gV2hlbmV2ZXIgdGhlIHRhYkdyb3VwJ3Mgc2VsZWN0ZWQgdGFiIGNoYW5nZXMsIGdvIHRvIHRoZSBzZWxlY3RlZCB0YWJcclxuICAgIHRoaXMuX3RhYkdyb3VwLnNlbGVjdGVkQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZSh0YWIgPT4ge1xyXG4gICAgICB0aGlzLmdvVG9UYWIodGFiKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJpZ2dlcmVkIHdoZW4gdGhlIHRhYkdyb3VwJ3Mgc2VsZWN0ZWQgaXRlbSBjaGFuZ2VzLiBJZiB0aGUgY3VycmVudCB0YWIgcGFzc2VzIHZhbGlkYXRpb24sIHVwZGF0ZXNcclxuICAgKiB0aGUgY3VycmVudCB0YWIgdG8gdGhlIHNlbGVjdGVkIHRhYi5cclxuICAgKiBAcGFyYW0gdGFiIC0gdGhlIHRhYiB0aGF0IHdhcyBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ29Ub1RhYih0YWI6IFdpemFyZFRhYikge1xyXG4gICAgLy8gT25seSBjb250aW51ZSBpZiB0aGUgY3VycmVudCB0YWIgaXMgbm90IHRoZSB0YWIgdGhhdCB3YXMgc2VsZWN0ZWQuIFRoZXkgYXJlIHRoZSBzYW1lXHJcbiAgICAvLyB3aGVuIHdlIGFyZSByZXNldHRpbmcgdGhlIHRhYiBncm91cCdzIHNlbGVjdGVkIHRhYiBiYWNrIHRvIHRoZSBjdXJyZW50IHRhYiB3aGVuIHZhbGlkYXRpb24gZmFpbHMuXHJcbiAgICAvLyBXaXRob3V0IHRoaXMgY2hlY2ssIHdlIGNvdWxkIGVuZCB1cCBpbiBhbiBpbmZpbml0ZSBsb29wLlxyXG4gICAgaWYgKHRhYiAhPT0gdGhpcy5fY3VycmVudFRhYikge1xyXG4gICAgICBpZiAodGhpcy5jYW5MZWF2ZUN1cnJlbnRUYWIoKSkge1xyXG4gICAgICAgIC8vIE1hcmsgdGhlIGN1cnJlbnQgdGFiIGFzIGNvbXBsZXRlIGJlZm9yZSBzd2l0Y2hpbmdcclxuICAgICAgICBpZiAodGhpcy5fY3VycmVudFRhYikge1xyXG4gICAgICAgICAgdGhpcy5fY3VycmVudFRhYi5jb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldEN1cnJlbnRUYWIodGFiKTtcclxuICAgICAgICB0aGlzLm9uVGFiQ2hhbmdlU3VjY2VzcygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIEJlY2F1c2UgdGhlIHRhYkdyb3VwJ3Mgc2VsZWN0ZWQgdGFiIGlzIHVwZGF0ZWQgd2hlbiBhIHRhYiBpcyBjbGlja2VkIGJlZm9yZSB3ZSBjYW4gcnVuIGFueSBmb3JtIHZhbGlkYXRpb24sXHJcbiAgICAgICAgLy8gd2UgbmVlZCB0byByZXNldCB0aGUgc2VsZWN0ZWQgdGFiIGJhY2sgdG8gdGhlIGN1cnJlbnQgdGFiIGlmIHZhbGlkYXRpb24gZmFpbHMuXHJcbiAgICAgICAgLy8gV2l0aG91dCB0aGlzIHdlIHdvdWxkIGhhdmUgbm8gd2F5IHRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBsZWF2aW5nIHRoZSBjdXJyZW50IHRhYiBpZiB0aGUgZm9ybSBpcyBpbnZhbGlkLlxyXG4gICAgICAgIHRoaXMuX3RhYkdyb3VwLnNlbGVjdGVkID0gdGhpcy5fY3VycmVudFRhYjtcclxuICAgICAgICB0aGlzLm9uVGFiQ2hhbmdlRmFpbGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIGN1cnJlbnQgdGFiLCB0aXRsZSwgYW5kIGhlbHAuXHJcbiAgICogQHBhcmFtIHRhYiBUYWIgdG8gc2V0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRDdXJyZW50VGFiKHRhYj86IFdpemFyZFRhYikge1xyXG4gICAgdGhpcy5fY3VycmVudFRhYiA9IHRhYjtcclxuICAgIHRoaXMuaGVscCA9IHRhYiA/IHRhYi5oZWxwIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aXRsZSA9IHRhYiA/IHRhYi50aXRsZSA6IHVuZGVmaW5lZDtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "../../../controls/button/button.component";
|
|
5
|
+
export class WizardButtonsComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.nextLabel = 'Next_TC';
|
|
8
|
+
this.backLabel = 'Back_TC';
|
|
9
|
+
this.cancelLabel = 'Cancel';
|
|
10
|
+
this.saveLabel = 'Save';
|
|
11
|
+
this.cancelId = 'cancelWizardDialog';
|
|
12
|
+
this.saveId = 'saveWizardDialog';
|
|
13
|
+
this.tabindex = 0;
|
|
14
|
+
this.cancel = new EventEmitter();
|
|
15
|
+
this.save = new EventEmitter();
|
|
16
|
+
this.nextTab = new EventEmitter();
|
|
17
|
+
this.previousTab = new EventEmitter();
|
|
18
|
+
}
|
|
19
|
+
onCancel() {
|
|
20
|
+
this.cancel.emit();
|
|
21
|
+
}
|
|
22
|
+
onSave(event) {
|
|
23
|
+
this.save.emit(event);
|
|
24
|
+
}
|
|
25
|
+
onPreviousTab() {
|
|
26
|
+
this.previousTab.emit();
|
|
27
|
+
}
|
|
28
|
+
onNextTab() {
|
|
29
|
+
this.nextTab.emit();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
WizardButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: WizardButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
+
WizardButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: WizardButtonsComponent, selector: "ec-wizard-buttons", inputs: { nextLabel: "nextLabel", backLabel: "backLabel", cancelLabel: "cancelLabel", saveLabel: "saveLabel", cancelId: "cancelId", saveId: "saveId", tabindex: "tabindex", status: "status", showBack: "showBack", showSave: "showSave", hideNextSaveButton: "hideNextSaveButton" }, outputs: { cancel: "cancel", save: "save", nextTab: "nextTab", previousTab: "previousTab" }, ngImport: i0, template: "<ec-button id=\"{{saveId}}\"\r\n class=\"ml-2\"\r\n *ngIf=\"!hideNextSaveButton\"\r\n type=\"primary\"\r\n [label]=\"(!showSave ? nextLabel : saveLabel)\"\r\n [tabindex]=\"!tabindex ? 0 : tabindex\"\r\n (clicked)=\"!showSave ? onNextTab() : onSave($event)\"\r\n [disabled]=\"status?.status === 'pending' || status?.status === 'error'\">\r\n</ec-button>\r\n<ec-button id=\"previousTab\"\r\n class=\"ml-2\"\r\n *ngIf=\"showBack\"\r\n type=\"secondary\"\r\n [label]=\"backLabel\"\r\n [tabindex]=\"!tabindex ? 0 : tabindex+1\"\r\n (clicked)=\"onPreviousTab()\">\r\n</ec-button>\r\n<ec-button id=\"{{cancelId}}\"\r\n type=\"secondary\"\r\n [label]=\"cancelLabel\"\r\n [tabindex]=\"!tabindex ? 0 : tabindex+2\"\r\n (clicked)=\"onCancel()\">\r\n</ec-button>\r\n", styles: [":host{display:flex;flex-direction:row-reverse}:host-context(ec-page-view .titlebar > .actions){flex-direction:row}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "icon", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }] });
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: WizardButtonsComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{ selector: 'ec-wizard-buttons', template: "<ec-button id=\"{{saveId}}\"\r\n class=\"ml-2\"\r\n *ngIf=\"!hideNextSaveButton\"\r\n type=\"primary\"\r\n [label]=\"(!showSave ? nextLabel : saveLabel)\"\r\n [tabindex]=\"!tabindex ? 0 : tabindex\"\r\n (clicked)=\"!showSave ? onNextTab() : onSave($event)\"\r\n [disabled]=\"status?.status === 'pending' || status?.status === 'error'\">\r\n</ec-button>\r\n<ec-button id=\"previousTab\"\r\n class=\"ml-2\"\r\n *ngIf=\"showBack\"\r\n type=\"secondary\"\r\n [label]=\"backLabel\"\r\n [tabindex]=\"!tabindex ? 0 : tabindex+1\"\r\n (clicked)=\"onPreviousTab()\">\r\n</ec-button>\r\n<ec-button id=\"{{cancelId}}\"\r\n type=\"secondary\"\r\n [label]=\"cancelLabel\"\r\n [tabindex]=\"!tabindex ? 0 : tabindex+2\"\r\n (clicked)=\"onCancel()\">\r\n</ec-button>\r\n", styles: [":host{display:flex;flex-direction:row-reverse}:host-context(ec-page-view .titlebar > .actions){flex-direction:row}\n"] }]
|
|
37
|
+
}], ctorParameters: function () { return []; }, propDecorators: { nextLabel: [{
|
|
38
|
+
type: Input
|
|
39
|
+
}], backLabel: [{
|
|
40
|
+
type: Input
|
|
41
|
+
}], cancelLabel: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}], saveLabel: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}], cancelId: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], saveId: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}], tabindex: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}], status: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], showBack: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], showSave: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], hideNextSaveButton: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], cancel: [{
|
|
60
|
+
type: Output
|
|
61
|
+
}], save: [{
|
|
62
|
+
type: Output
|
|
63
|
+
}], nextTab: [{
|
|
64
|
+
type: Output
|
|
65
|
+
}], previousTab: [{
|
|
66
|
+
type: Output
|
|
67
|
+
}] } });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLWJ1dHRvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC93aXphcmQvd2l6YXJkLWJ1dHRvbnMvd2l6YXJkLWJ1dHRvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC93aXphcmQvd2l6YXJkLWJ1dHRvbnMvd2l6YXJkLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVF2RSxNQUFNLE9BQU8sc0JBQXNCO0lBdUJqQztRQXJCZ0IsY0FBUyxHQUFZLFNBQVMsQ0FBQztRQUMvQixjQUFTLEdBQVksU0FBUyxDQUFDO1FBQy9CLGdCQUFXLEdBQVksUUFBUSxDQUFDO1FBQ2hDLGNBQVMsR0FBWSxNQUFNLENBQUM7UUFFNUIsYUFBUSxHQUFZLG9CQUFvQixDQUFDO1FBQ3pDLFdBQU0sR0FBWSxrQkFBa0IsQ0FBQztRQUVyQyxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBUXBCLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvQyxTQUFJLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0MsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hELGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFckQsQ0FBQztJQUVWLFFBQVE7UUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBVTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDOzttSEF2Q1Usc0JBQXNCO3VHQUF0QixzQkFBc0IsNGFDUm5DLDg1QkF1QkE7MkZEZmEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG1CQUFtQjswRUFNYixTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFFVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVVLE1BQU07c0JBQXJCLEtBQUs7Z0JBRVUsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLGtCQUFrQjtzQkFBakMsS0FBSztnQkFFVyxNQUFNO3NCQUF0QixNQUFNO2dCQUNVLElBQUk7c0JBQXBCLE1BQU07Z0JBQ1UsT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxXQUFXO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlzcGxheVN0YXR1cyB9IGZyb20gJy4uLy4uL2Rpc3BsYXknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy13aXphcmQtYnV0dG9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dpemFyZC1idXR0b25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93aXphcmQtYnV0dG9ucy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXaXphcmRCdXR0b25zQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIG5leHRMYWJlbD86IHN0cmluZyA9ICdOZXh0X1RDJztcclxuICBASW5wdXQoKSBwdWJsaWMgYmFja0xhYmVsPzogc3RyaW5nID0gJ0JhY2tfVEMnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjYW5jZWxMYWJlbD86IHN0cmluZyA9ICdDYW5jZWwnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzYXZlTGFiZWw/OiBzdHJpbmcgPSAnU2F2ZSc7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBjYW5jZWxJZD86IHN0cmluZyA9ICdjYW5jZWxXaXphcmREaWFsb2cnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzYXZlSWQ/OiBzdHJpbmcgPSAnc2F2ZVdpemFyZERpYWxvZyc7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyB0YWJpbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHN0YXR1cz86IERpc3BsYXlTdGF0dXM7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93QmFjaz86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcHVibGljIHNob3dTYXZlPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwdWJsaWMgaGlkZU5leHRTYXZlQnV0dG9uPzogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjYW5jZWw6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2F2ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBuZXh0VGFiOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcHVibGljIHByZXZpb3VzVGFiOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgcHVibGljIG9uQ2FuY2VsKCkge1xyXG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2F2ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNhdmUuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25QcmV2aW91c1RhYigpIHtcclxuICAgIHRoaXMucHJldmlvdXNUYWIuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTmV4dFRhYigpIHtcclxuICAgIHRoaXMubmV4dFRhYi5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxlYy1idXR0b24gaWQ9XCJ7e3NhdmVJZH19XCJcclxuICAgICAgICAgICBjbGFzcz1cIm1sLTJcIlxyXG4gICAgICAgICAgICpuZ0lmPVwiIWhpZGVOZXh0U2F2ZUJ1dHRvblwiXHJcbiAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgIFtsYWJlbF09XCIoIXNob3dTYXZlID8gbmV4dExhYmVsIDogc2F2ZUxhYmVsKVwiXHJcbiAgICAgICAgICAgW3RhYmluZGV4XT1cIiF0YWJpbmRleCA/IDAgOiB0YWJpbmRleFwiXHJcbiAgICAgICAgICAgKGNsaWNrZWQpPVwiIXNob3dTYXZlID8gb25OZXh0VGFiKCkgOiBvblNhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cInN0YXR1cz8uc3RhdHVzID09PSAncGVuZGluZycgfHwgc3RhdHVzPy5zdGF0dXMgPT09ICdlcnJvcidcIj5cclxuPC9lYy1idXR0b24+XHJcbjxlYy1idXR0b24gaWQ9XCJwcmV2aW91c1RhYlwiXHJcbiAgICAgICAgICAgY2xhc3M9XCJtbC0yXCJcclxuICAgICAgICAgICAqbmdJZj1cInNob3dCYWNrXCJcclxuICAgICAgICAgICB0eXBlPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgICBbbGFiZWxdPVwiYmFja0xhYmVsXCJcclxuICAgICAgICAgICBbdGFiaW5kZXhdPVwiIXRhYmluZGV4ID8gMCA6IHRhYmluZGV4KzFcIlxyXG4gICAgICAgICAgIChjbGlja2VkKT1cIm9uUHJldmlvdXNUYWIoKVwiPlxyXG48L2VjLWJ1dHRvbj5cclxuPGVjLWJ1dHRvbiBpZD1cInt7Y2FuY2VsSWR9fVwiXHJcbiAgICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgW2xhYmVsXT1cImNhbmNlbExhYmVsXCJcclxuICAgICAgICAgICBbdGFiaW5kZXhdPVwiIXRhYmluZGV4ID8gMCA6IHRhYmluZGV4KzJcIlxyXG4gICAgICAgICAgIChjbGlja2VkKT1cIm9uQ2FuY2VsKClcIj5cclxuPC9lYy1idXR0b24+XHJcbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@ngx-translate/core";
|
|
5
|
+
export class WizardProgressComponent {
|
|
6
|
+
constructor() { }
|
|
7
|
+
}
|
|
8
|
+
WizardProgressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: WizardProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
+
WizardProgressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: WizardProgressComponent, selector: "ec-wizard-progress", inputs: { tabGroup: "tabGroup", currentTab: "currentTab" }, ngImport: i0, template: "<div *ngFor=\"let tab of tabGroup?.items; index as index; first as isFirst; last as isLast\"\r\n class=\"progress-tab\"\r\n [class.ml-2]=\"!isFirst\"\r\n [class.is-active]=\"currentTab?.id === tab.id\">\r\n\r\n <i *ngIf=\"tab.completed\"\r\n class=\"ec-icon icon-check-circle mr-1 font-color-success\"></i>\r\n <span *ngIf=\"!tab.completed\">{{index+1}}. </span>\r\n <span>{{tab.label | translate}}</span>\r\n <i *ngIf=\"!isLast\"\r\n class=\"ec-icon icon-angle-down rotate-270 ml-2\"></i>\r\n</div>", styles: [":host{display:flex;align-items:center;padding:0 1rem}.progress-tab{display:flex;align-items:center}.progress-tab.is-active{font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: WizardProgressComponent, decorators: [{
|
|
11
|
+
type: Component,
|
|
12
|
+
args: [{ selector: 'ec-wizard-progress', template: "<div *ngFor=\"let tab of tabGroup?.items; index as index; first as isFirst; last as isLast\"\r\n class=\"progress-tab\"\r\n [class.ml-2]=\"!isFirst\"\r\n [class.is-active]=\"currentTab?.id === tab.id\">\r\n\r\n <i *ngIf=\"tab.completed\"\r\n class=\"ec-icon icon-check-circle mr-1 font-color-success\"></i>\r\n <span *ngIf=\"!tab.completed\">{{index+1}}. </span>\r\n <span>{{tab.label | translate}}</span>\r\n <i *ngIf=\"!isLast\"\r\n class=\"ec-icon icon-angle-down rotate-270 ml-2\"></i>\r\n</div>", styles: [":host{display:flex;align-items:center;padding:0 1rem}.progress-tab{display:flex;align-items:center}.progress-tab.is-active{font-weight:700}\n"] }]
|
|
13
|
+
}], ctorParameters: function () { return []; }, propDecorators: { tabGroup: [{
|
|
14
|
+
type: Input
|
|
15
|
+
}], currentTab: [{
|
|
16
|
+
type: Input
|
|
17
|
+
}] } });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXByb2dyZXNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvd2l6YXJkL3dpemFyZC1wcm9ncmVzcy93aXphcmQtcHJvZ3Jlc3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC93aXphcmQvd2l6YXJkLXByb2dyZXNzL3dpemFyZC1wcm9ncmVzcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVNqRCxNQUFNLE9BQU8sdUJBQXVCO0lBS2xDLGdCQUFnQixDQUFDOztvSEFMTix1QkFBdUI7d0dBQXZCLHVCQUF1QixzSENUcEMsd2hCQVdNOzJGREZPLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxvQkFBb0I7MEVBTWQsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZHcm91cCB9IGZyb20gJy4uLy4uLy4uL2NvbnRyb2xzL25hdmlnYXRpb24vbmF2LWdyb3VwJztcclxuaW1wb3J0IHsgV2l6YXJkVGFiIH0gZnJvbSAnLi4vd2l6YXJkLWJhc2Uvd2l6YXJkLWJhc2UuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtd2l6YXJkLXByb2dyZXNzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd2l6YXJkLXByb2dyZXNzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93aXphcmQtcHJvZ3Jlc3MuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV2l6YXJkUHJvZ3Jlc3NDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdGFiR3JvdXA/OiBOYXZHcm91cDtcclxuICBASW5wdXQoKSBwdWJsaWMgY3VycmVudFRhYj86IFdpemFyZFRhYjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxufVxyXG4iLCI8ZGl2ICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiR3JvdXA/Lml0ZW1zOyBpbmRleCBhcyBpbmRleDsgZmlyc3QgYXMgaXNGaXJzdDsgbGFzdCBhcyBpc0xhc3RcIlxyXG4gICAgIGNsYXNzPVwicHJvZ3Jlc3MtdGFiXCJcclxuICAgICBbY2xhc3MubWwtMl09XCIhaXNGaXJzdFwiXHJcbiAgICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJjdXJyZW50VGFiPy5pZCA9PT0gdGFiLmlkXCI+XHJcblxyXG4gICA8aSAqbmdJZj1cInRhYi5jb21wbGV0ZWRcIlxyXG4gICAgICBjbGFzcz1cImVjLWljb24gaWNvbi1jaGVjay1jaXJjbGUgbXItMSBmb250LWNvbG9yLXN1Y2Nlc3NcIj48L2k+XHJcbiAgIDxzcGFuICpuZ0lmPVwiIXRhYi5jb21wbGV0ZWRcIj57e2luZGV4KzF9fS4mbmJzcDs8L3NwYW4+XHJcbiAgIDxzcGFuPnt7dGFiLmxhYmVsIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgIDxpICpuZ0lmPVwiIWlzTGFzdFwiXHJcbiAgICAgIGNsYXNzPVwiZWMtaWNvbiBpY29uLWFuZ2xlLWRvd24gcm90YXRlLTI3MCBtbC0yXCI+PC9pPlxyXG48L2Rpdj4iXX0=
|
|
File without changes
|