@energycap/components 0.31.5 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/energycap-components.min.css +2 -2
- package/energycap-email.min.css +1 -1
- package/esm2020/energycap-components.mjs +5 -0
- package/esm2020/lib/components.module.mjs +386 -0
- package/esm2020/lib/controls/banner/banner.component.mjs +106 -0
- package/esm2020/lib/controls/button/button.component.mjs +106 -0
- package/esm2020/lib/controls/button/copy-button.directive.mjs +65 -0
- package/esm2020/lib/controls/checkbox/checkbox.component.mjs +139 -0
- package/esm2020/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -0
- package/esm2020/lib/controls/combobox/combobox.component.mjs +841 -0
- package/esm2020/lib/controls/dropdown/dropdown.component.mjs +237 -0
- package/esm2020/lib/controls/file-upload/file-upload.component.mjs +169 -0
- package/esm2020/lib/controls/form-control/form-control.component.mjs +86 -0
- package/esm2020/lib/controls/form-control-base.mjs +143 -0
- package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
- package/esm2020/lib/controls/form-group/form-group.component.mjs +252 -0
- package/esm2020/lib/controls/help-popover/help-popover.component.mjs +28 -0
- package/esm2020/lib/controls/item-picker/item-picker.component.mjs +233 -0
- package/esm2020/lib/controls/link-button/link-button.component.mjs +11 -0
- package/esm2020/lib/controls/menu/menu.component.mjs +443 -0
- package/{esm2015/lib/controls/navigation/link-item.js → esm2020/lib/controls/navigation/link-item.mjs} +0 -0
- package/{esm2015/lib/controls/navigation/nav-group.js → esm2020/lib/controls/navigation/nav-group.mjs} +0 -0
- package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
- package/{esm2015/lib/controls/navigation/nav-item.js → esm2020/lib/controls/navigation/nav-item.mjs} +0 -0
- package/esm2020/lib/controls/numericbox/numericbox.component.mjs +371 -0
- package/esm2020/lib/controls/popover/popover.component.mjs +84 -0
- package/{esm2015/lib/controls/radio-button/radio-button-option.js → esm2020/lib/controls/radio-button/radio-button-option.mjs} +0 -0
- package/esm2020/lib/controls/radio-button/radio-button.component.mjs +81 -0
- package/esm2020/lib/controls/select/select.component.mjs +87 -0
- package/esm2020/lib/controls/tabs/tabs.component.mjs +47 -0
- package/esm2020/lib/controls/textbox/textbox.component.mjs +154 -0
- package/{esm2015/lib/core/cache.service.js → esm2020/lib/core/cache.service.mjs} +9 -8
- package/{esm2015/lib/core/custom-validators.js → esm2020/lib/core/custom-validators.mjs} +0 -0
- package/{esm2015/lib/core/date-time-helper.js → esm2020/lib/core/date-time-helper.mjs} +0 -0
- package/esm2020/lib/core/error.service.mjs +57 -0
- package/esm2020/lib/core/scroll.service.mjs +89 -0
- package/esm2020/lib/core/telemetry-tracker.service.mjs +16 -0
- package/esm2020/lib/core/telemetry.service.mjs +38 -0
- package/esm2020/lib/core/validation-message.service.mjs +181 -0
- package/{esm2015/lib/core/validation-patterns.js → esm2020/lib/core/validation-patterns.mjs} +0 -0
- package/esm2020/lib/core/window.service.mjs +182 -0
- package/esm2020/lib/display/app-bar/app-bar.component.mjs +46 -0
- package/esm2020/lib/display/avatar/avatar.component.mjs +67 -0
- package/{esm2015/lib/display/avatar/avatar.service.js → esm2020/lib/display/avatar/avatar.service.mjs} +9 -7
- package/esm2020/lib/display/confirm/confirm.component.mjs +131 -0
- package/{esm2015/lib/display/dialog/dialog-content.js → esm2020/lib/display/dialog/dialog-content.mjs} +0 -0
- package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
- package/{esm2015/lib/display/dialog/dialog-types.js → esm2020/lib/display/dialog/dialog-types.mjs} +0 -0
- package/esm2020/lib/display/dialog/dialog.component.mjs +242 -0
- package/esm2020/lib/display/dialog/dialog.service.mjs +71 -0
- package/{esm2015/lib/display/help/help-types.js → esm2020/lib/display/help/help-types.mjs} +0 -0
- package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +106 -0
- package/{esm2015/lib/display/hierarchy/hierarchy-mocks.spec.js → esm2020/lib/display/hierarchy/hierarchy-mocks.spec.mjs} +5 -9
- package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +59 -0
- package/esm2020/lib/display/item-display/item-display.component.mjs +67 -0
- package/esm2020/lib/display/json-display/json-display.component.mjs +47 -0
- package/esm2020/lib/display/resizable/resizable-base.mjs +120 -0
- package/esm2020/lib/display/resizable/resizable.component.mjs +57 -0
- package/esm2020/lib/display/spinner/spinner.component.mjs +12 -0
- package/esm2020/lib/display/splash/splash.component.mjs +42 -0
- package/esm2020/lib/display/splash/splash.service.mjs +35 -0
- package/esm2020/lib/display/table/resizable-column.component.mjs +20 -0
- package/esm2020/lib/display/table/resizable-table.directive.mjs +227 -0
- package/esm2020/lib/display/table/searchable-table.component.mjs +338 -0
- package/esm2020/lib/display/table/table-detail-row.component.mjs +27 -0
- package/esm2020/lib/display/table/table-locked-column.component.mjs +58 -0
- package/esm2020/lib/display/table/table-master-header-row.component.mjs +11 -0
- package/esm2020/lib/display/table/table-master-row.component.mjs +150 -0
- package/esm2020/lib/display/table/table-pagination.component.mjs +150 -0
- package/esm2020/lib/display/table/table-selectable-row.component.mjs +235 -0
- package/esm2020/lib/display/table/table.component.mjs +244 -0
- package/esm2020/lib/display/tags/tag.mjs +15 -0
- package/esm2020/lib/display/tags/tags.component.mjs +77 -0
- package/esm2020/lib/display/toast/toast/toast.component.mjs +77 -0
- package/{esm2015/lib/display/toast/toast-types.js → esm2020/lib/display/toast/toast-types.mjs} +0 -0
- package/esm2020/lib/display/toast/toast.service.mjs +35 -0
- package/esm2020/lib/display/toast/toaster/toaster.component.mjs +114 -0
- package/esm2020/lib/display/tooltip/tooltip.component.mjs +25 -0
- package/esm2020/lib/display/tooltip/tooltip.service.mjs +63 -0
- package/esm2020/lib/display/tree/tree.component.mjs +125 -0
- package/esm2020/lib/display/view-overlay/view-overlay.component.mjs +58 -0
- package/esm2020/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
- package/esm2020/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
- package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +163 -0
- package/esm2020/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
- package/esm2020/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
- package/esm2020/lib/shared/display/pipes/relative-date.pipe.mjs +48 -0
- package/esm2020/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
- package/esm2020/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
- package/{esm2015/lib/shared/display.js → esm2020/lib/shared/display.mjs} +0 -0
- package/esm2020/lib/shared/form-group.helper.mjs +67 -0
- package/{esm2015/lib/shared/json-helper.js → esm2020/lib/shared/json-helper.mjs} +0 -0
- package/{esm2015/lib/shared/lodash-helper.js → esm2020/lib/shared/lodash-helper.mjs} +0 -0
- package/esm2020/lib/shared/page/page-base/page-base.component.mjs +339 -0
- package/{esm2015/lib/shared/page/page-statuses.js → esm2020/lib/shared/page/page-statuses.mjs} +0 -0
- package/esm2020/lib/shared/page/page-title/page-title.component.mjs +23 -0
- package/esm2020/lib/shared/page/page-view/page-view.component.mjs +121 -0
- package/{esm2015/lib/shared/testing/hierarchy-base-test-injector-factory.spec.js → esm2020/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs} +0 -0
- package/esm2020/lib/shared/testing/page-base-component-test-helper.spec.mjs +30 -0
- package/{esm2015/lib/shared/testing/page-base-component-test-injector-factory.spec.js → esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs} +0 -0
- package/esm2020/lib/shared/testing/public-mocks.spec.mjs +132 -0
- package/{esm2015/lib/shared/testing/spy-factory.spec.js → esm2020/lib/shared/testing/spy-factory.spec.mjs} +0 -0
- package/{esm2015/lib/shared/testing/translation-mocks.spec.js → esm2020/lib/shared/testing/translation-mocks.spec.mjs} +0 -0
- package/esm2020/lib/shared/user-preference.service.mjs +17 -0
- package/esm2020/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
- package/esm2020/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -0
- package/esm2020/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/energycap-components.mjs +10090 -0
- package/fesm2015/energycap-components.mjs.map +1 -0
- package/fesm2020/energycap-components.mjs +9999 -0
- package/fesm2020/energycap-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components.module.d.ts +72 -0
- package/lib/controls/banner/banner.component.d.ts +3 -0
- package/lib/controls/button/button.component.d.ts +3 -0
- package/lib/controls/button/copy-button.directive.d.ts +3 -0
- package/lib/controls/checkbox/checkbox.component.d.ts +3 -0
- package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +3 -0
- package/lib/controls/combobox/combobox.component.d.ts +5 -2
- package/lib/controls/dropdown/dropdown.component.d.ts +3 -0
- package/lib/controls/file-upload/file-upload.component.d.ts +5 -2
- package/lib/controls/form-control/form-control.component.d.ts +3 -0
- package/lib/controls/form-control-base.d.ts +3 -0
- package/lib/controls/form-control-label/form-control-label.component.d.ts +3 -0
- package/lib/controls/form-group/form-group.component.d.ts +6 -3
- package/lib/controls/help-popover/help-popover.component.d.ts +3 -0
- package/lib/controls/item-picker/item-picker.component.d.ts +5 -2
- package/lib/controls/link-button/link-button.component.d.ts +3 -0
- package/lib/controls/menu/menu.component.d.ts +3 -0
- package/lib/controls/navigation/nav-item-active.directive.d.ts +3 -0
- package/lib/controls/numericbox/numericbox.component.d.ts +5 -2
- package/lib/controls/popover/popover.component.d.ts +3 -0
- package/lib/controls/radio-button/radio-button.component.d.ts +3 -0
- package/lib/controls/select/select.component.d.ts +3 -0
- package/lib/controls/tabs/tabs.component.d.ts +3 -0
- package/lib/controls/textbox/textbox.component.d.ts +3 -0
- package/lib/core/cache.service.d.ts +3 -0
- package/lib/core/error.service.d.ts +3 -0
- package/lib/core/scroll.service.d.ts +3 -0
- package/lib/core/telemetry-tracker.service.d.ts +3 -0
- package/lib/core/telemetry.service.d.ts +3 -0
- package/lib/core/validation-message.service.d.ts +3 -0
- package/lib/core/window.service.d.ts +3 -0
- package/lib/display/app-bar/app-bar.component.d.ts +3 -0
- package/lib/display/avatar/avatar.component.d.ts +3 -0
- package/lib/display/avatar/avatar.service.d.ts +3 -0
- package/lib/display/confirm/confirm.component.d.ts +5 -2
- package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +3 -0
- package/lib/display/dialog/dialog.component.d.ts +3 -0
- package/lib/display/dialog/dialog.service.d.ts +3 -0
- package/lib/display/hierarchy/hierarchy-base.d.ts +3 -0
- package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +3 -0
- package/lib/display/item-display/item-display.component.d.ts +3 -0
- package/lib/display/json-display/json-display.component.d.ts +5 -2
- package/lib/display/resizable/resizable-base.d.ts +3 -0
- package/lib/display/resizable/resizable.component.d.ts +3 -0
- package/lib/display/spinner/spinner.component.d.ts +3 -0
- package/lib/display/splash/splash.component.d.ts +3 -0
- package/lib/display/splash/splash.service.d.ts +3 -0
- package/lib/display/table/resizable-column.component.d.ts +3 -0
- package/lib/display/table/resizable-table.directive.d.ts +3 -0
- package/lib/display/table/searchable-table.component.d.ts +6 -3
- package/lib/display/table/table-detail-row.component.d.ts +3 -0
- package/lib/display/table/table-locked-column.component.d.ts +3 -0
- package/lib/display/table/table-master-header-row.component.d.ts +3 -0
- package/lib/display/table/table-master-row.component.d.ts +3 -0
- package/lib/display/table/table-pagination.component.d.ts +3 -0
- package/lib/display/table/table-selectable-row.component.d.ts +5 -2
- package/lib/display/table/table.component.d.ts +3 -0
- package/lib/display/tags/tags.component.d.ts +3 -0
- package/lib/display/toast/toast/toast.component.d.ts +3 -0
- package/lib/display/toast/toast.service.d.ts +3 -0
- package/lib/display/toast/toaster/toaster.component.d.ts +3 -0
- package/lib/display/tooltip/tooltip.component.d.ts +3 -0
- package/lib/display/tooltip/tooltip.service.d.ts +3 -0
- package/lib/display/tree/tree.component.d.ts +3 -0
- package/lib/display/view-overlay/view-overlay.component.d.ts +3 -0
- package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +3 -0
- package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +3 -0
- package/lib/shared/directives/popup/popup-container.directive.d.ts +3 -0
- package/lib/shared/display/pipes/date-display.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/highlight-text.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/relative-date.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/row-count.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/time-display.pipe.d.ts +3 -0
- package/lib/shared/form-group.helper.d.ts +5 -2
- package/lib/shared/page/page-base/page-base.component.d.ts +5 -2
- package/lib/shared/page/page-title/page-title.component.d.ts +3 -0
- package/lib/shared/page/page-view/page-view.component.d.ts +3 -0
- package/lib/shared/testing/public-mocks.spec.d.ts +7 -0
- package/lib/shared/user-preference.service.d.ts +3 -0
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +3 -0
- package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +3 -0
- package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +3 -0
- package/package.json +27 -15
- package/src/styles/_functions.scss +6 -4
- package/src/styles/_icons.scss +1 -1
- package/src/styles/mixins/_control-base.scss +2 -2
- package/src/styles/mixins/_form-control-base.scss +3 -1
- package/src/styles/mixins/_spinner-base.scss +3 -1
- package/bundles/energycap-components.umd.js +0 -10646
- package/bundles/energycap-components.umd.js.map +0 -1
- package/bundles/energycap-components.umd.min.js +0 -17
- package/bundles/energycap-components.umd.min.js.map +0 -1
- package/energycap-components.d.ts +0 -7
- package/energycap-components.metadata.json +0 -1
- package/esm2015/energycap-components.js +0 -8
- package/esm2015/lib/components.module.js +0 -238
- package/esm2015/lib/controls/banner/banner.component.js +0 -94
- package/esm2015/lib/controls/button/button.component.js +0 -89
- package/esm2015/lib/controls/button/copy-button.directive.js +0 -63
- package/esm2015/lib/controls/checkbox/checkbox.component.js +0 -137
- package/esm2015/lib/controls/collapsible-toggle/collapsible-toggle.component.js +0 -35
- package/esm2015/lib/controls/combobox/combobox.component.js +0 -819
- package/esm2015/lib/controls/dropdown/dropdown.component.js +0 -207
- package/esm2015/lib/controls/file-upload/file-upload.component.js +0 -172
- package/esm2015/lib/controls/form-control/form-control.component.js +0 -65
- package/esm2015/lib/controls/form-control-base.js +0 -140
- package/esm2015/lib/controls/form-control-label/form-control-label.component.js +0 -139
- package/esm2015/lib/controls/form-group/form-group.component.js +0 -254
- package/esm2015/lib/controls/help-popover/help-popover.component.js +0 -22
- package/esm2015/lib/controls/item-picker/item-picker.component.js +0 -216
- package/esm2015/lib/controls/link-button/link-button.component.js +0 -12
- package/esm2015/lib/controls/menu/menu.component.js +0 -424
- package/esm2015/lib/controls/navigation/nav-item-active.directive.js +0 -86
- package/esm2015/lib/controls/numericbox/numericbox.component.js +0 -362
- package/esm2015/lib/controls/popover/popover.component.js +0 -85
- package/esm2015/lib/controls/radio-button/radio-button.component.js +0 -78
- package/esm2015/lib/controls/select/select.component.js +0 -89
- package/esm2015/lib/controls/tabs/tabs.component.js +0 -42
- package/esm2015/lib/controls/textbox/textbox.component.js +0 -149
- package/esm2015/lib/core/error.service.js +0 -56
- package/esm2015/lib/core/scroll.service.js +0 -88
- package/esm2015/lib/core/telemetry-tracker.service.js +0 -14
- package/esm2015/lib/core/telemetry.service.js +0 -40
- package/esm2015/lib/core/validation-message.service.js +0 -185
- package/esm2015/lib/core/window.service.js +0 -191
- package/esm2015/lib/display/app-bar/app-bar.component.js +0 -42
- package/esm2015/lib/display/avatar/avatar.component.js +0 -73
- package/esm2015/lib/display/confirm/confirm.component.js +0 -127
- package/esm2015/lib/display/dialog/dialog-group/dialog-group.component.js +0 -65
- package/esm2015/lib/display/dialog/dialog.component.js +0 -229
- package/esm2015/lib/display/dialog/dialog.service.js +0 -69
- package/esm2015/lib/display/hierarchy/hierarchy-base.js +0 -106
- package/esm2015/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.js +0 -58
- package/esm2015/lib/display/item-display/item-display.component.js +0 -57
- package/esm2015/lib/display/json-display/json-display.component.js +0 -44
- package/esm2015/lib/display/resizable/resizable-base.js +0 -119
- package/esm2015/lib/display/resizable/resizable.component.js +0 -57
- package/esm2015/lib/display/spinner/spinner.component.js +0 -12
- package/esm2015/lib/display/splash/splash.component.js +0 -45
- package/esm2015/lib/display/splash/splash.service.js +0 -34
- package/esm2015/lib/display/table/resizable-column.component.js +0 -23
- package/esm2015/lib/display/table/resizable-table.directive.js +0 -223
- package/esm2015/lib/display/table/searchable-table.component.js +0 -303
- package/esm2015/lib/display/table/table-detail-row.component.js +0 -21
- package/esm2015/lib/display/table/table-locked-column.component.js +0 -53
- package/esm2015/lib/display/table/table-master-header-row.component.js +0 -11
- package/esm2015/lib/display/table/table-master-row.component.js +0 -141
- package/esm2015/lib/display/table/table-pagination.component.js +0 -146
- package/esm2015/lib/display/table/table-selectable-row.component.js +0 -216
- package/esm2015/lib/display/table/table.component.js +0 -210
- package/esm2015/lib/display/tags/tag.js +0 -15
- package/esm2015/lib/display/tags/tags.component.js +0 -73
- package/esm2015/lib/display/toast/toast/toast.component.js +0 -70
- package/esm2015/lib/display/toast/toast.service.js +0 -34
- package/esm2015/lib/display/toast/toaster/toaster.component.js +0 -117
- package/esm2015/lib/display/tooltip/tooltip.component.js +0 -24
- package/esm2015/lib/display/tooltip/tooltip.service.js +0 -64
- package/esm2015/lib/display/tree/tree.component.js +0 -100
- package/esm2015/lib/display/view-overlay/view-overlay.component.js +0 -50
- package/esm2015/lib/shared/directives/click-area-for/click-area-for.directive.js +0 -25
- package/esm2015/lib/shared/directives/if-viewport-width/if-viewport-width.directive.js +0 -112
- package/esm2015/lib/shared/directives/popup/popup-container.directive.js +0 -160
- package/esm2015/lib/shared/display/pipes/date-display.pipe.js +0 -49
- package/esm2015/lib/shared/display/pipes/highlight-text.pipe.js +0 -26
- package/esm2015/lib/shared/display/pipes/relative-date.pipe.js +0 -49
- package/esm2015/lib/shared/display/pipes/row-count.pipe.js +0 -47
- package/esm2015/lib/shared/display/pipes/time-display.pipe.js +0 -40
- package/esm2015/lib/shared/form-group.helper.js +0 -65
- package/esm2015/lib/shared/page/page-base/page-base.component.js +0 -356
- package/esm2015/lib/shared/page/page-title/page-title.component.js +0 -19
- package/esm2015/lib/shared/page/page-view/page-view.component.js +0 -94
- package/esm2015/lib/shared/testing/page-base-component-test-helper.spec.js +0 -35
- package/esm2015/lib/shared/testing/public-mocks.spec.js +0 -126
- package/esm2015/lib/shared/user-preference.service.js +0 -15
- package/esm2015/lib/shared/wizard/wizard-base/wizard-base.component.js +0 -260
- package/esm2015/lib/shared/wizard/wizard-buttons/wizard-buttons.component.js +0 -54
- package/esm2015/lib/shared/wizard/wizard-progress/wizard-progress.component.js +0 -18
- package/fesm2015/energycap-components.js +0 -9638
- package/fesm2015/energycap-components.js.map +0 -1
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "../../controls/collapsible-toggle/collapsible-toggle.component";
|
|
5
|
+
import * as i3 from "./table-detail-row.component";
|
|
6
|
+
export class TableMasterRowComponent {
|
|
7
|
+
constructor(renderer, el) {
|
|
8
|
+
this.renderer = renderer;
|
|
9
|
+
this.el = el;
|
|
10
|
+
/**
|
|
11
|
+
* Programmatically toggle the visibility of the detail row. Default is false.
|
|
12
|
+
*/
|
|
13
|
+
this.showDetails = false;
|
|
14
|
+
/**
|
|
15
|
+
* Emits an event when the value of `showDetails` changes.
|
|
16
|
+
*/
|
|
17
|
+
this.showDetailsChanged = new EventEmitter();
|
|
18
|
+
}
|
|
19
|
+
ngOnInit() {
|
|
20
|
+
if (!this.detailRowColSpan) {
|
|
21
|
+
console.error(`A value for [detailRowColSpan] is required to render a detail row correctly. This should be the number of columns TDs placed inside an tr[ecTableMasterRow].`);
|
|
22
|
+
}
|
|
23
|
+
this.parentNode = this.renderer.parentNode(this.el.nativeElement);
|
|
24
|
+
this.updateDetailRow();
|
|
25
|
+
}
|
|
26
|
+
ngOnChanges(changes) {
|
|
27
|
+
if (changes.hasDetails && !changes.hasDetails.firstChange && changes.hasDetails.currentValue !== undefined) {
|
|
28
|
+
this.updateDetailRow();
|
|
29
|
+
}
|
|
30
|
+
if (changes.showDetails && !changes.showDetails.firstChange && changes.showDetails.currentValue !== undefined) {
|
|
31
|
+
this.updateVisibility();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
ngOnDestroy() {
|
|
35
|
+
this.removeDetailView();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* When the master row has details, create the detail row and update it's visibility. If the master
|
|
39
|
+
* has no details, remove the detail row
|
|
40
|
+
*/
|
|
41
|
+
updateDetailRow() {
|
|
42
|
+
if (this.hasDetails) {
|
|
43
|
+
if (!this.detailTemplate) {
|
|
44
|
+
console.error(`A value for the [detailTemplate] input is required when 'hasDetails' is true.`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
this.detailView = this.detailRowTemplate.createEmbeddedView({});
|
|
48
|
+
this.updateVisibility();
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.removeDetailView();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Show/hide the detail row
|
|
56
|
+
*/
|
|
57
|
+
toggleDetails(show) {
|
|
58
|
+
this.showDetails = show;
|
|
59
|
+
this.showDetailsChanged.emit(show);
|
|
60
|
+
this.updateVisibility();
|
|
61
|
+
}
|
|
62
|
+
updateVisibility() {
|
|
63
|
+
if (this.showDetails) {
|
|
64
|
+
this.show();
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this.hide();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Attach the detailView the change detection tree and insert the generated html
|
|
72
|
+
* of the detail row to DOM after the host element
|
|
73
|
+
*/
|
|
74
|
+
show() {
|
|
75
|
+
if (this.detailView) {
|
|
76
|
+
//The nextSibling may have changed, so update it. (This could happen if the table is embedded in a searchable table
|
|
77
|
+
// and a search is performed)
|
|
78
|
+
this.siblingNode = this.renderer.nextSibling(this.el.nativeElement);
|
|
79
|
+
this.detailView.reattach();
|
|
80
|
+
this.detailView.detectChanges();
|
|
81
|
+
this.detailView.rootNodes.forEach(node => {
|
|
82
|
+
this.renderer.insertBefore(this.parentNode, node, this.siblingNode);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Detach the detailView from the change detection tree and remove the generated
|
|
88
|
+
* html of the detail row from the DOM
|
|
89
|
+
*/
|
|
90
|
+
hide() {
|
|
91
|
+
if (this.detailView) {
|
|
92
|
+
this.detailView.detach();
|
|
93
|
+
this.removeDetailNodes();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Destroy the detailView and remove the generated html of the detail row from the DOM
|
|
98
|
+
*/
|
|
99
|
+
removeDetailView() {
|
|
100
|
+
if (this.detailView) {
|
|
101
|
+
this.detailView.destroy();
|
|
102
|
+
this.removeDetailNodes();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Remove the generated html of the detail row from the DOM
|
|
107
|
+
*/
|
|
108
|
+
removeDetailNodes() {
|
|
109
|
+
if (this.detailView) {
|
|
110
|
+
this.detailView.rootNodes.forEach(n => {
|
|
111
|
+
try {
|
|
112
|
+
this.renderer.removeChild(this.parentNode, n);
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
// Ignore errors thrown by removing nodes that were never added to the DOM.
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
TableMasterRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TableMasterRowComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
122
|
+
TableMasterRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TableMasterRowComponent, selector: "[ecTableMasterRow]", inputs: { id: "id", hasDetails: "hasDetails", showDetails: "showDetails", detailTemplate: "detailTemplate", detailContext: "detailContext", detailRowColSpan: "detailRowColSpan", detailRowClass: "detailRowClass", detailRowContentClass: "detailRowContentClass", detailRowMaxHeight: "detailRowMaxHeight" }, outputs: { showDetailsChanged: "showDetailsChanged" }, viewQueries: [{ propertyName: "detailRowTemplate", first: true, predicate: ["detailRow"], descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<td>\r\n <ec-collapsible-toggle *ngIf=\"hasDetails\"\r\n id=\"{{id}}_toggle\"\r\n [expanded]=\"showDetails\"\r\n (expandedChange)=\"toggleDetails($event)\"></ec-collapsible-toggle>\r\n</td>\r\n<ng-content></ng-content>\r\n\r\n<ng-template #detailRow>\r\n <tr ecTableDetailRow class=\"{{detailRowClass}}\" [contentClass]=\"detailRowContentClass\" [contentColSpan]=\"detailRowColSpan\" [maxHeight]=\"detailRowMaxHeight\">\r\n <ng-container *ngTemplateOutlet=\"detailTemplate; context: {$implicit: detailContext}\"></ng-container>\r\n </tr>\r\n</ng-template>", styles: [":root{--ec-font-size-icon: 1rem;--ec-color-icon: rgba(26, 26, 35, .66)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}td{width:1.5rem;padding:.25rem 0!important;vertical-align:top}td ::ng-deep+td{padding-left:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.CollapsibleToggleComponent, selector: "ec-collapsible-toggle", inputs: ["id", "expanded", "tabindex"], outputs: ["expandedChange"] }, { kind: "component", type: i3.TableDetailRowComponent, selector: "[ecTableDetailRow]", inputs: ["contentClass", "contentColSpan", "maxHeight"] }] });
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TableMasterRowComponent, decorators: [{
|
|
124
|
+
type: Component,
|
|
125
|
+
args: [{ selector: '[ecTableMasterRow]', template: "<td>\r\n <ec-collapsible-toggle *ngIf=\"hasDetails\"\r\n id=\"{{id}}_toggle\"\r\n [expanded]=\"showDetails\"\r\n (expandedChange)=\"toggleDetails($event)\"></ec-collapsible-toggle>\r\n</td>\r\n<ng-content></ng-content>\r\n\r\n<ng-template #detailRow>\r\n <tr ecTableDetailRow class=\"{{detailRowClass}}\" [contentClass]=\"detailRowContentClass\" [contentColSpan]=\"detailRowColSpan\" [maxHeight]=\"detailRowMaxHeight\">\r\n <ng-container *ngTemplateOutlet=\"detailTemplate; context: {$implicit: detailContext}\"></ng-container>\r\n </tr>\r\n</ng-template>", styles: [":root{--ec-font-size-icon: 1rem;--ec-color-icon: rgba(26, 26, 35, .66)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}td{width:1.5rem;padding:.25rem 0!important;vertical-align:top}td ::ng-deep+td{padding-left:0}\n"] }]
|
|
126
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { id: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], hasDetails: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}], showDetails: [{
|
|
131
|
+
type: Input
|
|
132
|
+
}], detailTemplate: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}], detailContext: [{
|
|
135
|
+
type: Input
|
|
136
|
+
}], detailRowColSpan: [{
|
|
137
|
+
type: Input
|
|
138
|
+
}], detailRowClass: [{
|
|
139
|
+
type: Input
|
|
140
|
+
}], detailRowContentClass: [{
|
|
141
|
+
type: Input
|
|
142
|
+
}], detailRowMaxHeight: [{
|
|
143
|
+
type: Input
|
|
144
|
+
}], showDetailsChanged: [{
|
|
145
|
+
type: Output
|
|
146
|
+
}], detailRowTemplate: [{
|
|
147
|
+
type: ViewChild,
|
|
148
|
+
args: ['detailRow', { read: TemplateRef, static: true }]
|
|
149
|
+
}] } });
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbWFzdGVyLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS90YWJsZS1tYXN0ZXItcm93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L3RhYmxlL3RhYmxlLW1hc3Rlci1yb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUF1RixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFPcEwsTUFBTSxPQUFPLHVCQUF1QjtJQStFbEMsWUFBb0IsUUFBbUIsRUFBVSxFQUFjO1FBQTNDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBcEUvRDs7V0FFRztRQUNNLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBd0M3Qjs7V0FFRztRQUNPLHVCQUFrQixHQUEwQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBc0JOLENBQUM7SUFFcEUsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyw4SkFBOEosQ0FBQyxDQUFDO1NBQy9LO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUV6QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxJ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RUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDL0M7Z0JBQUMsT0FBTSxHQUFHLEVBQUU7b0JBQ1gsMkVBQTJFO2lCQUM1RTtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOztvSEEvTFUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsNGZBOERILFdBQVcsZ0VDckU1Qyw2bkJBWWM7MkZETEQsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLG9CQUFvQjt5SEFRZCxFQUFFO3NCQUFqQixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFNRyxjQUFjO3NCQUF0QixLQUFLO2dCQWNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUtHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBS0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFLSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBS29ELGlCQUFpQjtzQkFBM0UsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgUmVuZGVyZXIyLCBFbWJlZGRlZFZpZXdSZWYsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnW2VjVGFibGVNYXN0ZXJSb3ddJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtbWFzdGVyLXJvdy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtbWFzdGVyLXJvdy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZU1hc3RlclJvd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8qKlxyXG4gICAqIElkZW50aWZpZXIgdG8gcGFzcyB0byB0aGUgY29sbGFwc2libGUgdG9nZ2xlXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGlkPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSB0YWJsZSByb3cgaGFzIGRldGFpbHMgYW5kIHNob3dzIHRoZSBjb2xsYXBzaWJsZSB0b2dnbGUgaWYgaXQgZG9lcy5cclxuICAgKi9cclxuICBASW5wdXQoKSBoYXNEZXRhaWxzPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogUHJvZ3JhbW1hdGljYWxseSB0b2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGRldGFpbCByb3cuIERlZmF1bHQgaXMgZmFsc2UuXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2hvd0RldGFpbHMgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGVtcGxhdGUgZm9yIHRoZSBkZXRhaWwgcm93IGNvbnRlbnQuIEdlbmVyYXRlcyBhbiBbRW1iZWRkZWRWaWV3UmVmXShodHRwczovL2FuZ3VsYXIuaW8vYXBpL2NvcmUvRW1iZWRkZWRWaWV3UmVmKVxyXG4gICAqIHdpdGggdGhlICdkZXRhaWxDb250ZXh0Jy4gUmVxdWlyZWQgaWYgaGFzRGV0YWlscyBpcyB0cnVlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRldGFpbFRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWwgY29udGV4dCBib3VuZCB0byB0aGUgJ2RldGFpbFRlbXBsYXRlJy4gQXZhaWxhYmxlIGluIHRoZSB0ZW1wbGF0ZSBhcyB0aGUgZGVmYXVsdCBsb2NhbCB0ZW1wbGF0ZSBgbGV0YCBkZWNsYXJhdGlvbi5cclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGBgYGh0bWxcclxuICAgKiA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIiBlY1RhYmxlTWFzdGVyUm93IFtkZXRhaWxUZW1wbGF0ZV09XCJteURldGFpbFRlbXBsYXRlXCIgW2RldGFpbENvbnRleHRdPVwiaXRlbVwiPlxyXG4gICAqICAuLi5cclxuICAgKiA8L3RyPlxyXG4gICAqXHJcbiAgICogPG5nLXRlbXBsYXRlICNteURldGFpbFRlbXBsYXRlIGxldC1pdGVtPlxyXG4gICAqICA8cD57e2l0ZW0uY29tbWVudH19PC9wPlxyXG4gICAqIDwvbmctdGVtcGxhdGU+XHJcbiAgICovXHJcbiAgQElucHV0KCkgZGV0YWlsQ29udGV4dD86IGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG51bWJlciBvZiBjb2x1bW5zIGluIHlvdXIgdGFibGUgbWludXMgdGhlIGNvbHVtbiB0aGF0IGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgYnkgdGhlXHJcbiAgICogVGFibGVNYXN0ZXJSb3dDb21wb25lbnQuIFJlcXVpcmVkLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRldGFpbFJvd0NvbFNwYW4hOiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNwYWNlIGRlbGltaXRlZCBzdHJpbmcgYWRkZWQgdG8gdGhlIGNsYXNzIGF0dHJpYnV0ZSBvZiBkZXRhaWwgcm93IFRSLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRldGFpbFJvd0NsYXNzPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBTcGFjZSBkZWxpbWl0ZWQgc3RyaW5nIGFkZGVkIHRvIHRoZSBjbGFzcyBhdHRyaWJ1dGUgb2YgdGhlIFREIHRoYXQgY29udGFpbnMgdGhlIGRldGFpbCByb3cgY29udGVudFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRldGFpbFJvd0NvbnRlbnRDbGFzcz86IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgZGV0YWlsUm93TWF4SGVpZ2h0Pzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSB2YWx1ZSBvZiBgc2hvd0RldGFpbHNgIGNoYW5nZXMuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHNob3dEZXRhaWxzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBkZXRhaWwgcm93LCBpbnNlcnRlZCBpbiB0aGUgRE9NIGFmdGVyIHRoZSBtYXN0ZXIgcm93LlxyXG4gICAqL1xyXG4gIEBWaWV3Q2hpbGQoJ2RldGFpbFJvdycsIHtyZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlfSkgZGV0YWlsUm93VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgdmlldyBjcmVhdGVkIGZyb20gdGhlIGBkZXRhaWxSb3dgIHRlbXBsYXRlLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZGV0YWlsVmlldz86IEVtYmVkZGVkVmlld1JlZjxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgcGFyZW50IG5vZGUgb2YgdGhlIGhvc3QgZWxlbWVudC5cclxuICAgKi9cclxuICBwcml2YXRlIHBhcmVudE5vZGU6IGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHNpYmxpbmcgbm9kZSBvZiB0aGUgaG9zdCBlbGVtZW50LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2libGluZ05vZGU6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGV0YWlsUm93Q29sU3Bhbikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBBIHZhbHVlIGZvciBbZGV0YWlsUm93Q29sU3Bhbl0gaXMgcmVxdWlyZWQgdG8gcmVuZGVyIGEgZGV0YWlsIHJvdyBjb3JyZWN0bHkuIFRoaXMgc2hvdWxkIGJlIHRoZSBudW1iZXIgb2YgY29sdW1ucyBURHMgcGxhY2VkIGluc2lkZSBhbiB0cltlY1RhYmxlTWFzdGVyUm93XS5gKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBhcmVudE5vZGUgPSB0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgIHRoaXMudXBkYXRlRGV0YWlsUm93KCk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMuaGFzRGV0YWlscyAmJiAhY2hhbmdlcy5oYXNEZXRhaWxzLmZpcnN0Q2hhbmdlICYmIGNoYW5nZXMuaGFzRGV0YWlscy5jdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnVwZGF0ZURldGFpbFJvdygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLnNob3dEZXRhaWxzICYmICFjaGFuZ2VzLnNob3dEZXRhaWxzLmZpcnN0Q2hhbmdlICYmIGNoYW5nZXMuc2hvd0RldGFpbHMuY3VycmVudFZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy51cGRhdGVWaXNpYmlsaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVtb3ZlRGV0YWlsVmlldygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hlbiB0aGUgbWFzdGVyIHJvdyBoYXMgZGV0YWlscywgY3JlYXRlIHRoZSBkZXRhaWwgcm93IGFuZCB1cGRhdGUgaXQncyB2aXNpYmlsaXR5LiBJZiB0aGUgbWFzdGVyXHJcbiAgICogaGFzIG5vIGRldGFpbHMsIHJlbW92ZSB0aGUgZGV0YWlsIHJvd1xyXG4gICAqL1xyXG4gIHVwZGF0ZURldGFpbFJvdygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhhc0RldGFpbHMpIHtcclxuICAgICAgaWYgKCF0aGlzLmRldGFpbFRlbXBsYXRlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihgQSB2YWx1ZSBmb3IgdGhlIFtkZXRhaWxUZW1wbGF0ZV0gaW5wdXQgaXMgcmVxdWlyZWQgd2hlbiAnaGFzRGV0YWlscycgaXMgdHJ1ZS5gKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZGV0YWlsVmlldyA9IHRoaXMuZGV0YWlsUm93VGVtcGxhdGUuY3JlYXRlRW1iZWRkZWRWaWV3KHt9KTtcclxuICAgICAgdGhpcy51cGRhdGVWaXNpYmlsaXR5KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbW92ZURldGFpbFZpZXcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cvaGlkZSB0aGUgZGV0YWlsIHJvd1xyXG4gICAqL1xyXG4gIHRvZ2dsZURldGFpbHMoc2hvdzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93RGV0YWlscyA9IHNob3c7XHJcbiAgICB0aGlzLnNob3dEZXRhaWxzQ2hhbmdlZC5lbWl0KHNob3cpO1xyXG4gICAgdGhpcy51cGRhdGVWaXNpYmlsaXR5KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVZpc2liaWxpdHkoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zaG93RGV0YWlscykge1xyXG4gICAgICB0aGlzLnNob3coKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXR0YWNoIHRoZSBkZXRhaWxWaWV3IHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIHRyZWUgYW5kIGluc2VydCB0aGUgZ2VuZXJhdGVkIGh0bWxcclxuICAgKiBvZiB0aGUgZGV0YWlsIHJvdyB0byBET00gYWZ0ZXIgdGhlIGhvc3QgZWxlbWVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2hvdygpIHtcclxuICAgIGlmICh0aGlzLmRldGFpbFZpZXcpIHtcclxuICAgICAgLy9UaGUgbmV4dFNpYmxpbmcgbWF5IGhhdmUgY2hhbmdlZCwgc28gdXBkYXRlIGl0LiAoVGhpcyBjb3VsZCBoYXBwZW4gaWYgdGhlIHRhYmxlIGlzIGVtYmVkZGVkIGluIGEgc2VhcmNoYWJsZSB0YWJsZVxyXG4gICAgICAvLyAgYW5kIGEgc2VhcmNoIGlzIHBlcmZvcm1lZClcclxuICAgICAgdGhpcy5zaWJsaW5nTm9kZSA9IHRoaXMucmVuZGVyZXIubmV4dFNpYmxpbmcodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgdGhpcy5kZXRhaWxWaWV3LnJlYXR0YWNoKCk7XHJcbiAgICAgIHRoaXMuZGV0YWlsVmlldy5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuZGV0YWlsVmlldy5yb290Tm9kZXMuZm9yRWFjaChub2RlID0+IHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZSh0aGlzLnBhcmVudE5vZGUsIG5vZGUsIHRoaXMuc2libGluZ05vZGUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERldGFjaCB0aGUgZGV0YWlsVmlldyBmcm9tIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIHRyZWUgYW5kIHJlbW92ZSB0aGUgZ2VuZXJhdGVkXHJcbiAgICogaHRtbCBvZiB0aGUgZGV0YWlsIHJvdyBmcm9tIHRoZSBET01cclxuICAgKi9cclxuICBwcml2YXRlIGhpZGUoKSB7XHJcbiAgICBpZiAodGhpcy5kZXRhaWxWaWV3KSB7XHJcbiAgICAgIHRoaXMuZGV0YWlsVmlldy5kZXRhY2goKTtcclxuICAgICAgdGhpcy5yZW1vdmVEZXRhaWxOb2RlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVzdHJveSB0aGUgZGV0YWlsVmlldyBhbmQgcmVtb3ZlIHRoZSBnZW5lcmF0ZWQgaHRtbCBvZiB0aGUgZGV0YWlsIHJvdyBmcm9tIHRoZSBET01cclxuICAgKi9cclxuICBwcml2YXRlIHJlbW92ZURldGFpbFZpZXcoKSB7XHJcbiAgICBpZiAodGhpcy5kZXRhaWxWaWV3KSB7XHJcbiAgICAgIHRoaXMuZGV0YWlsVmlldy5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMucmVtb3ZlRGV0YWlsTm9kZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSB0aGUgZ2VuZXJhdGVkIGh0bWwgb2YgdGhlIGRldGFpbCByb3cgZnJvbSB0aGUgRE9NXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZW1vdmVEZXRhaWxOb2RlcygpIHtcclxuICAgIGlmICh0aGlzLmRldGFpbFZpZXcpIHtcclxuICAgICAgdGhpcy5kZXRhaWxWaWV3LnJvb3ROb2Rlcy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMucGFyZW50Tm9kZSwgbik7XHJcbiAgICAgICAgfSBjYXRjaChlcnIpIHtcclxuICAgICAgICAgIC8vIElnbm9yZSBlcnJvcnMgdGhyb3duIGJ5IHJlbW92aW5nIG5vZGVzIHRoYXQgd2VyZSBuZXZlciBhZGRlZCB0byB0aGUgRE9NLlxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8dGQ+XHJcbiAgPGVjLWNvbGxhcHNpYmxlLXRvZ2dsZSAqbmdJZj1cImhhc0RldGFpbHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7e2lkfX1fdG9nZ2xlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtleHBhbmRlZF09XCJzaG93RGV0YWlsc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZXhwYW5kZWRDaGFuZ2UpPVwidG9nZ2xlRGV0YWlscygkZXZlbnQpXCI+PC9lYy1jb2xsYXBzaWJsZS10b2dnbGU+XHJcbjwvdGQ+XHJcbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGV0YWlsUm93PlxyXG4gIDx0ciBlY1RhYmxlRGV0YWlsUm93IGNsYXNzPVwie3tkZXRhaWxSb3dDbGFzc319XCIgW2NvbnRlbnRDbGFzc109XCJkZXRhaWxSb3dDb250ZW50Q2xhc3NcIiBbY29udGVudENvbFNwYW5dPVwiZGV0YWlsUm93Q29sU3BhblwiIFttYXhIZWlnaHRdPVwiZGV0YWlsUm93TWF4SGVpZ2h0XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXRhaWxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogZGV0YWlsQ29udGV4dH1cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L3RyPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { NavGroup } from '../../controls/navigation/nav-group';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "../../controls/tabs/tabs.component";
|
|
6
|
+
import * as i3 from "../../controls/dropdown/dropdown.component";
|
|
7
|
+
export class TablePaginationComponent {
|
|
8
|
+
constructor(el) {
|
|
9
|
+
this.el = el;
|
|
10
|
+
/**
|
|
11
|
+
* Number of the current page.
|
|
12
|
+
* Initial value is 1, can be overridden to change the starting page number.
|
|
13
|
+
*/
|
|
14
|
+
this.pageNumber = 1;
|
|
15
|
+
/**
|
|
16
|
+
* Maximum number of page tabs to show
|
|
17
|
+
*/
|
|
18
|
+
this.maxTabs = 10;
|
|
19
|
+
/**
|
|
20
|
+
* Emits when the page changes.
|
|
21
|
+
*
|
|
22
|
+
* Bind to the event in a template using a function that uses the "skip" and "pageSize"
|
|
23
|
+
* properties to slice the new page from your data set.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* //.html
|
|
27
|
+
* (pageChanged)="onPageChanged($event)"
|
|
28
|
+
* //.ts
|
|
29
|
+
* public onPageChanged(event: PagingInfo) {
|
|
30
|
+
* this.currentPageItems = this.paginatedTableItems.slice(event.skip, event.skip + event.pageSize);
|
|
31
|
+
* }
|
|
32
|
+
* //Since pageChanged doesn't emit for the initial page, onPageChanged should be manually called during initialization
|
|
33
|
+
* //using getPagingInfo:
|
|
34
|
+
* this.onPageChanged(TablePaginationComponent.getPagingInfo(this.startingPageNumber, this.pageSize));
|
|
35
|
+
*/
|
|
36
|
+
this.pageChanged = new EventEmitter();
|
|
37
|
+
/**
|
|
38
|
+
* All possible items in the dropdown menu.
|
|
39
|
+
*/
|
|
40
|
+
this.dropdownItems = [];
|
|
41
|
+
/**
|
|
42
|
+
* Current tabs being displayed.
|
|
43
|
+
*/
|
|
44
|
+
this.currentTabs = new NavGroup();
|
|
45
|
+
}
|
|
46
|
+
ngOnChanges() {
|
|
47
|
+
if (this.totalItems === 0) {
|
|
48
|
+
this.dropdownItems = [];
|
|
49
|
+
this.currentTabs = new NavGroup();
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
this.setDropdownItems();
|
|
53
|
+
//Find the menu item that the page corresponding to this.pageNumber lies in
|
|
54
|
+
let firstMenuItem = this.dropdownItems.find(item => {
|
|
55
|
+
return item.value.firstPage <= this.pageNumber && item.value.lastPage >= this.pageNumber;
|
|
56
|
+
});
|
|
57
|
+
if (!firstMenuItem) {
|
|
58
|
+
console.error(`Page ${this.pageNumber} does not exist. Setting the starting page number to 1.`);
|
|
59
|
+
firstMenuItem = this.dropdownItems[0];
|
|
60
|
+
this.pageNumber = 1;
|
|
61
|
+
}
|
|
62
|
+
//Set the tabs to those corresponding to the first menu item.
|
|
63
|
+
//Note that we dont emit a pageChanged event here because the consumer already knows what the first page is.
|
|
64
|
+
this.setTabs(firstMenuItem, this.pageNumber);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Given the number of a page and the pageSize, return the PagingInfo object for that page.
|
|
68
|
+
*/
|
|
69
|
+
static getPagingInfo(pageNumber, pageSize) {
|
|
70
|
+
return { skip: (pageNumber - 1) * pageSize, pageSize: pageSize, pageNumber: pageNumber };
|
|
71
|
+
}
|
|
72
|
+
onItemSelected(menuItem) {
|
|
73
|
+
this.setTabs(menuItem);
|
|
74
|
+
this.onPageChange(parseInt(this.currentTabs.selected.label));
|
|
75
|
+
//focus the currently selected tab to help keyboard navigation
|
|
76
|
+
this.el.nativeElement.querySelector('.tab.active').focus();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create a tab for each item in the range represented in the MenuItem
|
|
80
|
+
*/
|
|
81
|
+
setTabs(menuItem, pageNumber) {
|
|
82
|
+
let tabItems = [];
|
|
83
|
+
for (let i = menuItem.value.firstPage; i <= menuItem.value.lastPage; i++) {
|
|
84
|
+
tabItems.push({
|
|
85
|
+
label: `${i}`,
|
|
86
|
+
onClick: () => { this.onPageChange(i); }
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
//if a pageNumber is provided, select the tab with that page number.
|
|
90
|
+
//otherwise, select the first tab.
|
|
91
|
+
let selectedTab = pageNumber ? tabItems.find(tab => { return parseInt(tab.label) === pageNumber; })
|
|
92
|
+
: tabItems[0];
|
|
93
|
+
this.currentTabs = new NavGroup(tabItems, selectedTab);
|
|
94
|
+
}
|
|
95
|
+
onPageChange(pageNumber) {
|
|
96
|
+
this.pageNumber = pageNumber;
|
|
97
|
+
this.pageChanged.emit(TablePaginationComponent.getPagingInfo(pageNumber, this.pageSize));
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Create all the items for the dropdown menu.
|
|
101
|
+
* A dropdown item represents a page range (e.g. 1-10, 11-20, or 21-25).
|
|
102
|
+
* A single dropdown item can represent a range of up to 10 pages (the last item could have less than 10).
|
|
103
|
+
*/
|
|
104
|
+
setDropdownItems() {
|
|
105
|
+
this.dropdownItems = [];
|
|
106
|
+
//find the last page
|
|
107
|
+
let dividend = Math.floor(this.totalItems / this.pageSize);
|
|
108
|
+
let remainder = this.totalItems % this.pageSize;
|
|
109
|
+
const lastPage = (remainder === 0) ? dividend : dividend + 1;
|
|
110
|
+
//keep building menu items of the form 1-10, 11-20, 21-30, etc until
|
|
111
|
+
//end >= lastPage, which means we've found the range that contains the last page.
|
|
112
|
+
let start = 1;
|
|
113
|
+
let maxTabs = this.maxTabs || 10;
|
|
114
|
+
let end = maxTabs;
|
|
115
|
+
while (end < lastPage) {
|
|
116
|
+
this.dropdownItems.push({
|
|
117
|
+
label: `${start}-${end}`,
|
|
118
|
+
value: { firstPage: start, lastPage: end }
|
|
119
|
+
});
|
|
120
|
+
start = start + maxTabs;
|
|
121
|
+
end = end + maxTabs;
|
|
122
|
+
}
|
|
123
|
+
//add the menu item that contains the last page.
|
|
124
|
+
this.dropdownItems.push({
|
|
125
|
+
label: (start === lastPage) ? `${start}` : `${start}-${lastPage}`,
|
|
126
|
+
value: { firstPage: start, lastPage: lastPage }
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
TablePaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TablePaginationComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
131
|
+
TablePaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TablePaginationComponent, selector: "ec-table-pagination", inputs: { id: "id", totalItems: "totalItems", pageSize: "pageSize", pageNumber: "pageNumber", maxTabs: "maxTabs" }, outputs: { pageChanged: "pageChanged" }, host: { classAttribute: "d-flex px-2" }, usesOnChanges: true, ngImport: i0, template: "<ec-tabs id=\"{{id}}_pages\"\r\n class=\"my-2 is-condensed\"\r\n [tabGroup]=\"currentTabs\"\r\n tabStyle=\"pills\">\r\n</ec-tabs>\r\n<ec-dropdown id=\"{{id}}_morePages\"\r\n *ngIf=\"dropdownItems.length > 1\"\r\n class=\"my-1 ml-1\"\r\n menuTemplateType=\"label\"\r\n icon=\"icon-more\"\r\n menuPosition=\"left\"\r\n [menuMinWidth]=\"80\"\r\n [showArrow]=\"false\"\r\n [popupFixed]=\"true\"\r\n [items]=\"dropdownItems\"\r\n (itemSelected)=\"onItemSelected($event)\">\r\n</ec-dropdown>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.TabsComponent, selector: "ec-tabs", inputs: ["id", "tabindex", "tabStyle", "tabGroup"] }, { kind: "component", type: i3.DropdownComponent, selector: "ec-dropdown", inputs: ["id", "autofocus", "status", "disabled", "label", "icon", "buttonType", "buttonAlignment", "buttonTitle", "tabindex", "showArrow", "items", "menuTemplateType", "menuTitle", "menuHeight", "menuWidth", "menuMinWidth", "menuPosition", "menuFooter", "popupFixed", "buttonCustomTemplate", "pending"], outputs: ["itemSelected", "popupOpened"] }] });
|
|
132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TablePaginationComponent, decorators: [{
|
|
133
|
+
type: Component,
|
|
134
|
+
args: [{ selector: 'ec-table-pagination', host: {
|
|
135
|
+
class: 'd-flex px-2'
|
|
136
|
+
}, template: "<ec-tabs id=\"{{id}}_pages\"\r\n class=\"my-2 is-condensed\"\r\n [tabGroup]=\"currentTabs\"\r\n tabStyle=\"pills\">\r\n</ec-tabs>\r\n<ec-dropdown id=\"{{id}}_morePages\"\r\n *ngIf=\"dropdownItems.length > 1\"\r\n class=\"my-1 ml-1\"\r\n menuTemplateType=\"label\"\r\n icon=\"icon-more\"\r\n menuPosition=\"left\"\r\n [menuMinWidth]=\"80\"\r\n [showArrow]=\"false\"\r\n [popupFixed]=\"true\"\r\n [items]=\"dropdownItems\"\r\n (itemSelected)=\"onItemSelected($event)\">\r\n</ec-dropdown>" }]
|
|
137
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { id: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], totalItems: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], pageSize: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], pageNumber: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], maxTabs: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], pageChanged: [{
|
|
148
|
+
type: Output
|
|
149
|
+
}] } });
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L3RhYmxlL3RhYmxlLXBhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFHOUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7OztBQXVCL0QsTUFBTSxPQUFPLHdCQUF3QjtJQXVEbkMsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUF4Q2xDOzs7V0FHRztRQUNNLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFFaEM7O1dBRUc7UUFDTSxZQUFPLEdBQVksRUFBRSxDQUFDO1FBRS9COzs7Ozs7Ozs7Ozs7Ozs7O1dBZ0JHO1FBQ08sZ0JBQVcsR0FBNkIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVyRTs7V0FFRztRQUNJLGtCQUFhLEdBQTBCLEVBQUUsQ0FBQztRQUVqRDs7V0FFRztRQUNJLGdCQUFXLEdBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUVSLENBQUM7SUFHdkMsV0FBVztRQUNULElBQUcsSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLDJF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MUJyQyx1bkJBZ0JjOzJGRFVELHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSxxQkFBcUIsUUFFekI7d0JBQ0osS0FBSyxFQUFFLGFBQWE7cUJBQ3JCO2lHQUlRLEVBQUU7c0JBQVYsS0FBSztnQkFNRyxVQUFVO3NCQUFsQixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxPQUFPO3NCQUFmLEtBQUs7Z0JBbUJJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvbWVudS9tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5hdkl0ZW0gfSBmcm9tICcuLi8uLi9jb250cm9scy9uYXZpZ2F0aW9uL25hdi1pdGVtJztcclxuaW1wb3J0IHsgTmF2R3JvdXAgfSBmcm9tICcuLi8uLi9jb250cm9scy9uYXZpZ2F0aW9uL25hdi1ncm91cCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luZ0luZm8ge1xyXG4gIC8qKk51bWJlciBvZiBpdGVtcyB0byBza2lwIHRvIGdldCB0byB0aGlzIHBhZ2UqL1xyXG4gIHNraXA6IG51bWJlcixcclxuICAvKipOdW1iZXIgb2YgaXRlbXMgaW4gdGhpcyBwYWdlKi9cclxuICBwYWdlU2l6ZTogbnVtYmVyLFxyXG4gIC8qKlRoZSBudW1iZXIgb2YgdGhlIHBhZ2UqL1xyXG4gIHBhZ2VOdW1iZXI6IG51bWJlclxyXG59XHJcblxyXG5pbnRlcmZhY2UgUGFnZVJhbmdlIHtcclxuICBmaXJzdFBhZ2U6IG51bWJlcixcclxuICBsYXN0UGFnZTogbnVtYmVyXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtdGFibGUtcGFnaW5hdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLXBhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIGhvc3Q6IHtcclxuICAgIGNsYXNzOiAnZC1mbGV4IHB4LTInXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KCkgaWQ/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvdGFsIG51bWJlciBvZiByb3dzIHRoYXQgd2UgbmVlZCB0byBwYWdlIHRocm91Z2guXHJcbiAgICogaS5lLiB0aGUgc3VtIG9mIGFsbCByb3dzIG9uIGFsbCBwYWdlcy5cclxuICAgKi9cclxuICBASW5wdXQoKSB0b3RhbEl0ZW1zITogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBNYXggc2l6ZSBvZiBhIHBhZ2UuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFnZVNpemUhOiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIE51bWJlciBvZiB0aGUgY3VycmVudCBwYWdlLlxyXG4gICAqIEluaXRpYWwgdmFsdWUgaXMgMSwgY2FuIGJlIG92ZXJyaWRkZW4gdG8gY2hhbmdlIHRoZSBzdGFydGluZyBwYWdlIG51bWJlci5cclxuICAgKi9cclxuICBASW5wdXQoKSBwYWdlTnVtYmVyOiBudW1iZXIgPSAxO1xyXG5cclxuICAvKipcclxuICAgKiBNYXhpbXVtIG51bWJlciBvZiBwYWdlIHRhYnMgdG8gc2hvd1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1heFRhYnM/OiBudW1iZXIgPSAxMDtcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgd2hlbiB0aGUgcGFnZSBjaGFuZ2VzLlxyXG4gICAqIFxyXG4gICAqIEJpbmQgdG8gdGhlIGV2ZW50IGluIGEgdGVtcGxhdGUgdXNpbmcgYSBmdW5jdGlvbiB0aGF0IHVzZXMgdGhlIFwic2tpcFwiIGFuZCBcInBhZ2VTaXplXCJcclxuICAgKiBwcm9wZXJ0aWVzIHRvIHNsaWNlIHRoZSBuZXcgcGFnZSBmcm9tIHlvdXIgZGF0YSBzZXQuXHJcbiAgICogXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiAvLy5odG1sXHJcbiAgICogKHBhZ2VDaGFuZ2VkKT1cIm9uUGFnZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICogLy8udHNcclxuICAgKiBwdWJsaWMgb25QYWdlQ2hhbmdlZChldmVudDogUGFnaW5nSW5mbykge1xyXG4gICAqICB0aGlzLmN1cnJlbnRQYWdlSXRlbXMgPSB0aGlzLnBhZ2luYXRlZFRhYmxlSXRlbXMuc2xpY2UoZXZlbnQuc2tpcCwgZXZlbnQuc2tpcCArIGV2ZW50LnBhZ2VTaXplKTtcclxuICAgKiB9XHJcbiAgICogLy9TaW5jZSBwYWdlQ2hhbmdlZCBkb2Vzbid0IGVtaXQgZm9yIHRoZSBpbml0aWFsIHBhZ2UsIG9uUGFnZUNoYW5nZWQgc2hvdWxkIGJlIG1hbnVhbGx5IGNhbGxlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gXHJcbiAgICogLy91c2luZyBnZXRQYWdpbmdJbmZvOlxyXG4gICAqIHRoaXMub25QYWdlQ2hhbmdlZChUYWJsZVBhZ2luYXRpb25Db21wb25lbnQuZ2V0UGFnaW5nSW5mbyh0aGlzLnN0YXJ0aW5nUGFnZU51bWJlciwgdGhpcy5wYWdlU2l6ZSkpO1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFBhZ2luZ0luZm8+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvKipcclxuICAgKiBBbGwgcG9zc2libGUgaXRlbXMgaW4gdGhlIGRyb3Bkb3duIG1lbnUuXHJcbiAgICovXHJcbiAgcHVibGljIGRyb3Bkb3duSXRlbXM6IE1lbnVJdGVtPFBhZ2VSYW5nZT5bXSA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiBDdXJyZW50IHRhYnMgYmVpbmcgZGlzcGxheWVkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjdXJyZW50VGFiczogTmF2R3JvdXAgPSBuZXcgTmF2R3JvdXAoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikgeyB9XHJcblxyXG5cclxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmKHRoaXMudG90YWxJdGVtcyA9PT0gMCkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duSXRlbXMgPSBbXTtcclxuICAgICAgdGhpcy5jdXJyZW50VGFicyA9IG5ldyBOYXZHcm91cCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldERyb3Bkb3duSXRlbXMoKTtcclxuXHJcbiAgICAvL0ZpbmQgdGhlIG1lbnUgaXRlbSB0aGF0IHRoZSBwYWdlIGNvcnJlc3BvbmRpbmcgdG8gdGhpcy5wYWdlTnVtYmVyIGxpZXMgaW5cclxuICAgIGxldCBmaXJzdE1lbnVJdGVtID0gdGhpcy5kcm9wZG93bkl0ZW1zLmZpbmQoaXRlbSA9PiB7XHJcbiAgICAgIHJldHVybiBpdGVtLnZhbHVlIS5maXJzdFBhZ2UgPD0gdGhpcy5wYWdlTnVtYmVyICYmIGl0ZW0udmFsdWUhLmxhc3RQYWdlID49IHRoaXMucGFnZU51bWJlcjtcclxuICAgIH0pO1xyXG4gICAgaWYoIWZpcnN0TWVudUl0ZW0pIHtcclxuICAgICAgY29uc29sZS5lcnJvcihgUGFnZSAke3RoaXMucGFnZU51bWJlcn0gZG9lcyBub3QgZXhpc3QuIFNldHRpbmcgdGhlIHN0YXJ0aW5nIHBhZ2UgbnVtYmVyIHRvIDEuYCk7XHJcbiAgICAgIGZpcnN0TWVudUl0ZW0gPSB0aGlzLmRyb3Bkb3duSXRlbXNbMF07XHJcbiAgICAgIHRoaXMucGFnZU51bWJlciA9IDE7XHJcbiAgICB9XHJcbiAgICAvL1NldCB0aGUgdGFicyB0byB0aG9zZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaXJzdCBtZW51IGl0ZW0uXHJcbiAgICAvL05vdGUgdGhhdCB3ZSBkb250IGVtaXQgYSBwYWdlQ2hhbmdlZCBldmVudCBoZXJlIGJlY2F1c2UgdGhlIGNvbnN1bWVyIGFscmVhZHkga25vd3Mgd2hhdCB0aGUgZmlyc3QgcGFnZSBpcy5cclxuICAgIHRoaXMuc2V0VGFicyhmaXJzdE1lbnVJdGVtLCB0aGlzLnBhZ2VOdW1iZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2l2ZW4gdGhlIG51bWJlciBvZiBhIHBhZ2UgYW5kIHRoZSBwYWdlU2l6ZSwgcmV0dXJuIHRoZSBQYWdpbmdJbmZvIG9iamVjdCBmb3IgdGhhdCBwYWdlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0UGFnaW5nSW5mbyhwYWdlTnVtYmVyOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB7IHNraXA6IChwYWdlTnVtYmVyIC0gMSkqcGFnZVNpemUsIHBhZ2VTaXplOiBwYWdlU2l6ZSwgcGFnZU51bWJlcjogcGFnZU51bWJlciB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uSXRlbVNlbGVjdGVkKG1lbnVJdGVtOiBNZW51SXRlbTxQYWdlUmFuZ2U+KSB7ICBcclxuICAgIHRoaXMuc2V0VGFicyhtZW51SXRlbSk7XHJcbiAgICB0aGlzLm9uUGFnZUNoYW5nZShwYXJzZUludCh0aGlzLmN1cnJlbnRUYWJzLnNlbGVjdGVkIS5sYWJlbCEpKTtcclxuICAgIC8vZm9jdXMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0YWIgdG8gaGVscCBrZXlib2FyZCBuYXZpZ2F0aW9uXHJcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnRhYi5hY3RpdmUnKS5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgdGFiIGZvciBlYWNoIGl0ZW0gaW4gdGhlIHJhbmdlIHJlcHJlc2VudGVkIGluIHRoZSBNZW51SXRlbVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0VGFicyhtZW51SXRlbTogTWVudUl0ZW08UGFnZVJhbmdlPiwgcGFnZU51bWJlcj86IG51bWJlcikge1xyXG4gICAgbGV0IHRhYkl0ZW1zOiBOYXZJdGVtW10gPSBbXTtcclxuICAgIGZvcihsZXQgaSA9IG1lbnVJdGVtLnZhbHVlIS5maXJzdFBhZ2U7IGkgPD0gbWVudUl0ZW0udmFsdWUhLmxhc3RQYWdlOyBpKyspIHtcclxuICAgICAgdGFiSXRlbXMucHVzaCh7XHJcbiAgICAgICAgbGFiZWw6IGAke2l9YCxcclxuICAgICAgICBvbkNsaWNrOiAoKSA9PiB7dGhpcy5vblBhZ2VDaGFuZ2UoaSl9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy9pZiBhIHBhZ2VOdW1iZXIgaXMgcHJvdmlkZWQsIHNlbGVjdCB0aGUgdGFiIHdpdGggdGhhdCBwYWdlIG51bWJlci5cclxuICAgIC8vb3RoZXJ3aXNlLCBzZWxlY3QgdGhlIGZpcnN0IHRhYi5cclxuICAgIGxldCBzZWxlY3RlZFRhYjogTmF2SXRlbSA9IHBhZ2VOdW1iZXIgPyB0YWJJdGVtcy5maW5kKHRhYiA9PiB7cmV0dXJuIHBhcnNlSW50KHRhYi5sYWJlbCEpID09PSBwYWdlTnVtYmVyfSkhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGFiSXRlbXNbMF07XHJcbiAgICB0aGlzLmN1cnJlbnRUYWJzID0gbmV3IE5hdkdyb3VwKHRhYkl0ZW1zLCBzZWxlY3RlZFRhYik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uUGFnZUNoYW5nZShwYWdlTnVtYmVyOiBudW1iZXIpIHtcclxuICAgIHRoaXMucGFnZU51bWJlciA9IHBhZ2VOdW1iZXI7XHJcbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQoVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50LmdldFBhZ2luZ0luZm8ocGFnZU51bWJlciwgdGhpcy5wYWdlU2l6ZSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYWxsIHRoZSBpdGVtcyBmb3IgdGhlIGRyb3Bkb3duIG1lbnUuXHJcbiAgICogQSBkcm9wZG93biBpdGVtIHJlcHJlc2VudHMgYSBwYWdlIHJhbmdlIChlLmcuIDEtMTAsIDExLTIwLCBvciAyMS0yNSkuXHJcbiAgICogQSBzaW5nbGUgZHJvcGRvd24gaXRlbSBjYW4gcmVwcmVzZW50IGEgcmFuZ2Ugb2YgdXAgdG8gMTAgcGFnZXMgKHRoZSBsYXN0IGl0ZW0gY291bGQgaGF2ZSBsZXNzIHRoYW4gMTApLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0RHJvcGRvd25JdGVtcygpIHtcclxuICAgIHRoaXMuZHJvcGRvd25JdGVtcyA9IFtdO1xyXG4gICAgLy9maW5kIHRoZSBsYXN0IHBhZ2VcclxuICAgIGxldCBkaXZpZGVuZCA9IE1hdGguZmxvb3IodGhpcy50b3RhbEl0ZW1zIC8gdGhpcy5wYWdlU2l6ZSk7XHJcbiAgICBsZXQgcmVtYWluZGVyID0gdGhpcy50b3RhbEl0ZW1zICUgdGhpcy5wYWdlU2l6ZTtcclxuICAgIGNvbnN0IGxhc3RQYWdlID0gKHJlbWFpbmRlciA9PT0gMCkgPyBkaXZpZGVuZCA6IGRpdmlkZW5kICsgMTtcclxuXHJcbiAgICAvL2tlZXAgYnVpbGRpbmcgbWVudSBpdGVtcyBvZiB0aGUgZm9ybSAxLTEwLCAxMS0yMCwgMjEtMzAsIGV0YyB1bnRpbCAgXHJcbiAgICAvL2VuZCA+PSBsYXN0UGFnZSwgd2hpY2ggbWVhbnMgd2UndmUgZm91bmQgdGhlIHJhbmdlIHRoYXQgY29udGFpbnMgdGhlIGxhc3QgcGFnZS5cclxuICAgIGxldCBzdGFydCA9IDE7XHJcblxyXG4gICAgbGV0IG1heFRhYnMgPSB0aGlzLm1heFRhYnMgfHwgMTA7XHJcbiAgICBsZXQgZW5kID0gbWF4VGFicztcclxuXHJcbiAgICB3aGlsZShlbmQgPCBsYXN0UGFnZSkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duSXRlbXMucHVzaCh7XHJcbiAgICAgICAgbGFiZWw6IGAke3N0YXJ0fS0ke2VuZH1gLFxyXG4gICAgICAgIHZhbHVlOiB7Zmlyc3RQYWdlOiBzdGFydCwgbGFzdFBhZ2U6IGVuZH1cclxuICAgICAgfSk7XHJcbiAgICAgIHN0YXJ0ID0gc3RhcnQgKyBtYXhUYWJzO1xyXG4gICAgICBlbmQgPSBlbmQgKyBtYXhUYWJzO1xyXG4gICAgfVxyXG4gICAgLy9hZGQgdGhlIG1lbnUgaXRlbSB0aGF0IGNvbnRhaW5zIHRoZSBsYXN0IHBhZ2UuXHJcbiAgICB0aGlzLmRyb3Bkb3duSXRlbXMucHVzaCh7XHJcbiAgICAgIGxhYmVsOiAoc3RhcnQgPT09IGxhc3RQYWdlKSA/IGAke3N0YXJ0fWA6IGAke3N0YXJ0fS0ke2xhc3RQYWdlfWAsXHJcbiAgICAgIHZhbHVlOiB7Zmlyc3RQYWdlOiBzdGFydCwgbGFzdFBhZ2U6IGxhc3RQYWdlfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufSIsIjxlYy10YWJzIGlkPVwie3tpZH19X3BhZ2VzXCJcclxuICAgICAgICAgY2xhc3M9XCJteS0yIGlzLWNvbmRlbnNlZFwiXHJcbiAgICAgICAgIFt0YWJHcm91cF09XCJjdXJyZW50VGFic1wiXHJcbiAgICAgICAgIHRhYlN0eWxlPVwicGlsbHNcIj5cclxuPC9lYy10YWJzPlxyXG48ZWMtZHJvcGRvd24gaWQ9XCJ7e2lkfX1fbW9yZVBhZ2VzXCJcclxuICAgICAgICAgICAgICpuZ0lmPVwiZHJvcGRvd25JdGVtcy5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgIGNsYXNzPVwibXktMSBtbC0xXCJcclxuICAgICAgICAgICAgIG1lbnVUZW1wbGF0ZVR5cGU9XCJsYWJlbFwiXHJcbiAgICAgICAgICAgICBpY29uPVwiaWNvbi1tb3JlXCJcclxuICAgICAgICAgICAgIG1lbnVQb3NpdGlvbj1cImxlZnRcIlxyXG4gICAgICAgICAgICAgW21lbnVNaW5XaWR0aF09XCI4MFwiXHJcbiAgICAgICAgICAgICBbc2hvd0Fycm93XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgIFtwb3B1cEZpeGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgW2l0ZW1zXT1cImRyb3Bkb3duSXRlbXNcIlxyXG4gICAgICAgICAgICAgKGl0ZW1TZWxlY3RlZCk9XCJvbkl0ZW1TZWxlY3RlZCgkZXZlbnQpXCI+XHJcbjwvZWMtZHJvcGRvd24+Il19
|