@energycap/components 0.41.1-ECAP-27592-angular-17.20241223-1652 → 0.41.1-ECAP-26841-date-input-features.20250106-0847
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/{esm2022 → esm2020}/energycap-components.mjs +4 -4
- package/esm2020/lib/components.module.mjs +423 -0
- package/esm2020/lib/controls/banner/banner.component.mjs +109 -0
- package/esm2020/lib/controls/button/button.component.mjs +106 -0
- package/esm2020/lib/controls/button/copy-button-base.directive.mjs +67 -0
- package/{esm2022 → esm2020}/lib/controls/button/copy-button.directive.mjs +28 -28
- package/esm2020/lib/controls/button/copy-table-button.directive.mjs +43 -0
- package/esm2020/lib/controls/calendar/calendar-item.component.mjs +91 -0
- package/esm2020/lib/controls/calendar/calendar.component.mjs +248 -0
- package/esm2020/lib/controls/calendar/calendar.types.mjs +2 -0
- package/esm2020/lib/controls/checkbox/checkbox.component.mjs +140 -0
- package/{esm2022 → esm2020}/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -38
- package/esm2020/lib/controls/combobox/combobox.component.mjs +879 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +57 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +62 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +100 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +101 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +76 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +79 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +210 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +81 -0
- package/esm2020/lib/controls/date-input/date-input.component.mjs +462 -0
- package/esm2020/lib/controls/date-input/date-input.types.mjs +44 -0
- package/esm2020/lib/controls/dropdown/dropdown.component.mjs +243 -0
- package/esm2020/lib/controls/file-upload/file-upload.component.mjs +261 -0
- package/esm2020/lib/controls/form-control/form-control.component.mjs +98 -0
- package/esm2020/lib/controls/form-control-base.mjs +151 -0
- package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
- package/esm2020/lib/controls/form-group/form-group.component.mjs +261 -0
- package/{esm2022 → esm2020}/lib/controls/help-popover/help-popover.component.mjs +31 -31
- package/esm2020/lib/controls/item-picker/item-picker.component.mjs +329 -0
- package/{esm2022 → esm2020}/lib/controls/link-button/link-button.component.mjs +11 -11
- package/esm2020/lib/controls/menu/menu.component.mjs +485 -0
- package/{esm2022 → esm2020}/lib/controls/navigation/link-item.mjs +1 -1
- package/esm2020/lib/controls/navigation/nav-group.mjs +39 -0
- package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
- package/{esm2022 → esm2020}/lib/controls/navigation/nav-item.mjs +1 -1
- package/esm2020/lib/controls/numericbox/numericbox.component.mjs +372 -0
- package/esm2020/lib/controls/popover/popover.component.mjs +117 -0
- package/{esm2022 → esm2020}/lib/controls/radio-button/radio-button-option.mjs +2 -2
- package/esm2020/lib/controls/radio-button/radio-button.component.mjs +82 -0
- package/esm2020/lib/controls/select/select.component.mjs +88 -0
- package/esm2020/lib/controls/tabs/tabs.component.mjs +47 -0
- package/esm2020/lib/controls/textbox/textbox.component.mjs +155 -0
- package/esm2020/lib/core/cache.service.mjs +105 -0
- package/esm2020/lib/core/custom-validators.mjs +29 -0
- package/esm2020/lib/core/date-time-helper.mjs +228 -0
- package/esm2020/lib/core/error.service.mjs +61 -0
- package/esm2020/lib/core/router-helper.service.mjs +111 -0
- package/esm2020/lib/core/scroll.service.mjs +89 -0
- package/{esm2022 → esm2020}/lib/core/telemetry-tracker.service.mjs +16 -16
- package/{esm2022 → esm2020}/lib/core/telemetry.service.mjs +38 -38
- package/esm2020/lib/core/validation-message.service.mjs +185 -0
- package/{esm2022 → esm2020}/lib/core/validation-patterns.mjs +30 -30
- package/esm2020/lib/core/window.service.mjs +186 -0
- package/esm2020/lib/display/app-bar/app-bar.component.mjs +46 -0
- package/esm2020/lib/display/avatar/avatar.component.mjs +67 -0
- package/esm2020/lib/display/avatar/avatar.service.mjs +64 -0
- package/esm2020/lib/display/confirm/confirm.component.mjs +168 -0
- package/{esm2022 → esm2020}/lib/display/dialog/dialog-content.mjs +1 -1
- package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
- package/{esm2022 → esm2020}/lib/display/dialog/dialog-types.mjs +76 -76
- package/esm2020/lib/display/dialog/dialog.component.mjs +281 -0
- package/{esm2022 → esm2020}/lib/display/dialog/dialog.service.mjs +71 -71
- package/{esm2022 → esm2020}/lib/display/help/help-types.mjs +1 -1
- package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +111 -0
- package/{esm2022 → esm2020}/lib/display/hierarchy/hierarchy-mocks.spec.mjs +53 -53
- package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +61 -0
- package/esm2020/lib/display/item-display/item-display.component.mjs +81 -0
- package/esm2020/lib/display/json-display/json-display.component.mjs +47 -0
- package/esm2020/lib/display/resizable/resizable-base.mjs +120 -0
- package/{esm2022 → esm2020}/lib/display/resizable/resizable.component.mjs +52 -52
- package/{esm2022 → esm2020}/lib/display/spinner/spinner.component.mjs +12 -12
- package/esm2020/lib/display/splash/splash.component.mjs +42 -0
- package/{esm2022 → esm2020}/lib/display/splash/splash.service.mjs +35 -35
- package/{esm2022 → esm2020}/lib/display/table/resizable-column.component.mjs +20 -20
- package/esm2020/lib/display/table/resizable-table.directive.mjs +227 -0
- package/esm2020/lib/display/table/searchable-table.component.mjs +342 -0
- package/{esm2022 → esm2020}/lib/display/table/table-detail-row.component.mjs +19 -19
- package/esm2020/lib/display/table/table-locked-column.component.mjs +58 -0
- package/{esm2022 → esm2020}/lib/display/table/table-master-header-row.component.mjs +14 -14
- package/esm2020/lib/display/table/table-master-row.component.mjs +163 -0
- package/esm2020/lib/display/table/table-pagination.component.mjs +155 -0
- package/esm2020/lib/display/table/table-selectable-row.component.mjs +235 -0
- package/esm2020/lib/display/table/table.component.mjs +249 -0
- package/esm2020/lib/display/tags/tag.mjs +18 -0
- package/esm2020/lib/display/tags/tags.component.mjs +77 -0
- package/esm2020/lib/display/toast/toast/toast.component.mjs +77 -0
- package/{esm2022 → esm2020}/lib/display/toast/toast-types.mjs +7 -7
- package/{esm2022 → esm2020}/lib/display/toast/toast.service.mjs +35 -35
- package/esm2020/lib/display/toast/toaster/toaster.component.mjs +114 -0
- package/{esm2022 → esm2020}/lib/display/tooltip/tooltip.component.mjs +28 -28
- package/{esm2022 → esm2020}/lib/display/tooltip/tooltip.service.mjs +78 -78
- package/esm2020/lib/display/tooltip-directive/tooltip.directive.mjs +173 -0
- package/{esm2022 → esm2020}/lib/display/tour/tour-types.mjs +33 -33
- package/esm2020/lib/display/tour/tour.component.mjs +398 -0
- package/esm2020/lib/display/tour/tour.service.mjs +75 -0
- package/esm2020/lib/display/tree/tree.component.mjs +135 -0
- package/esm2020/lib/display/view-overlay/view-overlay.component.mjs +58 -0
- package/esm2020/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
- package/esm2020/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
- package/esm2020/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +100 -0
- package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +163 -0
- package/esm2020/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
- package/esm2020/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
- package/esm2020/lib/shared/display/pipes/relative-date.pipe.mjs +62 -0
- package/esm2020/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
- package/esm2020/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
- package/esm2020/lib/shared/display.mjs +6 -0
- package/esm2020/lib/shared/form-group.helper.mjs +67 -0
- package/esm2020/lib/shared/json-helper.mjs +19 -0
- package/esm2020/lib/shared/lodash-helper.mjs +51 -0
- package/esm2020/lib/shared/page/page-base/page-base.component.mjs +387 -0
- package/{esm2022 → esm2020}/lib/shared/page/page-statuses.mjs +22 -22
- package/{esm2022 → esm2020}/lib/shared/page/page-title/page-title.component.mjs +23 -23
- package/esm2020/lib/shared/page/page-view/page-view.component.mjs +147 -0
- package/{esm2022 → esm2020}/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +16 -16
- package/{esm2022 → esm2020}/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +16 -16
- package/{esm2022 → esm2020}/lib/shared/testing/page-base-component-test-helper.spec.mjs +37 -37
- package/esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +98 -0
- package/{esm2022 → esm2020}/lib/shared/testing/public-mocks.spec.mjs +148 -148
- package/{esm2022 → esm2020}/lib/shared/testing/spy-factory.spec.mjs +39 -39
- package/{esm2022 → esm2020}/lib/shared/testing/translation-mocks.spec.mjs +56 -56
- package/{esm2022 → esm2020}/lib/shared/user-preference.service.mjs +17 -17
- package/esm2020/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
- package/{esm2022 → esm2020}/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -68
- package/{esm2022 → esm2020}/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -18
- package/esm2020/public-api.mjs +117 -0
- package/fesm2015/energycap-components.mjs +13370 -0
- package/fesm2015/energycap-components.mjs.map +1 -0
- package/{fesm2022 → fesm2020}/energycap-components.mjs +12971 -11819
- package/fesm2020/energycap-components.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/components.module.d.ts +92 -91
- 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 +22 -17
- package/lib/controls/calendar/calendar.component.d.ts +52 -54
- package/lib/controls/calendar/calendar.types.d.ts +11 -7
- 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-selection-strategies/date-input-selection-strategy-base.d.ts +42 -0
- package/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.d.ts +21 -0
- package/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.d.ts +21 -0
- package/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.d.ts +21 -0
- package/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.d.ts +18 -0
- package/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.d.ts +18 -0
- package/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.d.ts +21 -0
- package/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.d.ts +20 -0
- package/lib/controls/date-input/date-input.component.d.ts +115 -80
- package/lib/controls/date-input/date-input.types.d.ts +62 -0
- 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 +28 -30
- 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/keyboard-nav-container/keyboard-nav-container.directive.d.ts +23 -0
- 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 +18 -12
- package/public-api.d.ts +113 -111
- 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 +9 -1
- package/esm2022/lib/components.module.mjs +0 -418
- package/esm2022/lib/controls/banner/banner.component.mjs +0 -109
- package/esm2022/lib/controls/button/button.component.mjs +0 -106
- package/esm2022/lib/controls/button/copy-button-base.directive.mjs +0 -67
- package/esm2022/lib/controls/button/copy-table-button.directive.mjs +0 -43
- package/esm2022/lib/controls/calendar/calendar-item.component.mjs +0 -59
- package/esm2022/lib/controls/calendar/calendar.component.mjs +0 -200
- package/esm2022/lib/controls/calendar/calendar.types.mjs +0 -4
- package/esm2022/lib/controls/checkbox/checkbox.component.mjs +0 -140
- package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -879
- package/esm2022/lib/controls/date-input/date-input.component.mjs +0 -256
- package/esm2022/lib/controls/dropdown/dropdown.component.mjs +0 -243
- package/esm2022/lib/controls/file-upload/file-upload.component.mjs +0 -261
- package/esm2022/lib/controls/form-control/form-control.component.mjs +0 -104
- package/esm2022/lib/controls/form-control-base.mjs +0 -151
- package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
- package/esm2022/lib/controls/form-group/form-group.component.mjs +0 -261
- package/esm2022/lib/controls/item-picker/item-picker.component.mjs +0 -329
- package/esm2022/lib/controls/menu/menu.component.mjs +0 -485
- package/esm2022/lib/controls/navigation/nav-group.mjs +0 -39
- package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
- package/esm2022/lib/controls/numericbox/numericbox.component.mjs +0 -372
- package/esm2022/lib/controls/popover/popover.component.mjs +0 -117
- package/esm2022/lib/controls/radio-button/radio-button.component.mjs +0 -82
- package/esm2022/lib/controls/select/select.component.mjs +0 -88
- package/esm2022/lib/controls/tabs/tabs.component.mjs +0 -47
- package/esm2022/lib/controls/textbox/textbox.component.mjs +0 -155
- package/esm2022/lib/core/cache.service.mjs +0 -105
- package/esm2022/lib/core/custom-validators.mjs +0 -29
- package/esm2022/lib/core/date-time-helper.mjs +0 -220
- package/esm2022/lib/core/error.service.mjs +0 -61
- package/esm2022/lib/core/router-helper.service.mjs +0 -111
- package/esm2022/lib/core/scroll.service.mjs +0 -89
- package/esm2022/lib/core/validation-message.service.mjs +0 -185
- package/esm2022/lib/core/window.service.mjs +0 -186
- package/esm2022/lib/display/app-bar/app-bar.component.mjs +0 -46
- package/esm2022/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2022/lib/display/avatar/avatar.service.mjs +0 -64
- package/esm2022/lib/display/confirm/confirm.component.mjs +0 -168
- package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
- package/esm2022/lib/display/dialog/dialog.component.mjs +0 -281
- package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +0 -111
- package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -61
- package/esm2022/lib/display/item-display/item-display.component.mjs +0 -81
- package/esm2022/lib/display/json-display/json-display.component.mjs +0 -47
- package/esm2022/lib/display/resizable/resizable-base.mjs +0 -120
- package/esm2022/lib/display/splash/splash.component.mjs +0 -42
- package/esm2022/lib/display/table/resizable-table.directive.mjs +0 -227
- package/esm2022/lib/display/table/searchable-table.component.mjs +0 -342
- package/esm2022/lib/display/table/table-locked-column.component.mjs +0 -58
- package/esm2022/lib/display/table/table-master-row.component.mjs +0 -163
- package/esm2022/lib/display/table/table-pagination.component.mjs +0 -155
- package/esm2022/lib/display/table/table-selectable-row.component.mjs +0 -235
- package/esm2022/lib/display/table/table.component.mjs +0 -249
- package/esm2022/lib/display/tags/tag.mjs +0 -18
- package/esm2022/lib/display/tags/tags.component.mjs +0 -77
- package/esm2022/lib/display/toast/toast/toast.component.mjs +0 -77
- package/esm2022/lib/display/toast/toaster/toaster.component.mjs +0 -114
- package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
- package/esm2022/lib/display/tour/tour.component.mjs +0 -398
- package/esm2022/lib/display/tour/tour.service.mjs +0 -75
- package/esm2022/lib/display/tree/tree.component.mjs +0 -135
- package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +0 -58
- package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
- package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +0 -166
- package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +0 -50
- package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
- package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
- package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
- package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
- package/esm2022/lib/shared/display.mjs +0 -6
- package/esm2022/lib/shared/form-group.helper.mjs +0 -67
- package/esm2022/lib/shared/json-helper.mjs +0 -19
- package/esm2022/lib/shared/lodash-helper.mjs +0 -52
- package/esm2022/lib/shared/page/page-base/page-base.component.mjs +0 -387
- package/esm2022/lib/shared/page/page-view/page-view.component.mjs +0 -147
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
- package/esm2022/public-api.mjs +0 -115
- package/fesm2022/energycap-components.mjs.map +0 -1
@@ -1,71 +1,71 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import { Subject } from 'rxjs';
|
3
|
-
import { map, skipWhile, take } from 'rxjs/operators';
|
4
|
-
import { ConfirmComponent } from '../confirm/confirm.component';
|
5
|
-
import { DialogCloseEvent, DialogCloseLatestEvent, DialogOpenStartEvent } from './dialog-types';
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
/**
|
8
|
-
* Service used to communcate with ng5 dialogs from an ng1 view. Any dialogs that
|
9
|
-
* have been added to ng1 views must be added to the DialogCatalog in order
|
10
|
-
* to know which component to load inside the dialog. You can also optionally subscribe
|
11
|
-
* to an onClose event to do some work after the dialog closes
|
12
|
-
*/
|
13
|
-
export class DialogService {
|
14
|
-
constructor() {
|
15
|
-
/**
|
16
|
-
* Emits DialogEvents when the dialog opens or closes.
|
17
|
-
*/
|
18
|
-
this.events = new Subject();
|
19
|
-
}
|
20
|
-
/**
|
21
|
-
* Open the root dialog.
|
22
|
-
* @param content - The component class to load into the dialog
|
23
|
-
* @param size - The size of the dialog
|
24
|
-
* @param context - optional context to pass to the dialog content during initialization.
|
25
|
-
* @param options - extra options to configure the dialog
|
26
|
-
* @returns Observable of a typed DialogResult which specifies if the dialog was saved and an optional context.
|
27
|
-
* @example
|
28
|
-
// From typescript
|
29
|
-
try {
|
30
|
-
const result = await lastValueFrom(this.dialogService.openDialog(MyComponent, 'small', myContext, options));
|
31
|
-
// do something with result
|
32
|
-
} catch(error) {
|
33
|
-
// do something with error
|
34
|
-
}
|
35
|
-
*/
|
36
|
-
openDialog(content, size, context, options) {
|
37
|
-
options = options || {};
|
38
|
-
options.size = size;
|
39
|
-
const event = new DialogOpenStartEvent(content, context, options);
|
40
|
-
const complete = this.events.pipe(skipWhile(e => !(e instanceof DialogCloseEvent) || e.eventId !== event.eventId), map(e => e.dialogResult), take(1) //mark the observable as complete as soon as any closeEvent happens for this particular dialogOpen event, allowing lastValueFrom to work
|
41
|
-
);
|
42
|
-
this.triggerEvent(event);
|
43
|
-
return complete;
|
44
|
-
}
|
45
|
-
/**Close whatever dialog was most recently opened, with the provided result.
|
46
|
-
* The result must be in a form the caller can expect (must match the dialog) so use this carefully
|
47
|
-
* if you are returning any result other than cancel. It is most useful if you are opening
|
48
|
-
* a dialog with a template reference instead of a true dialog child component
|
49
|
-
*/
|
50
|
-
closeLatestDialog(result) {
|
51
|
-
this.triggerEvent(new DialogCloseLatestEvent(result));
|
52
|
-
}
|
53
|
-
/**
|
54
|
-
* Open a Confirmation Dialog with the given context
|
55
|
-
*/
|
56
|
-
confirm(context) {
|
57
|
-
return this.openDialog(ConfirmComponent, 'small', context);
|
58
|
-
}
|
59
|
-
triggerEvent(event) {
|
60
|
-
this.events.next(event);
|
61
|
-
}
|
62
|
-
|
63
|
-
|
64
|
-
}
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
66
|
-
type: Injectable,
|
67
|
-
args: [{
|
68
|
-
providedIn: 'root'
|
69
|
-
}]
|
70
|
-
}] });
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
1
|
+
import { Injectable } from '@angular/core';
|
2
|
+
import { Subject } from 'rxjs';
|
3
|
+
import { map, skipWhile, take } from 'rxjs/operators';
|
4
|
+
import { ConfirmComponent } from '../confirm/confirm.component';
|
5
|
+
import { DialogCloseEvent, DialogCloseLatestEvent, DialogOpenStartEvent } from './dialog-types';
|
6
|
+
import * as i0 from "@angular/core";
|
7
|
+
/**
|
8
|
+
* Service used to communcate with ng5 dialogs from an ng1 view. Any dialogs that
|
9
|
+
* have been added to ng1 views must be added to the DialogCatalog in order
|
10
|
+
* to know which component to load inside the dialog. You can also optionally subscribe
|
11
|
+
* to an onClose event to do some work after the dialog closes
|
12
|
+
*/
|
13
|
+
export class DialogService {
|
14
|
+
constructor() {
|
15
|
+
/**
|
16
|
+
* Emits DialogEvents when the dialog opens or closes.
|
17
|
+
*/
|
18
|
+
this.events = new Subject();
|
19
|
+
}
|
20
|
+
/**
|
21
|
+
* Open the root dialog.
|
22
|
+
* @param content - The component class to load into the dialog
|
23
|
+
* @param size - The size of the dialog
|
24
|
+
* @param context - optional context to pass to the dialog content during initialization.
|
25
|
+
* @param options - extra options to configure the dialog
|
26
|
+
* @returns Observable of a typed DialogResult which specifies if the dialog was saved and an optional context.
|
27
|
+
* @example
|
28
|
+
// From typescript
|
29
|
+
try {
|
30
|
+
const result = await lastValueFrom(this.dialogService.openDialog(MyComponent, 'small', myContext, options));
|
31
|
+
// do something with result
|
32
|
+
} catch(error) {
|
33
|
+
// do something with error
|
34
|
+
}
|
35
|
+
*/
|
36
|
+
openDialog(content, size, context, options) {
|
37
|
+
options = options || {};
|
38
|
+
options.size = size;
|
39
|
+
const event = new DialogOpenStartEvent(content, context, options);
|
40
|
+
const complete = this.events.pipe(skipWhile(e => !(e instanceof DialogCloseEvent) || e.eventId !== event.eventId), map(e => e.dialogResult), take(1) //mark the observable as complete as soon as any closeEvent happens for this particular dialogOpen event, allowing lastValueFrom to work
|
41
|
+
);
|
42
|
+
this.triggerEvent(event);
|
43
|
+
return complete;
|
44
|
+
}
|
45
|
+
/**Close whatever dialog was most recently opened, with the provided result.
|
46
|
+
* The result must be in a form the caller can expect (must match the dialog) so use this carefully
|
47
|
+
* if you are returning any result other than cancel. It is most useful if you are opening
|
48
|
+
* a dialog with a template reference instead of a true dialog child component
|
49
|
+
*/
|
50
|
+
closeLatestDialog(result) {
|
51
|
+
this.triggerEvent(new DialogCloseLatestEvent(result));
|
52
|
+
}
|
53
|
+
/**
|
54
|
+
* Open a Confirmation Dialog with the given context
|
55
|
+
*/
|
56
|
+
confirm(context) {
|
57
|
+
return this.openDialog(ConfirmComponent, 'small', context);
|
58
|
+
}
|
59
|
+
triggerEvent(event) {
|
60
|
+
this.events.next(event);
|
61
|
+
}
|
62
|
+
}
|
63
|
+
DialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
64
|
+
DialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DialogService, providedIn: 'root' });
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DialogService, decorators: [{
|
66
|
+
type: Injectable,
|
67
|
+
args: [{
|
68
|
+
providedIn: 'root'
|
69
|
+
}]
|
70
|
+
}] });
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS9kaWFsb2cvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQXdCLE1BQU0sOEJBQThCLENBQUM7QUFFdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFlLG9CQUFvQixFQUEyQyxNQUFNLGdCQUFnQixDQUFDOztBQUV0Sjs7Ozs7R0FLRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSUU7O1dBRUc7UUFDSSxXQUFNLEdBQTRCLElBQUksT0FBTyxFQUFFLENBQUM7S0FxRHhEO0lBbkRDOzs7Ozs7Ozs7Ozs7Ozs7T0FlRztJQUNJLFVBQVUsQ0FBSSxPQUFrRCxFQUFFLElBQWdCLEVBQUUsT0FBVyxFQUFFLE9BQXVCO1FBQzdILE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRXBCLE1BQU0sS0FBSyxHQUFHLElBQUksb0JBQW9CLENBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVyRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDL0IsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUMvRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBRSxDQUF5QixDQUFDLFlBQWEsQ0FBQyxFQUNsRCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsd0lBQXdJO1NBQ2pKLENBQUE7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQUksTUFBdUI7UUFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTyxDQUFDLE9BQTZCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFrQjtRQUNuQyxJQUFJLENBQUMsTUFBK0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7MEdBeERVLGFBQWE7OEdBQWIsYUFBYSxjQUZaLE1BQU07MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgc2tpcFdoaWxlLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb25maXJtQ29tcG9uZW50LCBDb25maXJtRGlhbG9nQ29udGV4dCB9IGZyb20gJy4uL2NvbmZpcm0vY29uZmlybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dDb250ZW50IH0gZnJvbSAnLi9kaWFsb2ctY29udGVudCc7XHJcbmltcG9ydCB7IERpYWxvZ0Nsb3NlRXZlbnQsIERpYWxvZ0Nsb3NlTGF0ZXN0RXZlbnQsIERpYWxvZ0V2ZW50LCBEaWFsb2dPcGVuU3RhcnRFdmVudCwgRGlhbG9nT3B0aW9ucywgRGlhbG9nUmVzdWx0LCBEaWFsb2dTaXplIH0gZnJvbSAnLi9kaWFsb2ctdHlwZXMnO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgdXNlZCB0byBjb21tdW5jYXRlIHdpdGggbmc1IGRpYWxvZ3MgZnJvbSBhbiBuZzEgdmlldy4gQW55IGRpYWxvZ3MgdGhhdFxyXG4gKiBoYXZlIGJlZW4gYWRkZWQgdG8gbmcxIHZpZXdzIG11c3QgYmUgYWRkZWQgdG8gdGhlIERpYWxvZ0NhdGFsb2cgaW4gb3JkZXJcclxuICogdG8ga25vdyB3aGljaCBjb21wb25lbnQgdG8gbG9hZCBpbnNpZGUgdGhlIGRpYWxvZy4gWW91IGNhbiBhbHNvIG9wdGlvbmFsbHkgc3Vic2NyaWJlXHJcbiAqIHRvIGFuIG9uQ2xvc2UgZXZlbnQgdG8gZG8gc29tZSB3b3JrIGFmdGVyIHRoZSBkaWFsb2cgY2xvc2VzXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIHtcclxuICAvKipcclxuICAgKiBFbWl0cyBEaWFsb2dFdmVudHMgd2hlbiB0aGUgZGlhbG9nIG9wZW5zIG9yIGNsb3Nlcy5cclxuICAgKi9cclxuICBwdWJsaWMgZXZlbnRzOiBPYnNlcnZhYmxlPERpYWxvZ0V2ZW50PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW4gdGhlIHJvb3QgZGlhbG9nLlxyXG4gICAqIEBwYXJhbSBjb250ZW50IC0gVGhlIGNvbXBvbmVudCBjbGFzcyB0byBsb2FkIGludG8gdGhlIGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBzaXplIC0gVGhlIHNpemUgb2YgdGhlIGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gb3B0aW9uYWwgY29udGV4dCB0byBwYXNzIHRvIHRoZSBkaWFsb2cgY29udGVudCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBleHRyYSBvcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgZGlhbG9nXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiBhIHR5cGVkIERpYWxvZ1Jlc3VsdCB3aGljaCBzcGVjaWZpZXMgaWYgdGhlIGRpYWxvZyB3YXMgc2F2ZWQgYW5kIGFuIG9wdGlvbmFsIGNvbnRleHQuXHJcbiAgICogQGV4YW1wbGVcclxuICAgICAgLy8gRnJvbSB0eXBlc2NyaXB0XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbGFzdFZhbHVlRnJvbSh0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkRpYWxvZyhNeUNvbXBvbmVudCwgJ3NtYWxsJywgbXlDb250ZXh0LCBvcHRpb25zKSk7XHJcbiAgICAgICAgLy8gZG8gc29tZXRoaW5nIHdpdGggcmVzdWx0XHJcbiAgICAgIH0gY2F0Y2goZXJyb3IpIHtcclxuICAgICAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCBlcnJvclxyXG4gICAgICB9XHJcbiAgICovXHJcbiAgcHVibGljIG9wZW5EaWFsb2c8VD4oY29udGVudDogVHlwZTxEaWFsb2dDb250ZW50PFQ+PiB8IFRlbXBsYXRlUmVmPGFueT4sIHNpemU6IERpYWxvZ1NpemUsIGNvbnRleHQ/OiBULCBvcHRpb25zPzogRGlhbG9nT3B0aW9ucyk6IE9ic2VydmFibGU8RGlhbG9nUmVzdWx0PFQ+PiB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuICAgIG9wdGlvbnMuc2l6ZSA9IHNpemU7XHJcblxyXG4gICAgY29uc3QgZXZlbnQgPSBuZXcgRGlhbG9nT3BlblN0YXJ0RXZlbnQ8VD4oY29udGVudCwgY29udGV4dCwgb3B0aW9ucyk7XHJcbiAgICBcclxuICAgIGNvbnN0IGNvbXBsZXRlID0gdGhpcy5ldmVudHMucGlwZShcclxuICAgICAgc2tpcFdoaWxlKGUgPT4gIShlIGluc3RhbmNlb2YgRGlhbG9nQ2xvc2VFdmVudCkgfHwgZS5ldmVudElkICE9PSBldmVudC5ldmVudElkKSxcclxuICAgICAgbWFwKGUgPT4gKGUgYXMgRGlhbG9nQ2xvc2VFdmVudDxUPikuZGlhbG9nUmVzdWx0ISksXHJcbiAgICAgIHRha2UoMSkgLy9tYXJrIHRoZSBvYnNlcnZhYmxlIGFzIGNvbXBsZXRlIGFzIHNvb24gYXMgYW55IGNsb3NlRXZlbnQgaGFwcGVucyBmb3IgdGhpcyBwYXJ0aWN1bGFyIGRpYWxvZ09wZW4gZXZlbnQsIGFsbG93aW5nIGxhc3RWYWx1ZUZyb20gdG8gd29ya1xyXG4gICAgKVxyXG4gICAgICBcclxuICAgIHRoaXMudHJpZ2dlckV2ZW50KGV2ZW50KTtcclxuICAgIHJldHVybiBjb21wbGV0ZTtcclxuICB9XHJcblxyXG4gIC8qKkNsb3NlIHdoYXRldmVyIGRpYWxvZyB3YXMgbW9zdCByZWNlbnRseSBvcGVuZWQsIHdpdGggdGhlIHByb3ZpZGVkIHJlc3VsdC5cclxuICAgKiBUaGUgcmVzdWx0IG11c3QgYmUgaW4gYSBmb3JtIHRoZSBjYWxsZXIgY2FuIGV4cGVjdCAobXVzdCBtYXRjaCB0aGUgZGlhbG9nKSBzbyB1c2UgdGhpcyBjYXJlZnVsbHlcclxuICAgKiBpZiB5b3UgYXJlIHJldHVybmluZyBhbnkgcmVzdWx0IG90aGVyIHRoYW4gY2FuY2VsLiBJdCBpcyBtb3N0IHVzZWZ1bCBpZiB5b3UgYXJlIG9wZW5pbmdcclxuICAgKiBhIGRpYWxvZyB3aXRoIGEgdGVtcGxhdGUgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSB0cnVlIGRpYWxvZyBjaGlsZCBjb21wb25lbnRcclxuICAgKi9cclxuICBwdWJsaWMgY2xvc2VMYXRlc3REaWFsb2c8VD4ocmVzdWx0OiBEaWFsb2dSZXN1bHQ8VD4pe1xyXG4gICAgdGhpcy50cmlnZ2VyRXZlbnQobmV3IERpYWxvZ0Nsb3NlTGF0ZXN0RXZlbnQocmVzdWx0KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGEgQ29uZmlybWF0aW9uIERpYWxvZyB3aXRoIHRoZSBnaXZlbiBjb250ZXh0XHJcbiAgICovXHJcbiAgcHVibGljIGNvbmZpcm0oY29udGV4dDogQ29uZmlybURpYWxvZ0NvbnRleHQpOiBPYnNlcnZhYmxlPERpYWxvZ1Jlc3VsdDxDb25maXJtRGlhbG9nQ29udGV4dD4+IHtcclxuICAgIHJldHVybiB0aGlzLm9wZW5EaWFsb2coQ29uZmlybUNvbXBvbmVudCwgJ3NtYWxsJywgY29udGV4dCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJpZ2dlckV2ZW50KGV2ZW50OiBEaWFsb2dFdmVudCkge1xyXG4gICAgKHRoaXMuZXZlbnRzIGFzIFN1YmplY3Q8RGlhbG9nRXZlbnQ+KS5uZXh0KGV2ZW50KTtcclxuICB9XHJcbn1cclxuIl19
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export {};
|
1
|
+
export {};
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2hlbHAvaGVscC10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgSGVscCA9IHtcclxuICBjb250cm9sczogSGVscENvbnRyb2xbXSxcclxuICBvdmVydmlldz86IHN0cmluZyxcclxuICBhbHdheXNWaXNpYmxlPzogYm9vbGVhbixcclxuICBpZ25vcmVVc2VyU2V0dGluZz86IGJvb2xlYW5cclxufTtcclxuXHJcbi8qKlxyXG4gKiBBIGZvcm0gY29udHJvbCBpbiB0aGUgY3VycmVudCB2aWV3IHRvIGRlZmluZSBpbiB0aGUgaGVscCBwYW5lbFxyXG4gKi9cclxuIGV4cG9ydCB0eXBlIEhlbHBDb250cm9sID0ge1xyXG4gIC8qKlxyXG4gICAqIFRoZSBjb250cm9scyBpZFxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICovXHJcbiAgaWQ6IHN0cmluZyxcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGZvcm0gY29udHJvbCBpZHMgdG8gbWF0Y2ggdGhpcyBoZWxwIGNvbnRyb2xcclxuICAgKiBJZiB0aGlzIGFycmF5IGlzIGRlZmluZWQgdGhlIGlkJ3Mgd2l0aGluIHRoaXMgd2lsbCB0YWtlIHByZWNpZGVuY2Ugb3ZlciB0aGVcclxuICAgKiBpZCBvZiB0aGUgaGVscCBjb250cm9sIHdoZW4gdHJ5aW5nIHRvIG1hdGNoIHVwIGEgY29udHJvbFxyXG4gICAqIEB0eXBlIHtzdHJpbmdbXX1cclxuICAgKi9cclxuICBpZEdyb3VwPzogQXJyYXk8c3RyaW5nPixcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNvbnRyb2xcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqL1xyXG4gIGxhYmVsOiBzdHJpbmcsXHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBkZWZpbml0aW9uIGZvciB0aGUgY29udHJvbFxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICovXHJcbiAgZGVmaW5pdGlvbjogc3RyaW5nXHJcbn07XHJcbiJdfQ==
|
@@ -0,0 +1,111 @@
|
|
1
|
+
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
2
|
+
import { Subject } from 'rxjs';
|
3
|
+
import { TelemetryService } from '../../core/telemetry.service';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
export class HierarchyItem {
|
6
|
+
constructor() {
|
7
|
+
this.id = '';
|
8
|
+
/** Label to display for the item */
|
9
|
+
this.label = '';
|
10
|
+
/** Indicates how many levels deep the item is in the parent structure */
|
11
|
+
this.level = 0;
|
12
|
+
/** Display item as a link, a heading, or with a divider line below it */
|
13
|
+
this.display = 'default';
|
14
|
+
/** Set to hide toggle, even if item has children */
|
15
|
+
this.hideToggle = false;
|
16
|
+
/** Flag to indicate whether the item has children or not, mostly drives
|
17
|
+
* whether you get the expand/collapse button
|
18
|
+
*/
|
19
|
+
this.hasChildren = false;
|
20
|
+
/** Array of children if any for the item */
|
21
|
+
this.children = [];
|
22
|
+
/** Flag to indicate if the item has been expanded */
|
23
|
+
this.expanded = false;
|
24
|
+
/** Flag to indicate if the item is selected */
|
25
|
+
this.selected = false;
|
26
|
+
/** Flag to indicate if the item can be selected */
|
27
|
+
this.selectable = false;
|
28
|
+
this.readonly = false;
|
29
|
+
/** Status of each item to indicate whether children lookup is pending or
|
30
|
+
* if an error occurred retrieving data
|
31
|
+
*/
|
32
|
+
this.status = "hasData";
|
33
|
+
/** Indicates if the item is a top level entity, e.g. Organization or Cost Center */
|
34
|
+
this.topLevel = false;
|
35
|
+
/**
|
36
|
+
* When checking the url for activeness, the url must match exactly or partially
|
37
|
+
* @see https://angular.io/guide/router#active-router-links
|
38
|
+
*/
|
39
|
+
this.isActiveExactMatch = true;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
export class HierarchyBase {
|
43
|
+
get destroyed() {
|
44
|
+
return this._destroyed;
|
45
|
+
}
|
46
|
+
constructor(injector) {
|
47
|
+
/** Event emitter to request children for a given item */
|
48
|
+
this.getItemChildren = new EventEmitter();
|
49
|
+
/** Event emitted when an item is toggled. */
|
50
|
+
this.itemToggled = new EventEmitter();
|
51
|
+
/**
|
52
|
+
* Used to unsubscribe from observables
|
53
|
+
*/
|
54
|
+
this._destroyed = new Subject();
|
55
|
+
this.telemetryService = injector.get(TelemetryService);
|
56
|
+
}
|
57
|
+
ngOnChanges(changes) {
|
58
|
+
if (changes && changes.rootNode && changes.rootNode.currentValue) {
|
59
|
+
/** If the rootNode has children and we don't know about them yet we must be loading
|
60
|
+
* the view without the new hierarchy api
|
61
|
+
*/
|
62
|
+
if (this.rootNode.hasChildren && this.rootNode.children.length === 0) {
|
63
|
+
this.getItemChildren.emit(this.rootNode);
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
67
|
+
/**
|
68
|
+
* Function called when the component is destroyed
|
69
|
+
*/
|
70
|
+
ngOnDestroy() {
|
71
|
+
this.destroyed.next();
|
72
|
+
this.destroyed.unsubscribe();
|
73
|
+
}
|
74
|
+
/** Handler for the toggle button */
|
75
|
+
toggleItemClicked(item, expanded) {
|
76
|
+
item.expanded = expanded;
|
77
|
+
this.telemetryService.trackEvent('toggle-tree-node', {
|
78
|
+
newExpandState: item.expanded ? 'expanded' : 'collapsed',
|
79
|
+
itemDepth: `${item.level}`,
|
80
|
+
});
|
81
|
+
this.itemToggled.emit({ item, expanded });
|
82
|
+
if (item.expanded && item.hasChildren && item.children.length === 0) {
|
83
|
+
item.status = "pending";
|
84
|
+
this.getItemChildren.emit(item);
|
85
|
+
}
|
86
|
+
}
|
87
|
+
/** Method exposed to the parent component to set the items children once they are available
|
88
|
+
*/
|
89
|
+
setItemChildren(parentItem, items) {
|
90
|
+
parentItem.children = items;
|
91
|
+
parentItem.status = "hasData";
|
92
|
+
}
|
93
|
+
/** Method exposed to the parent component to indicate that something happened on the
|
94
|
+
* item that caused an error, could be retrieving children
|
95
|
+
*/
|
96
|
+
setItemError(parentItem) {
|
97
|
+
parentItem.status = "error";
|
98
|
+
}
|
99
|
+
}
|
100
|
+
HierarchyBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HierarchyBase, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
|
101
|
+
HierarchyBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: HierarchyBase, inputs: { rootNode: "rootNode" }, outputs: { getItemChildren: "getItemChildren", itemToggled: "itemToggled" }, usesOnChanges: true, ngImport: i0 });
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HierarchyBase, decorators: [{
|
103
|
+
type: Directive
|
104
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { rootNode: [{
|
105
|
+
type: Input
|
106
|
+
}], getItemChildren: [{
|
107
|
+
type: Output
|
108
|
+
}], itemToggled: [{
|
109
|
+
type: Output
|
110
|
+
}] } });
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2h5LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS9oaWVyYXJjaHkvaGllcmFyY2h5LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVksS0FBSyxFQUF3QixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXRILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBR2hFLE1BQU0sT0FBTyxhQUFhO0lBQTFCO1FBQ0UsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQUVoQixvQ0FBb0M7UUFDcEMsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQVFuQix5RUFBeUU7UUFDekUsVUFBSyxHQUFXLENBQUMsQ0FBQztRQVVsQix5RUFBeUU7UUFDekUsWUFBTyxHQUF1QyxTQUFTLENBQUM7UUFFeEQsb0RBQW9EO1FBQ3BELGVBQVUsR0FBYSxLQUFLLENBQUM7UUFFN0I7O1dBRUc7UUFDSCxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUU3Qiw0Q0FBNEM7UUFDNUMsYUFBUSxHQUF5QixFQUFFLENBQUM7UUFFcEMscURBQXFEO1FBQ3JELGFBQVEsR0FBYSxLQUFLLENBQUM7UUFFM0IsK0NBQStDO1FBQy9DLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFFM0IsbURBQW1EO1FBQ25ELGVBQVUsR0FBYSxLQUFLLENBQUM7UUFFN0IsYUFBUSxHQUFhLEtBQUssQ0FBQztRQUUzQjs7V0FFRztRQUNILFdBQU0sR0FBZ0IsU0FBUyxDQUFDO1FBRWhDLG9GQUFvRjtRQUNwRixhQUFRLEdBQWEsS0FBSyxDQUFDO1FBRTNCOzs7V0FHRztRQUNILHVCQUFrQixHQUFhLElBQUksQ0FBQztJQVl0QyxDQUFDO0NBQUE7QUFXRCxNQUFNLE9BQWdCLGFBQWE7SUFlakMsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBSUQsWUFBWSxRQUFrQjtRQWhCOUIseURBQXlEO1FBQ3hDLG9CQUFlLEdBQWdDLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRWxHLDZDQUE2QztRQUM1QixnQkFBVyxHQUF1QyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUU1Rzs7VUFFRTtRQUNNLGVBQVUsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVF0RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRTtZQUNoRTs7Y0FFRTtZQUNGLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDcEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQ7O01BRUU7SUFDSyxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsb0NBQW9DO0lBQzdCLGlCQUFpQixDQUFDLElBQW1CLEVBQUUsUUFBaUI7UUFDN0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRTtZQUNuRCxjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXO1lBQ3hELFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUU7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUUxQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbkUsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRUQ7T0FDRztJQUNJLGVBQWUsQ0FBQyxVQUF5QixFQUFFLEtBQTJCO1FBQzNFLFVBQVUsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzVCLFVBQVUsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7TUFFRTtJQUNLLFlBQVksQ0FBQyxVQUF5QjtRQUMzQyxVQUFVLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUM5QixDQUFDOzswR0F4RW1CLGFBQWE7OEZBQWIsYUFBYTsyRkFBYixhQUFhO2tCQURsQyxTQUFTOytGQUlRLFFBQVE7c0JBQXZCLEtBQUs7Z0JBR1csZUFBZTtzQkFBL0IsTUFBTTtnQkFHVSxXQUFXO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYXJhbXMsIFF1ZXJ5UGFyYW1zSGFuZGxpbmcgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExpbmtJdGVtIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvbmF2aWdhdGlvbi9saW5rLWl0ZW0nO1xyXG5pbXBvcnQgeyBUZWxlbWV0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90ZWxlbWV0cnkuc2VydmljZSc7XHJcbmltcG9ydCB7IFZpZXdTdGF0dXMgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGlzcGxheSc7XHJcblxyXG5leHBvcnQgY2xhc3MgSGllcmFyY2h5SXRlbSBpbXBsZW1lbnRzIExpbmtJdGVtIHtcclxuICBpZDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBMYWJlbCB0byBkaXNwbGF5IGZvciB0aGUgaXRlbSAqL1xyXG4gIGxhYmVsOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqIFRleHQgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBpdGVtJ3MgdG9vbHRpcC4gV2hlbiBub3QgcHJvdmlkZWQsIHRoZSBsYWJlbCB3aWxsIGJlIGRpc3BsYXllZC4gKi9cclxuICB0b29sdGlwPzogc3RyaW5nO1xyXG5cclxuICAvKiogVGV4dCB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGl0ZW0ncyBpY29uIHRvb2x0aXAuICovXHJcbiAgaWNvblRvb2x0aXA/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBJbmRpY2F0ZXMgaG93IG1hbnkgbGV2ZWxzIGRlZXAgdGhlIGl0ZW0gaXMgaW4gdGhlIHBhcmVudCBzdHJ1Y3R1cmUgKi9cclxuICBsZXZlbDogbnVtYmVyID0gMDtcclxuXHJcbiAgdXJsPzogc3RyaW5nO1xyXG5cclxuICBxdWVyeVBhcmFtcz86IFBhcmFtcyB8IG51bGw7XHJcblxyXG4gIHF1ZXJ5UGFyYW1zSGFuZGxpbmc/OiBRdWVyeVBhcmFtc0hhbmRsaW5nO1xyXG5cclxuICBpY29uPzogc3RyaW5nO1xyXG5cclxuICAvKiogRGlzcGxheSBpdGVtIGFzIGEgbGluaywgYSBoZWFkaW5nLCBvciB3aXRoIGEgZGl2aWRlciBsaW5lIGJlbG93IGl0ICovXHJcbiAgZGlzcGxheT86ICdkZWZhdWx0JyB8ICdoZWFkaW5nJyB8ICdkaXZpZGVyJyA9ICdkZWZhdWx0JztcclxuXHJcbiAgLyoqIFNldCB0byBoaWRlIHRvZ2dsZSwgZXZlbiBpZiBpdGVtIGhhcyBjaGlsZHJlbiAqL1xyXG4gIGhpZGVUb2dnbGU/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBGbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGl0ZW0gaGFzIGNoaWxkcmVuIG9yIG5vdCwgbW9zdGx5IGRyaXZlc1xyXG4gICAqICB3aGV0aGVyIHlvdSBnZXQgdGhlIGV4cGFuZC9jb2xsYXBzZSBidXR0b25cclxuICAgKi9cclxuICBoYXNDaGlsZHJlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogQXJyYXkgb2YgY2hpbGRyZW4gaWYgYW55IGZvciB0aGUgaXRlbSAqL1xyXG4gIGNoaWxkcmVuOiBBcnJheTxIaWVyYXJjaHlJdGVtPiA9IFtdO1xyXG5cclxuICAvKiogRmxhZyB0byBpbmRpY2F0ZSBpZiB0aGUgaXRlbSBoYXMgYmVlbiBleHBhbmRlZCAqL1xyXG4gIGV4cGFuZGVkPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogRmxhZyB0byBpbmRpY2F0ZSBpZiB0aGUgaXRlbSBpcyBzZWxlY3RlZCAqL1xyXG4gIHNlbGVjdGVkPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogRmxhZyB0byBpbmRpY2F0ZSBpZiB0aGUgaXRlbSBjYW4gYmUgc2VsZWN0ZWQgKi9cclxuICBzZWxlY3RhYmxlPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICByZWFkb25seT86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIFN0YXR1cyBvZiBlYWNoIGl0ZW0gdG8gaW5kaWNhdGUgd2hldGhlciBjaGlsZHJlbiBsb29rdXAgaXMgcGVuZGluZyBvclxyXG4gICAqICBpZiBhbiBlcnJvciBvY2N1cnJlZCByZXRyaWV2aW5nIGRhdGFcclxuICAgKi9cclxuICBzdGF0dXM/OiBWaWV3U3RhdHVzID0gXCJoYXNEYXRhXCI7XHJcblxyXG4gIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGl0ZW0gaXMgYSB0b3AgbGV2ZWwgZW50aXR5LCBlLmcuIE9yZ2FuaXphdGlvbiBvciBDb3N0IENlbnRlciAqL1xyXG4gIHRvcExldmVsPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBXaGVuIGNoZWNraW5nIHRoZSB1cmwgZm9yIGFjdGl2ZW5lc3MsIHRoZSB1cmwgbXVzdCBtYXRjaCBleGFjdGx5IG9yIHBhcnRpYWxseVxyXG4gICAqIEBzZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL3JvdXRlciNhY3RpdmUtcm91dGVyLWxpbmtzXHJcbiAgICovXHJcbiAgaXNBY3RpdmVFeGFjdE1hdGNoPzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgcGFyZW50IGl0ZW0uIFVzZWZ1bCBpZiB5b3UgbmVlZCB0byB3YWxrIHRoZSB0cmVlIGluIHJldmVyc2UuIEFuIGV4YW1wbGUgdXNhZ2VcclxuICAgKiB3b3VsZCBiZSB0byBleHBhbmQgYWxsIHBhcmVudCBpdGVtcyBhYm92ZSBhIG5vZGUgdGhhdCBpcyB0aGUgY3VycmVudCBzZWxlY3Rpb24uXHJcbiAgICovXHJcbiAgcGFyZW50SXRlbT86IEhpZXJhcmNoeUl0ZW07XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0byBoYXZlIG5vIGxldmVsIGluZGVudGF0aW9uIGZvciB0aGUgaXRlbS4gVXNlZnVsIGZvciB0b3AgbGV2ZWwgaXRlbXMgaW4gYSB0cmVlIHRoYXQgaXMgbm90IGhpZXJhcmNoaWNhbFxyXG4gICAqL1xyXG4gIG5vSW5kZW50PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlcHJlc2VudHMgYSBIaWVyYXJjaHlJdGVtIHRoYXQgaGFzIGJlZW4gY2xpY2tlZCB0byB0b2dnbGUgaXRzIGV4cGFuc2lvbiBzdGF0ZS5cclxuICovXHJcbmV4cG9ydCB0eXBlIFRvZ2dsZWRIaWVyYXJjaHlJdGVtID0ge1xyXG4gIGl0ZW06IEhpZXJhcmNoeUl0ZW07XHJcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XHJcbn07XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEhpZXJhcmNoeUJhc2UgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qKiBGaXJzdCBpdGVtIHRvIHN0YXJ0IHRoZSBoaWVyYXJjaHkgc3RydWN0dXJlICovXHJcbiAgQElucHV0KCkgcHVibGljIHJvb3ROb2RlITogSGllcmFyY2h5SXRlbTtcclxuXHJcbiAgLyoqIEV2ZW50IGVtaXR0ZXIgdG8gcmVxdWVzdCBjaGlsZHJlbiBmb3IgYSBnaXZlbiBpdGVtICovXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBnZXRJdGVtQ2hpbGRyZW46IEV2ZW50RW1pdHRlcjxIaWVyYXJjaHlJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8SGllcmFyY2h5SXRlbT4oKTtcclxuXHJcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhbiBpdGVtIGlzIHRvZ2dsZWQuICovXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBpdGVtVG9nZ2xlZDogRXZlbnRFbWl0dGVyPFRvZ2dsZWRIaWVyYXJjaHlJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8VG9nZ2xlZEhpZXJhcmNoeUl0ZW0+KCk7XHJcblxyXG4gIC8qKlxyXG4gICogVXNlZCB0byB1bnN1YnNjcmliZSBmcm9tIG9ic2VydmFibGVzXHJcbiAgKi9cclxuICBwcml2YXRlIF9kZXN0cm95ZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHB1YmxpYyBnZXQgZGVzdHJveWVkKCk6IFN1YmplY3Q8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rlc3Ryb3llZDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB0ZWxlbWV0cnlTZXJ2aWNlOiBUZWxlbWV0cnlTZXJ2aWNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHRoaXMudGVsZW1ldHJ5U2VydmljZSA9IGluamVjdG9yLmdldChUZWxlbWV0cnlTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzLnJvb3ROb2RlICYmIGNoYW5nZXMucm9vdE5vZGUuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIC8qKiBJZiB0aGUgcm9vdE5vZGUgaGFzIGNoaWxkcmVuIGFuZCB3ZSBkb24ndCBrbm93IGFib3V0IHRoZW0geWV0IHdlIG11c3QgYmUgbG9hZGluZ1xyXG4gICAgICAqICB0aGUgdmlldyB3aXRob3V0IHRoZSBuZXcgaGllcmFyY2h5IGFwaVxyXG4gICAgICAqL1xyXG4gICAgICBpZiAodGhpcy5yb290Tm9kZS5oYXNDaGlsZHJlbiAmJiB0aGlzLnJvb3ROb2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuZ2V0SXRlbUNoaWxkcmVuLmVtaXQodGhpcy5yb290Tm9kZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogRnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcclxuICAqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveWVkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKiogSGFuZGxlciBmb3IgdGhlIHRvZ2dsZSBidXR0b24gKi9cclxuICBwdWJsaWMgdG9nZ2xlSXRlbUNsaWNrZWQoaXRlbTogSGllcmFyY2h5SXRlbSwgZXhwYW5kZWQ6IGJvb2xlYW4pIHtcclxuICAgIGl0ZW0uZXhwYW5kZWQgPSBleHBhbmRlZDtcclxuICAgIHRoaXMudGVsZW1ldHJ5U2VydmljZS50cmFja0V2ZW50KCd0b2dnbGUtdHJlZS1ub2RlJywge1xyXG4gICAgICBuZXdFeHBhbmRTdGF0ZTogaXRlbS5leHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJyxcclxuICAgICAgaXRlbURlcHRoOiBgJHtpdGVtLmxldmVsfWAsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLml0ZW1Ub2dnbGVkLmVtaXQoeyBpdGVtLCBleHBhbmRlZCB9KTtcclxuXHJcbiAgICBpZiAoaXRlbS5leHBhbmRlZCAmJiBpdGVtLmhhc0NoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIGl0ZW0uc3RhdHVzID0gXCJwZW5kaW5nXCI7XHJcbiAgICAgIHRoaXMuZ2V0SXRlbUNoaWxkcmVuLmVtaXQoaXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogTWV0aG9kIGV4cG9zZWQgdG8gdGhlIHBhcmVudCBjb21wb25lbnQgdG8gc2V0IHRoZSBpdGVtcyBjaGlsZHJlbiBvbmNlIHRoZXkgYXJlIGF2YWlsYWJsZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRJdGVtQ2hpbGRyZW4ocGFyZW50SXRlbTogSGllcmFyY2h5SXRlbSwgaXRlbXM6IEFycmF5PEhpZXJhcmNoeUl0ZW0+KTogdm9pZCB7XHJcbiAgICBwYXJlbnRJdGVtLmNoaWxkcmVuID0gaXRlbXM7XHJcbiAgICBwYXJlbnRJdGVtLnN0YXR1cyA9IFwiaGFzRGF0YVwiO1xyXG4gIH1cclxuXHJcbiAgLyoqIE1ldGhvZCBleHBvc2VkIHRvIHRoZSBwYXJlbnQgY29tcG9uZW50IHRvIGluZGljYXRlIHRoYXQgc29tZXRoaW5nIGhhcHBlbmVkIG9uIHRoZVxyXG4gICAqICBpdGVtIHRoYXQgY2F1c2VkIGFuIGVycm9yLCBjb3VsZCBiZSByZXRyaWV2aW5nIGNoaWxkcmVuXHJcbiAgKi9cclxuICBwdWJsaWMgc2V0SXRlbUVycm9yKHBhcmVudEl0ZW06IEhpZXJhcmNoeUl0ZW0pOiB2b2lkIHtcclxuICAgIHBhcmVudEl0ZW0uc3RhdHVzID0gXCJlcnJvclwiO1xyXG4gIH1cclxufVxyXG4iXX0=
|
@@ -1,54 +1,54 @@
|
|
1
|
-
export var HierarchyMocks;
|
2
|
-
(function (HierarchyMocks) {
|
3
|
-
HierarchyMocks.mockRoot = () => ({
|
4
|
-
id: "1",
|
5
|
-
level: 0,
|
6
|
-
hasChildren: true,
|
7
|
-
children: [],
|
8
|
-
label: ''
|
9
|
-
});
|
10
|
-
HierarchyMocks.bldgWithChildren = () => {
|
11
|
-
return {
|
12
|
-
placeId: 3, parentId: 0, placeTypeId: 2, placeCode: 'HASCHILDREN_BLDG', placeInfo: 'A Cool Bldg Has Children',
|
13
|
-
hasChildren: true, placeChildren: [], meterChildren: [], hasActiveChildren: true
|
14
|
-
};
|
15
|
-
};
|
16
|
-
HierarchyMocks.bldgWithChildrenHierarchyItem = () => ({
|
17
|
-
id: HierarchyMocks.bldgWithChildren().placeId.toString(), icon: 'icon-building', label: `${HierarchyMocks.bldgWithChildren().placeInfo} [${HierarchyMocks.bldgWithChildren().placeCode}]`,
|
18
|
-
children: [], hasChildren: true, level: 1, selectable: true, topLevel: false
|
19
|
-
});
|
20
|
-
HierarchyMocks.orgWithChildren = () => {
|
21
|
-
return {
|
22
|
-
placeId: 1, parentId: 0, placeTypeId: 1, placeCode: 'HASCHILDREN_ORG', placeInfo: 'A Org Has Children',
|
23
|
-
hasChildren: true, placeChildren: [], meterChildren: [], hasActiveChildren: true
|
24
|
-
};
|
25
|
-
};
|
26
|
-
HierarchyMocks.orgWithChildrenHierarchyItem = () => ({
|
27
|
-
id: HierarchyMocks.orgWithChildren().placeId.toString(), icon: 'icon-organization', label: `${HierarchyMocks.orgWithChildren().placeInfo} [${HierarchyMocks.orgWithChildren().placeCode}]`,
|
28
|
-
children: [], hasChildren: true, level: 1, selectable: true, topLevel: true
|
29
|
-
});
|
30
|
-
HierarchyMocks.orgWithoutChildren = () => {
|
31
|
-
return {
|
32
|
-
placeId: 2, parentId: 0, placeTypeId: 1, placeCode: 'NOCHILDREN_ORG', placeInfo: 'No Children Org',
|
33
|
-
hasChildren: false, placeChildren: [], meterChildren: [], hasActiveChildren: false
|
34
|
-
};
|
35
|
-
};
|
36
|
-
HierarchyMocks.orgWithoutChildrenHierarchyItem = () => ({
|
37
|
-
id: HierarchyMocks.orgWithoutChildren().placeId.toString(), icon: 'icon-organization', label: `${HierarchyMocks.orgWithoutChildren().placeInfo} [${HierarchyMocks.orgWithoutChildren().placeCode}]`,
|
38
|
-
children: [], hasChildren: false, level: 1, selectable: true, topLevel: true
|
39
|
-
});
|
40
|
-
HierarchyMocks.bldgWithoutChildren = () => {
|
41
|
-
return {
|
42
|
-
placeId: 4, parentId: 0, placeTypeId: 2, placeCode: 'NOCHILDREN_BLDG', placeInfo: 'Zzz No Children Bldg',
|
43
|
-
hasChildren: false, placeChildren: [], meterChildren: [], hasActiveChildren: false
|
44
|
-
};
|
45
|
-
};
|
46
|
-
HierarchyMocks.bldgWithoutChildrenHierarchyItem = () => ({
|
47
|
-
id: HierarchyMocks.bldgWithoutChildren().placeId.toString(), icon: 'icon-building', label: `${HierarchyMocks.bldgWithoutChildren().placeInfo} [${HierarchyMocks.bldgWithoutChildren().placeCode}]`,
|
48
|
-
children: [], hasChildren: false, level: 1, selectable: true, topLevel: false
|
49
|
-
});
|
50
|
-
HierarchyMocks.sortedHierarchyPlaces = () => [
|
51
|
-
HierarchyMocks.bldgWithChildrenHierarchyItem(), HierarchyMocks.orgWithChildrenHierarchyItem(), HierarchyMocks.orgWithoutChildrenHierarchyItem(), HierarchyMocks.bldgWithoutChildrenHierarchyItem()
|
52
|
-
];
|
53
|
-
})(HierarchyMocks || (HierarchyMocks = {}));
|
1
|
+
export var HierarchyMocks;
|
2
|
+
(function (HierarchyMocks) {
|
3
|
+
HierarchyMocks.mockRoot = () => ({
|
4
|
+
id: "1",
|
5
|
+
level: 0,
|
6
|
+
hasChildren: true,
|
7
|
+
children: [],
|
8
|
+
label: ''
|
9
|
+
});
|
10
|
+
HierarchyMocks.bldgWithChildren = () => {
|
11
|
+
return {
|
12
|
+
placeId: 3, parentId: 0, placeTypeId: 2, placeCode: 'HASCHILDREN_BLDG', placeInfo: 'A Cool Bldg Has Children',
|
13
|
+
hasChildren: true, placeChildren: [], meterChildren: [], hasActiveChildren: true
|
14
|
+
};
|
15
|
+
};
|
16
|
+
HierarchyMocks.bldgWithChildrenHierarchyItem = () => ({
|
17
|
+
id: HierarchyMocks.bldgWithChildren().placeId.toString(), icon: 'icon-building', label: `${HierarchyMocks.bldgWithChildren().placeInfo} [${HierarchyMocks.bldgWithChildren().placeCode}]`,
|
18
|
+
children: [], hasChildren: true, level: 1, selectable: true, topLevel: false
|
19
|
+
});
|
20
|
+
HierarchyMocks.orgWithChildren = () => {
|
21
|
+
return {
|
22
|
+
placeId: 1, parentId: 0, placeTypeId: 1, placeCode: 'HASCHILDREN_ORG', placeInfo: 'A Org Has Children',
|
23
|
+
hasChildren: true, placeChildren: [], meterChildren: [], hasActiveChildren: true
|
24
|
+
};
|
25
|
+
};
|
26
|
+
HierarchyMocks.orgWithChildrenHierarchyItem = () => ({
|
27
|
+
id: HierarchyMocks.orgWithChildren().placeId.toString(), icon: 'icon-organization', label: `${HierarchyMocks.orgWithChildren().placeInfo} [${HierarchyMocks.orgWithChildren().placeCode}]`,
|
28
|
+
children: [], hasChildren: true, level: 1, selectable: true, topLevel: true
|
29
|
+
});
|
30
|
+
HierarchyMocks.orgWithoutChildren = () => {
|
31
|
+
return {
|
32
|
+
placeId: 2, parentId: 0, placeTypeId: 1, placeCode: 'NOCHILDREN_ORG', placeInfo: 'No Children Org',
|
33
|
+
hasChildren: false, placeChildren: [], meterChildren: [], hasActiveChildren: false
|
34
|
+
};
|
35
|
+
};
|
36
|
+
HierarchyMocks.orgWithoutChildrenHierarchyItem = () => ({
|
37
|
+
id: HierarchyMocks.orgWithoutChildren().placeId.toString(), icon: 'icon-organization', label: `${HierarchyMocks.orgWithoutChildren().placeInfo} [${HierarchyMocks.orgWithoutChildren().placeCode}]`,
|
38
|
+
children: [], hasChildren: false, level: 1, selectable: true, topLevel: true
|
39
|
+
});
|
40
|
+
HierarchyMocks.bldgWithoutChildren = () => {
|
41
|
+
return {
|
42
|
+
placeId: 4, parentId: 0, placeTypeId: 2, placeCode: 'NOCHILDREN_BLDG', placeInfo: 'Zzz No Children Bldg',
|
43
|
+
hasChildren: false, placeChildren: [], meterChildren: [], hasActiveChildren: false
|
44
|
+
};
|
45
|
+
};
|
46
|
+
HierarchyMocks.bldgWithoutChildrenHierarchyItem = () => ({
|
47
|
+
id: HierarchyMocks.bldgWithoutChildren().placeId.toString(), icon: 'icon-building', label: `${HierarchyMocks.bldgWithoutChildren().placeInfo} [${HierarchyMocks.bldgWithoutChildren().placeCode}]`,
|
48
|
+
children: [], hasChildren: false, level: 1, selectable: true, topLevel: false
|
49
|
+
});
|
50
|
+
HierarchyMocks.sortedHierarchyPlaces = () => [
|
51
|
+
HierarchyMocks.bldgWithChildrenHierarchyItem(), HierarchyMocks.orgWithChildrenHierarchyItem(), HierarchyMocks.orgWithoutChildrenHierarchyItem(), HierarchyMocks.bldgWithoutChildrenHierarchyItem()
|
52
|
+
];
|
53
|
+
})(HierarchyMocks || (HierarchyMocks = {}));
|
54
54
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2h5LW1vY2tzLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS9oaWVyYXJjaHkvaGllcmFyY2h5LW1vY2tzLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxLQUFXLGNBQWMsQ0FvRDlCO0FBcERELFdBQWlCLGNBQWM7SUFDaEIsdUJBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFlO1FBQzNDLEVBQUUsRUFBRSxHQUFHO1FBQ1AsS0FBSyxFQUFFLENBQUM7UUFDUixXQUFXLEVBQUUsSUFBSTtRQUNqQixRQUFRLEVBQUUsRUFBRTtRQUNaLEtBQUssRUFBRSxFQUFFO0tBQ1YsQ0FBQSxDQUFDO0lBRVcsK0JBQWdCLEdBQUcsR0FBRyxFQUFFO1FBQUcsT0FBTztZQUM3QyxPQUFPLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLDBCQUEwQjtZQUM3RyxXQUFXLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJO1NBQ2pGLENBQUE7SUFBQSxDQUFDLENBQUM7SUFFVSw0Q0FBNkIsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFlO1FBQ2hFLEVBQUUsRUFBRSxlQUFBLGdCQUFnQixFQUFFLENBQUMsT0FBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEdBQUcsZUFBQSxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsS0FBSyxlQUFBLGdCQUFnQixFQUFFLENBQUMsU0FBUyxHQUFHO1FBQzdJLFFBQVEsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUs7S0FDN0UsQ0FBQSxDQUFDO0lBRVcsOEJBQWUsR0FBRyxHQUFHLEVBQUU7UUFBRyxPQUFPO1lBQzVDLE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsb0JBQW9CO1lBQ3RHLFdBQVcsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUk7U0FDakYsQ0FBQTtJQUFBLENBQUMsQ0FBQztJQUVVLDJDQUE0QixHQUFHLEdBQUcsRUFBRSxDQUFDLENBQWU7UUFDL0QsRUFBRSxFQUFFLGVBQUEsZUFBZSxFQUFFLENBQUMsT0FBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsR0FBRyxlQUFBLGVBQWUsRUFBRSxDQUFDLFNBQVMsS0FBSyxlQUFBLGVBQWUsRUFBRSxDQUFDLFNBQVMsR0FBRztRQUM5SSxRQUFRLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJO0tBQzVFLENBQUEsQ0FBQztJQUVXLGlDQUFrQixHQUFHLEdBQUcsRUFBRTtRQUFHLE9BQU87WUFDL0MsT0FBTyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxpQkFBaUI7WUFDbEcsV0FBVyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsS0FBSztTQUNuRixDQUFBO0lBQUEsQ0FBQyxDQUFDO0lBRVUsOENBQStCLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBZTtRQUNsRSxFQUFFLEVBQUUsZUFBQSxrQkFBa0IsRUFBRSxDQUFDLE9BQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLEdBQUcsZUFBQSxrQkFBa0IsRUFBRSxDQUFDLFNBQVMsS0FBSyxlQUFBLGtCQUFrQixFQUFFLENBQUMsU0FBUyxHQUFHO1FBQ3ZKLFFBQVEsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUk7S0FDN0UsQ0FBQSxDQUFDO0lBRVcsa0NBQW1CLEdBQUcsR0FBRyxFQUFFO1FBQUcsT0FBTztZQUNoRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLHNCQUFzQjtZQUN4RyxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxLQUFLO1NBQ25GLENBQUE7SUFBQSxDQUFDLENBQUM7SUFFVSwrQ0FBZ0MsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFlO1FBQ25FLEVBQUUsRUFBRSxlQUFBLG1CQUFtQixFQUFFLENBQUMsT0FBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEdBQUcsZUFBQSxtQkFBbUIsRUFBRSxDQUFDLFNBQVMsS0FBSyxlQUFBLG1CQUFtQixFQUFFLENBQUMsU0FBUyxHQUFHO1FBQ3RKLFFBQVEsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUs7S0FDOUUsQ0FBQSxDQUFDO0lBRVcsb0NBQXFCLEdBQUcsR0FBRyxFQUFFLENBQXVCO1FBQy9ELGVBQUEsNkJBQTZCLEVBQUUsRUFBRSxlQUFBLDRCQUE0QixFQUFFLEVBQUUsZUFBQSwrQkFBK0IsRUFBRSxFQUFFLGVBQUEsZ0NBQWdDLEVBQUU7S0FDdkksQ0FBQztBQUNKLENBQUMsRUFwRGdCLGNBQWMsS0FBZCxjQUFjLFFBb0Q5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhpZXJhcmNoeUl0ZW0gfSBmcm9tICcuL2hpZXJhcmNoeS1iYXNlJztcclxuXHJcbmV4cG9ydCBuYW1lc3BhY2UgSGllcmFyY2h5TW9ja3Mge1xyXG4gIGV4cG9ydCBjb25zdCBtb2NrUm9vdCA9ICgpID0+IDxIaWVyYXJjaHlJdGVtPntcclxuICAgIGlkOiBcIjFcIixcclxuICAgIGxldmVsOiAwLFxyXG4gICAgaGFzQ2hpbGRyZW46IHRydWUsXHJcbiAgICBjaGlsZHJlbjogW10sXHJcbiAgICBsYWJlbDogJydcclxuICB9O1xyXG5cclxuICBleHBvcnQgY29uc3QgYmxkZ1dpdGhDaGlsZHJlbiA9ICgpID0+IHsgcmV0dXJuIHtcclxuICAgIHBsYWNlSWQ6IDMsIHBhcmVudElkOiAwLCBwbGFjZVR5cGVJZDogMiwgcGxhY2VDb2RlOiAnSEFTQ0hJTERSRU5fQkxERycsIHBsYWNlSW5mbzogJ0EgQ29vbCBCbGRnIEhhcyBDaGlsZHJlbicsXHJcbiAgICBoYXNDaGlsZHJlbjogdHJ1ZSwgcGxhY2VDaGlsZHJlbjogW10sIG1ldGVyQ2hpbGRyZW46IFtdLCBoYXNBY3RpdmVDaGlsZHJlbjogdHJ1ZVxyXG4gIH19O1xyXG5cclxuICBleHBvcnQgY29uc3QgYmxkZ1dpdGhDaGlsZHJlbkhpZXJhcmNoeUl0ZW0gPSAoKSA9PiA8SGllcmFyY2h5SXRlbT57XHJcbiAgICBpZDogYmxkZ1dpdGhDaGlsZHJlbigpLnBsYWNlSWQhLnRvU3RyaW5nKCksIGljb246ICdpY29uLWJ1aWxkaW5nJywgbGFiZWw6IGAke2JsZGdXaXRoQ2hpbGRyZW4oKS5wbGFjZUluZm99IFske2JsZGdXaXRoQ2hpbGRyZW4oKS5wbGFjZUNvZGV9XWAsXHJcbiAgICBjaGlsZHJlbjogW10sIGhhc0NoaWxkcmVuOiB0cnVlLCBsZXZlbDogMSwgc2VsZWN0YWJsZTogdHJ1ZSwgdG9wTGV2ZWw6IGZhbHNlXHJcbiAgfTtcclxuXHJcbiAgZXhwb3J0IGNvbnN0IG9yZ1dpdGhDaGlsZHJlbiA9ICgpID0+IHsgcmV0dXJuIHtcclxuICAgIHBsYWNlSWQ6IDEsIHBhcmVudElkOiAwLCBwbGFjZVR5cGVJZDogMSwgcGxhY2VDb2RlOiAnSEFTQ0hJTERSRU5fT1JHJywgcGxhY2VJbmZvOiAnQSBPcmcgSGFzIENoaWxkcmVuJyxcclxuICAgIGhhc0NoaWxkcmVuOiB0cnVlLCBwbGFjZUNoaWxkcmVuOiBbXSwgbWV0ZXJDaGlsZHJlbjogW10sIGhhc0FjdGl2ZUNoaWxkcmVuOiB0cnVlXHJcbiAgfX07XHJcblxyXG4gIGV4cG9ydCBjb25zdCBvcmdXaXRoQ2hpbGRyZW5IaWVyYXJjaHlJdGVtID0gKCkgPT4gPEhpZXJhcmNoeUl0ZW0+e1xyXG4gICAgaWQ6IG9yZ1dpdGhDaGlsZHJlbigpLnBsYWNlSWQhLnRvU3RyaW5nKCksIGljb246ICdpY29uLW9yZ2FuaXphdGlvbicsIGxhYmVsOiBgJHtvcmdXaXRoQ2hpbGRyZW4oKS5wbGFjZUluZm99IFske29yZ1dpdGhDaGlsZHJlbigpLnBsYWNlQ29kZX1dYCxcclxuICAgIGNoaWxkcmVuOiBbXSwgaGFzQ2hpbGRyZW46IHRydWUsIGxldmVsOiAxLCBzZWxlY3RhYmxlOiB0cnVlLCB0b3BMZXZlbDogdHJ1ZVxyXG4gIH07XHJcblxyXG4gIGV4cG9ydCBjb25zdCBvcmdXaXRob3V0Q2hpbGRyZW4gPSAoKSA9PiB7IHJldHVybiB7XHJcbiAgICBwbGFjZUlkOiAyLCBwYXJlbnRJZDogMCwgcGxhY2VUeXBlSWQ6IDEsIHBsYWNlQ29kZTogJ05PQ0hJTERSRU5fT1JHJywgcGxhY2VJbmZvOiAnTm8gQ2hpbGRyZW4gT3JnJyxcclxuICAgIGhhc0NoaWxkcmVuOiBmYWxzZSwgcGxhY2VDaGlsZHJlbjogW10sIG1ldGVyQ2hpbGRyZW46IFtdLCBoYXNBY3RpdmVDaGlsZHJlbjogZmFsc2VcclxuICB9fTtcclxuXHJcbiAgZXhwb3J0IGNvbnN0IG9yZ1dpdGhvdXRDaGlsZHJlbkhpZXJhcmNoeUl0ZW0gPSAoKSA9PiA8SGllcmFyY2h5SXRlbT57XHJcbiAgICBpZDogb3JnV2l0aG91dENoaWxkcmVuKCkucGxhY2VJZCEudG9TdHJpbmcoKSwgaWNvbjogJ2ljb24tb3JnYW5pemF0aW9uJywgbGFiZWw6IGAke29yZ1dpdGhvdXRDaGlsZHJlbigpLnBsYWNlSW5mb30gWyR7b3JnV2l0aG91dENoaWxkcmVuKCkucGxhY2VDb2RlfV1gLFxyXG4gICAgY2hpbGRyZW46IFtdLCBoYXNDaGlsZHJlbjogZmFsc2UsIGxldmVsOiAxLCBzZWxlY3RhYmxlOiB0cnVlLCB0b3BMZXZlbDogdHJ1ZVxyXG4gIH07XHJcblxyXG4gIGV4cG9ydCBjb25zdCBibGRnV2l0aG91dENoaWxkcmVuID0gKCkgPT4geyByZXR1cm4ge1xyXG4gICAgcGxhY2VJZDogNCwgcGFyZW50SWQ6IDAsIHBsYWNlVHlwZUlkOiAyLCBwbGFjZUNvZGU6ICdOT0NISUxEUkVOX0JMREcnLCBwbGFjZUluZm86ICdaenogTm8gQ2hpbGRyZW4gQmxkZycsXHJcbiAgICBoYXNDaGlsZHJlbjogZmFsc2UsIHBsYWNlQ2hpbGRyZW46IFtdLCBtZXRlckNoaWxkcmVuOiBbXSwgaGFzQWN0aXZlQ2hpbGRyZW46IGZhbHNlXHJcbiAgfX07XHJcblxyXG4gIGV4cG9ydCBjb25zdCBibGRnV2l0aG91dENoaWxkcmVuSGllcmFyY2h5SXRlbSA9ICgpID0+IDxIaWVyYXJjaHlJdGVtPntcclxuICAgIGlkOiBibGRnV2l0aG91dENoaWxkcmVuKCkucGxhY2VJZCEudG9TdHJpbmcoKSwgaWNvbjogJ2ljb24tYnVpbGRpbmcnLCBsYWJlbDogYCR7YmxkZ1dpdGhvdXRDaGlsZHJlbigpLnBsYWNlSW5mb30gWyR7YmxkZ1dpdGhvdXRDaGlsZHJlbigpLnBsYWNlQ29kZX1dYCxcclxuICAgIGNoaWxkcmVuOiBbXSwgaGFzQ2hpbGRyZW46IGZhbHNlLCBsZXZlbDogMSwgc2VsZWN0YWJsZTogdHJ1ZSwgdG9wTGV2ZWw6IGZhbHNlXHJcbiAgfTtcclxuXHJcbiAgZXhwb3J0IGNvbnN0IHNvcnRlZEhpZXJhcmNoeVBsYWNlcyA9ICgpID0+IDxBcnJheTxIaWVyYXJjaHlJdGVtPj5bXHJcbiAgICBibGRnV2l0aENoaWxkcmVuSGllcmFyY2h5SXRlbSgpLCBvcmdXaXRoQ2hpbGRyZW5IaWVyYXJjaHlJdGVtKCksIG9yZ1dpdGhvdXRDaGlsZHJlbkhpZXJhcmNoeUl0ZW0oKSwgYmxkZ1dpdGhvdXRDaGlsZHJlbkhpZXJhcmNoeUl0ZW0oKVxyXG4gIF07XHJcbn1cclxuIl19
|
@@ -0,0 +1,61 @@
|
|
1
|
+
import { Component, Input, Output } from '@angular/core';
|
2
|
+
import { Subject } from 'rxjs';
|
3
|
+
import { HierarchyBase } from '../hierarchy-base';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
import * as i1 from "../../../core/scroll.service";
|
6
|
+
import * as i2 from "@angular/common";
|
7
|
+
import * as i3 from "@angular/router";
|
8
|
+
import * as i4 from "../../../controls/navigation/nav-item-active.directive";
|
9
|
+
import * as i5 from "../../../controls/collapsible-toggle/collapsible-toggle.component";
|
10
|
+
export class HierarchyTreeComponent extends HierarchyBase {
|
11
|
+
constructor(scrollService, injector) {
|
12
|
+
super(injector);
|
13
|
+
this.scrollService = scrollService;
|
14
|
+
/** The value of the id attribute of the tree's root HTMLUListElement, suffixed with '_root' */
|
15
|
+
this.id = 'HierarchyTree';
|
16
|
+
/** Emits a HierarchyItem whenever one is selected by clicking */
|
17
|
+
this.itemSelected = new Subject();
|
18
|
+
/** The width of the spacing before a tree node, multipled by a HierarchyItem's level. Value is in pixels */
|
19
|
+
this.indent = 16;
|
20
|
+
/** The value of the id attribute of the tree's scroll container element, used to scroll a selected item into view. */
|
21
|
+
this.scrollContainerId = '';
|
22
|
+
}
|
23
|
+
ngOnInit() {
|
24
|
+
this.scrollContainerId = `${this.id}_root`;
|
25
|
+
}
|
26
|
+
/**
|
27
|
+
* Scroll to the item currently marked as is-selected. Wait a tick for the
|
28
|
+
* NavItemActiveDirective to update the selected class.
|
29
|
+
*/
|
30
|
+
scrollToSelectedItem() {
|
31
|
+
window.setTimeout(() => {
|
32
|
+
const linkSelector = `.item-wrapper.is-selected`;
|
33
|
+
this.scrollService.scrollToItem(`#${this.scrollContainerId}`, linkSelector);
|
34
|
+
});
|
35
|
+
}
|
36
|
+
/**
|
37
|
+
* When a HierarchyItem is selected, update the value of the activeUrl property with the value
|
38
|
+
* of that item's url property and emit the item to any subscribers.
|
39
|
+
*/
|
40
|
+
selectItem(item) {
|
41
|
+
this.itemSelected.next(item);
|
42
|
+
if (item.display === 'heading' && !item.hideToggle) {
|
43
|
+
this.toggleItemClicked(item, !item.expanded);
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
47
|
+
HierarchyTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HierarchyTreeComponent, deps: [{ token: i1.ScrollService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
48
|
+
HierarchyTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: HierarchyTreeComponent, selector: "ec-hierarchy-tree", inputs: { id: "id", hideRootNode: "hideRootNode", customItemTemplate: "customItemTemplate" }, outputs: { itemSelected: "itemSelected" }, usesInheritance: true, ngImport: i0, template: "<ul id=\"{{scrollContainerId}}\"\r\n class=\"flex-grow scroll-y py-1\">\r\n\r\n <li *ngIf=\"!hideRootNode && rootNode\">\r\n <div class=\"item-wrapper\"\r\n title=\"{{rootNode?.tooltip ?? rootNode?.label}}\"\r\n [ngClass]=\"{'is-heading': rootNode?.display === 'heading'}\"\r\n ecNavItemActive=\"is-selected\"\r\n [ecNavItemActiveUrl]=\"rootNode?.url\"\r\n [ecNavItemActiveExactMatch]='rootNode?.isActiveExactMatch'>\r\n <a id=\"rootNode_{{rootNode?.id}}_link\"\r\n class=\"item flex-grow d-flex align-items-center\"\r\n routerLink=\"{{rootNode?.url}}\"\r\n [queryParams]=\"rootNode?.queryParams\">\r\n <ng-container *ngTemplateOutlet=\"customItemTemplate || defaultItemTemplate; context: { $implicit: rootNode }\"></ng-container>\r\n </a>\r\n </div>\r\n </li>\r\n\r\n <ng-template #hierarchyView\r\n let-items>\r\n <li *ngFor=\"let item of items; index as index; first as isFirst\"\r\n [ngClass]=\"{'divider': item.display === 'divider'}\"\r\n id=\"treeItem_{{item.id}}\">\r\n <div class=\"item-wrapper\"\r\n title=\"{{item.tooltip ?? item.label}}\"\r\n [ngClass]=\"{'is-heading': item.display === 'heading'}\"\r\n ecNavItemActive=\"is-selected\"\r\n [ecNavItemActiveUrl]=\"item.url\"\r\n [ecNavItemActiveExactMatch]=\"item.isActiveExactMatch\"\r\n [ecNavItemActiveQueryParams]=\"item.queryParams\">\r\n\r\n <!-- This element provides the indentation for each level -->\r\n <span id=\"indent_{{item.id}}\"\r\n *ngIf=\"!item.noIndent\"\r\n class=\"d-block h-100\"\r\n [style.width.px]=\"(indent) * (item.level - 1) + (item.level * 4) + (item.hasChildren ? 0 : indent)\">\r\n </span>\r\n\r\n <!-- Toggle the button icon to be a spinner when item.status is pending -->\r\n <ec-collapsible-toggle id=\"toggle_{{item.id}}\"\r\n class=\"flex-shrink\"\r\n [style.width.px]=\"indent\"\r\n *ngIf=\"item.hasChildren && !item.hideToggle\"\r\n [hidden]=\"item.status === 'pending'\"\r\n [expanded]=\"item.expanded\"\r\n (expandedChange)=\"toggleItemClicked(item, $event)\">\r\n </ec-collapsible-toggle>\r\n\r\n <i class=\"ec-icon icon-loading my-1\"\r\n [hidden]=\"item.status !== 'pending'\"></i>\r\n\r\n <a id=\"treeItem_{{item.id}}_link\"\r\n class=\"item\"\r\n *ngIf=\"item.url\"\r\n (click)=\"selectItem(item)\"\r\n [routerLink]=\"item.url\"\r\n [queryParams]=\"item.queryParams\"\r\n [queryParamsHandling]=\"item.queryParamsHandling || ''\">\r\n <ng-container *ngTemplateOutlet=\"customItemTemplate || defaultItemTemplate; context: { $implicit: item }\"></ng-container>\r\n </a>\r\n <div id=\"treeItem_{{item.id}}_heading\"\r\n class=\"item\"\r\n *ngIf=\"!item.url\"\r\n (click)=\"selectItem(item)\">\r\n <ng-container *ngTemplateOutlet=\"customItemTemplate || defaultItemTemplate; context: { $implicit: item }\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n\r\n <ul *ngIf=\"item.children.length > 0 && item.expanded\">\r\n <ng-container *ngTemplateOutlet=\"hierarchyView; context:{ $implicit: item.children }\"></ng-container>\r\n </ul>\r\n </li>\r\n </ng-template>\r\n\r\n <ng-container *ngTemplateOutlet=\"hierarchyView; context:{ $implicit: rootNode?.children }\"></ng-container>\r\n</ul>\r\n\r\n<ng-template #defaultItemTemplate\r\n let-item>\r\n <i class=\"ec-icon {{item.icon}} mx-1 flex-shrink\"\r\n [attr.title]=\"item.iconTooltip\"\r\n *ngIf=\"item.icon\"></i>\r\n <span class=\"mx-1 text-truncate\">{{item.label}}</span>\r\n</ng-template>", styles: [":host{display:block;font-size:var(--ec-menu-font-size, var(--ec-font-size-action));background-color:var(--ec-menu-background-color, var(--ec-background-color))}ul{padding:0;margin:0;list-style:none;overflow-x:hidden}ul li{white-space:nowrap;padding:0}ul li.divider{border-bottom:1px solid var(--ec-border-color);padding-bottom:.25rem;margin-bottom:.25rem}ul .item-wrapper{display:flex;align-items:center;padding:0 .25rem;margin:0 .25rem;height:1.75rem;border-radius:var(--ec-border-radius)}ul .item-wrapper.is-heading{cursor:pointer;color:var(--ec-color-hint-dark);text-transform:uppercase;font-weight:var(--ec-font-weight-bold);font-size:var(--ec-font-size-label)}ul .item-wrapper:hover{background-color:var(--ec-background-color-hover)}ul .item-wrapper.is-selected{font-weight:700}ul .item-wrapper a{text-decoration:none}ul .item{color:inherit;display:flex;align-items:center;flex:1 1;min-height:0;min-width:0}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.NavItemActiveDirective, selector: "[ecNavItemActive]", inputs: ["ecNavItemActive", "ecNavItemActiveExactMatch", "ecNavItemActiveQueryParams", "ecNavItemActiveUrl"], outputs: ["routerLinkActivated"] }, { kind: "component", type: i5.CollapsibleToggleComponent, selector: "ec-collapsible-toggle", inputs: ["id", "expanded", "tabindex"], outputs: ["expandedChange"] }] });
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HierarchyTreeComponent, decorators: [{
|
50
|
+
type: Component,
|
51
|
+
args: [{ selector: 'ec-hierarchy-tree', template: "<ul id=\"{{scrollContainerId}}\"\r\n class=\"flex-grow scroll-y py-1\">\r\n\r\n <li *ngIf=\"!hideRootNode && rootNode\">\r\n <div class=\"item-wrapper\"\r\n title=\"{{rootNode?.tooltip ?? rootNode?.label}}\"\r\n [ngClass]=\"{'is-heading': rootNode?.display === 'heading'}\"\r\n ecNavItemActive=\"is-selected\"\r\n [ecNavItemActiveUrl]=\"rootNode?.url\"\r\n [ecNavItemActiveExactMatch]='rootNode?.isActiveExactMatch'>\r\n <a id=\"rootNode_{{rootNode?.id}}_link\"\r\n class=\"item flex-grow d-flex align-items-center\"\r\n routerLink=\"{{rootNode?.url}}\"\r\n [queryParams]=\"rootNode?.queryParams\">\r\n <ng-container *ngTemplateOutlet=\"customItemTemplate || defaultItemTemplate; context: { $implicit: rootNode }\"></ng-container>\r\n </a>\r\n </div>\r\n </li>\r\n\r\n <ng-template #hierarchyView\r\n let-items>\r\n <li *ngFor=\"let item of items; index as index; first as isFirst\"\r\n [ngClass]=\"{'divider': item.display === 'divider'}\"\r\n id=\"treeItem_{{item.id}}\">\r\n <div class=\"item-wrapper\"\r\n title=\"{{item.tooltip ?? item.label}}\"\r\n [ngClass]=\"{'is-heading': item.display === 'heading'}\"\r\n ecNavItemActive=\"is-selected\"\r\n [ecNavItemActiveUrl]=\"item.url\"\r\n [ecNavItemActiveExactMatch]=\"item.isActiveExactMatch\"\r\n [ecNavItemActiveQueryParams]=\"item.queryParams\">\r\n\r\n <!-- This element provides the indentation for each level -->\r\n <span id=\"indent_{{item.id}}\"\r\n *ngIf=\"!item.noIndent\"\r\n class=\"d-block h-100\"\r\n [style.width.px]=\"(indent) * (item.level - 1) + (item.level * 4) + (item.hasChildren ? 0 : indent)\">\r\n </span>\r\n\r\n <!-- Toggle the button icon to be a spinner when item.status is pending -->\r\n <ec-collapsible-toggle id=\"toggle_{{item.id}}\"\r\n class=\"flex-shrink\"\r\n [style.width.px]=\"indent\"\r\n *ngIf=\"item.hasChildren && !item.hideToggle\"\r\n [hidden]=\"item.status === 'pending'\"\r\n [expanded]=\"item.expanded\"\r\n (expandedChange)=\"toggleItemClicked(item, $event)\">\r\n </ec-collapsible-toggle>\r\n\r\n <i class=\"ec-icon icon-loading my-1\"\r\n [hidden]=\"item.status !== 'pending'\"></i>\r\n\r\n <a id=\"treeItem_{{item.id}}_link\"\r\n class=\"item\"\r\n *ngIf=\"item.url\"\r\n (click)=\"selectItem(item)\"\r\n [routerLink]=\"item.url\"\r\n [queryParams]=\"item.queryParams\"\r\n [queryParamsHandling]=\"item.queryParamsHandling || ''\">\r\n <ng-container *ngTemplateOutlet=\"customItemTemplate || defaultItemTemplate; context: { $implicit: item }\"></ng-container>\r\n </a>\r\n <div id=\"treeItem_{{item.id}}_heading\"\r\n class=\"item\"\r\n *ngIf=\"!item.url\"\r\n (click)=\"selectItem(item)\">\r\n <ng-container *ngTemplateOutlet=\"customItemTemplate || defaultItemTemplate; context: { $implicit: item }\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n\r\n <ul *ngIf=\"item.children.length > 0 && item.expanded\">\r\n <ng-container *ngTemplateOutlet=\"hierarchyView; context:{ $implicit: item.children }\"></ng-container>\r\n </ul>\r\n </li>\r\n </ng-template>\r\n\r\n <ng-container *ngTemplateOutlet=\"hierarchyView; context:{ $implicit: rootNode?.children }\"></ng-container>\r\n</ul>\r\n\r\n<ng-template #defaultItemTemplate\r\n let-item>\r\n <i class=\"ec-icon {{item.icon}} mx-1 flex-shrink\"\r\n [attr.title]=\"item.iconTooltip\"\r\n *ngIf=\"item.icon\"></i>\r\n <span class=\"mx-1 text-truncate\">{{item.label}}</span>\r\n</ng-template>", styles: [":host{display:block;font-size:var(--ec-menu-font-size, var(--ec-font-size-action));background-color:var(--ec-menu-background-color, var(--ec-background-color))}ul{padding:0;margin:0;list-style:none;overflow-x:hidden}ul li{white-space:nowrap;padding:0}ul li.divider{border-bottom:1px solid var(--ec-border-color);padding-bottom:.25rem;margin-bottom:.25rem}ul .item-wrapper{display:flex;align-items:center;padding:0 .25rem;margin:0 .25rem;height:1.75rem;border-radius:var(--ec-border-radius)}ul .item-wrapper.is-heading{cursor:pointer;color:var(--ec-color-hint-dark);text-transform:uppercase;font-weight:var(--ec-font-weight-bold);font-size:var(--ec-font-size-label)}ul .item-wrapper:hover{background-color:var(--ec-background-color-hover)}ul .item-wrapper.is-selected{font-weight:700}ul .item-wrapper a{text-decoration:none}ul .item{color:inherit;display:flex;align-items:center;flex:1 1;min-height:0;min-width:0}\n"] }]
|
52
|
+
}], ctorParameters: function () { return [{ type: i1.ScrollService }, { type: i0.Injector }]; }, propDecorators: { id: [{
|
53
|
+
type: Input
|
54
|
+
}], hideRootNode: [{
|
55
|
+
type: Input
|
56
|
+
}], customItemTemplate: [{
|
57
|
+
type: Input
|
58
|
+
}], itemSelected: [{
|
59
|
+
type: Output
|
60
|
+
}] } });
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGllcmFyY2h5LXRyZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvaGllcmFyY2h5L2hpZXJhcmNoeS10cmVlL2hpZXJhcmNoeS10cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2hpZXJhcmNoeS9oaWVyYXJjaHktdHJlZS9oaWVyYXJjaHktdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFZLEtBQUssRUFBVSxNQUFNLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBT2pFLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxhQUFhO0lBb0J2RCxZQUNVLGFBQTRCLEVBQ3BDLFFBQWtCO1FBQ2hCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUZWLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBbkJ0QywrRkFBK0Y7UUFDL0UsT0FBRSxHQUFXLGVBQWUsQ0FBQztRQVE3QyxpRUFBaUU7UUFDaEQsaUJBQVksR0FBMkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV0RSw0R0FBNEc7UUFDckcsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUVuQix1SEFBdUg7UUFDaEgsc0JBQWlCLEdBQUcsRUFBRSxDQUFDO0lBS1QsQ0FBQztJQUVmLFFBQVE7UUFDYixJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNJLG9CQUFvQjtRQUN6QixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNyQixNQUFNLFlBQVksR0FBRywyQkFBMkIsQ0FBQztZQUNqRCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFVBQVUsQ0FBQyxJQUFtQjtRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNsRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQzs7bUhBakRVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLHlOQ1ZuQyx3NkhBcUZjOzJGRDNFRCxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsbUJBQW1COzJIQU9iLEVBQUU7c0JBQWpCLEtBQUs7Z0JBR1UsWUFBWTtzQkFBM0IsS0FBSztnQkFHVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBR1csWUFBWTtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTY3JvbGxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zY3JvbGwuc2VydmljZSc7XHJcbmltcG9ydCB7IEhpZXJhcmNoeUJhc2UsIEhpZXJhcmNoeUl0ZW0gfSBmcm9tICcuLi9oaWVyYXJjaHktYmFzZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLWhpZXJhcmNoeS10cmVlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGllcmFyY2h5LXRyZWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hpZXJhcmNoeS10cmVlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEhpZXJhcmNoeVRyZWVDb21wb25lbnQgZXh0ZW5kcyBIaWVyYXJjaHlCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgaWQgYXR0cmlidXRlIG9mIHRoZSB0cmVlJ3Mgcm9vdCBIVE1MVUxpc3RFbGVtZW50LCBzdWZmaXhlZCB3aXRoICdfcm9vdCcgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaWQ6IHN0cmluZyA9ICdIaWVyYXJjaHlUcmVlJztcclxuXHJcbiAgLyoqIEhpZGUgdGhlIHJvb3Qgbm9kZSAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBoaWRlUm9vdE5vZGU/OiBib29sZWFuO1xyXG5cclxuICAvKiogQ3VzdG9tIGl0ZW0gdGVtcGxhdGUgdG8gdXNlIGluIHBsYWNlIG9mIHRoZSBkZWZhdWx0IG9uZSAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21JdGVtVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKiogRW1pdHMgYSBIaWVyYXJjaHlJdGVtIHdoZW5ldmVyIG9uZSBpcyBzZWxlY3RlZCBieSBjbGlja2luZyAqL1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgaXRlbVNlbGVjdGVkOiBTdWJqZWN0PEhpZXJhcmNoeUl0ZW0+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgLyoqIFRoZSB3aWR0aCBvZiB0aGUgc3BhY2luZyBiZWZvcmUgYSB0cmVlIG5vZGUsIG11bHRpcGxlZCBieSBhIEhpZXJhcmNoeUl0ZW0ncyBsZXZlbC4gVmFsdWUgaXMgaW4gcGl4ZWxzICovXHJcbiAgcHVibGljIGluZGVudCA9IDE2O1xyXG5cclxuICAvKiogVGhlIHZhbHVlIG9mIHRoZSBpZCBhdHRyaWJ1dGUgb2YgdGhlIHRyZWUncyBzY3JvbGwgY29udGFpbmVyIGVsZW1lbnQsIHVzZWQgdG8gc2Nyb2xsIGEgc2VsZWN0ZWQgaXRlbSBpbnRvIHZpZXcuICAqL1xyXG4gIHB1YmxpYyBzY3JvbGxDb250YWluZXJJZCA9ICcnO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2Nyb2xsU2VydmljZTogU2Nyb2xsU2VydmljZSxcclxuICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICApIHsgc3VwZXIoaW5qZWN0b3IpOyB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVySWQgPSBgJHt0aGlzLmlkfV9yb290YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNjcm9sbCB0byB0aGUgaXRlbSBjdXJyZW50bHkgbWFya2VkIGFzIGlzLXNlbGVjdGVkLiBXYWl0IGEgdGljayBmb3IgdGhlXHJcbiAgICogTmF2SXRlbUFjdGl2ZURpcmVjdGl2ZSB0byB1cGRhdGUgdGhlIHNlbGVjdGVkIGNsYXNzLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzY3JvbGxUb1NlbGVjdGVkSXRlbSgpOiB2b2lkIHtcclxuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgbGlua1NlbGVjdG9yID0gYC5pdGVtLXdyYXBwZXIuaXMtc2VsZWN0ZWRgO1xyXG4gICAgICB0aGlzLnNjcm9sbFNlcnZpY2Uuc2Nyb2xsVG9JdGVtKGAjJHt0aGlzLnNjcm9sbENvbnRhaW5lcklkfWAsIGxpbmtTZWxlY3Rvcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZW4gYSBIaWVyYXJjaHlJdGVtIGlzIHNlbGVjdGVkLCB1cGRhdGUgdGhlIHZhbHVlIG9mIHRoZSBhY3RpdmVVcmwgcHJvcGVydHkgd2l0aCB0aGUgdmFsdWVcclxuICAgKiBvZiB0aGF0IGl0ZW0ncyB1cmwgcHJvcGVydHkgYW5kIGVtaXQgdGhlIGl0ZW0gdG8gYW55IHN1YnNjcmliZXJzLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZWxlY3RJdGVtKGl0ZW06IEhpZXJhcmNoeUl0ZW0pOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbVNlbGVjdGVkLm5leHQoaXRlbSk7XHJcbiAgICBpZiAoaXRlbS5kaXNwbGF5ID09PSAnaGVhZGluZycgJiYgIWl0ZW0uaGlkZVRvZ2dsZSkge1xyXG4gICAgICB0aGlzLnRvZ2dsZUl0ZW1DbGlja2VkKGl0ZW0sICFpdGVtLmV4cGFuZGVkKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPHVsIGlkPVwie3tzY3JvbGxDb250YWluZXJJZH19XCJcclxuICAgIGNsYXNzPVwiZmxleC1ncm93IHNjcm9sbC15IHB5LTFcIj5cclxuXHJcbiAgPGxpICpuZ0lmPVwiIWhpZGVSb290Tm9kZSAmJiByb290Tm9kZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIml0ZW0td3JhcHBlclwiXHJcbiAgICAgICAgIHRpdGxlPVwie3tyb290Tm9kZT8udG9vbHRpcCA/PyByb290Tm9kZT8ubGFiZWx9fVwiXHJcbiAgICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtaGVhZGluZyc6IHJvb3ROb2RlPy5kaXNwbGF5ID09PSAnaGVhZGluZyd9XCJcclxuICAgICAgICAgZWNOYXZJdGVtQWN0aXZlPVwiaXMtc2VsZWN0ZWRcIlxyXG4gICAgICAgICBbZWNOYXZJdGVtQWN0aXZlVXJsXT1cInJvb3ROb2RlPy51cmxcIlxyXG4gICAgICAgICBbZWNOYXZJdGVtQWN0aXZlRXhhY3RNYXRjaF09J3Jvb3ROb2RlPy5pc0FjdGl2ZUV4YWN0TWF0Y2gnPlxyXG4gICAgICA8YSBpZD1cInJvb3ROb2RlX3t7cm9vdE5vZGU/LmlkfX1fbGlua1wiXHJcbiAgICAgICAgIGNsYXNzPVwiaXRlbSBmbGV4LWdyb3cgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgIHJvdXRlckxpbms9XCJ7e3Jvb3ROb2RlPy51cmx9fVwiXHJcbiAgICAgICAgIFtxdWVyeVBhcmFtc109XCJyb290Tm9kZT8ucXVlcnlQYXJhbXNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tSXRlbVRlbXBsYXRlIHx8IGRlZmF1bHRJdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb290Tm9kZSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvYT5cclxuICAgIDwvZGl2PlxyXG4gIDwvbGk+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjaGllcmFyY2h5Vmlld1xyXG4gICAgICAgICAgICAgICBsZXQtaXRlbXM+XHJcbiAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGluZGV4IGFzIGluZGV4OyBmaXJzdCBhcyBpc0ZpcnN0XCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7J2RpdmlkZXInOiBpdGVtLmRpc3BsYXkgPT09ICdkaXZpZGVyJ31cIlxyXG4gICAgICAgIGlkPVwidHJlZUl0ZW1fe3tpdGVtLmlkfX1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIml0ZW0td3JhcHBlclwiXHJcbiAgICAgICAgICAgdGl0bGU9XCJ7e2l0ZW0udG9vbHRpcCA/PyBpdGVtLmxhYmVsfX1cIlxyXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtaGVhZGluZyc6IGl0ZW0uZGlzcGxheSA9PT0gJ2hlYWRpbmcnfVwiXHJcbiAgICAgICAgICAgZWNOYXZJdGVtQWN0aXZlPVwiaXMtc2VsZWN0ZWRcIlxyXG4gICAgICAgICAgIFtlY05hdkl0ZW1BY3RpdmVVcmxdPVwiaXRlbS51cmxcIlxyXG4gICAgICAgICAgIFtlY05hdkl0ZW1BY3RpdmVFeGFjdE1hdGNoXT1cIml0ZW0uaXNBY3RpdmVFeGFjdE1hdGNoXCJcclxuICAgICAgICAgICBbZWNOYXZJdGVtQWN0aXZlUXVlcnlQYXJhbXNdPVwiaXRlbS5xdWVyeVBhcmFtc1wiPlxyXG5cclxuICAgICAgICA8IS0tIFRoaXMgZWxlbWVudCBwcm92aWRlcyB0aGUgaW5kZW50YXRpb24gZm9yIGVhY2ggbGV2ZWwgLS0+XHJcbiAgICAgICAgPHNwYW4gaWQ9XCJpbmRlbnRfe3tpdGVtLmlkfX1cIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0ubm9JbmRlbnRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1ibG9jayBoLTEwMFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIihpbmRlbnQpICogKGl0ZW0ubGV2ZWwgLSAxKSArIChpdGVtLmxldmVsICogNCkgKyAoaXRlbS5oYXNDaGlsZHJlbiA/IDAgOiBpbmRlbnQpXCI+XHJcbiAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICA8IS0tIFRvZ2dsZSB0aGUgYnV0dG9uIGljb24gdG8gYmUgYSBzcGlubmVyIHdoZW4gaXRlbS5zdGF0dXMgaXMgcGVuZGluZyAtLT5cclxuICAgICAgICA8ZWMtY29sbGFwc2libGUtdG9nZ2xlIGlkPVwidG9nZ2xlX3t7aXRlbS5pZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleC1zaHJpbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImluZGVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uaGFzQ2hpbGRyZW4gJiYgIWl0ZW0uaGlkZVRvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIml0ZW0uc3RhdHVzID09PSAncGVuZGluZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V4cGFuZGVkXT1cIml0ZW0uZXhwYW5kZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4cGFuZGVkQ2hhbmdlKT1cInRvZ2dsZUl0ZW1DbGlja2VkKGl0ZW0sICRldmVudClcIj5cclxuICAgICAgICA8L2VjLWNvbGxhcHNpYmxlLXRvZ2dsZT5cclxuXHJcbiAgICAgICAgPGkgY2xhc3M9XCJlYy1pY29uIGljb24tbG9hZGluZyBteS0xXCJcclxuICAgICAgICAgICBbaGlkZGVuXT1cIml0ZW0uc3RhdHVzICE9PSAncGVuZGluZydcIj48L2k+XHJcblxyXG4gICAgICAgIDxhIGlkPVwidHJlZUl0ZW1fe3tpdGVtLmlkfX1fbGlua1wiXHJcbiAgICAgICAgICAgY2xhc3M9XCJpdGVtXCJcclxuICAgICAgICAgICAqbmdJZj1cIml0ZW0udXJsXCJcclxuICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SXRlbShpdGVtKVwiXHJcbiAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiaXRlbS51cmxcIlxyXG4gICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJpdGVtLnF1ZXJ5UGFyYW1zXCJcclxuICAgICAgICAgICBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJpdGVtLnF1ZXJ5UGFyYW1zSGFuZGxpbmcgfHwgJydcIj5cclxuICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tSXRlbVRlbXBsYXRlIHx8IGRlZmF1bHRJdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPGRpdiBpZD1cInRyZWVJdGVtX3t7aXRlbS5pZH19X2hlYWRpbmdcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJpdGVtXCJcclxuICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0udXJsXCJcclxuICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtKGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tSXRlbVRlbXBsYXRlIHx8IGRlZmF1bHRJdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPHVsICpuZ0lmPVwiaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwICYmIGl0ZW0uZXhwYW5kZWRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGllcmFyY2h5VmlldzsgY29udGV4dDp7ICRpbXBsaWNpdDogaXRlbS5jaGlsZHJlbiB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdWw+XHJcbiAgICA8L2xpPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoaWVyYXJjaHlWaWV3OyBjb250ZXh0OnsgJGltcGxpY2l0OiByb290Tm9kZT8uY2hpbGRyZW4gfVwiPjwvbmctY29udGFpbmVyPlxyXG48L3VsPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbVRlbXBsYXRlXHJcbiAgICAgICAgICAgICBsZXQtaXRlbT5cclxuICA8aSBjbGFzcz1cImVjLWljb24ge3tpdGVtLmljb259fSBteC0xIGZsZXgtc2hyaW5rXCJcclxuICAgICBbYXR0ci50aXRsZV09XCJpdGVtLmljb25Ub29sdGlwXCJcclxuICAgICAqbmdJZj1cIml0ZW0uaWNvblwiPjwvaT5cclxuICA8c3BhbiBjbGFzcz1cIm14LTEgdGV4dC10cnVuY2F0ZVwiPnt7aXRlbS5sYWJlbH19PC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|