@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
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
export class TableDetailRowComponent {
|
|
3
|
-
}
|
|
4
|
-
TableDetailRowComponent.decorators = [
|
|
5
|
-
{ type: Component, args: [{
|
|
6
|
-
selector: '[ecTableDetailRow]',
|
|
7
|
-
template: `
|
|
8
|
-
<td></td>
|
|
9
|
-
<td [class.has-max-height]="maxHeight" class="table-detail-content {{contentClass}}" [attr.colspan]="contentColSpan">
|
|
10
|
-
<div [style.max-height]="maxHeight"><ng-content></ng-content></div>
|
|
11
|
-
</td>
|
|
12
|
-
`,
|
|
13
|
-
styles: [":root{--ec-color-icon:rgba(26,26,35,0.66);--ec-font-size-icon:1rem}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{background-color:var(--ec-background-color-detail)}td:first-child{padding:.25rem 0!important;vertical-align:top;width:1.5rem}.table-detail-content{background-color:transparent;border-top:1px solid var(--ec-border-color-legacy);padding:1rem 2rem 1rem 0!important}.table-detail-content.has-max-height{padding:0!important}.table-detail-content.has-max-height>div{overflow-y:auto;padding:1rem 2rem 1rem 0}"]
|
|
14
|
-
},] }
|
|
15
|
-
];
|
|
16
|
-
TableDetailRowComponent.propDecorators = {
|
|
17
|
-
contentClass: [{ type: Input }],
|
|
18
|
-
contentColSpan: [{ type: Input }],
|
|
19
|
-
maxHeight: [{ type: Input }]
|
|
20
|
-
};
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGV0YWlsLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS90YWJsZS1kZXRhaWwtcm93LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVlqRCxNQUFNLE9BQU8sdUJBQXVCOzs7WUFWbkMsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLFFBQVEsRUFBRTs7Ozs7R0FLVDs7YUFFRjs7OzJCQUVFLEtBQUs7NkJBQ0wsS0FBSzt3QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdbZWNUYWJsZURldGFpbFJvd10nLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8dGQ+PC90ZD5cclxuICAgIDx0ZCBbY2xhc3MuaGFzLW1heC1oZWlnaHRdPVwibWF4SGVpZ2h0XCIgY2xhc3M9XCJ0YWJsZS1kZXRhaWwtY29udGVudCB7e2NvbnRlbnRDbGFzc319XCIgW2F0dHIuY29sc3Bhbl09XCJjb250ZW50Q29sU3BhblwiPlxyXG4gICAgICA8ZGl2IFtzdHlsZS5tYXgtaGVpZ2h0XT1cIm1heEhlaWdodFwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5cclxuICAgIDwvdGQ+XHJcbiAgYCxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1kZXRhaWwtcm93LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlRGV0YWlsUm93Q29tcG9uZW50IHtcclxuICBASW5wdXQoKSBjb250ZW50Q2xhc3M/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY29udGVudENvbFNwYW4hOiBudW1iZXI7XHJcbiAgQElucHV0KCkgbWF4SGVpZ2h0Pzogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { Component, HostBinding, Input, ElementRef } from '@angular/core';
|
|
2
|
-
export class TableLockedColumnComponent {
|
|
3
|
-
constructor(el) {
|
|
4
|
-
this.el = el;
|
|
5
|
-
this.borderRight = false;
|
|
6
|
-
this.borderLeft = false;
|
|
7
|
-
}
|
|
8
|
-
ngOnInit() {
|
|
9
|
-
if (this.el.nativeElement.classList.contains('is-resizable')) {
|
|
10
|
-
throw new Error(`Failed to lock table column because it was also resizable. Resizable table columns cannot currently be locked. Remove the 'is-resizable' class from THs of table columms that have the [ecTableLockedColumn] component.`);
|
|
11
|
-
}
|
|
12
|
-
if (this.el.nativeElement.attributes.getNamedItem('colspan')) {
|
|
13
|
-
throw new Error(`Failed to lock table column because it had a 'colspan'. Locked columns do not currently support THs or TDs with a 'colspan'. Remove the 'colspan' attribute from table columns that have the [ecTableLockedColumn] component.`);
|
|
14
|
-
}
|
|
15
|
-
this.updatePositionAndBorder();
|
|
16
|
-
}
|
|
17
|
-
ngOnChanges() {
|
|
18
|
-
if (this.options) {
|
|
19
|
-
this.updatePositionAndBorder();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
updatePositionAndBorder() {
|
|
23
|
-
if (typeof this.options.left === 'number' && typeof this.options.right === 'number') {
|
|
24
|
-
throw new Error(`Failed to lock table column because it had a value for both left and right. Only left or right can have a value.`);
|
|
25
|
-
}
|
|
26
|
-
if (typeof this.options.left === 'number') {
|
|
27
|
-
this.left = this.options.left;
|
|
28
|
-
this.borderRight = this.options.border || false;
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
this.right = this.options.right;
|
|
32
|
-
this.borderLeft = this.options.border || false;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
TableLockedColumnComponent.decorators = [
|
|
37
|
-
{ type: Component, args: [{
|
|
38
|
-
selector: '[ecTableLockedColumn]',
|
|
39
|
-
template: `<ng-content></ng-content>`,
|
|
40
|
-
styles: [":root{--ec-color-icon:rgba(26,26,35,0.66);--ec-font-size-icon:1rem}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{background-color:var(--ec-background-color);position:sticky!important;z-index:2!important}:host(th){z-index:3!important}"]
|
|
41
|
-
},] }
|
|
42
|
-
];
|
|
43
|
-
TableLockedColumnComponent.ctorParameters = () => [
|
|
44
|
-
{ type: ElementRef }
|
|
45
|
-
];
|
|
46
|
-
TableLockedColumnComponent.propDecorators = {
|
|
47
|
-
options: [{ type: Input, args: ['ecTableLockedColumn',] }],
|
|
48
|
-
left: [{ type: HostBinding, args: ['style.left.px',] }],
|
|
49
|
-
right: [{ type: HostBinding, args: ['style.right.px',] }],
|
|
50
|
-
borderRight: [{ type: HostBinding, args: ['class.border-right',] }],
|
|
51
|
-
borderLeft: [{ type: HostBinding, args: ['class.border-left',] }]
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbG9ja2VkLWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS90YWJsZS1sb2NrZWQtY29sdW1uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsVUFBVSxFQUFrQyxNQUFNLGVBQWUsQ0FBQztBQU9sSCxNQUFNLE9BQU8sMEJBQTBCO0lBZ0JyQyxZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUxsQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUdwQixlQUFVLEdBQUcsS0FBSyxDQUFDO0lBRW1CLENBQUM7SUFFdkMsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUM1RCxNQUFNLElBQUksS0FBSyxDQUFDLHlOQUF5TixDQUFDLENBQUM7U0FDNU87UUFFRCxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDNUQsTUFBTSxJQUFJLEtBQUssQ0FBQywrTkFBK04sQ0FBQyxDQUFDO1NBQ2xQO1FBRUQsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDbkYsTUFBTSxJQUFJLEtBQUssQ0FBQyxrSEFBa0gsQ0FBQyxDQUFDO1NBQ3JJO1FBRUQsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDO1NBQ2pEO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQzs7O1lBckRGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2dCQUNqQyxRQUFRLEVBQUUsMkJBQTJCOzthQUV0Qzs7O1lBTitDLFVBQVU7OztzQkFTdkQsS0FBSyxTQUFDLHFCQUFxQjttQkFFM0IsV0FBVyxTQUFDLGVBQWU7b0JBRzNCLFdBQVcsU0FBQyxnQkFBZ0I7MEJBRzVCLFdBQVcsU0FBQyxvQkFBb0I7eUJBR2hDLFdBQVcsU0FBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBFbGVtZW50UmVmLCBIb3N0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnW2VjVGFibGVMb2NrZWRDb2x1bW5dJyxcclxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLWxvY2tlZC1jb2x1bW4uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVMb2NrZWRDb2x1bW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBJbnB1dCgnZWNUYWJsZUxvY2tlZENvbHVtbicpIG9wdGlvbnMhOiB7IGJvcmRlcjogYm9vbGVhbiwgbGVmdD86IG51bWJlciwgcmlnaHQ/OiBudW1iZXIgfTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5sZWZ0LnB4JylcclxuICBsZWZ0PzogbnVtYmVyO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnJpZ2h0LnB4JylcclxuICByaWdodD86IG51bWJlcjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5ib3JkZXItcmlnaHQnKVxyXG4gIGJvcmRlclJpZ2h0ID0gZmFsc2U7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYm9yZGVyLWxlZnQnKVxyXG4gIGJvcmRlckxlZnQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2lzLXJlc2l6YWJsZScpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGxvY2sgdGFibGUgY29sdW1uIGJlY2F1c2UgaXQgd2FzIGFsc28gcmVzaXphYmxlLiBSZXNpemFibGUgdGFibGUgY29sdW1ucyBjYW5ub3QgY3VycmVudGx5IGJlIGxvY2tlZC4gUmVtb3ZlIHRoZSAnaXMtcmVzaXphYmxlJyBjbGFzcyBmcm9tIFRIcyBvZiB0YWJsZSBjb2x1bW1zIHRoYXQgaGF2ZSB0aGUgW2VjVGFibGVMb2NrZWRDb2x1bW5dIGNvbXBvbmVudC5gKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5lbC5uYXRpdmVFbGVtZW50LmF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKCdjb2xzcGFuJykpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gbG9jayB0YWJsZSBjb2x1bW4gYmVjYXVzZSBpdCBoYWQgYSAnY29sc3BhbicuIExvY2tlZCBjb2x1bW5zIGRvIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBUSHMgb3IgVERzIHdpdGggYSAnY29sc3BhbicuIFJlbW92ZSB0aGUgJ2NvbHNwYW4nIGF0dHJpYnV0ZSBmcm9tIHRhYmxlIGNvbHVtbnMgdGhhdCBoYXZlIHRoZSBbZWNUYWJsZUxvY2tlZENvbHVtbl0gY29tcG9uZW50LmApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlUG9zaXRpb25BbmRCb3JkZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xyXG4gICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uQW5kQm9yZGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVBvc2l0aW9uQW5kQm9yZGVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMubGVmdCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHRoaXMub3B0aW9ucy5yaWdodCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gbG9jayB0YWJsZSBjb2x1bW4gYmVjYXVzZSBpdCBoYWQgYSB2YWx1ZSBmb3IgYm90aCBsZWZ0IGFuZCByaWdodC4gT25seSBsZWZ0IG9yIHJpZ2h0IGNhbiBoYXZlIGEgdmFsdWUuYCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMubGVmdCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgdGhpcy5sZWZ0ID0gdGhpcy5vcHRpb25zLmxlZnQ7XHJcbiAgICAgIHRoaXMuYm9yZGVyUmlnaHQgPSB0aGlzLm9wdGlvbnMuYm9yZGVyIHx8IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yaWdodCA9IHRoaXMub3B0aW9ucy5yaWdodDtcclxuICAgICAgdGhpcy5ib3JkZXJMZWZ0ID0gdGhpcy5vcHRpb25zLmJvcmRlciB8fCBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
export class TableMasterHeaderRowComponent {
|
|
3
|
-
}
|
|
4
|
-
TableMasterHeaderRowComponent.decorators = [
|
|
5
|
-
{ type: Component, args: [{
|
|
6
|
-
selector: '[ecTableMasterHeaderRow]',
|
|
7
|
-
template: `<th></th><ng-content></ng-content>`,
|
|
8
|
-
styles: [":root{--ec-color-icon:rgba(26,26,35,0.66);--ec-font-size-icon:1rem}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}th{padding:.25rem 0!important;vertical-align:top;width:1.5rem}th ::ng-deep+th,th ::ng-deep+th.is-resizable{padding-left:0}"]
|
|
9
|
-
},] }
|
|
10
|
-
];
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbWFzdGVyLWhlYWRlci1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdGFibGUvdGFibGUtbWFzdGVyLWhlYWRlci1yb3cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPMUMsTUFBTSxPQUFPLDZCQUE2Qjs7O1lBTHpDLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQyxRQUFRLEVBQUUsb0NBQW9DOzthQUUvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdbZWNUYWJsZU1hc3RlckhlYWRlclJvd10nLFxyXG4gIHRlbXBsYXRlOiBgPHRoPjwvdGg+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtbWFzdGVyLWhlYWRlci1yb3cuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVNYXN0ZXJIZWFkZXJSb3dDb21wb25lbnQge31cclxuIl19
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, TemplateRef, ViewChild, ElementRef, Renderer2 } from '@angular/core';
|
|
2
|
-
export class TableMasterRowComponent {
|
|
3
|
-
constructor(renderer, el) {
|
|
4
|
-
this.renderer = renderer;
|
|
5
|
-
this.el = el;
|
|
6
|
-
/**
|
|
7
|
-
* Programmatically toggle the visibility of the detail row. Default is false.
|
|
8
|
-
*/
|
|
9
|
-
this.showDetails = false;
|
|
10
|
-
/**
|
|
11
|
-
* Emits an event when the value of `showDetails` changes.
|
|
12
|
-
*/
|
|
13
|
-
this.showDetailsChanged = new EventEmitter();
|
|
14
|
-
}
|
|
15
|
-
ngOnInit() {
|
|
16
|
-
if (!this.detailRowColSpan) {
|
|
17
|
-
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].`);
|
|
18
|
-
}
|
|
19
|
-
this.parentNode = this.renderer.parentNode(this.el.nativeElement);
|
|
20
|
-
this.updateDetailRow();
|
|
21
|
-
}
|
|
22
|
-
ngOnChanges(changes) {
|
|
23
|
-
if (changes.hasDetails && !changes.hasDetails.firstChange && changes.hasDetails.currentValue !== undefined) {
|
|
24
|
-
this.updateDetailRow();
|
|
25
|
-
}
|
|
26
|
-
if (changes.showDetails && !changes.showDetails.firstChange && changes.showDetails.currentValue !== undefined) {
|
|
27
|
-
this.updateVisibility();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
ngOnDestroy() {
|
|
31
|
-
this.removeDetailView();
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* When the master row has details, create the detail row and update it's visibility. If the master
|
|
35
|
-
* has no details, remove the detail row
|
|
36
|
-
*/
|
|
37
|
-
updateDetailRow() {
|
|
38
|
-
if (this.hasDetails) {
|
|
39
|
-
if (!this.detailTemplate) {
|
|
40
|
-
console.error(`A value for the [detailTemplate] input is required when 'hasDetails' is true.`);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
this.detailView = this.detailRowTemplate.createEmbeddedView({});
|
|
44
|
-
this.updateVisibility();
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
this.removeDetailView();
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Show/hide the detail row
|
|
52
|
-
*/
|
|
53
|
-
toggleDetails(show) {
|
|
54
|
-
this.showDetails = show;
|
|
55
|
-
this.showDetailsChanged.emit(show);
|
|
56
|
-
this.updateVisibility();
|
|
57
|
-
}
|
|
58
|
-
updateVisibility() {
|
|
59
|
-
if (this.showDetails) {
|
|
60
|
-
this.show();
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
this.hide();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Attach the detailView the change detection tree and insert the generated html
|
|
68
|
-
* of the detail row to DOM after the host element
|
|
69
|
-
*/
|
|
70
|
-
show() {
|
|
71
|
-
if (this.detailView) {
|
|
72
|
-
//The nextSibling may have changed, so update it. (This could happen if the table is embedded in a searchable table
|
|
73
|
-
// and a search is performed)
|
|
74
|
-
this.siblingNode = this.renderer.nextSibling(this.el.nativeElement);
|
|
75
|
-
this.detailView.reattach();
|
|
76
|
-
this.detailView.detectChanges();
|
|
77
|
-
this.detailView.rootNodes.forEach(node => {
|
|
78
|
-
this.renderer.insertBefore(this.parentNode, node, this.siblingNode);
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Detach the detailView from the change detection tree and remove the generated
|
|
84
|
-
* html of the detail row from the DOM
|
|
85
|
-
*/
|
|
86
|
-
hide() {
|
|
87
|
-
if (this.detailView) {
|
|
88
|
-
this.detailView.detach();
|
|
89
|
-
this.removeDetailNodes();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Destroy the detailView and remove the generated html of the detail row from the DOM
|
|
94
|
-
*/
|
|
95
|
-
removeDetailView() {
|
|
96
|
-
if (this.detailView) {
|
|
97
|
-
this.detailView.destroy();
|
|
98
|
-
this.removeDetailNodes();
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Remove the generated html of the detail row from the DOM
|
|
103
|
-
*/
|
|
104
|
-
removeDetailNodes() {
|
|
105
|
-
if (this.detailView) {
|
|
106
|
-
this.detailView.rootNodes.forEach(n => {
|
|
107
|
-
try {
|
|
108
|
-
this.renderer.removeChild(this.parentNode, n);
|
|
109
|
-
}
|
|
110
|
-
catch (err) {
|
|
111
|
-
// Ignore errors thrown by removing nodes that were never added to the DOM.
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
TableMasterRowComponent.decorators = [
|
|
118
|
-
{ type: Component, args: [{
|
|
119
|
-
selector: '[ecTableMasterRow]',
|
|
120
|
-
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>",
|
|
121
|
-
styles: [":root{--ec-color-icon:rgba(26,26,35,0.66);--ec-font-size-icon:1rem}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}td{padding:.25rem 0!important;vertical-align:top;width:1.5rem}td ::ng-deep+td{padding-left:0}"]
|
|
122
|
-
},] }
|
|
123
|
-
];
|
|
124
|
-
TableMasterRowComponent.ctorParameters = () => [
|
|
125
|
-
{ type: Renderer2 },
|
|
126
|
-
{ type: ElementRef }
|
|
127
|
-
];
|
|
128
|
-
TableMasterRowComponent.propDecorators = {
|
|
129
|
-
id: [{ type: Input }],
|
|
130
|
-
hasDetails: [{ type: Input }],
|
|
131
|
-
showDetails: [{ type: Input }],
|
|
132
|
-
detailTemplate: [{ type: Input }],
|
|
133
|
-
detailContext: [{ type: Input }],
|
|
134
|
-
detailRowColSpan: [{ type: Input }],
|
|
135
|
-
detailRowClass: [{ type: Input }],
|
|
136
|
-
detailRowContentClass: [{ type: Input }],
|
|
137
|
-
detailRowMaxHeight: [{ type: Input }],
|
|
138
|
-
showDetailsChanged: [{ type: Output }],
|
|
139
|
-
detailRowTemplate: [{ type: ViewChild, args: ['detailRow', { read: TemplateRef, static: true },] }]
|
|
140
|
-
};
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbWFzdGVyLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS90YWJsZS1tYXN0ZXItcm93LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBZ0UsTUFBTSxlQUFlLENBQUM7QUFPcEwsTUFBTSxPQUFPLHVCQUF1QjtJQStFbEMsWUFBb0IsUUFBbUIsRUFBVSxFQUFjO1FBQTNDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBcEUvRDs7V0FFRztRQUNNLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBd0M3Qjs7V0FFRztRQUNPLHVCQUFrQixHQUEwQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBc0JOLENBQUM7SUFFcEUsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyw4SkFBOEosQ0FBQyxDQUFDO1NBQy9LO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUV6QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUMxRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FD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Q0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7WUFwTUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLHVvQkFBZ0Q7O2FBRWpEOzs7WUFOb0YsU0FBUztZQUFyQixVQUFVOzs7aUJBV2hGLEtBQUs7eUJBS0wsS0FBSzswQkFLTCxLQUFLOzZCQU1MLEtBQUs7NEJBY0wsS0FBSzsrQkFNTCxLQUFLOzZCQUtMLEtBQUs7b0NBS0wsS0FBSztpQ0FFTCxLQUFLO2lDQUtMLE1BQU07Z0NBS04sU0FBUyxTQUFDLFdBQVcsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIEVtYmVkZGVkVmlld1JlZiwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdbZWNUYWJsZU1hc3RlclJvd10nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1tYXN0ZXItcm93LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1tYXN0ZXItcm93LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlTWFzdGVyUm93Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgLyoqXHJcbiAgICogSWRlbnRpZmllciB0byBwYXNzIHRvIHRoZSBjb2xsYXBzaWJsZSB0b2dnbGVcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaWQ/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHRhYmxlIHJvdyBoYXMgZGV0YWlscyBhbmQgc2hvd3MgdGhlIGNvbGxhcHNpYmxlIHRvZ2dsZSBpZiBpdCBkb2VzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGhhc0RldGFpbHM/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBQcm9ncmFtbWF0aWNhbGx5IHRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZGV0YWlsIHJvdy4gRGVmYXVsdCBpcyBmYWxzZS5cclxuICAgKi9cclxuICBASW5wdXQoKSBzaG93RGV0YWlscyA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBUZW1wbGF0ZSBmb3IgdGhlIGRldGFpbCByb3cgY29udGVudC4gR2VuZXJhdGVzIGFuIFtFbWJlZGRlZFZpZXdSZWZdKGh0dHBzOi8vYW5ndWxhci5pby9hcGkvY29yZS9FbWJlZGRlZFZpZXdSZWYpXHJcbiAgICogd2l0aCB0aGUgJ2RldGFpbENvbnRleHQnLiBSZXF1aXJlZCBpZiBoYXNEZXRhaWxzIGlzIHRydWUuXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGV0YWlsVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBPcHRpb25hbCBjb250ZXh0IGJvdW5kIHRvIHRoZSAnZGV0YWlsVGVtcGxhdGUnLiBBdmFpbGFibGUgaW4gdGhlIHRlbXBsYXRlIGFzIHRoZSBkZWZhdWx0IGxvY2FsIHRlbXBsYXRlIGBsZXRgIGRlY2xhcmF0aW9uLlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogYGBgaHRtbFxyXG4gICAqIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiIGVjVGFibGVNYXN0ZXJSb3cgW2RldGFpbFRlbXBsYXRlXT1cIm15RGV0YWlsVGVtcGxhdGVcIiBbZGV0YWlsQ29udGV4dF09XCJpdGVtXCI+XHJcbiAgICogIC4uLlxyXG4gICAqIDwvdHI+XHJcbiAgICpcclxuICAgKiA8bmctdGVtcGxhdGUgI215RGV0YWlsVGVtcGxhdGUgbGV0LWl0ZW0+XHJcbiAgICogIDxwPnt7aXRlbS5jb21tZW50fX08L3A+XHJcbiAgICogPC9uZy10ZW1wbGF0ZT5cclxuICAgKi9cclxuICBASW5wdXQoKSBkZXRhaWxDb250ZXh0PzogYW55O1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4geW91ciB0YWJsZSBtaW51cyB0aGUgY29sdW1uIHRoYXQgaXMgYXV0b21hdGljYWxseSBhZGRlZCBieSB0aGVcclxuICAgKiBUYWJsZU1hc3RlclJvd0NvbXBvbmVudC4gUmVxdWlyZWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGV0YWlsUm93Q29sU3BhbiE6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogU3BhY2UgZGVsaW1pdGVkIHN0cmluZyBhZGRlZCB0byB0aGUgY2xhc3MgYXR0cmlidXRlIG9mIGRldGFpbCByb3cgVFIuXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGV0YWlsUm93Q2xhc3M/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNwYWNlIGRlbGltaXRlZCBzdHJpbmcgYWRkZWQgdG8gdGhlIGNsYXNzIGF0dHJpYnV0ZSBvZiB0aGUgVEQgdGhhdCBjb250YWlucyB0aGUgZGV0YWlsIHJvdyBjb250ZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgZGV0YWlsUm93Q29udGVudENsYXNzPzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBkZXRhaWxSb3dNYXhIZWlnaHQ/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIHZhbHVlIG9mIGBzaG93RGV0YWlsc2AgY2hhbmdlcy5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgc2hvd0RldGFpbHNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGRldGFpbCByb3csIGluc2VydGVkIGluIHRoZSBET00gYWZ0ZXIgdGhlIG1hc3RlciByb3cuXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgnZGV0YWlsUm93Jywge3JlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWV9KSBkZXRhaWxSb3dUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSB2aWV3IGNyZWF0ZWQgZnJvbSB0aGUgYGRldGFpbFJvd2AgdGVtcGxhdGUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkZXRhaWxWaWV3PzogRW1iZWRkZWRWaWV3UmVmPGFueT47XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBwYXJlbnQgbm9kZSBvZiB0aGUgaG9zdCBlbGVtZW50LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGFyZW50Tm9kZTogYW55O1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgc2libGluZyBub2RlIG9mIHRoZSBob3N0IGVsZW1lbnQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzaWJsaW5nTm9kZTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5kZXRhaWxSb3dDb2xTcGFuKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEEgdmFsdWUgZm9yIFtkZXRhaWxSb3dDb2xTcGFuXSBpcyByZXF1aXJlZCB0byByZW5kZXIgYSBkZXRhaWwgcm93IGNvcnJlY3RseS4gVGhpcyBzaG91bGQgYmUgdGhlIG51bWJlciBvZiBjb2x1bW5zIFREcyBwbGFjZWQgaW5zaWRlIGFuIHRyW2VjVGFibGVNYXN0ZXJSb3ddLmApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGFyZW50Tm9kZSA9IHRoaXMucmVuZGVyZXIucGFyZW50Tm9kZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy51cGRhdGVEZXRhaWxSb3coKTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy5oYXNEZXRhaWxzICYmICFjaGFuZ2VzLmhhc0RldGFpbHMuZmlyc3RDaGFuZ2UgJiYgY2hhbmdlcy5oYXNEZXRhaWxzLmN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlRGV0YWlsUm93KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXMuc2hvd0RldGFpbHMgJiYgIWNoYW5nZXMuc2hvd0RldGFpbHMuZmlyc3RDaGFuZ2UgJiYgY2hhbmdlcy5zaG93RGV0YWlscy5jdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2liaWxpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW1vdmVEZXRhaWxWaWV3KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGVuIHRoZSBtYXN0ZXIgcm93IGhhcyBkZXRhaWxzLCBjcmVhdGUgdGhlIGRldGFpbCByb3cgYW5kIHVwZGF0ZSBpdCdzIHZpc2liaWxpdHkuIElmIHRoZSBtYXN0ZXJcclxuICAgKiBoYXMgbm8gZGV0YWlscywgcmVtb3ZlIHRoZSBkZXRhaWwgcm93XHJcbiAgICovXHJcbiAgdXBkYXRlRGV0YWlsUm93KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGFzRGV0YWlscykge1xyXG4gICAgICBpZiAoIXRoaXMuZGV0YWlsVGVtcGxhdGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGBBIHZhbHVlIGZvciB0aGUgW2RldGFpbFRlbXBsYXRlXSBpbnB1dCBpcyByZXF1aXJlZCB3aGVuICdoYXNEZXRhaWxzJyBpcyB0cnVlLmApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5kZXRhaWxWaWV3ID0gdGhpcy5kZXRhaWxSb3dUZW1wbGF0ZS5jcmVhdGVFbWJlZGRlZFZpZXcoe30pO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2liaWxpdHkoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlRGV0YWlsVmlldygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdy9oaWRlIHRoZSBkZXRhaWwgcm93XHJcbiAgICovXHJcbiAgdG9nZ2xlRGV0YWlscyhzaG93OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dEZXRhaWxzID0gc2hvdztcclxuICAgIHRoaXMuc2hvd0RldGFpbHNDaGFuZ2VkLmVtaXQoc2hvdyk7XHJcbiAgICB0aGlzLnVwZGF0ZVZpc2liaWxpdHkoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlVmlzaWJpbGl0eSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNob3dEZXRhaWxzKSB7XHJcbiAgICAgIHRoaXMuc2hvdygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBdHRhY2ggdGhlIGRldGFpbFZpZXcgdGhlIGNoYW5nZSBkZXRlY3Rpb24gdHJlZSBhbmQgaW5zZXJ0IHRoZSBnZW5lcmF0ZWQgaHRtbFxyXG4gICAqIG9mIHRoZSBkZXRhaWwgcm93IHRvIERPTSBhZnRlciB0aGUgaG9zdCBlbGVtZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzaG93KCkge1xyXG4gICAgaWYgKHRoaXMuZGV0YWlsVmlldykge1xyXG4gICAgICAvL1RoZSBuZXh0U2libGluZyBtYXkgaGF2ZSBjaGFuZ2VkLCBzbyB1cGRhdGUgaXQuIChUaGlzIGNvdWxkIGhhcHBlbiBpZiB0aGUgdGFibGUgaXMgZW1iZWRkZWQgaW4gYSBzZWFyY2hhYmxlIHRhYmxlXHJcbiAgICAgIC8vICBhbmQgYSBzZWFyY2ggaXMgcGVyZm9ybWVkKVxyXG4gICAgICB0aGlzLnNpYmxpbmdOb2RlID0gdGhpcy5yZW5kZXJlci5uZXh0U2libGluZyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICB0aGlzLmRldGFpbFZpZXcucmVhdHRhY2goKTtcclxuICAgICAgdGhpcy5kZXRhaWxWaWV3LmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5kZXRhaWxWaWV3LnJvb3ROb2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKHRoaXMucGFyZW50Tm9kZSwgbm9kZSwgdGhpcy5zaWJsaW5nTm9kZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0YWNoIHRoZSBkZXRhaWxWaWV3IGZyb20gdGhlIGNoYW5nZSBkZXRlY3Rpb24gdHJlZSBhbmQgcmVtb3ZlIHRoZSBnZW5lcmF0ZWRcclxuICAgKiBodG1sIG9mIHRoZSBkZXRhaWwgcm93IGZyb20gdGhlIERPTVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGlkZSgpIHtcclxuICAgIGlmICh0aGlzLmRldGFpbFZpZXcpIHtcclxuICAgICAgdGhpcy5kZXRhaWxWaWV3LmRldGFjaCgpO1xyXG4gICAgICB0aGlzLnJlbW92ZURldGFpbE5vZGVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZXN0cm95IHRoZSBkZXRhaWxWaWV3IGFuZCByZW1vdmUgdGhlIGdlbmVyYXRlZCBodG1sIG9mIHRoZSBkZXRhaWwgcm93IGZyb20gdGhlIERPTVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVtb3ZlRGV0YWlsVmlldygpIHtcclxuICAgIGlmICh0aGlzLmRldGFpbFZpZXcpIHtcclxuICAgICAgdGhpcy5kZXRhaWxWaWV3LmRlc3Ryb3koKTtcclxuICAgICAgdGhpcy5yZW1vdmVEZXRhaWxOb2RlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIHRoZSBnZW5lcmF0ZWQgaHRtbCBvZiB0aGUgZGV0YWlsIHJvdyBmcm9tIHRoZSBET01cclxuICAgKi9cclxuICBwcml2YXRlIHJlbW92ZURldGFpbE5vZGVzKCkge1xyXG4gICAgaWYgKHRoaXMuZGV0YWlsVmlldykge1xyXG4gICAgICB0aGlzLmRldGFpbFZpZXcucm9vdE5vZGVzLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5wYXJlbnROb2RlLCBuKTtcclxuICAgICAgICB9IGNhdGNoKGVycikge1xyXG4gICAgICAgICAgLy8gSWdub3JlIGVycm9ycyB0aHJvd24gYnkgcmVtb3Zpbmcgbm9kZXMgdGhhdCB3ZXJlIG5ldmVyIGFkZGVkIHRvIHRoZSBET00uXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ElementRef } from '@angular/core';
|
|
2
|
-
import { NavGroup } from '../../controls/navigation/nav-group';
|
|
3
|
-
export class TablePaginationComponent {
|
|
4
|
-
constructor(el) {
|
|
5
|
-
this.el = el;
|
|
6
|
-
/**
|
|
7
|
-
* Number of the current page.
|
|
8
|
-
* Initial value is 1, can be overridden to change the starting page number.
|
|
9
|
-
*/
|
|
10
|
-
this.pageNumber = 1;
|
|
11
|
-
/**
|
|
12
|
-
* Maximum number of page tabs to show
|
|
13
|
-
*/
|
|
14
|
-
this.maxTabs = 10;
|
|
15
|
-
/**
|
|
16
|
-
* Emits when the page changes.
|
|
17
|
-
*
|
|
18
|
-
* Bind to the event in a template using a function that uses the "skip" and "pageSize"
|
|
19
|
-
* properties to slice the new page from your data set.
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* //.html
|
|
23
|
-
* (pageChanged)="onPageChanged($event)"
|
|
24
|
-
* //.ts
|
|
25
|
-
* public onPageChanged(event: PagingInfo) {
|
|
26
|
-
* this.currentPageItems = this.paginatedTableItems.slice(event.skip, event.skip + event.pageSize);
|
|
27
|
-
* }
|
|
28
|
-
* //Since pageChanged doesn't emit for the initial page, onPageChanged should be manually called during initialization
|
|
29
|
-
* //using getPagingInfo:
|
|
30
|
-
* this.onPageChanged(TablePaginationComponent.getPagingInfo(this.startingPageNumber, this.pageSize));
|
|
31
|
-
*/
|
|
32
|
-
this.pageChanged = new EventEmitter();
|
|
33
|
-
/**
|
|
34
|
-
* All possible items in the dropdown menu.
|
|
35
|
-
*/
|
|
36
|
-
this.dropdownItems = [];
|
|
37
|
-
/**
|
|
38
|
-
* Current tabs being displayed.
|
|
39
|
-
*/
|
|
40
|
-
this.currentTabs = new NavGroup();
|
|
41
|
-
}
|
|
42
|
-
ngOnChanges() {
|
|
43
|
-
if (this.totalItems === 0) {
|
|
44
|
-
this.dropdownItems = [];
|
|
45
|
-
this.currentTabs = new NavGroup();
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
this.setDropdownItems();
|
|
49
|
-
//Find the menu item that the page corresponding to this.pageNumber lies in
|
|
50
|
-
let firstMenuItem = this.dropdownItems.find(item => {
|
|
51
|
-
return item.value.firstPage <= this.pageNumber && item.value.lastPage >= this.pageNumber;
|
|
52
|
-
});
|
|
53
|
-
if (!firstMenuItem) {
|
|
54
|
-
console.error(`Page ${this.pageNumber} does not exist. Setting the starting page number to 1.`);
|
|
55
|
-
firstMenuItem = this.dropdownItems[0];
|
|
56
|
-
this.pageNumber = 1;
|
|
57
|
-
}
|
|
58
|
-
//Set the tabs to those corresponding to the first menu item.
|
|
59
|
-
//Note that we dont emit a pageChanged event here because the consumer already knows what the first page is.
|
|
60
|
-
this.setTabs(firstMenuItem, this.pageNumber);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Given the number of a page and the pageSize, return the PagingInfo object for that page.
|
|
64
|
-
*/
|
|
65
|
-
static getPagingInfo(pageNumber, pageSize) {
|
|
66
|
-
return { skip: (pageNumber - 1) * pageSize, pageSize: pageSize, pageNumber: pageNumber };
|
|
67
|
-
}
|
|
68
|
-
onItemSelected(menuItem) {
|
|
69
|
-
this.setTabs(menuItem);
|
|
70
|
-
this.onPageChange(parseInt(this.currentTabs.selected.label));
|
|
71
|
-
//focus the currently selected tab to help keyboard navigation
|
|
72
|
-
this.el.nativeElement.querySelector('.tab.active').focus();
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Create a tab for each item in the range represented in the MenuItem
|
|
76
|
-
*/
|
|
77
|
-
setTabs(menuItem, pageNumber) {
|
|
78
|
-
let tabItems = [];
|
|
79
|
-
for (let i = menuItem.value.firstPage; i <= menuItem.value.lastPage; i++) {
|
|
80
|
-
tabItems.push({
|
|
81
|
-
label: `${i}`,
|
|
82
|
-
onClick: () => { this.onPageChange(i); }
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
//if a pageNumber is provided, select the tab with that page number.
|
|
86
|
-
//otherwise, select the first tab.
|
|
87
|
-
let selectedTab = pageNumber ? tabItems.find(tab => { return parseInt(tab.label) === pageNumber; })
|
|
88
|
-
: tabItems[0];
|
|
89
|
-
this.currentTabs = new NavGroup(tabItems, selectedTab);
|
|
90
|
-
}
|
|
91
|
-
onPageChange(pageNumber) {
|
|
92
|
-
this.pageNumber = pageNumber;
|
|
93
|
-
this.pageChanged.emit(TablePaginationComponent.getPagingInfo(pageNumber, this.pageSize));
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Create all the items for the dropdown menu.
|
|
97
|
-
* A dropdown item represents a page range (e.g. 1-10, 11-20, or 21-25).
|
|
98
|
-
* A single dropdown item can represent a range of up to 10 pages (the last item could have less than 10).
|
|
99
|
-
*/
|
|
100
|
-
setDropdownItems() {
|
|
101
|
-
this.dropdownItems = [];
|
|
102
|
-
//find the last page
|
|
103
|
-
let dividend = Math.floor(this.totalItems / this.pageSize);
|
|
104
|
-
let remainder = this.totalItems % this.pageSize;
|
|
105
|
-
const lastPage = (remainder === 0) ? dividend : dividend + 1;
|
|
106
|
-
//keep building menu items of the form 1-10, 11-20, 21-30, etc until
|
|
107
|
-
//end >= lastPage, which means we've found the range that contains the last page.
|
|
108
|
-
let start = 1;
|
|
109
|
-
let maxTabs = this.maxTabs || 10;
|
|
110
|
-
let end = maxTabs;
|
|
111
|
-
while (end < lastPage) {
|
|
112
|
-
this.dropdownItems.push({
|
|
113
|
-
label: `${start}-${end}`,
|
|
114
|
-
value: { firstPage: start, lastPage: end }
|
|
115
|
-
});
|
|
116
|
-
start = start + maxTabs;
|
|
117
|
-
end = end + maxTabs;
|
|
118
|
-
}
|
|
119
|
-
//add the menu item that contains the last page.
|
|
120
|
-
this.dropdownItems.push({
|
|
121
|
-
label: (start === lastPage) ? `${start}` : `${start}-${lastPage}`,
|
|
122
|
-
value: { firstPage: start, lastPage: lastPage }
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
TablePaginationComponent.decorators = [
|
|
127
|
-
{ type: Component, args: [{
|
|
128
|
-
selector: 'ec-table-pagination',
|
|
129
|
-
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>",
|
|
130
|
-
host: {
|
|
131
|
-
class: 'd-flex px-2'
|
|
132
|
-
}
|
|
133
|
-
},] }
|
|
134
|
-
];
|
|
135
|
-
TablePaginationComponent.ctorParameters = () => [
|
|
136
|
-
{ type: ElementRef }
|
|
137
|
-
];
|
|
138
|
-
TablePaginationComponent.propDecorators = {
|
|
139
|
-
id: [{ type: Input }],
|
|
140
|
-
totalItems: [{ type: Input }],
|
|
141
|
-
pageSize: [{ type: Input }],
|
|
142
|
-
pageNumber: [{ type: Input }],
|
|
143
|
-
maxTabs: [{ type: Input }],
|
|
144
|
-
pageChanged: [{ type: Output }]
|
|
145
|
-
};
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWJsZS90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUc5RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUF1Qi9ELE1BQU0sT0FBTyx3QkFBd0I7SUF1RG5DLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBeENsQzs7O1dBR0c7UUFDTSxlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBRWhDOztXQUVHO1FBQ00sWUFBTyxHQUFZLEVBQUUsQ0FBQztRQUUvQjs7Ozs7Ozs7Ozs7Ozs7OztXQWdCRztRQUNPLGdCQUFXLEdBQTZCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFckU7O1dBRUc7UUFDSSxrQkFBYSxHQUEwQixFQUFFLENBQUM7UUFFakQ7O1dBRUc7UUFDSSxnQkFBVyxHQUFhLElBQUksUUFBUSxFQUFFLENBQUM7SUFFUixDQUFDO0lBR3ZDLFdBQVc7UUFDVCxJQUFHLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNsQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QiwyRUFBMkU7UUFDM0UsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakQsT0FBTyxJQUFJLENB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O2lCQTRCeEQsS0FBSzt5QkFNTCxLQUFLO3VCQUtMLEtBQUs7eUJBTUwsS0FBSztzQkFLTCxLQUFLOzBCQW1CTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL21lbnUvbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvbmF2aWdhdGlvbi9uYXYtaXRlbSc7XHJcbmltcG9ydCB7IE5hdkdyb3VwIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvbmF2aWdhdGlvbi9uYXYtZ3JvdXAnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmdJbmZvIHtcclxuICAvKipOdW1iZXIgb2YgaXRlbXMgdG8gc2tpcCB0byBnZXQgdG8gdGhpcyBwYWdlKi9cclxuICBza2lwOiBudW1iZXIsXHJcbiAgLyoqTnVtYmVyIG9mIGl0ZW1zIGluIHRoaXMgcGFnZSovXHJcbiAgcGFnZVNpemU6IG51bWJlcixcclxuICAvKipUaGUgbnVtYmVyIG9mIHRoZSBwYWdlKi9cclxuICBwYWdlTnVtYmVyOiBudW1iZXJcclxufVxyXG5cclxuaW50ZXJmYWNlIFBhZ2VSYW5nZSB7XHJcbiAgZmlyc3RQYWdlOiBudW1iZXIsXHJcbiAgbGFzdFBhZ2U6IG51bWJlclxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXRhYmxlLXBhZ2luYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBob3N0OiB7XHJcbiAgICBjbGFzczogJ2QtZmxleCBweC0yJ1xyXG4gIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBUb3RhbCBudW1iZXIgb2Ygcm93cyB0aGF0IHdlIG5lZWQgdG8gcGFnZSB0aHJvdWdoLlxyXG4gICAqIGkuZS4gdGhlIHN1bSBvZiBhbGwgcm93cyBvbiBhbGwgcGFnZXMuXHJcbiAgICovXHJcbiAgQElucHV0KCkgdG90YWxJdGVtcyE6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4IHNpemUgb2YgYSBwYWdlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplITogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBOdW1iZXIgb2YgdGhlIGN1cnJlbnQgcGFnZS5cclxuICAgKiBJbml0aWFsIHZhbHVlIGlzIDEsIGNhbiBiZSBvdmVycmlkZGVuIHRvIGNoYW5nZSB0aGUgc3RhcnRpbmcgcGFnZSBudW1iZXIuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFnZU51bWJlcjogbnVtYmVyID0gMTtcclxuXHJcbiAgLyoqXHJcbiAgICogTWF4aW11bSBudW1iZXIgb2YgcGFnZSB0YWJzIHRvIHNob3dcclxuICAgKi9cclxuICBASW5wdXQoKSBtYXhUYWJzPzogbnVtYmVyID0gMTA7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHdoZW4gdGhlIHBhZ2UgY2hhbmdlcy5cclxuICAgKiBcclxuICAgKiBCaW5kIHRvIHRoZSBldmVudCBpbiBhIHRlbXBsYXRlIHVzaW5nIGEgZnVuY3Rpb24gdGhhdCB1c2VzIHRoZSBcInNraXBcIiBhbmQgXCJwYWdlU2l6ZVwiXHJcbiAgICogcHJvcGVydGllcyB0byBzbGljZSB0aGUgbmV3IHBhZ2UgZnJvbSB5b3VyIGRhdGEgc2V0LlxyXG4gICAqIFxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogLy8uaHRtbFxyXG4gICAqIChwYWdlQ2hhbmdlZCk9XCJvblBhZ2VDaGFuZ2VkKCRldmVudClcIlxyXG4gICAqIC8vLnRzXHJcbiAgICogcHVibGljIG9uUGFnZUNoYW5nZWQoZXZlbnQ6IFBhZ2luZ0luZm8pIHtcclxuICAgKiAgdGhpcy5jdXJyZW50UGFnZUl0ZW1zID0gdGhpcy5wYWdpbmF0ZWRUYWJsZUl0ZW1zLnNsaWNlKGV2ZW50LnNraXAsIGV2ZW50LnNraXAgKyBldmVudC5wYWdlU2l6ZSk7XHJcbiAgICogfVxyXG4gICAqIC8vU2luY2UgcGFnZUNoYW5nZWQgZG9lc24ndCBlbWl0IGZvciB0aGUgaW5pdGlhbCBwYWdlLCBvblBhZ2VDaGFuZ2VkIHNob3VsZCBiZSBtYW51YWxseSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIFxyXG4gICAqIC8vdXNpbmcgZ2V0UGFnaW5nSW5mbzpcclxuICAgKiB0aGlzLm9uUGFnZUNoYW5nZWQoVGFibGVQYWdpbmF0aW9uQ29tcG9uZW50LmdldFBhZ2luZ0luZm8odGhpcy5zdGFydGluZ1BhZ2VOdW1iZXIsIHRoaXMucGFnZVNpemUpKTtcclxuICAgKi9cclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxQYWdpbmdJbmZvPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQWxsIHBvc3NpYmxlIGl0ZW1zIGluIHRoZSBkcm9wZG93biBtZW51LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBkcm9wZG93bkl0ZW1zOiBNZW51SXRlbTxQYWdlUmFuZ2U+W10gPSBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ3VycmVudCB0YWJzIGJlaW5nIGRpc3BsYXllZC5cclxuICAgKi9cclxuICBwdWJsaWMgY3VycmVudFRhYnM6IE5hdkdyb3VwID0gbmV3IE5hdkdyb3VwKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuXHJcbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLnRvdGFsSXRlbXMgPT09IDApIHtcclxuICAgICAgdGhpcy5kcm9wZG93bkl0ZW1zID0gW107XHJcbiAgICAgIHRoaXMuY3VycmVudFRhYnMgPSBuZXcgTmF2R3JvdXAoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXREcm9wZG93bkl0ZW1zKCk7XHJcblxyXG4gICAgLy9GaW5kIHRoZSBtZW51IGl0ZW0gdGhhdCB0aGUgcGFnZSBjb3JyZXNwb25kaW5nIHRvIHRoaXMucGFnZU51bWJlciBsaWVzIGluXHJcbiAgICBsZXQgZmlyc3RNZW51SXRlbSA9IHRoaXMuZHJvcGRvd25JdGVtcy5maW5kKGl0ZW0gPT4ge1xyXG4gICAgICByZXR1cm4gaXRlbS52YWx1ZSEuZmlyc3RQYWdlIDw9IHRoaXMucGFnZU51bWJlciAmJiBpdGVtLnZhbHVlIS5sYXN0UGFnZSA+PSB0aGlzLnBhZ2VOdW1iZXI7XHJcbiAgICB9KTtcclxuICAgIGlmKCFmaXJzdE1lbnVJdGVtKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFBhZ2UgJHt0aGlzLnBhZ2VOdW1iZXJ9IGRvZXMgbm90IGV4aXN0LiBTZXR0aW5nIHRoZSBzdGFydGluZyBwYWdlIG51bWJlciB0byAxLmApO1xyXG4gICAgICBmaXJzdE1lbnVJdGVtID0gdGhpcy5kcm9wZG93bkl0ZW1zWzBdO1xyXG4gICAgICB0aGlzLnBhZ2VOdW1iZXIgPSAxO1xyXG4gICAgfVxyXG4gICAgLy9TZXQgdGhlIHRhYnMgdG8gdGhvc2UgY29ycmVzcG9uZGluZyB0byB0aGUgZmlyc3QgbWVudSBpdGVtLlxyXG4gICAgLy9Ob3RlIHRoYXQgd2UgZG9udCBlbWl0IGEgcGFnZUNoYW5nZWQgZXZlbnQgaGVyZSBiZWNhdXNlIHRoZSBjb25zdW1lciBhbHJlYWR5IGtub3dzIHdoYXQgdGhlIGZpcnN0IHBhZ2UgaXMuXHJcbiAgICB0aGlzLnNldFRhYnMoZmlyc3RNZW51SXRlbSwgdGhpcy5wYWdlTnVtYmVyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdpdmVuIHRoZSBudW1iZXIgb2YgYSBwYWdlIGFuZCB0aGUgcGFnZVNpemUsIHJldHVybiB0aGUgUGFnaW5nSW5mbyBvYmplY3QgZm9yIHRoYXQgcGFnZS5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGdldFBhZ2luZ0luZm8ocGFnZU51bWJlcjogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4geyBza2lwOiAocGFnZU51bWJlciAtIDEpKnBhZ2VTaXplLCBwYWdlU2l6ZTogcGFnZVNpemUsIHBhZ2VOdW1iZXI6IHBhZ2VOdW1iZXIgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkl0ZW1TZWxlY3RlZChtZW51SXRlbTogTWVudUl0ZW08UGFnZVJhbmdlPikgeyAgXHJcbiAgICB0aGlzLnNldFRhYnMobWVudUl0ZW0pO1xyXG4gICAgdGhpcy5vblBhZ2VDaGFuZ2UocGFyc2VJbnQodGhpcy5jdXJyZW50VGFicy5zZWxlY3RlZCEubGFiZWwhKSk7XHJcbiAgICAvL2ZvY3VzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFiIHRvIGhlbHAga2V5Ym9hcmQgbmF2aWdhdGlvblxyXG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy50YWIuYWN0aXZlJykuZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIHRhYiBmb3IgZWFjaCBpdGVtIGluIHRoZSByYW5nZSByZXByZXNlbnRlZCBpbiB0aGUgTWVudUl0ZW1cclxuICAgKi9cclxuICBwcml2YXRlIHNldFRhYnMobWVudUl0ZW06IE1lbnVJdGVtPFBhZ2VSYW5nZT4sIHBhZ2VOdW1iZXI/OiBudW1iZXIpIHtcclxuICAgIGxldCB0YWJJdGVtczogTmF2SXRlbVtdID0gW107XHJcbiAgICBmb3IobGV0IGkgPSBtZW51SXRlbS52YWx1ZSEuZmlyc3RQYWdlOyBpIDw9IG1lbnVJdGVtLnZhbHVlIS5sYXN0UGFnZTsgaSsrKSB7XHJcbiAgICAgIHRhYkl0ZW1zLnB1c2goe1xyXG4gICAgICAgIGxhYmVsOiBgJHtpfWAsXHJcbiAgICAgICAgb25DbGljazogKCkgPT4ge3RoaXMub25QYWdlQ2hhbmdlKGkpfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vaWYgYSBwYWdlTnVtYmVyIGlzIHByb3ZpZGVkLCBzZWxlY3QgdGhlIHRhYiB3aXRoIHRoYXQgcGFnZSBudW1iZXIuXHJcbiAgICAvL290aGVyd2lzZSwgc2VsZWN0IHRoZSBmaXJzdCB0YWIuXHJcbiAgICBsZXQgc2VsZWN0ZWRUYWI6IE5hdkl0ZW0gPSBwYWdlTnVtYmVyID8gdGFiSXRlbXMuZmluZCh0YWIgPT4ge3JldHVybiBwYXJzZUludCh0YWIubGFiZWwhKSA9PT0gcGFnZU51bWJlcn0pIVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRhYkl0ZW1zWzBdO1xyXG4gICAgdGhpcy5jdXJyZW50VGFicyA9IG5ldyBOYXZHcm91cCh0YWJJdGVtcywgc2VsZWN0ZWRUYWIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblBhZ2VDaGFuZ2UocGFnZU51bWJlcjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnBhZ2VOdW1iZXIgPSBwYWdlTnVtYmVyO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KFRhYmxlUGFnaW5hdGlvbkNvbXBvbmVudC5nZXRQYWdpbmdJbmZvKHBhZ2VOdW1iZXIsIHRoaXMucGFnZVNpemUpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGFsbCB0aGUgaXRlbXMgZm9yIHRoZSBkcm9wZG93biBtZW51LlxyXG4gICAqIEEgZHJvcGRvd24gaXRlbSByZXByZXNlbnRzIGEgcGFnZSByYW5nZSAoZS5nLiAxLTEwLCAxMS0yMCwgb3IgMjEtMjUpLlxyXG4gICAqIEEgc2luZ2xlIGRyb3Bkb3duIGl0ZW0gY2FuIHJlcHJlc2VudCBhIHJhbmdlIG9mIHVwIHRvIDEwIHBhZ2VzICh0aGUgbGFzdCBpdGVtIGNvdWxkIGhhdmUgbGVzcyB0aGFuIDEwKS5cclxuICAgKi9cclxuICBwcml2YXRlIHNldERyb3Bkb3duSXRlbXMoKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duSXRlbXMgPSBbXTtcclxuICAgIC8vZmluZCB0aGUgbGFzdCBwYWdlXHJcbiAgICBsZXQgZGl2aWRlbmQgPSBNYXRoLmZsb29yKHRoaXMudG90YWxJdGVtcyAvIHRoaXMucGFnZVNpemUpO1xyXG4gICAgbGV0IHJlbWFpbmRlciA9IHRoaXMudG90YWxJdGVtcyAlIHRoaXMucGFnZVNpemU7XHJcbiAgICBjb25zdCBsYXN0UGFnZSA9IChyZW1haW5kZXIgPT09IDApID8gZGl2aWRlbmQgOiBkaXZpZGVuZCArIDE7XHJcblxyXG4gICAgLy9rZWVwIGJ1aWxkaW5nIG1lbnUgaXRlbXMgb2YgdGhlIGZvcm0gMS0xMCwgMTEtMjAsIDIxLTMwLCBldGMgdW50aWwgIFxyXG4gICAgLy9lbmQgPj0gbGFzdFBhZ2UsIHdoaWNoIG1lYW5zIHdlJ3ZlIGZvdW5kIHRoZSByYW5nZSB0aGF0IGNvbnRhaW5zIHRoZSBsYXN0IHBhZ2UuXHJcbiAgICBsZXQgc3RhcnQgPSAxO1xyXG5cclxuICAgIGxldCBtYXhUYWJzID0gdGhpcy5tYXhUYWJzIHx8IDEwO1xyXG4gICAgbGV0IGVuZCA9IG1heFRhYnM7XHJcblxyXG4gICAgd2hpbGUoZW5kIDwgbGFzdFBhZ2UpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bkl0ZW1zLnB1c2goe1xyXG4gICAgICAgIGxhYmVsOiBgJHtzdGFydH0tJHtlbmR9YCxcclxuICAgICAgICB2YWx1ZToge2ZpcnN0UGFnZTogc3RhcnQsIGxhc3RQYWdlOiBlbmR9XHJcbiAgICAgIH0pO1xyXG4gICAgICBzdGFydCA9IHN0YXJ0ICsgbWF4VGFicztcclxuICAgICAgZW5kID0gZW5kICsgbWF4VGFicztcclxuICAgIH1cclxuICAgIC8vYWRkIHRoZSBtZW51IGl0ZW0gdGhhdCBjb250YWlucyB0aGUgbGFzdCBwYWdlLlxyXG4gICAgdGhpcy5kcm9wZG93bkl0ZW1zLnB1c2goe1xyXG4gICAgICBsYWJlbDogKHN0YXJ0ID09PSBsYXN0UGFnZSkgPyBgJHtzdGFydH1gOiBgJHtzdGFydH0tJHtsYXN0UGFnZX1gLFxyXG4gICAgICB2YWx1ZToge2ZpcnN0UGFnZTogc3RhcnQsIGxhc3RQYWdlOiBsYXN0UGFnZX1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn0iXX0=
|