@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
@@ -0,0 +1,46 @@
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
import * as i1 from "../avatar/avatar.service";
|
4
|
+
import * as i2 from "@angular/common";
|
5
|
+
import * as i3 from "../../controls/dropdown/dropdown.component";
|
6
|
+
import * as i4 from "../avatar/avatar.component";
|
7
|
+
export class AppBarComponent {
|
8
|
+
constructor(avatarService) {
|
9
|
+
this.avatarService = avatarService;
|
10
|
+
this.userMenuItems = [];
|
11
|
+
this.userMenuWidth = 0;
|
12
|
+
this.userMenuMinWidth = 160;
|
13
|
+
this.userMenuTabindex = 0;
|
14
|
+
this.iconPath = '/assets/images/icon.svg';
|
15
|
+
this.menuItems = [];
|
16
|
+
this.userItem = [];
|
17
|
+
}
|
18
|
+
ngOnChanges() {
|
19
|
+
if (this.user) {
|
20
|
+
this.userItem[0] = { label: this.avatarService.getAvatarLabels(this.user).full || '', display: 'heading' };
|
21
|
+
}
|
22
|
+
else {
|
23
|
+
this.userItem = [];
|
24
|
+
}
|
25
|
+
this.menuItems = [...this.userItem, ...this.userMenuItems];
|
26
|
+
}
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppBarComponent, deps: [{ token: i1.AvatarService }], target: i0.ɵɵFactoryTarget.Component }); }
|
28
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AppBarComponent, selector: "ec-app-bar", inputs: { user: "user", userMenuItems: "userMenuItems", userMenuWidth: "userMenuWidth", userMenuMinWidth: "userMenuMinWidth", userMenuTabindex: "userMenuTabindex", iconPath: "iconPath" }, usesOnChanges: true, ngImport: i0, template: "<section class=\"logo-container\">\r\n <img src=\"{{iconPath}}\"\r\n alt=\"EnergyCAP Platform\">\r\n</section>\r\n\r\n<section class=\"title-container\">\r\n <ng-content select=\".app-bar-title\"></ng-content>\r\n</section>\r\n\r\n<section class=\"actions-container\">\r\n <ng-content select=\".app-bar-actions\"></ng-content>\r\n <ec-dropdown id=\"AppBarUserMenu\"\r\n *ngIf=\"userMenuItems.length; else avatar\"\r\n [items]=\"menuItems\"\r\n [buttonCustomTemplate]=\"avatar\"\r\n [showArrow]=\"false\"\r\n [menuWidth]=\"userMenuWidth\"\r\n [menuMinWidth]=\"userMenuMinWidth\"\r\n [tabindex]=\"userMenuTabindex\"></ec-dropdown>\r\n</section>\r\n\r\n<ng-template #avatar>\r\n <ec-avatar [user]=\"user\"></ec-avatar>\r\n</ng-template>", styles: [":host{display:flex;height:3rem;align-items:center;width:100%;padding:0 .75rem 0 1rem;background-color:var(--ec-background-color);position:relative;z-index:var(--ec-z-index-navbar)}:host ::ng-deep .app-bar-actions{display:flex;align-items:center;justify-content:flex-end;margin-right:.25rem}section{flex:1 1}.logo-container img{width:2rem;height:2rem}.title-container{text-align:center}.actions-container{display:flex;justify-content:flex-end}#AppBarUserMenu ::ng-deep ec-button{--ec-border-radius: 50%}#AppBarUserMenu ::ng-deep ec-button.active>.ec-button-custom{background-color:transparent;border-color:var(--ec-color-primary-light)}#AppBarUserMenu ::ng-deep ec-button .ec-button-custom:focus{background-color:var(--ec-background-color)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.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: i4.AvatarComponent, selector: "ec-avatar", inputs: ["user"] }] }); }
|
29
|
+
}
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppBarComponent, decorators: [{
|
31
|
+
type: Component,
|
32
|
+
args: [{ selector: 'ec-app-bar', template: "<section class=\"logo-container\">\r\n <img src=\"{{iconPath}}\"\r\n alt=\"EnergyCAP Platform\">\r\n</section>\r\n\r\n<section class=\"title-container\">\r\n <ng-content select=\".app-bar-title\"></ng-content>\r\n</section>\r\n\r\n<section class=\"actions-container\">\r\n <ng-content select=\".app-bar-actions\"></ng-content>\r\n <ec-dropdown id=\"AppBarUserMenu\"\r\n *ngIf=\"userMenuItems.length; else avatar\"\r\n [items]=\"menuItems\"\r\n [buttonCustomTemplate]=\"avatar\"\r\n [showArrow]=\"false\"\r\n [menuWidth]=\"userMenuWidth\"\r\n [menuMinWidth]=\"userMenuMinWidth\"\r\n [tabindex]=\"userMenuTabindex\"></ec-dropdown>\r\n</section>\r\n\r\n<ng-template #avatar>\r\n <ec-avatar [user]=\"user\"></ec-avatar>\r\n</ng-template>", styles: [":host{display:flex;height:3rem;align-items:center;width:100%;padding:0 .75rem 0 1rem;background-color:var(--ec-background-color);position:relative;z-index:var(--ec-z-index-navbar)}:host ::ng-deep .app-bar-actions{display:flex;align-items:center;justify-content:flex-end;margin-right:.25rem}section{flex:1 1}.logo-container img{width:2rem;height:2rem}.title-container{text-align:center}.actions-container{display:flex;justify-content:flex-end}#AppBarUserMenu ::ng-deep ec-button{--ec-border-radius: 50%}#AppBarUserMenu ::ng-deep ec-button.active>.ec-button-custom{background-color:transparent;border-color:var(--ec-color-primary-light)}#AppBarUserMenu ::ng-deep ec-button .ec-button-custom:focus{background-color:var(--ec-background-color)}\n"] }]
|
33
|
+
}], ctorParameters: () => [{ type: i1.AvatarService }], propDecorators: { user: [{
|
34
|
+
type: Input
|
35
|
+
}], userMenuItems: [{
|
36
|
+
type: Input
|
37
|
+
}], userMenuWidth: [{
|
38
|
+
type: Input
|
39
|
+
}], userMenuMinWidth: [{
|
40
|
+
type: Input
|
41
|
+
}], userMenuTabindex: [{
|
42
|
+
type: Input
|
43
|
+
}], iconPath: [{
|
44
|
+
type: Input
|
45
|
+
}] } });
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS9hcHAtYmFyL2FwcC1iYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvYXBwLWJhci9hcHAtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVNUQsTUFBTSxPQUFPLGVBQWU7SUFZMUIsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFWdkMsa0JBQWEsR0FBZSxFQUFFLENBQUM7UUFDL0Isa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIscUJBQWdCLEdBQUcsR0FBRyxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQixhQUFRLEdBQUcseUJBQXlCLENBQUM7UUFFOUMsY0FBUyxHQUFlLEVBQUUsQ0FBQTtRQUVsQixhQUFRLEdBQWUsRUFBRSxDQUFDO0lBRWtCLENBQUM7SUFFOUMsV0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBQyxDQUFDO1FBQzNHLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0QsQ0FBQzsrR0F0QlUsZUFBZTttR0FBZixlQUFlLG1RQ1Y1Qiw0MEJBdUJjOzs0RkRiRCxlQUFlO2tCQUwzQixTQUFTOytCQUNFLFlBQVk7a0ZBS2IsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICcuLi8uLi9jb250cm9scy9tZW51L21lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXZhdGFyVXNlciB9IGZyb20gJy4uL2F2YXRhci9hdmF0YXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXZhdGFyU2VydmljZSB9IGZyb20gJy4uL2F2YXRhci9hdmF0YXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLWFwcC1iYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hcHAtYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcEJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgdXNlcj86IEF2YXRhclVzZXI7XHJcbiAgQElucHV0KCkgdXNlck1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHVzZXJNZW51V2lkdGggPSAwO1xyXG4gIEBJbnB1dCgpIHVzZXJNZW51TWluV2lkdGggPSAxNjA7XHJcbiAgQElucHV0KCkgdXNlck1lbnVUYWJpbmRleCA9IDA7XHJcbiAgQElucHV0KCkgaWNvblBhdGggPSAnL2Fzc2V0cy9pbWFnZXMvaWNvbi5zdmcnO1xyXG4gIFxyXG4gIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdXHJcblxyXG4gIHByaXZhdGUgdXNlckl0ZW06IE1lbnVJdGVtW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdmF0YXJTZXJ2aWNlOiBBdmF0YXJTZXJ2aWNlKSB7IH1cclxuXHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudXNlcikge1xyXG4gICAgICB0aGlzLnVzZXJJdGVtWzBdID0ge2xhYmVsOiB0aGlzLmF2YXRhclNlcnZpY2UuZ2V0QXZhdGFyTGFiZWxzKHRoaXMudXNlcikuZnVsbCB8fCAnJywgZGlzcGxheTogJ2hlYWRpbmcnfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXNlckl0ZW0gPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm1lbnVJdGVtcyA9IFsuLi50aGlzLnVzZXJJdGVtLCAuLi50aGlzLnVzZXJNZW51SXRlbXNdO1xyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cImxvZ28tY29udGFpbmVyXCI+XHJcbiAgPGltZyBzcmM9XCJ7e2ljb25QYXRofX1cIlxyXG4gICAgICAgYWx0PVwiRW5lcmd5Q0FQIFBsYXRmb3JtXCI+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxzZWN0aW9uIGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XHJcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLmFwcC1iYXItdGl0bGVcIj48L25nLWNvbnRlbnQ+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxzZWN0aW9uIGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cclxuICA8bmctY29udGVudCBzZWxlY3Q9XCIuYXBwLWJhci1hY3Rpb25zXCI+PC9uZy1jb250ZW50PlxyXG4gIDxlYy1kcm9wZG93biBpZD1cIkFwcEJhclVzZXJNZW51XCJcclxuICAgICAgICAgICAgICAgKm5nSWY9XCJ1c2VyTWVudUl0ZW1zLmxlbmd0aDsgZWxzZSBhdmF0YXJcIlxyXG4gICAgICAgICAgICAgICBbaXRlbXNdPVwibWVudUl0ZW1zXCJcclxuICAgICAgICAgICAgICAgW2J1dHRvbkN1c3RvbVRlbXBsYXRlXT1cImF2YXRhclwiXHJcbiAgICAgICAgICAgICAgIFtzaG93QXJyb3ddPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICBbbWVudVdpZHRoXT1cInVzZXJNZW51V2lkdGhcIlxyXG4gICAgICAgICAgICAgICBbbWVudU1pbldpZHRoXT1cInVzZXJNZW51TWluV2lkdGhcIlxyXG4gICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidXNlck1lbnVUYWJpbmRleFwiPjwvZWMtZHJvcGRvd24+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYXZhdGFyPlxyXG4gIDxlYy1hdmF0YXIgW3VzZXJdPVwidXNlclwiPjwvZWMtYXZhdGFyPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
@@ -0,0 +1,67 @@
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
import * as i1 from "./avatar.service";
|
4
|
+
export class AvatarComponent {
|
5
|
+
constructor(el, renderer, avatarService) {
|
6
|
+
this.el = el;
|
7
|
+
this.renderer = renderer;
|
8
|
+
this.avatarService = avatarService;
|
9
|
+
/** Color map base on the first let of the label */
|
10
|
+
this.colors = {
|
11
|
+
abcde01: 'red',
|
12
|
+
fghij23: 'orange',
|
13
|
+
klmn15: 'yellow',
|
14
|
+
opqr67: 'green',
|
15
|
+
stuv8: 'blue',
|
16
|
+
wxyz9: 'purple'
|
17
|
+
};
|
18
|
+
/** Label is defaulted to HI in the rare case the user does not have a first name, last name, email or username */
|
19
|
+
this.label = 'HI';
|
20
|
+
/** Track the current CSS class so we can remove it if the user changes before setting the next one */
|
21
|
+
this.currentCSSClass = '';
|
22
|
+
}
|
23
|
+
ngOnChanges(changes) {
|
24
|
+
if (!changes.user.firstChange && !this.user) {
|
25
|
+
console.error(`AvatarComponent expected a value for the [user] input but got ${this.user} instead.`);
|
26
|
+
}
|
27
|
+
this.updateLabel();
|
28
|
+
this.updateColor();
|
29
|
+
}
|
30
|
+
/**
|
31
|
+
* Update the Avatar label
|
32
|
+
*
|
33
|
+
*/
|
34
|
+
updateLabel() {
|
35
|
+
if (this.user) {
|
36
|
+
this.label = this.avatarService.getAvatarLabels(this.user).abbreviation;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
/**
|
40
|
+
* Sets the color of the Avatar based on the first letter of the label. If the label is HI or is not
|
41
|
+
* a letter, default to gray.
|
42
|
+
*/
|
43
|
+
updateColor() {
|
44
|
+
if (this.currentCSSClass) {
|
45
|
+
this.renderer.removeClass(this.el.nativeElement, this.currentCSSClass);
|
46
|
+
}
|
47
|
+
let color = 'gray';
|
48
|
+
if (this.label !== 'HI' && this.label) {
|
49
|
+
for (let key in this.colors) {
|
50
|
+
if (key.includes(this.label[0].toLowerCase())) {
|
51
|
+
color = this.colors[key];
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
this.currentCSSClass = `avatar-${color}`;
|
56
|
+
this.renderer.addClass(this.el.nativeElement, this.currentCSSClass);
|
57
|
+
}
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AvatarComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.AvatarService }], target: i0.ɵɵFactoryTarget.Component }); }
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AvatarComponent, selector: "ec-avatar", inputs: { user: "user" }, usesOnChanges: true, ngImport: i0, template: '{{label}}', isInline: true, styles: [":host{display:flex;width:2.25rem;height:2.25rem;align-items:center;justify-content:center;font-size:1rem;line-height:1.25rem;border-radius:50%;color:var(--ec-color-primary-light);text-transform:uppercase}:host.avatar-red{background-color:var(--ec-avatar-background-color-red, var(--ec-color-red-5));color:var(--ec-avatar-color-red, var(--ec-color-primary-light))}:host.avatar-orange{background-color:var(--ec-avatar-background-color-orange, var(--ec-color-orange-5));color:var(--ec-avatar-color-orange, var(--ec-color-primary-light))}:host.avatar-yellow{background-color:var(--ec-avatar-background-color-yellow, var(--ec-color-yellow-5));color:var(--ec-avatar-color-yellow, var(--ec-color-secondary-dark))}:host.avatar-green{background-color:var(--ec-avatar-background-color-green, var(--ec-color-green-5));color:var(--ec-avatar-color-green, var(--ec-color-primary-light))}:host.avatar-blue{background-color:var(--ec-avatar-background-color-blue, var(--ec-color-blue-5));color:var(--ec-avatar-color-blue, var(--ec-color-primary-light))}:host.avatar-purple{background-color:var(--ec-avatar-background-color-purple, var(--ec-color-purple-5));color:var(--ec-avatar-color-purple, var(--ec-color-primary-light))}:host.avatar-gray{background-color:var(--ec-avatar-background-color-gray, var(--ec-color-gray-3));color:var(--ec-avatar-color-gray, var(--ec-color-primary-light))}\n"] }); }
|
60
|
+
}
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AvatarComponent, decorators: [{
|
62
|
+
type: Component,
|
63
|
+
args: [{ selector: 'ec-avatar', template: '{{label}}', styles: [":host{display:flex;width:2.25rem;height:2.25rem;align-items:center;justify-content:center;font-size:1rem;line-height:1.25rem;border-radius:50%;color:var(--ec-color-primary-light);text-transform:uppercase}:host.avatar-red{background-color:var(--ec-avatar-background-color-red, var(--ec-color-red-5));color:var(--ec-avatar-color-red, var(--ec-color-primary-light))}:host.avatar-orange{background-color:var(--ec-avatar-background-color-orange, var(--ec-color-orange-5));color:var(--ec-avatar-color-orange, var(--ec-color-primary-light))}:host.avatar-yellow{background-color:var(--ec-avatar-background-color-yellow, var(--ec-color-yellow-5));color:var(--ec-avatar-color-yellow, var(--ec-color-secondary-dark))}:host.avatar-green{background-color:var(--ec-avatar-background-color-green, var(--ec-color-green-5));color:var(--ec-avatar-color-green, var(--ec-color-primary-light))}:host.avatar-blue{background-color:var(--ec-avatar-background-color-blue, var(--ec-color-blue-5));color:var(--ec-avatar-color-blue, var(--ec-color-primary-light))}:host.avatar-purple{background-color:var(--ec-avatar-background-color-purple, var(--ec-color-purple-5));color:var(--ec-avatar-color-purple, var(--ec-color-primary-light))}:host.avatar-gray{background-color:var(--ec-avatar-background-color-gray, var(--ec-color-gray-3));color:var(--ec-avatar-color-gray, var(--ec-color-primary-light))}\n"] }]
|
64
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.AvatarService }], propDecorators: { user: [{
|
65
|
+
type: Input
|
66
|
+
}] } });
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2F2YXRhci9hdmF0YXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUF1QyxNQUFNLGVBQWUsQ0FBQzs7O0FBZWxHLE1BQU0sT0FBTyxlQUFlO0lBb0IxQixZQUFvQixFQUFjLEVBQVUsUUFBbUIsRUFBVSxhQUE0QjtRQUFqRixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBbEJyRyxtREFBbUQ7UUFDM0MsV0FBTSxHQUE0QjtZQUN4QyxPQUFPLEVBQUUsS0FBSztZQUNkLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE1BQU0sRUFBRSxPQUFPO1lBQ2YsS0FBSyxFQUFFLE1BQU07WUFDYixLQUFLLEVBQUUsUUFBUTtTQUNoQixDQUFBO1FBSUQsa0hBQWtIO1FBQzNHLFVBQUssR0FBRyxJQUFJLENBQUM7UUFFcEIsc0dBQXNHO1FBQzlGLG9CQUFlLEdBQUcsRUFBRSxDQUFDO0lBRTJFLENBQUM7SUFFekcsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM1QyxPQUFPLENBQUMsS0FBSyxDQUFDLGlFQUFpRSxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQztRQUN2RyxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFdBQVc7UUFDakIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEMsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzVCLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDOUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBVSxLQUFLLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdEUsQ0FBQzsrR0E1RFUsZUFBZTttR0FBZixlQUFlLGdHQUhoQixXQUFXOzs0RkFHVixlQUFlO2tCQUwzQixTQUFTOytCQUNFLFdBQVcsWUFDWCxXQUFXO21JQWVaLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEF2YXRhclNlcnZpY2UgfSBmcm9tICcuL2F2YXRhci5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXZhdGFyVXNlciB7XHJcbiAgZmlyc3ROYW1lPzogc3RyaW5nO1xyXG4gIGxhc3ROYW1lPzogc3RyaW5nO1xyXG4gIGVtYWlsPzogc3RyaW5nO1xyXG4gIHVzZXJuYW1lPzogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLWF2YXRhcicsXHJcbiAgdGVtcGxhdGU6ICd7e2xhYmVsfX0nLFxyXG4gIHN0eWxlVXJsczogWycuL2F2YXRhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdmF0YXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICAvKiogQ29sb3IgbWFwIGJhc2Ugb24gdGhlIGZpcnN0IGxldCBvZiB0aGUgbGFiZWwgKi9cclxuICBwcml2YXRlIGNvbG9yczogeyBbazogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICBhYmNkZTAxOiAncmVkJyxcclxuICAgIGZnaGlqMjM6ICdvcmFuZ2UnLFxyXG4gICAga2xtbjE1OiAneWVsbG93JyxcclxuICAgIG9wcXI2NzogJ2dyZWVuJyxcclxuICAgIHN0dXY4OiAnYmx1ZScsXHJcbiAgICB3eHl6OTogJ3B1cnBsZSdcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHVzZXIhOiBBdmF0YXJVc2VyO1xyXG5cclxuICAvKiogTGFiZWwgaXMgZGVmYXVsdGVkIHRvIEhJIGluIHRoZSByYXJlIGNhc2UgdGhlIHVzZXIgZG9lcyBub3QgaGF2ZSBhIGZpcnN0IG5hbWUsIGxhc3QgbmFtZSwgZW1haWwgb3IgdXNlcm5hbWUgKi9cclxuICBwdWJsaWMgbGFiZWwgPSAnSEknO1xyXG5cclxuICAvKiogVHJhY2sgdGhlIGN1cnJlbnQgQ1NTIGNsYXNzIHNvIHdlIGNhbiByZW1vdmUgaXQgaWYgdGhlIHVzZXIgY2hhbmdlcyBiZWZvcmUgc2V0dGluZyB0aGUgbmV4dCBvbmUgKi9cclxuICBwcml2YXRlIGN1cnJlbnRDU1NDbGFzcyA9ICcnO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgYXZhdGFyU2VydmljZTogQXZhdGFyU2VydmljZSkge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYgKCFjaGFuZ2VzLnVzZXIuZmlyc3RDaGFuZ2UgJiYgIXRoaXMudXNlcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBBdmF0YXJDb21wb25lbnQgZXhwZWN0ZWQgYSB2YWx1ZSBmb3IgdGhlIFt1c2VyXSBpbnB1dCBidXQgZ290ICR7dGhpcy51c2VyfSBpbnN0ZWFkLmApO1xyXG4gICAgfSBcclxuICAgICAgXHJcbiAgICB0aGlzLnVwZGF0ZUxhYmVsKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7ICAgIFxyXG4gIH1cclxuXHJcbiAgLyoqIFxyXG4gICAqIFVwZGF0ZSB0aGUgQXZhdGFyIGxhYmVsIFxyXG4gICAqIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlTGFiZWwoKSB7XHJcbiAgICBpZiAodGhpcy51c2VyKSB7XHJcbiAgICAgIHRoaXMubGFiZWwgPSB0aGlzLmF2YXRhclNlcnZpY2UuZ2V0QXZhdGFyTGFiZWxzKHRoaXMudXNlcikuYWJicmV2aWF0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFxyXG4gICAqIFNldHMgdGhlIGNvbG9yIG9mIHRoZSBBdmF0YXIgYmFzZWQgb24gdGhlIGZpcnN0IGxldHRlciBvZiB0aGUgbGFiZWwuIElmIHRoZSBsYWJlbCBpcyBISSBvciBpcyBub3RcclxuICAgKiBhIGxldHRlciwgZGVmYXVsdCB0byBncmF5LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlQ29sb3IoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50Q1NTQ2xhc3MpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMuY3VycmVudENTU0NsYXNzKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY29sb3IgPSAnZ3JheSc7XHJcbiAgICBpZiAodGhpcy5sYWJlbCAhPT0gJ0hJJyAmJiB0aGlzLmxhYmVsKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmNvbG9ycykge1xyXG4gICAgICAgIGlmIChrZXkuaW5jbHVkZXModGhpcy5sYWJlbFswXS50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgY29sb3IgPSB0aGlzLmNvbG9yc1trZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jdXJyZW50Q1NTQ2xhc3MgPSBgYXZhdGFyLSR7Y29sb3J9YDtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLmN1cnJlbnRDU1NDbGFzcyk7XHJcbiAgfVxyXG59Il19
|
@@ -0,0 +1,64 @@
|
|
1
|
+
import { Injectable } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export class AvatarService {
|
4
|
+
/**
|
5
|
+
* Return the full and abbreviated labels based on the users first name, email, or username. If the user has a first or last name use
|
6
|
+
* either a combination of the first and last name, or the first two characters of the name that is defined. If the user does
|
7
|
+
* not have a first or last name, trying using the first two characters of the email, or the first two characters of the
|
8
|
+
* username as a last ditch effort.
|
9
|
+
* @param user
|
10
|
+
* @returns
|
11
|
+
*/
|
12
|
+
getAvatarLabels(user) {
|
13
|
+
let full = undefined;
|
14
|
+
let abbreviation = 'HI';
|
15
|
+
let trimmedUser = this.trimUser(user);
|
16
|
+
if (trimmedUser.firstName || trimmedUser.lastName) {
|
17
|
+
if (trimmedUser.firstName) {
|
18
|
+
abbreviation = trimmedUser.firstName.slice(0, 1);
|
19
|
+
full = trimmedUser.firstName;
|
20
|
+
if (trimmedUser.lastName) {
|
21
|
+
full += ` ${trimmedUser.lastName}`;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
else {
|
25
|
+
abbreviation = trimmedUser.lastName.slice(0, 1);
|
26
|
+
full = trimmedUser.lastName;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
else if (trimmedUser.email) {
|
30
|
+
abbreviation = trimmedUser.email.slice(0, 1);
|
31
|
+
full = trimmedUser.email;
|
32
|
+
}
|
33
|
+
else if (trimmedUser.username) {
|
34
|
+
abbreviation = trimmedUser.username.slice(0, 1);
|
35
|
+
full = trimmedUser.username;
|
36
|
+
}
|
37
|
+
return {
|
38
|
+
abbreviation: abbreviation,
|
39
|
+
full: full
|
40
|
+
};
|
41
|
+
}
|
42
|
+
/**
|
43
|
+
* Return a new user object that has all of the properties of the existing user
|
44
|
+
* with any null, undefined, or whitespace values removed
|
45
|
+
*/
|
46
|
+
trimUser(user) {
|
47
|
+
let trimmedUser = {
|
48
|
+
email: (user.email || '').trim(),
|
49
|
+
firstName: (user.firstName || '').trim(),
|
50
|
+
lastName: (user.lastName || '').trim(),
|
51
|
+
username: (user.username || '').trim()
|
52
|
+
};
|
53
|
+
return trimmedUser;
|
54
|
+
}
|
55
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AvatarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
56
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AvatarService, providedIn: 'root' }); }
|
57
|
+
}
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AvatarService, decorators: [{
|
59
|
+
type: Injectable,
|
60
|
+
args: [{
|
61
|
+
providedIn: 'root'
|
62
|
+
}]
|
63
|
+
}] });
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS9hdmF0YXIvYXZhdGFyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFXM0MsTUFBTSxPQUFPLGFBQWE7SUFFeEI7Ozs7Ozs7T0FPRztJQUNJLGVBQWUsQ0FBQyxJQUFnQjtRQUNyQyxJQUFJLElBQUksR0FBdUIsU0FBUyxDQUFDO1FBQ3pDLElBQUksWUFBWSxHQUFXLElBQUksQ0FBQztRQUVoQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksV0FBVyxDQUFDLFNBQVMsSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEQsSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzFCLFlBQVksR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO2dCQUU3QixJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDekIsSUFBSSxJQUFJLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNyQyxDQUFDO1lBQ0gsQ0FBQztpQkFDSSxDQUFDO2dCQUNKLFlBQVksR0FBRyxXQUFXLENBQUMsUUFBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO2FBQ0ksSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsWUFBWSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3QyxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUMzQixDQUFDO2FBQ0ksSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDOUIsWUFBWSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRCxJQUFJLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUM5QixDQUFDO1FBRUQsT0FBTztZQUNMLFlBQVksRUFBRSxZQUFZO1lBQzFCLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQTtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxRQUFRLENBQUMsSUFBZ0I7UUFDL0IsSUFBSSxXQUFXLEdBQWU7WUFDNUIsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDaEMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDeEMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDdEMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUU7U0FDdkMsQ0FBQTtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7K0dBeERVLGFBQWE7bUhBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBdmF0YXJVc2VyIH0gZnJvbSAnLi9hdmF0YXIuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCB0eXBlIEF2YXRhckxhYmVscyA9IHtcclxuICBhYmJyZXZpYXRpb246IHN0cmluZztcclxuICBmdWxsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF2YXRhclNlcnZpY2Uge1xyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gdGhlIGZ1bGwgYW5kIGFiYnJldmlhdGVkIGxhYmVscyBiYXNlZCBvbiB0aGUgdXNlcnMgZmlyc3QgbmFtZSwgZW1haWwsIG9yIHVzZXJuYW1lLiBJZiB0aGUgdXNlciBoYXMgYSBmaXJzdCBvciBsYXN0IG5hbWUgdXNlIFxyXG4gICAqIGVpdGhlciBhIGNvbWJpbmF0aW9uIG9mIHRoZSBmaXJzdCBhbmQgbGFzdCBuYW1lLCBvciB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG5hbWUgdGhhdCBpcyBkZWZpbmVkLiBJZiB0aGUgdXNlciBkb2VzXHJcbiAgICogbm90IGhhdmUgYSBmaXJzdCBvciBsYXN0IG5hbWUsIHRyeWluZyB1c2luZyB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YgdGhlIGVtYWlsLCBvciB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YgdGhlIFxyXG4gICAqIHVzZXJuYW1lIGFzIGEgbGFzdCBkaXRjaCBlZmZvcnQuXHJcbiAgICogQHBhcmFtIHVzZXIgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgcHVibGljIGdldEF2YXRhckxhYmVscyh1c2VyOiBBdmF0YXJVc2VyKTogQXZhdGFyTGFiZWxzIHtcclxuICAgIGxldCBmdWxsOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICBsZXQgYWJicmV2aWF0aW9uOiBzdHJpbmcgPSAnSEknO1xyXG5cclxuICAgIGxldCB0cmltbWVkVXNlciA9IHRoaXMudHJpbVVzZXIodXNlcik7XHJcbiAgICBpZiAodHJpbW1lZFVzZXIuZmlyc3ROYW1lIHx8IHRyaW1tZWRVc2VyLmxhc3ROYW1lKSB7XHJcbiAgICAgIGlmICh0cmltbWVkVXNlci5maXJzdE5hbWUpIHtcclxuICAgICAgICBhYmJyZXZpYXRpb24gPSB0cmltbWVkVXNlci5maXJzdE5hbWUuc2xpY2UoMCwgMSk7XHJcbiAgICAgICAgZnVsbCA9IHRyaW1tZWRVc2VyLmZpcnN0TmFtZTtcclxuXHJcbiAgICAgICAgaWYgKHRyaW1tZWRVc2VyLmxhc3ROYW1lKSB7XHJcbiAgICAgICAgICBmdWxsICs9IGAgJHt0cmltbWVkVXNlci5sYXN0TmFtZX1gO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhYmJyZXZpYXRpb24gPSB0cmltbWVkVXNlci5sYXN0TmFtZSEuc2xpY2UoMCwgMSk7XHJcbiAgICAgICAgZnVsbCA9IHRyaW1tZWRVc2VyLmxhc3ROYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0cmltbWVkVXNlci5lbWFpbCkge1xyXG4gICAgICBhYmJyZXZpYXRpb24gPSB0cmltbWVkVXNlci5lbWFpbC5zbGljZSgwLCAxKTtcclxuICAgICAgZnVsbCA9IHRyaW1tZWRVc2VyLmVtYWlsO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHJpbW1lZFVzZXIudXNlcm5hbWUpIHtcclxuICAgICAgYWJicmV2aWF0aW9uID0gdHJpbW1lZFVzZXIudXNlcm5hbWUuc2xpY2UoMCwgMSk7XHJcbiAgICAgIGZ1bGwgPSB0cmltbWVkVXNlci51c2VybmFtZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhYmJyZXZpYXRpb246IGFiYnJldmlhdGlvbixcclxuICAgICAgZnVsbDogZnVsbFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFxyXG4gICAqIFJldHVybiBhIG5ldyB1c2VyIG9iamVjdCB0aGF0IGhhcyBhbGwgb2YgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGV4aXN0aW5nIHVzZXJcclxuICAgKiB3aXRoIGFueSBudWxsLCB1bmRlZmluZWQsIG9yIHdoaXRlc3BhY2UgdmFsdWVzIHJlbW92ZWRcclxuICAgKi9cclxuICBwcml2YXRlIHRyaW1Vc2VyKHVzZXI6IEF2YXRhclVzZXIpOiBBdmF0YXJVc2VyIHtcclxuICAgIGxldCB0cmltbWVkVXNlcjogQXZhdGFyVXNlciA9IHtcclxuICAgICAgZW1haWw6ICh1c2VyLmVtYWlsIHx8ICcnKS50cmltKCksXHJcbiAgICAgIGZpcnN0TmFtZTogKHVzZXIuZmlyc3ROYW1lIHx8ICcnKS50cmltKCksXHJcbiAgICAgIGxhc3ROYW1lOiAodXNlci5sYXN0TmFtZSB8fCAnJykudHJpbSgpLFxyXG4gICAgICB1c2VybmFtZTogKHVzZXIudXNlcm5hbWUgfHwgJycpLnRyaW0oKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRyaW1tZWRVc2VyO1xyXG4gIH1cclxufVxyXG4iXX0=
|
@@ -0,0 +1,168 @@
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
2
|
+
import { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
|
3
|
+
import { Overlay } from '../view-overlay/view-overlay.component';
|
4
|
+
import { takeUntil } from 'rxjs/operators';
|
5
|
+
import { Subject } from 'rxjs';
|
6
|
+
import * as i0 from "@angular/core";
|
7
|
+
import * as i1 from "@angular/common";
|
8
|
+
import * as i2 from "@angular/forms";
|
9
|
+
import * as i3 from "../../controls/button/button.component";
|
10
|
+
import * as i4 from "../../controls/textbox/textbox.component";
|
11
|
+
import * as i5 from "../view-overlay/view-overlay.component";
|
12
|
+
import * as i6 from "../../controls/banner/banner.component";
|
13
|
+
import * as i7 from "../../controls/checkbox/checkbox.component";
|
14
|
+
import * as i8 from "@ngx-translate/core";
|
15
|
+
export class ConfirmDialogContext {
|
16
|
+
constructor() {
|
17
|
+
/** Id to distinguish between confirm component contexts emitted by the dialog service */
|
18
|
+
this.id = '';
|
19
|
+
/**
|
20
|
+
* Optional required flag for the textbox, will set
|
21
|
+
* a validator on the input if true
|
22
|
+
*/
|
23
|
+
this.textboxRequired = false;
|
24
|
+
/** Sets the textbox's uppercase parameter */
|
25
|
+
this.textboxUppercase = false;
|
26
|
+
/**
|
27
|
+
* Optional textbox height (in rows).
|
28
|
+
* Only applies to multi-line type.
|
29
|
+
* Default 3.
|
30
|
+
*/
|
31
|
+
this.textareaRows = 3;
|
32
|
+
/** Optional save button label */
|
33
|
+
this.saveLabel = 'Save'; // LOCO
|
34
|
+
/** Optional save button type */
|
35
|
+
this.saveButtonType = 'primary';
|
36
|
+
/** Optional cancel button label */
|
37
|
+
this.cancelLabel = 'Cancel'; // LOCO
|
38
|
+
/** Optional flag for hiding the cancel (secondary) button */
|
39
|
+
this.hideCancel = false;
|
40
|
+
/** When true, adds the submit tag to the save button so hitting enter triggers the save */
|
41
|
+
this.saveOnEnter = false;
|
42
|
+
/** Optional alternate save button label */
|
43
|
+
this.alternateSaveLabel = undefined;
|
44
|
+
/** Optional alternate save button type */
|
45
|
+
this.alternateSaveButtonType = undefined;
|
46
|
+
/**
|
47
|
+
* Used to know which save button was selected in case the calling component
|
48
|
+
* is utilizing the alternate save button
|
49
|
+
*/
|
50
|
+
this.saveSource = 'primary';
|
51
|
+
/** The message to be displayed while inlineConfirmAction is pending. */
|
52
|
+
this.inlineConfirmPendingMessage = '';
|
53
|
+
}
|
54
|
+
}
|
55
|
+
export class ConfirmComponent {
|
56
|
+
onOpen(openContext) {
|
57
|
+
this.context = openContext;
|
58
|
+
this.dialogId = openContext.id;
|
59
|
+
if (this.context.alternateSaveLabel) {
|
60
|
+
this.context.saveOnEnter = false;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
constructor() {
|
64
|
+
this.dialogId = 'Confirm';
|
65
|
+
/** Form Group to hold any form controls needed */
|
66
|
+
this.formGroup = new UntypedFormGroup({});
|
67
|
+
this.status = new Overlay('hasData');
|
68
|
+
this.showTextBox = false;
|
69
|
+
this.destroyed = new Subject();
|
70
|
+
this.onDialogSave = new EventEmitter();
|
71
|
+
this.onDialogCancel = new EventEmitter();
|
72
|
+
}
|
73
|
+
ngOnInit() {
|
74
|
+
this.addFormControls();
|
75
|
+
this.setValidations();
|
76
|
+
this.listenCheckBox();
|
77
|
+
}
|
78
|
+
onSave(source) {
|
79
|
+
this.formGroup.markAllAsTouched();
|
80
|
+
if (this.formGroup.valid) {
|
81
|
+
let formValues = this.formGroup.getRawValue();
|
82
|
+
if (formValues.textbox) {
|
83
|
+
this.context.textboxValue = formValues.textbox;
|
84
|
+
}
|
85
|
+
if (this.context.checkConfirm) {
|
86
|
+
this.context.checkboxValue = formValues.checkbox ? formValues.checkbox : false;
|
87
|
+
}
|
88
|
+
this.context.saveSource = source;
|
89
|
+
if (this.context.inlineConfirmAction) {
|
90
|
+
this.doInlineConfirmAction();
|
91
|
+
}
|
92
|
+
else {
|
93
|
+
this.onDialogSave.emit(this.context);
|
94
|
+
}
|
95
|
+
}
|
96
|
+
else if (this.context.validationErrorMessage) {
|
97
|
+
this.error = this.context.validationErrorMessage;
|
98
|
+
}
|
99
|
+
}
|
100
|
+
onCancel() {
|
101
|
+
this.onDialogCancel.emit();
|
102
|
+
}
|
103
|
+
ngOnDestroy() {
|
104
|
+
this.destroyed.next();
|
105
|
+
this.destroyed.complete();
|
106
|
+
}
|
107
|
+
listenCheckBox() {
|
108
|
+
this.formGroup.get('checkbox')?.valueChanges.pipe(takeUntil(this.destroyed)).subscribe(value => {
|
109
|
+
this.showTextBox = value;
|
110
|
+
this.setValidations();
|
111
|
+
});
|
112
|
+
}
|
113
|
+
setValidations() {
|
114
|
+
const showCheckBox = this.formGroup.get('checkbox');
|
115
|
+
const textBoxControl = this.formGroup.controls['textbox'];
|
116
|
+
if (showCheckBox) {
|
117
|
+
this.showTextBox ? textBoxControl?.enable() : textBoxControl?.disable();
|
118
|
+
}
|
119
|
+
else {
|
120
|
+
textBoxControl?.enable();
|
121
|
+
}
|
122
|
+
}
|
123
|
+
/**
|
124
|
+
* Adds the textbox form control to our form group if its configured to be visible
|
125
|
+
* Will also add the required validator if requested
|
126
|
+
*/
|
127
|
+
addFormControls() {
|
128
|
+
if (this.context.textboxType) {
|
129
|
+
let validators = [];
|
130
|
+
if (this.context.textboxRequired) {
|
131
|
+
validators.push(Validators.required);
|
132
|
+
}
|
133
|
+
if (this.context.textboxValidators) {
|
134
|
+
validators.push(...this.context.textboxValidators);
|
135
|
+
}
|
136
|
+
this.formGroup.addControl('textbox', new UntypedFormControl('', validators));
|
137
|
+
}
|
138
|
+
if (this.context.checkConfirm) {
|
139
|
+
this.showTextBox = false;
|
140
|
+
const checkboxControl = new UntypedFormControl('');
|
141
|
+
this.formGroup.addControl('checkbox', checkboxControl);
|
142
|
+
}
|
143
|
+
}
|
144
|
+
async doInlineConfirmAction() {
|
145
|
+
this.status.setStatus('pending', this.context.inlineConfirmPendingMessage);
|
146
|
+
let result = await this.context.inlineConfirmAction();
|
147
|
+
this.status.setStatus('noData', result.message, {
|
148
|
+
id: 'inlineConfirmClose',
|
149
|
+
label: 'Close',
|
150
|
+
icon: result.isSuccess ? 'icon-check-circle' : 'icon-error',
|
151
|
+
classlist: result.isSuccess ? 'font-color-success' : 'font-color-error',
|
152
|
+
onClick: () => { result.isSuccess ? this.onDialogSave.emit(this.context) : this.onDialogCancel.emit(); }
|
153
|
+
});
|
154
|
+
}
|
155
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
156
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ConfirmComponent, selector: "ec-confirm", inputs: { context: "context" }, outputs: { onDialogSave: "onDialogSave", onDialogCancel: "onDialogCancel" }, ngImport: i0, template: "<section ecOverlay\r\n [status]=\"status?.status\"\r\n [message]=\"status?.message\"\r\n [action]=\"status?.action\"\r\n [noDataTemplate]=\"inlineConfirmResult\"\r\n overlayClassList=\"p-0\"\r\n class=\"bg-body flex-grow d-flex\">\r\n <form [formGroup]=\"formGroup\" class=\"flex-grow flex-column confirm-content text-body-1\">\r\n <section class=\"flex-grow\">\r\n <h2 class=\"font-weight-bold mb-3\" *ngIf=\"context?.title\">{{context?.title}}</h2>\r\n <ec-banner *ngIf=\"error\" [text]=\"error | translate\" bannerStyle=\"normal\" class=\"mb-3\"></ec-banner>\r\n <div *ngIf=\"context?.message\" [innerHtml]=\"context?.message | translate\" class=\"mb-3\"></div>\r\n \r\n <ec-checkbox *ngIf=\"context?.checkConfirm\"\r\n [formModel]=\"formGroup.get('checkbox')\"\r\n name=\"confirmCheckbox\"\r\n [label]=\"context?.checkboxText\"\r\n [autofocus]=\"true\"\r\n ></ec-checkbox>\r\n <div *ngIf=\"showTextBox\" [innerHtml]=\"context.confirmLabel\" class=\"mb-3\"></div>\r\n <ec-textbox id=\"confirmTextbox\"\r\n *ngIf=\"(context?.textboxType && !context?.checkConfirm) || showTextBox\"\r\n [autofocus]=\"true\"\r\n [formModel]=\"formGroup.get('textbox')\"\r\n [required]=\"context?.textboxRequired\"\r\n [label]=\"context?.textboxLabel\"\r\n [type]=\"context?.textboxType\"\r\n [rows]=\"context?.textareaRows\"\r\n [placeholder]=\"context?.textboxPlaceholder\"\r\n [upperCase]=\"context?.textboxUppercase\">\r\n </ec-textbox>\r\n </section>\r\n <footer class=\"mt-auto flex-shrink d-flex py-2 flex-row-reverse\">\r\n <ec-button id=\"saveConfirmButton\"\r\n class=\"ml-2\"\r\n [type]=\"context?.saveButtonType ? context?.saveButtonType : 'primary'\"\r\n [label]=\"context?.saveLabel ? context?.saveLabel : 'Save'\"\r\n [autofocus]=\"!context?.textboxType\"\r\n [isSubmit]=\"context?.saveOnEnter\"\r\n (clicked)=\"onSave('primary')\">\r\n </ec-button>\r\n <ec-button id=\"alternateSaveConfirmButton\"\r\n *ngIf=\"context?.alternateSaveLabel\"\r\n class=\"ml-2\"\r\n [type]=\"context?.alternateSaveButtonType ? context?.alternateSaveButtonType : 'primary'\"\r\n [label]=\"context?.alternateSaveLabel\"\r\n (clicked)=\"onSave('alternate')\">\r\n </ec-button>\r\n <ec-button *ngIf=\"!context?.hideCancel\"\r\n id=\"cancelConfirmButton\"\r\n class=\"ml-auto\"\r\n type=\"secondary\"\r\n [label]=\"context?.cancelLabel ? context?.cancelLabel : 'Cancel'\"\r\n (clicked)=\"onCancel()\">\r\n </ec-button>\r\n </footer>\r\n </form>\r\n</section>\r\n\r\n<ng-template #inlineConfirmResult>\r\n <section class=\"flex-grow align-self-stretch confirm-content text-body-1\">\r\n <div class=\"d-flex\">\r\n <i class=\"ec-icon {{status?.action?.icon}} {{status?.action?.classlist}} inline-confirm-result-icon\"></i>\r\n <div [innerHTML]=\"status?.message | translate\"></div>\r\n </div>\r\n <div class=\"d-flex pt-2 mt-auto\">\r\n <ec-button id=\"inlineConfirmClose\"\r\n label=\"Close\"\r\n type=\"secondary\"\r\n class=\"ml-auto\"\r\n (clicked)=\"status?.action?.onClick!()\"\r\n [autofocus]=\"true\">\r\n </ec-button>\r\n </div>\r\n </section>\r\n</ng-template>", styles: [":host{width:100%;display:flex}.confirm-content{padding:1.5rem;display:flex;flex-direction:column}.inline-confirm-result-icon{margin:.0625rem .25rem .0625rem 0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "icon", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }, { kind: "component", type: i4.TextboxComponent, selector: "ec-textbox", inputs: ["autocomplete", "type", "placeholder", "maxlength", "minlength", "rows", "selectOnAutofocus", "upperCase"] }, { kind: "component", type: i5.ViewOverlayComponent, selector: "[ecOverlay]", inputs: ["status", "message", "action", "noDataTemplate", "displayAsMask", "overlayClassList"] }, { kind: "component", type: i6.BannerComponent, selector: "ec-banner", inputs: ["hidden", "id", "type", "bannerStyle", "title", "text", "list", "showCloseBtn", "autoHideOnClose", "customIcon", "rememberClosed"], outputs: ["closed"] }, { kind: "component", type: i7.CheckboxComponent, selector: "ec-checkbox", inputs: ["name", "dependentCheckboxesGroup", "ignoreDisabledDependents"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
|
157
|
+
}
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmComponent, decorators: [{
|
159
|
+
type: Component,
|
160
|
+
args: [{ selector: 'ec-confirm', template: "<section ecOverlay\r\n [status]=\"status?.status\"\r\n [message]=\"status?.message\"\r\n [action]=\"status?.action\"\r\n [noDataTemplate]=\"inlineConfirmResult\"\r\n overlayClassList=\"p-0\"\r\n class=\"bg-body flex-grow d-flex\">\r\n <form [formGroup]=\"formGroup\" class=\"flex-grow flex-column confirm-content text-body-1\">\r\n <section class=\"flex-grow\">\r\n <h2 class=\"font-weight-bold mb-3\" *ngIf=\"context?.title\">{{context?.title}}</h2>\r\n <ec-banner *ngIf=\"error\" [text]=\"error | translate\" bannerStyle=\"normal\" class=\"mb-3\"></ec-banner>\r\n <div *ngIf=\"context?.message\" [innerHtml]=\"context?.message | translate\" class=\"mb-3\"></div>\r\n \r\n <ec-checkbox *ngIf=\"context?.checkConfirm\"\r\n [formModel]=\"formGroup.get('checkbox')\"\r\n name=\"confirmCheckbox\"\r\n [label]=\"context?.checkboxText\"\r\n [autofocus]=\"true\"\r\n ></ec-checkbox>\r\n <div *ngIf=\"showTextBox\" [innerHtml]=\"context.confirmLabel\" class=\"mb-3\"></div>\r\n <ec-textbox id=\"confirmTextbox\"\r\n *ngIf=\"(context?.textboxType && !context?.checkConfirm) || showTextBox\"\r\n [autofocus]=\"true\"\r\n [formModel]=\"formGroup.get('textbox')\"\r\n [required]=\"context?.textboxRequired\"\r\n [label]=\"context?.textboxLabel\"\r\n [type]=\"context?.textboxType\"\r\n [rows]=\"context?.textareaRows\"\r\n [placeholder]=\"context?.textboxPlaceholder\"\r\n [upperCase]=\"context?.textboxUppercase\">\r\n </ec-textbox>\r\n </section>\r\n <footer class=\"mt-auto flex-shrink d-flex py-2 flex-row-reverse\">\r\n <ec-button id=\"saveConfirmButton\"\r\n class=\"ml-2\"\r\n [type]=\"context?.saveButtonType ? context?.saveButtonType : 'primary'\"\r\n [label]=\"context?.saveLabel ? context?.saveLabel : 'Save'\"\r\n [autofocus]=\"!context?.textboxType\"\r\n [isSubmit]=\"context?.saveOnEnter\"\r\n (clicked)=\"onSave('primary')\">\r\n </ec-button>\r\n <ec-button id=\"alternateSaveConfirmButton\"\r\n *ngIf=\"context?.alternateSaveLabel\"\r\n class=\"ml-2\"\r\n [type]=\"context?.alternateSaveButtonType ? context?.alternateSaveButtonType : 'primary'\"\r\n [label]=\"context?.alternateSaveLabel\"\r\n (clicked)=\"onSave('alternate')\">\r\n </ec-button>\r\n <ec-button *ngIf=\"!context?.hideCancel\"\r\n id=\"cancelConfirmButton\"\r\n class=\"ml-auto\"\r\n type=\"secondary\"\r\n [label]=\"context?.cancelLabel ? context?.cancelLabel : 'Cancel'\"\r\n (clicked)=\"onCancel()\">\r\n </ec-button>\r\n </footer>\r\n </form>\r\n</section>\r\n\r\n<ng-template #inlineConfirmResult>\r\n <section class=\"flex-grow align-self-stretch confirm-content text-body-1\">\r\n <div class=\"d-flex\">\r\n <i class=\"ec-icon {{status?.action?.icon}} {{status?.action?.classlist}} inline-confirm-result-icon\"></i>\r\n <div [innerHTML]=\"status?.message | translate\"></div>\r\n </div>\r\n <div class=\"d-flex pt-2 mt-auto\">\r\n <ec-button id=\"inlineConfirmClose\"\r\n label=\"Close\"\r\n type=\"secondary\"\r\n class=\"ml-auto\"\r\n (clicked)=\"status?.action?.onClick!()\"\r\n [autofocus]=\"true\">\r\n </ec-button>\r\n </div>\r\n </section>\r\n</ng-template>", styles: [":host{width:100%;display:flex}.confirm-content{padding:1.5rem;display:flex;flex-direction:column}.inline-confirm-result-icon{margin:.0625rem .25rem .0625rem 0}\n"] }]
|
161
|
+
}], ctorParameters: () => [], propDecorators: { context: [{
|
162
|
+
type: Input
|
163
|
+
}], onDialogSave: [{
|
164
|
+
type: Output
|
165
|
+
}], onDialogCancel: [{
|
166
|
+
type: Output
|
167
|
+
}] } });
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS9jb25maXJtL2NvbmZpcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvY29uZmlybS9jb25maXJtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUsvRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFTL0IsTUFBTSxPQUFPLG9CQUFvQjtJQUFqQztRQUNFLHlGQUF5RjtRQUNsRixPQUFFLEdBQVcsRUFBRSxDQUFDO1FBK0J2Qjs7O1dBR0c7UUFDSSxvQkFBZSxHQUFhLEtBQUssQ0FBQztRQUt6Qyw2Q0FBNkM7UUFDdEMscUJBQWdCLEdBQWEsS0FBSyxDQUFDO1FBRTFDOzs7O1dBSUc7UUFDSSxpQkFBWSxHQUFZLENBQUMsQ0FBQztRQWFqQyxpQ0FBaUM7UUFDMUIsY0FBUyxHQUFZLE1BQU0sQ0FBQyxDQUFDLE9BQU87UUFFM0MsZ0NBQWdDO1FBQ3pCLG1CQUFjLEdBQWdCLFNBQVMsQ0FBQztRQUUvQyxtQ0FBbUM7UUFDNUIsZ0JBQVcsR0FBWSxRQUFRLENBQUMsQ0FBQyxPQUFPO1FBRS9DLDZEQUE2RDtRQUN0RCxlQUFVLEdBQWEsS0FB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QyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQSxDQUFDLENBQUM7U0FDeEcsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FsSVUsZ0JBQWdCO21HQUFoQixnQkFBZ0IsK0pDNUg3QixtdUhBMkVjOzs0RkRpREQsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLFlBQVk7d0RBcUJOLE9BQU87c0JBQXRCLEtBQUs7Z0JBRVcsWUFBWTtzQkFBNUIsTUFBTTtnQkFDVSxjQUFjO3NCQUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0Ym94VHlwZSB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3RleHRib3gvdGV4dGJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dDb250ZW50IH0gZnJvbSAnLi4vZGlhbG9nL2RpYWxvZy1jb250ZW50JztcclxuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uL3ZpZXctb3ZlcmxheS92aWV3LW92ZXJsYXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG50eXBlIFNhdmVTb3VyY2UgPSAncHJpbWFyeSd8J2FsdGVybmF0ZSc7XHJcblxyXG5leHBvcnQgdHlwZSBDdXN0b21BY3Rpb25SZXN1bHQgPSB7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIGlzU3VjY2VzczogYm9vbGVhbjtcclxufTtcclxuXHJcbmV4cG9ydCBjbGFzcyBDb25maXJtRGlhbG9nQ29udGV4dCB7XHJcbiAgLyoqIElkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gY29uZmlybSBjb21wb25lbnQgY29udGV4dHMgZW1pdHRlZCBieSB0aGUgZGlhbG9nIHNlcnZpY2UgKi9cclxuICBwdWJsaWMgaWQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogT3B0aW9uYWwgdGl0bGUgb2YgdGhlIGNvbmZpcm0gKi9cclxuICBwdWJsaWMgdGl0bGU/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBPcHRpb25hbCBtZXNzYWdlICovXHJcbiAgcHVibGljIG1lc3NhZ2U/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBPcHRpb25hbCBjaGVja0NvbmZpcm1cclxuICAgKiB0aGlzIHdpbGwgZGV0ZXJtaW5lIGlmIGVjLWNoZWNrYm94IGlzIGF2YWlsYWJsZSBvciBub1xyXG4gICAqIGluIG9yZGVyIHRvIGRlbGV0ZSBvciBtb3ZlIHRvIG5vIHBhcmVudCB0aGUgZW50aXR5XHJcbiAgICovXHJcbiAgcHVibGljIGNoZWNrQ29uZmlybT86Ym9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogY2hlY2tib3hDb250ZW50XHJcbiAgICogRGV0ZXJtaW5lIHRoZSBsYWJlbCBuZXh0IHRvIHRoZSBjaGVja2JveFxyXG4gICAqIGlmIGNoZWNrQ29uZmlybSBpcyB0cnVlIG90aGVyd2lzZSBpcyBub3QgdmlzaWJsZVxyXG4gICAqL1xyXG5cclxuICBwdWJsaWMgY2hlY2tib3hUZXh0PzpzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsIHRleHRib3ggdHlwZSwgdGhpcyB3aWxsIGRldGVybWluZSB3aGV0aGVyXHJcbiAgICogYW4gaW5wdXQgaXMgdmlzaWJsZSBvciBub3RcclxuICAgKi9cclxuICBwdWJsaWMgdGV4dGJveFR5cGU/OiBUZXh0Ym94VHlwZTtcclxuXHJcbiAgLyoqIE9wdGlvbmFsIHRleHRib3ggbGFiZWwgKi9cclxuICBwdWJsaWMgdGV4dGJveExhYmVsPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBPcHRpb25hbCByZXF1aXJlZCBmbGFnIGZvciB0aGUgdGV4dGJveCwgd2lsbCBzZXRcclxuICAgKiBhIHZhbGlkYXRvciBvbiB0aGUgaW5wdXQgaWYgdHJ1ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyB0ZXh0Ym94UmVxdWlyZWQ/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBPcHRpb25hbCBhcnJheSBvZiB2YWxpZGF0b3JzIHRvIGFkZCB0byB0aGUgdGV4dGJveCBmb3JtIGNvbnRyb2wuICovXHJcbiAgcHVibGljIHRleHRib3hWYWxpZGF0b3JzPzogVmFsaWRhdG9yRm5bXTtcclxuXHJcbiAgLyoqIFNldHMgdGhlIHRleHRib3gncyB1cHBlcmNhc2UgcGFyYW1ldGVyICovXHJcbiAgcHVibGljIHRleHRib3hVcHBlcmNhc2U/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsIHRleHRib3ggaGVpZ2h0IChpbiByb3dzKS5cclxuICAgKiBPbmx5IGFwcGxpZXMgdG8gbXVsdGktbGluZSB0eXBlLlxyXG4gICAqIERlZmF1bHQgMy5cclxuICAgKi9cclxuICBwdWJsaWMgdGV4dGFyZWFSb3dzPzogbnVtYmVyID0gMztcclxuXHJcbiAgLyoqIE9wdGlvbmFsIHRleHRib3ggcGxhY2Vob2xkZXIgdGV4dCAqL1xyXG4gIHB1YmxpYyB0ZXh0Ym94UGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBPcHRpb25hbCBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB0ZXh0Ym94ICovXHJcbiAgcHVibGljIHZhbGlkYXRpb25FcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBWYWx1ZSByZXR1cm5lZCBmcm9tIHRoZSBpbnB1dCBpZiBlbmFibGVkICovXHJcbiAgcHVibGljIHRleHRib3hWYWx1ZT86IHN0cmluZztcclxuICBwdWJsaWMgY2hlY2tib3hWYWx1ZT86Ym9vbGVhbjtcclxuICBwdWJsaWMgY29uZmlybUxhYmVsPzpzdHJpbmc7XHJcblxyXG4gIC8qKiBPcHRpb25hbCBzYXZlIGJ1dHRvbiBsYWJlbCAqL1xyXG4gIHB1YmxpYyBzYXZlTGFiZWw/OiBzdHJpbmcgPSAnU2F2ZSc7IC8vIExPQ09cclxuXHJcbiAgLyoqIE9wdGlvbmFsIHNhdmUgYnV0dG9uIHR5cGUgKi9cclxuICBwdWJsaWMgc2F2ZUJ1dHRvblR5cGU/OiBCdXR0b25UeXBlID0gJ3ByaW1hcnknO1xyXG5cclxuICAvKiogT3B0aW9uYWwgY2FuY2VsIGJ1dHRvbiBsYWJlbCAqL1xyXG4gIHB1YmxpYyBjYW5jZWxMYWJlbD86IHN0cmluZyA9ICdDYW5jZWwnOyAvLyBMT0NPXHJcblxyXG4gIC8qKiBPcHRpb25hbCBmbGFnIGZvciBoaWRpbmcgdGhlIGNhbmNlbCAoc2Vjb25kYXJ5KSBidXR0b24gKi9cclxuICBwdWJsaWMgaGlkZUNhbmNlbD86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFdoZW4gdHJ1ZSwgYWRkcyB0aGUgc3VibWl0IHRhZyB0byB0aGUgc2F2ZSBidXR0b24gc28gaGl0dGluZyBlbnRlciB0cmlnZ2VycyB0aGUgc2F2ZSAqL1xyXG4gIHB1YmxpYyBzYXZlT25FbnRlcj86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIE9wdGlvbmFsIGFsdGVybmF0ZSBzYXZlIGJ1dHRvbiBsYWJlbCAqL1xyXG4gIHB1YmxpYyBhbHRlcm5hdGVTYXZlTGFiZWw/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKiBPcHRpb25hbCBhbHRlcm5hdGUgc2F2ZSBidXR0b24gdHlwZSAqL1xyXG4gIHB1YmxpYyBhbHRlcm5hdGVTYXZlQnV0dG9uVHlwZT86IEJ1dHRvblR5cGUgPSB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZWQgdG8ga25vdyB3aGljaCBzYXZlIGJ1dHRvbiB3YXMgc2VsZWN0ZWQgaW4gY2FzZSB0aGUgY2FsbGluZyBjb21wb25lbnRcclxuICAgKiBpcyB1dGlsaXppbmcgdGhlIGFsdGVybmF0ZSBzYXZlIGJ1dHRvblxyXG4gICAqL1xyXG4gIHB1YmxpYyBzYXZlU291cmNlPzogU2F2ZVNvdXJjZSA9ICdwcmltYXJ5JztcclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiBwcm92aWRlZCwgdGhlIGNvbmZpcm0gd2lsbCBzaG93IGEgcGVuZGluZyBzdGF0ZSBhbmQgY2FsbCB0aGlzLCB0aGVuIHVwb25cclxuICAgKiBjb21wbGV0aW9uIGRpc3BsYXkgdGhlIHJlc3VsdCBtZXNzYWdlIGFuZCBhIGNsb3NlIGJ1dHRvbi4gSWYgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWRcclxuICAgKiBzdWNjZXNzZnVsbHksIHRoZSBjbG9zZSBidXR0b24gd2lsbCBlbWl0IG9uRGlhbG9nU2F2ZS4gSWYgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQsXHJcbiAgICogdGhlIGNsb3NlIGJ1dHRvbiB3aWxsIGVtaXQgb25EaWFsb2dDYW5jZWwuXHJcbiAgICovXHJcbiAgcHVibGljIGlubGluZUNvbmZpcm1BY3Rpb24/OiAoKSA9PiBQcm9taXNlPEN1c3RvbUFjdGlvblJlc3VsdD47XHJcblxyXG4gIC8qKiBUaGUgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgd2hpbGUgaW5saW5lQ29uZmlybUFjdGlvbiBpcyBwZW5kaW5nLiAqL1xyXG4gIHB1YmxpYyBpbmxpbmVDb25maXJtUGVuZGluZ01lc3NhZ2U/OiBzdHJpbmcgPSAnJztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy1jb25maXJtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29uZmlybS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb25maXJtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEaWFsb2dDb250ZW50PENvbmZpcm1EaWFsb2dDb250ZXh0PiwgT25EZXN0cm95e1xyXG5cclxuICBwdWJsaWMgZGlhbG9nSWQ6IHN0cmluZyA9ICdDb25maXJtJztcclxuXHJcbiAgLyoqIEZvcm0gR3JvdXAgdG8gaG9sZCBhbnkgZm9ybSBjb250cm9scyBuZWVkZWQgKi9cclxuICBwdWJsaWMgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xyXG5cclxuICBwdWJsaWMgc3RhdHVzID0gbmV3IE92ZXJsYXkoJ2hhc0RhdGEnKTtcclxuXHJcbiAgcHVibGljIHNob3dUZXh0Qm94OmJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAvKipcclxuICAgKiBQcm92aWRlZCBieSB0aGUgY2FsbGluZyBjb21wb25lbnQgdG8gdGVsbCB0aGUgY29uZmlybSB3aGF0IHRvIHNob3dcclxuICAgKiBhbmQgaXMgdXNlZCBvbiBzYXZlIHRvIHNlbmQgYmFjayBhbnkgZW50ZXJlZCB2YWx1ZXMgZnJvbSB0aGUgdXNlclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjb250ZXh0ITogQ29uZmlybURpYWxvZ0NvbnRleHQ7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgb25EaWFsb2dTYXZlOiBFdmVudEVtaXR0ZXI8Q29uZmlybURpYWxvZ0NvbnRleHQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb25maXJtRGlhbG9nQ29udGV4dD4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIG9uRGlhbG9nQ2FuY2VsOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIHB1YmxpYyBvbk9wZW4ob3BlbkNvbnRleHQ/OiBDb25maXJtRGlhbG9nQ29udGV4dCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250ZXh0ID0gb3BlbkNvbnRleHQhO1xyXG4gICAgdGhpcy5kaWFsb2dJZCA9IG9wZW5Db250ZXh0IS5pZDtcclxuICAgIGlmICh0aGlzLmNvbnRleHQuYWx0ZXJuYXRlU2F2ZUxhYmVsKSB7XHJcbiAgICAgIHRoaXMuY29udGV4dC5zYXZlT25FbnRlciA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEVycm9yIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZXJyb3IgYmFubmVyICovXHJcbiAgcHVibGljIGVycm9yPzogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFkZEZvcm1Db250cm9scygpO1xyXG4gICAgdGhpcy5zZXRWYWxpZGF0aW9ucygpO1xyXG4gICAgdGhpcy5saXN0ZW5DaGVja0JveCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2F2ZShzb3VyY2U6IFNhdmVTb3VyY2UpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAudmFsaWQpIHtcclxuICAgICAgbGV0IGZvcm1WYWx1ZXMgPSB0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgICBpZiAoZm9ybVZhbHVlcy50ZXh0Ym94KSB7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LnRleHRib3hWYWx1ZSA9IGZvcm1WYWx1ZXMudGV4dGJveDtcclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLmNvbnRleHQuY2hlY2tDb25maXJtKSB7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LmNoZWNrYm94VmFsdWUgPSBmb3JtVmFsdWVzLmNoZWNrYm94ID8gZm9ybVZhbHVlcy5jaGVja2JveCA6IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNvbnRleHQuc2F2ZVNvdXJjZSA9IHNvdXJjZTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbnRleHQuaW5saW5lQ29uZmlybUFjdGlvbikge1xyXG4gICAgICAgIHRoaXMuZG9JbmxpbmVDb25maXJtQWN0aW9uKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vbkRpYWxvZ1NhdmUuZW1pdCh0aGlzLmNvbnRleHQpO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRleHQudmFsaWRhdGlvbkVycm9yTWVzc2FnZSkge1xyXG4gICAgICB0aGlzLmVycm9yID0gdGhpcy5jb250ZXh0LnZhbGlkYXRpb25FcnJvck1lc3NhZ2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRGlhbG9nQ2FuY2VsLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveWVkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbGlzdGVuQ2hlY2tCb3goKTp2b2lkIHtcclxuICAgIHRoaXMuZm9ybUdyb3VwLmdldCgnY2hlY2tib3gnKT8udmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcclxuICAgICkuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgdGhpcy5zaG93VGV4dEJveCA9IHZhbHVlO1xyXG4gICAgICB0aGlzLnNldFZhbGlkYXRpb25zKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VmFsaWRhdGlvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzaG93Q2hlY2tCb3ggPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2NoZWNrYm94Jyk7XHJcbiAgICBjb25zdCB0ZXh0Qm94Q29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWyd0ZXh0Ym94J107XHJcblxyXG4gICAgaWYgKHNob3dDaGVja0JveCkge1xyXG4gICAgICAgIHRoaXMuc2hvd1RleHRCb3ggPyB0ZXh0Qm94Q29udHJvbD8uZW5hYmxlKCkgOiB0ZXh0Qm94Q29udHJvbD8uZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0ZXh0Qm94Q29udHJvbD8uZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIHRoZSB0ZXh0Ym94IGZvcm0gY29udHJvbCB0byBvdXIgZm9ybSBncm91cCBpZiBpdHMgY29uZmlndXJlZCB0byBiZSB2aXNpYmxlXHJcbiAgICogV2lsbCBhbHNvIGFkZCB0aGUgcmVxdWlyZWQgdmFsaWRhdG9yIGlmIHJlcXVlc3RlZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkRm9ybUNvbnRyb2xzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29udGV4dC50ZXh0Ym94VHlwZSkge1xyXG4gICAgICBsZXQgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gICAgICBpZiAodGhpcy5jb250ZXh0LnRleHRib3hSZXF1aXJlZCkge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb250ZXh0LnRleHRib3hWYWxpZGF0b3JzKSB7XHJcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKC4uLnRoaXMuY29udGV4dC50ZXh0Ym94VmFsaWRhdG9ycyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCgndGV4dGJveCcsIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycsIHZhbGlkYXRvcnMpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLmNvbnRleHQuY2hlY2tDb25maXJtKXtcclxuICAgICAgdGhpcy5zaG93VGV4dEJveCA9IGZhbHNlO1xyXG4gICAgICBjb25zdCBjaGVja2JveENvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnKTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCgnY2hlY2tib3gnLCBjaGVja2JveENvbnRyb2wpOyAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBkb0lubGluZUNvbmZpcm1BY3Rpb24oKSB7XHJcbiAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ3BlbmRpbmcnLCB0aGlzLmNvbnRleHQuaW5saW5lQ29uZmlybVBlbmRpbmdNZXNzYWdlKTtcclxuXHJcbiAgICBsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5jb250ZXh0LmlubGluZUNvbmZpcm1BY3Rpb24hKCk7XHJcblxyXG4gICAgdGhpcy5zdGF0dXMuc2V0U3RhdHVzKCdub0RhdGEnLCByZXN1bHQubWVzc2FnZSwge1xyXG4gICAgICBpZDogJ2lubGluZUNvbmZpcm1DbG9zZScsXHJcbiAgICAgIGxhYmVsOiAnQ2xvc2UnLFxyXG4gICAgICBpY29uOiByZXN1bHQuaXNTdWNjZXNzID8gJ2ljb24tY2hlY2stY2lyY2xlJyA6ICdpY29uLWVycm9yJyxcclxuICAgICAgY2xhc3NsaXN0OiByZXN1bHQuaXNTdWNjZXNzID8gJ2ZvbnQtY29sb3Itc3VjY2VzcycgOiAnZm9udC1jb2xvci1lcnJvcicsXHJcbiAgICAgIG9uQ2xpY2s6ICgpID0+IHsgcmVzdWx0LmlzU3VjY2VzcyA/IHRoaXMub25EaWFsb2dTYXZlLmVtaXQodGhpcy5jb250ZXh0KSA6IHRoaXMub25EaWFsb2dDYW5jZWwuZW1pdCgpIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBlY092ZXJsYXlcclxuICAgICAgICAgW3N0YXR1c109XCJzdGF0dXM/LnN0YXR1c1wiXHJcbiAgICAgICAgIFttZXNzYWdlXT1cInN0YXR1cz8ubWVzc2FnZVwiXHJcbiAgICAgICAgIFthY3Rpb25dPVwic3RhdHVzPy5hY3Rpb25cIlxyXG4gICAgICAgICBbbm9EYXRhVGVtcGxhdGVdPVwiaW5saW5lQ29uZmlybVJlc3VsdFwiXHJcbiAgICAgICAgIG92ZXJsYXlDbGFzc0xpc3Q9XCJwLTBcIlxyXG4gICAgICAgICBjbGFzcz1cImJnLWJvZHkgZmxleC1ncm93IGQtZmxleFwiPlxyXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgY2xhc3M9XCJmbGV4LWdyb3cgZmxleC1jb2x1bW4gY29uZmlybS1jb250ZW50IHRleHQtYm9keS0xXCI+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImZsZXgtZ3Jvd1wiPlxyXG4gICAgICA8aDIgY2xhc3M9XCJmb250LXdlaWdodC1ib2xkIG1iLTNcIiAqbmdJZj1cImNvbnRleHQ/LnRpdGxlXCI+e3tjb250ZXh0Py50aXRsZX19PC9oMj5cclxuICAgICAgPGVjLWJhbm5lciAqbmdJZj1cImVycm9yXCIgW3RleHRdPVwiZXJyb3IgfCB0cmFuc2xhdGVcIiBiYW5uZXJTdHlsZT1cIm5vcm1hbFwiIGNsYXNzPVwibWItM1wiPjwvZWMtYmFubmVyPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY29udGV4dD8ubWVzc2FnZVwiIFtpbm5lckh0bWxdPVwiY29udGV4dD8ubWVzc2FnZSB8IHRyYW5zbGF0ZVwiIGNsYXNzPVwibWItM1wiPjwvZGl2PlxyXG4gICAgICBcclxuICAgICAgPGVjLWNoZWNrYm94ICpuZ0lmPVwiY29udGV4dD8uY2hlY2tDb25maXJtXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9ybU1vZGVsXT1cImZvcm1Hcm91cC5nZXQoJ2NoZWNrYm94JylcIlxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjb25maXJtQ2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb250ZXh0Py5jaGVja2JveFRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZWMtY2hlY2tib3g+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93VGV4dEJveFwiIFtpbm5lckh0bWxdPVwiY29udGV4dC5jb25maXJtTGFiZWxcIiBjbGFzcz1cIm1iLTNcIj48L2Rpdj5cclxuICAgICAgPGVjLXRleHRib3ggaWQ9XCJjb25maXJtVGV4dGJveFwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGNvbnRleHQ/LnRleHRib3hUeXBlICYmICFjb250ZXh0Py5jaGVja0NvbmZpcm0pIHx8IHNob3dUZXh0Qm94XCJcclxuICAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2Zvcm1Nb2RlbF09XCJmb3JtR3JvdXAuZ2V0KCd0ZXh0Ym94JylcIlxyXG4gICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29udGV4dD8udGV4dGJveFJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbnRleHQ/LnRleHRib3hMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbnRleHQ/LnRleHRib3hUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgW3Jvd3NdPVwiY29udGV4dD8udGV4dGFyZWFSb3dzXCJcclxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbnRleHQ/LnRleHRib3hQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFt1cHBlckNhc2VdPVwiY29udGV4dD8udGV4dGJveFVwcGVyY2FzZVwiPlxyXG4gICAgICA8L2VjLXRleHRib3g+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8Zm9vdGVyIGNsYXNzPVwibXQtYXV0byBmbGV4LXNocmluayBkLWZsZXggcHktMiBmbGV4LXJvdy1yZXZlcnNlXCI+XHJcbiAgICAgIDxlYy1idXR0b24gaWQ9XCJzYXZlQ29uZmlybUJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtMlwiXHJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbnRleHQ/LnNhdmVCdXR0b25UeXBlID8gY29udGV4dD8uc2F2ZUJ1dHRvblR5cGUgOiAncHJpbWFyeSdcIlxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29udGV4dD8uc2F2ZUxhYmVsID8gY29udGV4dD8uc2F2ZUxhYmVsIDogJ1NhdmUnXCJcclxuICAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCIhY29udGV4dD8udGV4dGJveFR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNTdWJtaXRdPVwiY29udGV4dD8uc2F2ZU9uRW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblNhdmUoJ3ByaW1hcnknKVwiPlxyXG4gICAgICA8L2VjLWJ1dHRvbj5cclxuICAgICAgPGVjLWJ1dHRvbiBpZD1cImFsdGVybmF0ZVNhdmVDb25maXJtQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZXh0Py5hbHRlcm5hdGVTYXZlTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTJcIlxyXG4gICAgICAgICAgICAgICAgICBbdHlwZV09XCJjb250ZXh0Py5hbHRlcm5hdGVTYXZlQnV0dG9uVHlwZSA/IGNvbnRleHQ/LmFsdGVybmF0ZVNhdmVCdXR0b25UeXBlIDogJ3ByaW1hcnknXCJcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbnRleHQ/LmFsdGVybmF0ZVNhdmVMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uU2F2ZSgnYWx0ZXJuYXRlJylcIj5cclxuICAgICAgPC9lYy1idXR0b24+XHJcbiAgICAgIDxlYy1idXR0b24gICpuZ0lmPVwiIWNvbnRleHQ/LmhpZGVDYW5jZWxcIlxyXG4gICAgICAgICAgICAgICAgICBpZD1cImNhbmNlbENvbmZpcm1CdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLWF1dG9cIlxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbnRleHQ/LmNhbmNlbExhYmVsID8gY29udGV4dD8uY2FuY2VsTGFiZWwgOiAnQ2FuY2VsJ1wiXHJcbiAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uQ2FuY2VsKClcIj5cclxuICAgICAgPC9lYy1idXR0b24+XHJcbiAgICA8L2Zvb3Rlcj5cclxuICA8L2Zvcm0+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaW5saW5lQ29uZmlybVJlc3VsdD5cclxuICA8c2VjdGlvbiBjbGFzcz1cImZsZXgtZ3JvdyBhbGlnbi1zZWxmLXN0cmV0Y2ggY29uZmlybS1jb250ZW50IHRleHQtYm9keS0xXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgIDxpIGNsYXNzPVwiZWMtaWNvbiB7e3N0YXR1cz8uYWN0aW9uPy5pY29ufX0ge3tzdGF0dXM/LmFjdGlvbj8uY2xhc3NsaXN0fX0gaW5saW5lLWNvbmZpcm0tcmVzdWx0LWljb25cIj48L2k+XHJcbiAgICAgIDxkaXYgW2lubmVySFRNTF09XCJzdGF0dXM/Lm1lc3NhZ2UgfCB0cmFuc2xhdGVcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBwdC0yIG10LWF1dG9cIj5cclxuICAgICAgPGVjLWJ1dHRvbiBpZD1cImlubGluZUNvbmZpcm1DbG9zZVwiXHJcbiAgICAgICAgICAgICAgICAgbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAgICAgICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC1hdXRvXCJcclxuICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJzdGF0dXM/LmFjdGlvbj8ub25DbGljayEoKVwiXHJcbiAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJ0cnVlXCI+XHJcbiAgICAgIDwvZWMtYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9zZWN0aW9uPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export {};
|
1
|
+
export {};
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWNvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS9kaWFsb2cvZGlhbG9nLWNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKipcclxuICogVGhpcyBpbnRlcmZhY2UgcmVwcmVzZW50cyB0aGUgY29udHJhY3QgYmV0d2VlbiB0aGUgZGlhbG9nIGNvbXBvbmVudCAodGhlIFwic2hlbGxcIiBhcm91bmQgdGhhdCBtYXNrcyB0aGUgYmFja2dyb3VuZCkgXHJcbiAqIGFuZCB0aGUgYm9keSBvZiB0aGUgZGlhbG9nIHdoaWNoIGNhbiBiZSBhbG1vc3QgYW55IGNvbXBvbmVudC4gSXQgZXhwb3NlcyBhIHdheSBmb3IgdXMgdG8gcGFzcyBkYXRhIGludG8gYW5kIG91dCBvZlxyXG4gKiB0aGUgYm9keSBmcm9tIHRoZSBob3N0aW5nIHBhZ2Ugd2l0aCBzdHJvbmcgdHlwZSBpbmZvcm1hdGlvbiBcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nQ29udGVudDxUPiB7XHJcbiAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgaW1wbGVtZW50aW5nIGNsYXNzLiAqL1xyXG4gIGRpYWxvZ0lkOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBkYXRhIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBpbm5lciBkaWFsb2cgY29tcG9uZW50IHdoZW4gaXQgb3BlbnMgZnJvbSB0aGUgaG9zdGluZyBwYWdlLiBcclxuICAgKiBXaWxsIGJlIGNhbGxlZCBiZWZvcmUgYW55IGFuZ3VsYXIgbGlmZWN5Y2xlIGhvb2tzLlxyXG4gICAqL1xyXG4gIG9uT3Blbj86IChvcGVuQ29udGV4dD86IFQpID0+IHZvaWQ7XHJcblxyXG4gIC8qKiBBbiBldmVudCBlbWl0dGVyIHRoYXQgd2lsbCBlbWl0IGFuIGV2ZW50IHdoZW4gdGhlIGRpYWxvZyBhY3Rpb24gaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgKi9cclxuICBvbkRpYWxvZ1NhdmU6IEV2ZW50RW1pdHRlcjxUPjtcclxuXHJcbiAgLyoqIEFuIGV2ZW50IGVtaXR0ZXIgdGhhdCB3aWxsIGVtaXQgYW4gZXZlbnQgd2hlbiB0aGUgZGlhbG9nIGFjdGlvbiBoYXMgYmVlbiBjYW5jZWxlZCAqL1xyXG4gIG9uRGlhbG9nQ2FuY2VsOiBFdmVudEVtaXR0ZXI8dm9pZD47XHJcbn1cclxuIl19
|
@@ -0,0 +1,63 @@
|
|
1
|
+
import { Component } from '@angular/core';
|
2
|
+
import { Subject } from 'rxjs';
|
3
|
+
import { filter, takeUntil } from 'rxjs/operators';
|
4
|
+
import { DialogCloseEvent, DialogCloseLatestEvent, DialogOpenStartEvent } from '../dialog-types';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
import * as i1 from "../dialog.service";
|
7
|
+
import * as i2 from "@angular/common";
|
8
|
+
import * as i3 from "../dialog.component";
|
9
|
+
export class DialogGroupComponent {
|
10
|
+
constructor(dialogService) {
|
11
|
+
this.dialogService = dialogService;
|
12
|
+
this.activeDialogEvents = [];
|
13
|
+
this.destroyed = new Subject();
|
14
|
+
}
|
15
|
+
/**When the group component is created, start watching for any DialogOpenStart events
|
16
|
+
* so that the group can react and make the matching dialog. New dialogs get assigned unique
|
17
|
+
* eventIds so that when they close we know exactly which one is done and we can take it
|
18
|
+
* out of the list of active dialogs
|
19
|
+
*/
|
20
|
+
ngOnInit() {
|
21
|
+
this.dialogService.events.pipe(filter(event => event instanceof DialogOpenStartEvent || event instanceof DialogCloseLatestEvent), takeUntil(this.destroyed)).subscribe(event => {
|
22
|
+
if (event instanceof DialogOpenStartEvent) {
|
23
|
+
this.activeDialogEvents.push(event);
|
24
|
+
}
|
25
|
+
else if (event instanceof DialogCloseLatestEvent && this.activeDialogEvents.length > 0) {
|
26
|
+
let sourceEvent = this.activeDialogEvents[this.activeDialogEvents.length - 1];
|
27
|
+
this.dialogService.triggerEvent(new DialogCloseEvent(sourceEvent.eventId, sourceEvent.dialogId, event.dialogResult?.save, event.dialogResult?.context));
|
28
|
+
this.dialogClosed(sourceEvent);
|
29
|
+
}
|
30
|
+
});
|
31
|
+
}
|
32
|
+
/** When the dialog group is destroyed we no longer want to listen for any open events. */
|
33
|
+
ngOnDestroy() {
|
34
|
+
this.destroyed.next();
|
35
|
+
this.destroyed.unsubscribe();
|
36
|
+
}
|
37
|
+
/**The dialog component completed opening (including animation delay) and
|
38
|
+
* emits an event that tells us it is ready. The group can then pump out a dialog
|
39
|
+
* openEnd event (kinda NavigationEnd in the router) to tell anybody who cares that
|
40
|
+
* the dialog is now ready.
|
41
|
+
*/
|
42
|
+
dialogOpened(dialogOpenEvent, dialogId) {
|
43
|
+
dialogOpenEvent.dialogId = dialogId;
|
44
|
+
}
|
45
|
+
/** The dialog has closed (after animation delay) and emitted an event to tell the hosting component.
|
46
|
+
* We handle the event and pump a matching DialogCloseEvent so that anybody who cares can know that the
|
47
|
+
* dialog instance referenced by dialogOpenEvent.eventId is gone now. We remove it from our list of
|
48
|
+
* active dialogs which pulls it out of the DOM too
|
49
|
+
*/
|
50
|
+
dialogClosed(dialogOpenEvent) {
|
51
|
+
const index = this.activeDialogEvents.findIndex(d => d === dialogOpenEvent);
|
52
|
+
if (index >= 0) {
|
53
|
+
this.activeDialogEvents.splice(index, 1);
|
54
|
+
}
|
55
|
+
}
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogGroupComponent, deps: [{ token: i1.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
57
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DialogGroupComponent, selector: "ec-dialog-group", ngImport: i0, template: "<ec-dialog *ngFor=\"let dialog of activeDialogEvents\"\r\n [dialogOpenStartEventId]=\"dialog.eventId\"\r\n [size]=\"dialog.options?.size\"\r\n [content]=\"dialog.content\"\r\n [context]=\"dialog.context\"\r\n [options]=\"dialog.options\"\r\n (opened)=\"dialogOpened(dialog, $event)\"\r\n (closed)=\"dialogClosed(dialog)\">\r\n</ec-dialog>", styles: ["ec-dialog:not(:only-child){--ec-dialog-background-color: transparent}ec-dialog:not(:only-child):last-child,ec-dialog:not(:only-child):nth-last-child(2){--ec-dialog-background-color: var(--ec-background-color-dialog-stacked)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.DialogComponent, selector: "ec-dialog", inputs: ["size", "content", "context", "options", "dialogOpenStartEventId"], outputs: ["opened", "closed"] }] }); }
|
58
|
+
}
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogGroupComponent, decorators: [{
|
60
|
+
type: Component,
|
61
|
+
args: [{ selector: 'ec-dialog-group', template: "<ec-dialog *ngFor=\"let dialog of activeDialogEvents\"\r\n [dialogOpenStartEventId]=\"dialog.eventId\"\r\n [size]=\"dialog.options?.size\"\r\n [content]=\"dialog.content\"\r\n [context]=\"dialog.context\"\r\n [options]=\"dialog.options\"\r\n (opened)=\"dialogOpened(dialog, $event)\"\r\n (closed)=\"dialogClosed(dialog)\">\r\n</ec-dialog>", styles: ["ec-dialog:not(:only-child){--ec-dialog-background-color: transparent}ec-dialog:not(:only-child):last-child,ec-dialog:not(:only-child):nth-last-child(2){--ec-dialog-background-color: var(--ec-background-color-dialog-stacked)}\n"] }]
|
62
|
+
}], ctorParameters: () => [{ type: i1.DialogService }] });
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2RpYWxvZy9kaWFsb2ctZ3JvdXAvZGlhbG9nLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2RpYWxvZy9kaWFsb2ctZ3JvdXAvZGlhbG9nLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFRakcsTUFBTSxPQUFPLG9CQUFvQjtJQUsvQixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUhoRCx1QkFBa0IsR0FBZ0MsRUFBRSxDQUFDO1FBQzdDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRVksQ0FBQztJQUVyRDs7OztPQUlHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLG9CQUFvQixJQUFJLEtBQUssWUFBWSxzQkFBc0IsQ0FBQyxFQUNqRyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsQixJQUFHLEtBQUssWUFBWSxvQkFBb0IsRUFBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQWtDLENBQUMsQ0FBQztZQUNuRSxDQUFDO2lCQUFNLElBQUcsS0FBSyxZQUFZLHNCQUFzQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hGLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM5RSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ3hKLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDBGQUEwRjtJQUMxRixXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLGVBQTBDLEVBQUUsUUFBZ0I7UUFDdkUsZUFBZSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsZUFBMEM7UUFDckQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxlQUFlLENBQUMsQ0FBQztRQUU1RSxJQUFHLEtBQUssSUFBRyxDQUFDLEVBQUMsQ0FBQztZQUNaLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDOytHQXJEVSxvQkFBb0I7bUdBQXBCLG9CQUFvQix1RENYakMsMFpBUVk7OzRGREdDLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERpYWxvZ0Nsb3NlRXZlbnQsIERpYWxvZ0Nsb3NlTGF0ZXN0RXZlbnQsIERpYWxvZ09wZW5TdGFydEV2ZW50IH0gZnJvbSAnLi4vZGlhbG9nLXR5cGVzJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL2RpYWxvZy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtZGlhbG9nLWdyb3VwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kaWFsb2ctZ3JvdXAuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIGFjdGl2ZURpYWxvZ0V2ZW50czogRGlhbG9nT3BlblN0YXJ0RXZlbnQ8YW55PltdID0gW107XHJcbiAgcHJpdmF0ZSBkZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHsgfVxyXG5cclxuICAvKipXaGVuIHRoZSBncm91cCBjb21wb25lbnQgaXMgY3JlYXRlZCwgc3RhcnQgd2F0Y2hpbmcgZm9yIGFueSBEaWFsb2dPcGVuU3RhcnQgZXZlbnRzXHJcbiAgICogc28gdGhhdCB0aGUgZ3JvdXAgY2FuIHJlYWN0IGFuZCBtYWtlIHRoZSBtYXRjaGluZyBkaWFsb2cuIE5ldyBkaWFsb2dzIGdldCBhc3NpZ25lZCB1bmlxdWVcclxuICAgKiBldmVudElkcyBzbyB0aGF0IHdoZW4gdGhleSBjbG9zZSB3ZSBrbm93IGV4YWN0bHkgd2hpY2ggb25lIGlzIGRvbmUgYW5kIHdlIGNhbiB0YWtlIGl0XHJcbiAgICogb3V0IG9mIHRoZSBsaXN0IG9mIGFjdGl2ZSBkaWFsb2dzXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXZlbnRzLnBpcGUoXHJcbiAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIERpYWxvZ09wZW5TdGFydEV2ZW50IHx8IGV2ZW50IGluc3RhbmNlb2YgRGlhbG9nQ2xvc2VMYXRlc3RFdmVudCksXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcclxuICAgICkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgaWYoZXZlbnQgaW5zdGFuY2VvZiBEaWFsb2dPcGVuU3RhcnRFdmVudCl7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2dFdmVudHMucHVzaChldmVudCBhcyBEaWFsb2dPcGVuU3RhcnRFdmVudDxhbnk+KTtcclxuICAgICAgfSBlbHNlIGlmKGV2ZW50IGluc3RhbmNlb2YgRGlhbG9nQ2xvc2VMYXRlc3RFdmVudCAmJiB0aGlzLmFjdGl2ZURpYWxvZ0V2ZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IHNvdXJjZUV2ZW50ID0gdGhpcy5hY3RpdmVEaWFsb2dFdmVudHNbdGhpcy5hY3RpdmVEaWFsb2dFdmVudHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRyaWdnZXJFdmVudChuZXcgRGlhbG9nQ2xvc2VFdmVudChzb3VyY2VFdmVudC5ldmVudElkLCBzb3VyY2VFdmVudC5kaWFsb2dJZCwgZXZlbnQuZGlhbG9nUmVzdWx0Py5zYXZlLCBldmVudC5kaWFsb2dSZXN1bHQ/LmNvbnRleHQpKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ0Nsb3NlZChzb3VyY2VFdmVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFdoZW4gdGhlIGRpYWxvZyBncm91cCBpcyBkZXN0cm95ZWQgd2Ugbm8gbG9uZ2VyIHdhbnQgdG8gbGlzdGVuIGZvciBhbnkgb3BlbiBldmVudHMuICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqVGhlIGRpYWxvZyBjb21wb25lbnQgY29tcGxldGVkIG9wZW5pbmcgKGluY2x1ZGluZyBhbmltYXRpb24gZGVsYXkpIGFuZFxyXG4gICAqIGVtaXRzIGFuIGV2ZW50IHRoYXQgdGVsbHMgdXMgaXQgaXMgcmVhZHkuIFRoZSBncm91cCBjYW4gdGhlbiBwdW1wIG91dCBhIGRpYWxvZ1xyXG4gICAqIG9wZW5FbmQgZXZlbnQgKGtpbmRhIE5hdmlnYXRpb25FbmQgaW4gdGhlIHJvdXRlcikgdG8gdGVsbCBhbnlib2R5IHdobyBjYXJlcyB0aGF0XHJcbiAgICogdGhlIGRpYWxvZyBpcyBub3cgcmVhZHkuXHJcbiAgICovXHJcbiAgZGlhbG9nT3BlbmVkKGRpYWxvZ09wZW5FdmVudDogRGlhbG9nT3BlblN0YXJ0RXZlbnQ8YW55PiwgZGlhbG9nSWQ6IHN0cmluZykge1xyXG4gICAgZGlhbG9nT3BlbkV2ZW50LmRpYWxvZ0lkID0gZGlhbG9nSWQ7XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIGRpYWxvZyBoYXMgY2xvc2VkIChhZnRlciBhbmltYXRpb24gZGVsYXkpIGFuZCBlbWl0dGVkIGFuIGV2ZW50IHRvIHRlbGwgdGhlIGhvc3RpbmcgY29tcG9uZW50LlxyXG4gICAqIFdlIGhhbmRsZSB0aGUgZXZlbnQgYW5kIHB1bXAgYSBtYXRjaGluZyBEaWFsb2dDbG9zZUV2ZW50IHNvIHRoYXQgYW55Ym9keSB3aG8gY2FyZXMgY2FuIGtub3cgdGhhdCB0aGVcclxuICAgKiBkaWFsb2cgaW5zdGFuY2UgcmVmZXJlbmNlZCBieSBkaWFsb2dPcGVuRXZlbnQuZXZlbnRJZCBpcyBnb25lIG5vdy4gV2UgcmVtb3ZlIGl0IGZyb20gb3VyIGxpc3Qgb2ZcclxuICAgKiBhY3RpdmUgZGlhbG9ncyB3aGljaCBwdWxscyBpdCBvdXQgb2YgdGhlIERPTSB0b29cclxuICAgKi9cclxuICBkaWFsb2dDbG9zZWQoZGlhbG9nT3BlbkV2ZW50OiBEaWFsb2dPcGVuU3RhcnRFdmVudDxhbnk+KSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlRGlhbG9nRXZlbnRzLmZpbmRJbmRleChkID0+IGQgPT09IGRpYWxvZ09wZW5FdmVudCk7XHJcbiAgICBcclxuICAgIGlmKGluZGV4ID49MCl7XHJcbiAgICAgIHRoaXMuYWN0aXZlRGlhbG9nRXZlbnRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxlYy1kaWFsb2cgKm5nRm9yPVwibGV0IGRpYWxvZyBvZiBhY3RpdmVEaWFsb2dFdmVudHNcIlxyXG4gICAgICAgICAgIFtkaWFsb2dPcGVuU3RhcnRFdmVudElkXT1cImRpYWxvZy5ldmVudElkXCJcclxuICAgICAgICAgICBbc2l6ZV09XCJkaWFsb2cub3B0aW9ucz8uc2l6ZVwiXHJcbiAgICAgICAgICAgW2NvbnRlbnRdPVwiZGlhbG9nLmNvbnRlbnRcIlxyXG4gICAgICAgICAgIFtjb250ZXh0XT1cImRpYWxvZy5jb250ZXh0XCJcclxuICAgICAgICAgICBbb3B0aW9uc109XCJkaWFsb2cub3B0aW9uc1wiXHJcbiAgICAgICAgICAgKG9wZW5lZCk9XCJkaWFsb2dPcGVuZWQoZGlhbG9nLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAoY2xvc2VkKT1cImRpYWxvZ0Nsb3NlZChkaWFsb2cpXCI+XHJcbjwvZWMtZGlhbG9nPiJdfQ==
|