@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,216 +0,0 @@
|
|
|
1
|
-
import { Component, HostBinding, HostListener, Input } from '@angular/core';
|
|
2
|
-
import { FormArray, FormControl } from '@angular/forms';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import { debounceTime, takeUntil } from 'rxjs/operators';
|
|
5
|
-
export class TableSelectableRowContext {
|
|
6
|
-
constructor() {
|
|
7
|
-
/**specify the form control to use for the selectAll checkbox or provide your own.
|
|
8
|
-
* This can be useful if you want to subscribe to changes to change button states as the selection changes
|
|
9
|
-
* or if you want to add it to an already-existing form group
|
|
10
|
-
*/
|
|
11
|
-
this.selectAllCheckbox = new FormControl(false);
|
|
12
|
-
/**specify the FormArray to use for the dependent checkboxes of the selectAll checkbox
|
|
13
|
-
* The dependent checkboxes will add and remove themselves automatically and the selectAll
|
|
14
|
-
* box will react accordingly. Do not provide your own controls
|
|
15
|
-
* This can be useful if you want to subscribe to changes to change button states as the selection changes
|
|
16
|
-
* or if you want to add it to an already-existing form group
|
|
17
|
-
*/
|
|
18
|
-
this.rowCheckboxes = new FormArray([]);
|
|
19
|
-
/**The index of the last row the user clicked. This allows multiple directives on a screen to coordinate
|
|
20
|
-
* for reacting to shift+click actions that should automatically select multiple rows between the clicked rows
|
|
21
|
-
* defaults to -1 to indicate that no user click has been captured
|
|
22
|
-
*/
|
|
23
|
-
this.lastClickedIndex = -1;
|
|
24
|
-
/**A subject that is triggered when a row-based directive is added or removed. It allows
|
|
25
|
-
* the master checkbox in the header to know that it needs to reset tracking information
|
|
26
|
-
* without replacing the actual FormArray that the hosting component may be subscribed to for changes
|
|
27
|
-
*/
|
|
28
|
-
this.rowAddedOrRemoved = new Subject();
|
|
29
|
-
/**
|
|
30
|
-
* Set to true to disable Shift-Click/Ctrl-Click functionality
|
|
31
|
-
*/
|
|
32
|
-
this.disableAdvancedRowClickBehavior = false;
|
|
33
|
-
/**
|
|
34
|
-
* Set to list of indices of controls that should not toggle when master/header checkbox toggles
|
|
35
|
-
*/
|
|
36
|
-
this.nonDependentCheckboxes = [];
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
export class TableSelectableRowComponent {
|
|
40
|
-
constructor() {
|
|
41
|
-
/**The ID root to use for the checkbox and table cell */
|
|
42
|
-
this.id = '';
|
|
43
|
-
this._selectionEnabled = true;
|
|
44
|
-
/*Required for all rows. The row index this component represents, to allow it to know how to handle shift+clicks.
|
|
45
|
-
Defaults to -1 which will cause the directive to behave as a header row*/
|
|
46
|
-
this.rowIndex = -1;
|
|
47
|
-
/**The options used to lock the checkbox column to the left of the table, must be modified by host
|
|
48
|
-
* if the checkbox is not the first column in the table
|
|
49
|
-
*/
|
|
50
|
-
this.lockedColOptions = { border: false, left: 0 };
|
|
51
|
-
/** Automatically set to true based on checkbox state, used to highlight the row to match our table selected row styles */
|
|
52
|
-
this.isSelected = false;
|
|
53
|
-
/** Automatically set to true if no rowIndex is provided or the row index is less than zero */
|
|
54
|
-
this.isHeader = false;
|
|
55
|
-
/**
|
|
56
|
-
* Set to true if you want the checkbox to be disabled.
|
|
57
|
-
*
|
|
58
|
-
* When you use this property, make sure you set `disableAdvancedRowClickBehavior: true`
|
|
59
|
-
* in the `TableSelectableRowContext`, or undesired side-effects will occur.
|
|
60
|
-
*/
|
|
61
|
-
this.isCheckboxDisabled = false;
|
|
62
|
-
/* A reference that we can change when a control is replaced to force the master checkbox reference to update
|
|
63
|
-
without also replacing the form array that the host component may be watching for selected row changes */
|
|
64
|
-
this.dependentCheckboxesReference = { controls: [] };
|
|
65
|
-
this.checkboxAttributeID = '';
|
|
66
|
-
/**Sends an event when the component is destroyed so that it can unsubscribe from any observables */
|
|
67
|
-
this.destroyed = new Subject();
|
|
68
|
-
}
|
|
69
|
-
/** Disables the selection functionality when false */
|
|
70
|
-
set isSelectionEnabled(value) { this._selectionEnabled = value !== false; }
|
|
71
|
-
get isSelectionEnabled() { return this._selectionEnabled; }
|
|
72
|
-
/**Validate and populate the context as the table is dynamically built. Because the context is shared between the
|
|
73
|
-
* header and each of the rows, changes to it can be used to determine what is happening and hook up the correct
|
|
74
|
-
* subscriptions for selectAll. The user can provide an existing formArray for the rows and form control for the header,
|
|
75
|
-
* or it can just be the default empty ones created by the context class.
|
|
76
|
-
*/
|
|
77
|
-
ngOnInit() {
|
|
78
|
-
var _a, _b, _c;
|
|
79
|
-
this.isHeader = this.rowIndex < 0;
|
|
80
|
-
if (!this.context) {
|
|
81
|
-
console.error('ecTableSelectableRow requires a defined SelectableTableRowContext to be shared with all instances in one table.');
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
let rowCheckbox = (_b = (_a = this.context) === null || _a === void 0 ? void 0 : _a.rowCheckboxes) === null || _b === void 0 ? void 0 : _b.at(this.rowIndex);
|
|
85
|
-
if (!this.isHeader && !rowCheckbox) {
|
|
86
|
-
rowCheckbox = new FormControl(this.isSelected);
|
|
87
|
-
(_c = this.context) === null || _c === void 0 ? void 0 : _c.rowCheckboxes.push(rowCheckbox);
|
|
88
|
-
}
|
|
89
|
-
this.formControl = this.isHeader ? this.context.selectAllCheckbox : rowCheckbox;
|
|
90
|
-
this.watchForChanges();
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/**Watch for changes to the row index that can occur if the table is reordered in-place instead of
|
|
94
|
-
* recreated from scratch. Re-capture the correct form control to keep everything in sync
|
|
95
|
-
*/
|
|
96
|
-
ngOnChanges(changes) {
|
|
97
|
-
var _a;
|
|
98
|
-
if (changes.rowIndex && !this.isHeader) {
|
|
99
|
-
this.formControl = this.context.rowCheckboxes.at(this.rowIndex);
|
|
100
|
-
this.checkboxAttributeID = `${this.id}_row${this.rowIndex}_ecCheckbox`;
|
|
101
|
-
}
|
|
102
|
-
if (changes.isSelectionEnabled && !this.isSelectionEnabled && ((_a = this.formControl) === null || _a === void 0 ? void 0 : _a.value) === true) {
|
|
103
|
-
this.formControl.setValue(false);
|
|
104
|
-
}
|
|
105
|
-
if (changes.isSelected && this.formControl) {
|
|
106
|
-
this.formControl.setValue(this.isSelected);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
/** Tell the header checkbox to refresh the selectAll subscription because a row was removed*/
|
|
110
|
-
ngOnDestroy() {
|
|
111
|
-
if (!this.isHeader && this.formControl) {
|
|
112
|
-
this.context.rowAddedOrRemoved.next();
|
|
113
|
-
//find the location in the array that matches the checkbox. If many rows are being removed it may not match rowIndex yet
|
|
114
|
-
let matchIndex = this.context.rowCheckboxes.controls.findIndex(c => c == this.formControl);
|
|
115
|
-
if (matchIndex >= 0) {
|
|
116
|
-
this.context.rowCheckboxes.removeAt(matchIndex);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
/**Handle when a user clicks on a table row (or something inside it which bubbles up) to increase the hit area for row selection
|
|
121
|
-
* Only work on the table body (not the header) because the header may have other click handlers for sort etc that we don't care about.
|
|
122
|
-
* Handle shift and control select as well as checkbox click like windows explorer or the original bill lists do.
|
|
123
|
-
*/
|
|
124
|
-
rowClicked(event) {
|
|
125
|
-
if (!this.isHeader && this.isSelectionEnabled && !this.isCheckboxDisabled) {
|
|
126
|
-
let targetEl = event === null || event === void 0 ? void 0 : event.target;
|
|
127
|
-
//clicking on a row always toggles that row. Sometimes the shift-select will toggle it back
|
|
128
|
-
this.formControl.setValue(!this.formControl.value);
|
|
129
|
-
if (!this.context.disableAdvancedRowClickBehavior) {
|
|
130
|
-
this.handleShiftSelect(event);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
watchForChanges() {
|
|
135
|
-
var _a;
|
|
136
|
-
//watch for rows being replaced so that the master checkbox and shift-select support can be reset to match
|
|
137
|
-
//this keeps the master in sync as the table changes pages etc and stops unexpected rows from being selected after redraw
|
|
138
|
-
if (this.isHeader) {
|
|
139
|
-
this.context.rowAddedOrRemoved.pipe(debounceTime(10), takeUntil(this.destroyed)).subscribe(() => {
|
|
140
|
-
this.context.lastClickedIndex = -1;
|
|
141
|
-
// exclude nonDependentCheckboxes (some may not be allowed to be deselected)
|
|
142
|
-
let dependentCheckboxes = [];
|
|
143
|
-
this.context.rowCheckboxes.controls.forEach((control, index) => {
|
|
144
|
-
if (!this.context.nonDependentCheckboxes.includes(index)) {
|
|
145
|
-
dependentCheckboxes.push(control);
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
this.dependentCheckboxesReference = { controls: dependentCheckboxes };
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
this.context.rowAddedOrRemoved.next();
|
|
153
|
-
//watch for the checkbox state to change on a child row and set the row isSelected class / highlight to match
|
|
154
|
-
//this way the rows match even if external code updates the form model
|
|
155
|
-
(_a = this.formControl) === null || _a === void 0 ? void 0 : _a.valueChanges.pipe(takeUntil(this.destroyed)).subscribe((value) => {
|
|
156
|
-
this.isSelected = value;
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* If they are holding the shift key, try to select all the checkboxes between their last selection
|
|
162
|
-
* and most recent selection. The logic is setup to behave the way windows explorer behaves
|
|
163
|
-
* We don't allow drag-to-select like the kendo tables, but it means users can highlight text and copy+paste to excel etc
|
|
164
|
-
* so I think this is actually preferable
|
|
165
|
-
*/
|
|
166
|
-
handleShiftSelect(event) {
|
|
167
|
-
var _a;
|
|
168
|
-
let lastIndex = this.context.lastClickedIndex;
|
|
169
|
-
let curIndex = this.rowIndex;
|
|
170
|
-
if (event.shiftKey && lastIndex >= 0) {
|
|
171
|
-
this.clearAllRows();
|
|
172
|
-
if (curIndex > lastIndex) {
|
|
173
|
-
for (var index = lastIndex; index <= curIndex; index++) {
|
|
174
|
-
this.context.rowCheckboxes.at(index).setValue(true);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
else if (curIndex < lastIndex) {
|
|
178
|
-
for (var index = lastIndex; index >= curIndex; index--) {
|
|
179
|
-
this.context.rowCheckboxes.at(index).setValue(true);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
else if (curIndex === lastIndex) {
|
|
183
|
-
this.formControl.setValue(true);
|
|
184
|
-
}
|
|
185
|
-
(_a = document.getSelection()) === null || _a === void 0 ? void 0 : _a.removeAllRanges();
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
//record the current row index for future row clicks to know where they last interacted
|
|
189
|
-
//but only if they don't have shift down for this click. If shift is down then the next shift+click
|
|
190
|
-
//should be considered an extension (or contraction) of the original multi-row selection
|
|
191
|
-
this.context.lastClickedIndex = this.rowIndex;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
clearAllRows() {
|
|
195
|
-
this.context.rowCheckboxes.controls.forEach(control => control.setValue(false));
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
TableSelectableRowComponent.decorators = [
|
|
199
|
-
{ type: Component, args: [{
|
|
200
|
-
selector: '[ecTableSelectableRow]',
|
|
201
|
-
template: "<!-- any elements of the existing table row that must go before the row selection checkbox can be marked with a class of before-checkbox -->\r\n<ng-content select=\".before-checkbox\"></ng-content>\r\n<ng-container *ngIf=\"isSelectionEnabled\">\r\n <th *ngIf=\"isHeader\"\r\n class=\"checkbox\"\r\n [ecTableLockedColumn]=\"lockedColOptions\">\r\n <ec-checkbox id=\"{{id}}_selectAll\"\r\n class=\"m-0\"\r\n *ngIf=\"context?.selectAllCheckbox\"\r\n [formModel]=\"context?.selectAllCheckbox\"\r\n [dependentCheckboxesGroup]=\"dependentCheckboxesReference\"\r\n [ignoreDisabledDependents]=\"false\">\r\n </ec-checkbox>\r\n </th>\r\n <td *ngIf=\"!isHeader && formControl\"\r\n class=\"checkbox\"\r\n [ecTableLockedColumn]=\"lockedColOptions\">\r\n <!-- Use [readonly] and not [disabled] for isCheckboxDisabled to prevent user interaction\r\n and allow the value to be visible to other components (for example, when they subscribe\r\n to valueChanges on the FormArray that contains all the checkbox FormControls). -->\r\n <ec-checkbox id=\"{{id}}_row{{rowIndex}}_checkbox\"\r\n [readonly]=\"isCheckboxDisabled\"\r\n [attr.id]=\"checkboxAttributeID\"\r\n class=\"m-0 row-checkbox\"\r\n [formModel]=\"formControl\">\r\n </ec-checkbox>\r\n </td>\r\n</ng-container>\r\n<!-- The rest of the table row -->\r\n<ng-content></ng-content>",
|
|
202
|
-
styles: [":host.is-enabled:not(.is-header){cursor:pointer}:host .checkbox{padding-left:1px;padding-right:1px;width:1.125rem}:host .checkbox:first-child{padding-left:.5rem;width:1.5625rem}:host.border-bottom-0 .checkbox{border-bottom:0}td.checkbox ec-checkbox ::ng-deep *{pointer-events:none}th.checkbox{vertical-align:var(--ec-table-selectable-row-vertical-align-checkbox-th,middle)}td.checkbox{vertical-align:var(--ec-table-selectable-row-vertical-align-checkbox-td,top)}"]
|
|
203
|
-
},] }
|
|
204
|
-
];
|
|
205
|
-
TableSelectableRowComponent.propDecorators = {
|
|
206
|
-
id: [{ type: HostBinding, args: ['attr.id',] }, { type: Input }],
|
|
207
|
-
isSelectionEnabled: [{ type: HostBinding, args: ['class.is-enabled',] }, { type: Input, args: ['ecTableSelectableRow',] }],
|
|
208
|
-
context: [{ type: Input, args: ['selectionContext',] }],
|
|
209
|
-
rowIndex: [{ type: Input }],
|
|
210
|
-
lockedColOptions: [{ type: Input }],
|
|
211
|
-
isSelected: [{ type: HostBinding, args: ['class.is-selected',] }, { type: Input }],
|
|
212
|
-
isHeader: [{ type: HostBinding, args: ['class.is-header',] }],
|
|
213
|
-
isCheckboxDisabled: [{ type: Input }],
|
|
214
|
-
rowClicked: [{ type: HostListener, args: ['click', ['$event'],] }]
|
|
215
|
-
};
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdGFibGUvdGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxNQUFNLE9BQU8seUJBQXlCO0lBQXRDO1FBQ0U7OztXQUdHO1FBQ0ksc0JBQWlCLEdBQW9CLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5FOzs7OztXQUtHO1FBQ0ksa0JBQWEsR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVwRDs7O1dBR0c7UUFDSSxxQkFBZ0IsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUVyQzs7O1dBR0c7UUFDSSxzQkFBaUIsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV4RDs7V0FFRztRQUNJLG9DQUErQixHQUFZLEtBQUssQ0FBQztRQUV4RDs7V0FFRztRQUNJLDJCQUFzQixHQUFhLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0NBQUE7QUFPRCxNQUFNLE9BQU8sMkJBQTJCO0lBTHhDO1FBTUUsd0RBQXdEO1FBR2pELE9BQUUsR0FBVyxFQUFFLENBQUM7UUFPZixzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFPMUM7bUZBQzJFO1FBRXBFLGFBQVEsR0FBVyxDQUFDLENBQUMsQ0FBQztR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SzsrQkFNTCxLQUFLO3lCQUlMLFdBQVcsU0FBQyxtQkFBbUIsY0FDL0IsS0FBSzt1QkFJTCxXQUFXLFNBQUMsaUJBQWlCO2lDQVM3QixLQUFLO3lCQXdFTCxZQUFZLFNBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5leHBvcnQgY2xhc3MgVGFibGVTZWxlY3RhYmxlUm93Q29udGV4dCB7XHJcbiAgLyoqc3BlY2lmeSB0aGUgZm9ybSBjb250cm9sIHRvIHVzZSBmb3IgdGhlIHNlbGVjdEFsbCBjaGVja2JveCBvciBwcm92aWRlIHlvdXIgb3duLlxyXG4gICAqIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdWJzY3JpYmUgdG8gY2hhbmdlcyB0byBjaGFuZ2UgYnV0dG9uIHN0YXRlcyBhcyB0aGUgc2VsZWN0aW9uIGNoYW5nZXNcclxuICAgKiBvciBpZiB5b3Ugd2FudCB0byBhZGQgaXQgdG8gYW4gYWxyZWFkeS1leGlzdGluZyBmb3JtIGdyb3VwXHJcbiAgICovXHJcbiAgcHVibGljIHNlbGVjdEFsbENoZWNrYm94OiBBYnN0cmFjdENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woZmFsc2UpO1xyXG5cclxuICAvKipzcGVjaWZ5IHRoZSBGb3JtQXJyYXkgdG8gdXNlIGZvciB0aGUgZGVwZW5kZW50IGNoZWNrYm94ZXMgb2YgdGhlIHNlbGVjdEFsbCBjaGVja2JveFxyXG4gICAqIFRoZSBkZXBlbmRlbnQgY2hlY2tib3hlcyB3aWxsIGFkZCBhbmQgcmVtb3ZlIHRoZW1zZWx2ZXMgYXV0b21hdGljYWxseSBhbmQgdGhlIHNlbGVjdEFsbFxyXG4gICAqIGJveCB3aWxsIHJlYWN0IGFjY29yZGluZ2x5LiBEbyBub3QgcHJvdmlkZSB5b3VyIG93biBjb250cm9sc1xyXG4gICAqIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdWJzY3JpYmUgdG8gY2hhbmdlcyB0byBjaGFuZ2UgYnV0dG9uIHN0YXRlcyBhcyB0aGUgc2VsZWN0aW9uIGNoYW5nZXNcclxuICAgKiBvciBpZiB5b3Ugd2FudCB0byBhZGQgaXQgdG8gYW4gYWxyZWFkeS1leGlzdGluZyBmb3JtIGdyb3VwXHJcbiAgICovXHJcbiAgcHVibGljIHJvd0NoZWNrYm94ZXM6IEZvcm1BcnJheSA9IG5ldyBGb3JtQXJyYXkoW10pO1xyXG5cclxuICAvKipUaGUgaW5kZXggb2YgdGhlIGxhc3Qgcm93IHRoZSB1c2VyIGNsaWNrZWQuIFRoaXMgYWxsb3dzIG11bHRpcGxlIGRpcmVjdGl2ZXMgb24gYSBzY3JlZW4gdG8gY29vcmRpbmF0ZVxyXG4gICAqIGZvciByZWFjdGluZyB0byBzaGlmdCtjbGljayBhY3Rpb25zIHRoYXQgc2hvdWxkIGF1dG9tYXRpY2FsbHkgc2VsZWN0IG11bHRpcGxlIHJvd3MgYmV0d2VlbiB0aGUgY2xpY2tlZCByb3dzXHJcbiAgICogZGVmYXVsdHMgdG8gLTEgdG8gaW5kaWNhdGUgdGhhdCBubyB1c2VyIGNsaWNrIGhhcyBiZWVuIGNhcHR1cmVkXHJcbiAgICovXHJcbiAgcHVibGljIGxhc3RDbGlja2VkSW5kZXg6IG51bWJlciA9IC0xO1xyXG5cclxuICAvKipBIHN1YmplY3QgdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiBhIHJvdy1iYXNlZCBkaXJlY3RpdmUgaXMgYWRkZWQgb3IgcmVtb3ZlZC4gSXQgYWxsb3dzXHJcbiAgICogdGhlIG1hc3RlciBjaGVja2JveCBpbiB0aGUgaGVhZGVyIHRvIGtub3cgdGhhdCBpdCBuZWVkcyB0byByZXNldCB0cmFja2luZyBpbmZvcm1hdGlvblxyXG4gICAqIHdpdGhvdXQgcmVwbGFjaW5nIHRoZSBhY3R1YWwgRm9ybUFycmF5IHRoYXQgdGhlIGhvc3RpbmcgY29tcG9uZW50IG1heSBiZSBzdWJzY3JpYmVkIHRvIGZvciBjaGFuZ2VzXHJcbiAgICovXHJcbiAgcHVibGljIHJvd0FkZGVkT3JSZW1vdmVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRvIHRydWUgdG8gZGlzYWJsZSBTaGlmdC1DbGljay9DdHJsLUNsaWNrIGZ1bmN0aW9uYWxpdHlcclxuICAgKi9cclxuICBwdWJsaWMgZGlzYWJsZUFkdmFuY2VkUm93Q2xpY2tCZWhhdmlvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgdG8gbGlzdCBvZiBpbmRpY2VzIG9mIGNvbnRyb2xzIHRoYXQgc2hvdWxkIG5vdCB0b2dnbGUgd2hlbiBtYXN0ZXIvaGVhZGVyIGNoZWNrYm94IHRvZ2dsZXNcclxuICAgKi9cclxuICBwdWJsaWMgbm9uRGVwZW5kZW50Q2hlY2tib3hlczogbnVtYmVyW10gPSBbXTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdbZWNUYWJsZVNlbGVjdGFibGVSb3ddJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtc2VsZWN0YWJsZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLXNlbGVjdGFibGUtcm93LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlU2VsZWN0YWJsZVJvd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gIC8qKlRoZSBJRCByb290IHRvIHVzZSBmb3IgdGhlIGNoZWNrYm94IGFuZCB0YWJsZSBjZWxsICovXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpZDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBEaXNhYmxlcyB0aGUgc2VsZWN0aW9uIGZ1bmN0aW9uYWxpdHkgd2hlbiBmYWxzZSAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtZW5hYmxlZCcpXHJcbiAgQElucHV0KCdlY1RhYmxlU2VsZWN0YWJsZVJvdycpXHJcbiAgcHVibGljIHNldCBpc1NlbGVjdGlvbkVuYWJsZWQodmFsdWU6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkKSB7IHRoaXMuX3NlbGVjdGlvbkVuYWJsZWQgPSB2YWx1ZSAhPT0gZmFsc2U7IH1cclxuICBwdWJsaWMgZ2V0IGlzU2VsZWN0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkVuYWJsZWQ7IH1cclxuICBwcml2YXRlIF9zZWxlY3Rpb25FbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqU2hhcmVkIGNvbnRleHQgYmV0d2VlbiBtYXN0ZXIgYW5kIGNoaWxkcmVuLiBDaGlsZCBkaXJlY3RpdmUgYWRkcyBpdHMgb3duIEZvcm1Db250cm9sIHRvIHRoaXNcclxuICBhbmQgcmVtb3ZlcyBpdCBvbkRlc3Ryb3kuIFRoZSBzYW1lIGNvbnRleHQgb2JqZWN0IG11c3QgYmUgdXNlZCBmb3IgYWxsIGRpcmVjdGl2ZXMgaW4gYSBzaW5nbGUgdGFibGUqL1xyXG4gIEBJbnB1dCgnc2VsZWN0aW9uQ29udGV4dCcpXHJcbiAgcHVibGljIGNvbnRleHQhOiBUYWJsZVNlbGVjdGFibGVSb3dDb250ZXh0O1xyXG5cclxuICAvKlJlcXVpcmVkIGZvciBhbGwgcm93cy4gVGhlIHJvdyBpbmRleCB0aGlzIGNvbXBvbmVudCByZXByZXNlbnRzLCB0byBhbGxvdyBpdCB0byBrbm93IGhvdyB0byBoYW5kbGUgc2hpZnQrY2xpY2tzLlxyXG4gICAgRGVmYXVsdHMgdG8gLTEgd2hpY2ggd2lsbCBjYXVzZSB0aGUgZGlyZWN0aXZlIHRvIGJlaGF2ZSBhcyBhIGhlYWRlciByb3cqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJvd0luZGV4OiBudW1iZXIgPSAtMTtcclxuXHJcbiAgLyoqVGhlIG9wdGlvbnMgdXNlZCB0byBsb2NrIHRoZSBjaGVja2JveCBjb2x1bW4gdG8gdGhlIGxlZnQgb2YgdGhlIHRhYmxlLCBtdXN0IGJlIG1vZGlmaWVkIGJ5IGhvc3RcclxuICAgKiBpZiB0aGUgY2hlY2tib3ggaXMgbm90IHRoZSBmaXJzdCBjb2x1bW4gaW4gdGhlIHRhYmxlXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbG9ja2VkQ29sT3B0aW9uczogeyBib3JkZXI6IGJvb2xlYW4sIGxlZnQ/OiBudW1iZXIsIHJpZ2h0PzogbnVtYmVyIH0gPSB7IGJvcmRlcjogZmFsc2UsIGxlZnQ6IDAgfTtcclxuXHJcbiAgLyoqIEF1dG9tYXRpY2FsbHkgc2V0IHRvIHRydWUgYmFzZWQgb24gY2hlY2tib3ggc3RhdGUsIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSByb3cgdG8gbWF0Y2ggb3VyIHRhYmxlIHNlbGVjdGVkIHJvdyBzdHlsZXMgKi9cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXNlbGVjdGVkJylcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc1NlbGVjdGVkID0gZmFsc2U7XHJcblxyXG4gIC8qKiBBdXRvbWF0aWNhbGx5IHNldCB0byB0cnVlIGlmIG5vIHJvd0luZGV4IGlzIHByb3ZpZGVkIG9yIHRoZSByb3cgaW5kZXggaXMgbGVzcyB0aGFuIHplcm8gKi9cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLWhlYWRlcicpXHJcbiAgcHVibGljIGlzSGVhZGVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0byB0cnVlIGlmIHlvdSB3YW50IHRoZSBjaGVja2JveCB0byBiZSBkaXNhYmxlZC5cclxuICAgKlxyXG4gICAqIFdoZW4geW91IHVzZSB0aGlzIHByb3BlcnR5LCBtYWtlIHN1cmUgeW91IHNldCBgZGlzYWJsZUFkdmFuY2VkUm93Q2xpY2tCZWhhdmlvcjogdHJ1ZWBcclxuICAgKiBpbiB0aGUgYFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHRgLCBvciB1bmRlc2lyZWQgc2lkZS1lZmZlY3RzIHdpbGwgb2NjdXIuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXNDaGVja2JveERpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiBBIHJlZmVyZW5jZSB0aGF0IHdlIGNhbiBjaGFuZ2Ugd2hlbiBhIGNvbnRyb2wgaXMgcmVwbGFjZWQgdG8gZm9yY2UgdGhlIG1hc3RlciBjaGVja2JveCByZWZlcmVuY2UgdG8gdXBkYXRlXHJcbiAgICAgd2l0aG91dCBhbHNvIHJlcGxhY2luZyB0aGUgZm9ybSBhcnJheSB0aGF0IHRoZSBob3N0IGNvbXBvbmVudCBtYXkgYmUgd2F0Y2hpbmcgZm9yIHNlbGVjdGVkIHJvdyBjaGFuZ2VzICovXHJcbiAgcHVibGljIGRlcGVuZGVudENoZWNrYm94ZXNSZWZlcmVuY2U6IHsgY29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdIH0gPSB7IGNvbnRyb2xzOiBbXSB9O1xyXG5cclxuICAvKkNhcHR1cmUgdGhlIGZvcm0gY29udHJvbCB0aGlzIGNvbXBvbmVudCBjcmVhdGVzIHRvIGFsbG93IGNsZWFudXAgbGF0ZXIgb24gYW5kIGV4cG9zZSBpdCB0byB0aGUgcm93Ki9cclxuICBwdWJsaWMgZm9ybUNvbnRyb2whOiBBYnN0cmFjdENvbnRyb2w7XHJcblxyXG4gIHB1YmxpYyBjaGVja2JveEF0dHJpYnV0ZUlEOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqU2VuZHMgYW4gZXZlbnQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZCBzbyB0aGF0IGl0IGNhbiB1bnN1YnNjcmliZSBmcm9tIGFueSBvYnNlcnZhYmxlcyAqL1xyXG4gIHByaXZhdGUgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgLyoqVmFsaWRhdGUgYW5kIHBvcHVsYXRlIHRoZSBjb250ZXh0IGFzIHRoZSB0YWJsZSBpcyBkeW5hbWljYWxseSBidWlsdC4gQmVjYXVzZSB0aGUgY29udGV4dCBpcyBzaGFyZWQgYmV0d2VlbiB0aGVcclxuICAgKiBoZWFkZXIgYW5kIGVhY2ggb2YgdGhlIHJvd3MsIGNoYW5nZXMgdG8gaXQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgaXMgaGFwcGVuaW5nIGFuZCBob29rIHVwIHRoZSBjb3JyZWN0XHJcbiAgICogc3Vic2NyaXB0aW9ucyBmb3Igc2VsZWN0QWxsLiBUaGUgdXNlciBjYW4gcHJvdmlkZSBhbiBleGlzdGluZyBmb3JtQXJyYXkgZm9yIHRoZSByb3dzIGFuZCBmb3JtIGNvbnRyb2wgZm9yIHRoZSBoZWFkZXIsXHJcbiAgICogb3IgaXQgY2FuIGp1c3QgYmUgdGhlIGRlZmF1bHQgZW1wdHkgb25lcyBjcmVhdGVkIGJ5IHRoZSBjb250ZXh0IGNsYXNzLlxyXG4gICovXHJcbiAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pc0hlYWRlciA9IHRoaXMucm93SW5kZXggPCAwO1xyXG4gICAgaWYgKCF0aGlzLmNvbnRleHQpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignZWNUYWJsZVNlbGVjdGFibGVSb3cgcmVxdWlyZXMgYSBkZWZpbmVkIFNlbGVjdGFibGVUYWJsZVJvd0NvbnRleHQgdG8gYmUgc2hhcmVkIHdpdGggYWxsIGluc3RhbmNlcyBpbiBvbmUgdGFibGUuJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgcm93Q2hlY2tib3ggPSB0aGlzLmNvbnRleHQ/LnJvd0NoZWNrYm94ZXM/LmF0KHRoaXMucm93SW5kZXgpO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmlzSGVhZGVyICYmICFyb3dDaGVja2JveCkge1xyXG4gICAgICAgIHJvd0NoZWNrYm94ID0gbmV3IEZvcm1Db250cm9sKHRoaXMuaXNTZWxlY3RlZCk7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0Py5yb3dDaGVja2JveGVzLnB1c2gocm93Q2hlY2tib3gpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmZvcm1Db250cm9sID0gdGhpcy5pc0hlYWRlciA/IHRoaXMuY29udGV4dC5zZWxlY3RBbGxDaGVja2JveCA6IHJvd0NoZWNrYm94O1xyXG4gICAgICB0aGlzLndhdGNoRm9yQ2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqV2F0Y2ggZm9yIGNoYW5nZXMgdG8gdGhlIHJvdyBpbmRleCB0aGF0IGNhbiBvY2N1ciBpZiB0aGUgdGFibGUgaXMgcmVvcmRlcmVkIGluLXBsYWNlIGluc3RlYWQgb2ZcclxuICAgKiByZWNyZWF0ZWQgZnJvbSBzY3JhdGNoLiBSZS1jYXB0dXJlIHRoZSBjb3JyZWN0IGZvcm0gY29udHJvbCB0byBrZWVwIGV2ZXJ5dGhpbmcgaW4gc3luY1xyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcy5yb3dJbmRleCAmJiAhdGhpcy5pc0hlYWRlcikge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sID0gdGhpcy5jb250ZXh0LnJvd0NoZWNrYm94ZXMuYXQodGhpcy5yb3dJbmRleCk7XHJcbiAgICAgIHRoaXMuY2hlY2tib3hBdHRyaWJ1dGVJRCA9IGAke3RoaXMuaWR9X3JvdyR7dGhpcy5yb3dJbmRleH1fZWNDaGVja2JveGA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXMuaXNTZWxlY3Rpb25FbmFibGVkICYmICF0aGlzLmlzU2VsZWN0aW9uRW5hYmxlZCAmJiB0aGlzLmZvcm1Db250cm9sPy52YWx1ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlcy5pc1NlbGVjdGVkICYmIHRoaXMuZm9ybUNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmlzU2VsZWN0ZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFRlbGwgdGhlIGhlYWRlciBjaGVja2JveCB0byByZWZyZXNoIHRoZSBzZWxlY3RBbGwgc3Vic2NyaXB0aW9uIGJlY2F1c2UgYSByb3cgd2FzIHJlbW92ZWQqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICghdGhpcy5pc0hlYWRlciAmJiB0aGlzLmZvcm1Db250cm9sKSB7XHJcbiAgICAgIHRoaXMuY29udGV4dC5yb3dBZGRlZE9yUmVtb3ZlZC5uZXh0KCk7XHJcblxyXG4gICAgICAvL2ZpbmQgdGhlIGxvY2F0aW9uIGluIHRoZSBhcnJheSB0aGF0IG1hdGNoZXMgdGhlIGNoZWNrYm94LiBJZiBtYW55IHJvd3MgYXJlIGJlaW5nIHJlbW92ZWQgaXQgbWF5IG5vdCBtYXRjaCByb3dJbmRleCB5ZXRcclxuICAgICAgbGV0IG1hdGNoSW5kZXggPSB0aGlzLmNvbnRleHQucm93Q2hlY2tib3hlcy5jb250cm9scy5maW5kSW5kZXgoYyA9PiBjID09IHRoaXMuZm9ybUNvbnRyb2wpO1xyXG4gICAgICBpZiAobWF0Y2hJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0LnJvd0NoZWNrYm94ZXMucmVtb3ZlQXQobWF0Y2hJbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKkhhbmRsZSB3aGVuIGEgdXNlciBjbGlja3Mgb24gYSB0YWJsZSByb3cgKG9yIHNvbWV0aGluZyBpbnNpZGUgaXQgd2hpY2ggYnViYmxlcyB1cCkgdG8gaW5jcmVhc2UgdGhlIGhpdCBhcmVhIGZvciByb3cgc2VsZWN0aW9uXHJcbiAgICogT25seSB3b3JrIG9uIHRoZSB0YWJsZSBib2R5IChub3QgdGhlIGhlYWRlcikgYmVjYXVzZSB0aGUgaGVhZGVyIG1heSBoYXZlIG90aGVyIGNsaWNrIGhhbmRsZXJzIGZvciBzb3J0IGV0YyB0aGF0IHdlIGRvbid0IGNhcmUgYWJvdXQuXHJcbiAgICogSGFuZGxlIHNoaWZ0IGFuZCBjb250cm9sIHNlbGVjdCBhcyB3ZWxsIGFzIGNoZWNrYm94IGNsaWNrIGxpa2Ugd2luZG93cyBleHBsb3JlciBvciB0aGUgb3JpZ2luYWwgYmlsbCBsaXN0cyBkby5cclxuICAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgcm93Q2xpY2tlZChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmlzSGVhZGVyICYmIHRoaXMuaXNTZWxlY3Rpb25FbmFibGVkICYmICF0aGlzLmlzQ2hlY2tib3hEaXNhYmxlZCkge1xyXG4gICAgICBsZXQgdGFyZ2V0RWwgPSBldmVudD8udGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgICAgLy9jbGlja2luZyBvbiBhIHJvdyBhbHdheXMgdG9nZ2xlcyB0aGF0IHJvdy4gU29tZXRpbWVzIHRoZSBzaGlmdC1zZWxlY3Qgd2lsbCB0b2dnbGUgaXQgYmFja1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKCF0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5jb250ZXh0LmRpc2FibGVBZHZhbmNlZFJvd0NsaWNrQmVoYXZpb3IpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZVNoaWZ0U2VsZWN0KGV2ZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB3YXRjaEZvckNoYW5nZXMoKSB7XHJcbiAgICAvL3dhdGNoIGZvciByb3dzIGJlaW5nIHJlcGxhY2VkIHNvIHRoYXQgdGhlIG1hc3RlciBjaGVja2JveCBhbmQgc2hpZnQtc2VsZWN0IHN1cHBvcnQgY2FuIGJlIHJlc2V0IHRvIG1hdGNoXHJcbiAgICAvL3RoaXMga2VlcHMgdGhlIG1hc3RlciBpbiBzeW5jIGFzIHRoZSB0YWJsZSBjaGFuZ2VzIHBhZ2VzIGV0YyBhbmQgc3RvcHMgdW5leHBlY3RlZCByb3dzIGZyb20gYmVpbmcgc2VsZWN0ZWQgYWZ0ZXIgcmVkcmF3XHJcbiAgICBpZiAodGhpcy5pc0hlYWRlcikge1xyXG4gICAgICB0aGlzLmNvbnRleHQucm93QWRkZWRPclJlbW92ZWQucGlwZShkZWJvdW5jZVRpbWUoMTApLCB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29udGV4dC5sYXN0Q2xpY2tlZEluZGV4ID0gLTE7XHJcblxyXG4gICAgICAgIC8vIGV4Y2x1ZGUgbm9uRGVwZW5kZW50Q2hlY2tib3hlcyAoc29tZSBtYXkgbm90IGJlIGFsbG93ZWQgdG8gYmUgZGVzZWxlY3RlZClcclxuICAgICAgICBsZXQgZGVwZW5kZW50Q2hlY2tib3hlczogQWJzdHJhY3RDb250cm9sW10gPSBbXTtcclxuICAgICAgICB0aGlzLmNvbnRleHQucm93Q2hlY2tib3hlcy5jb250cm9scy5mb3JFYWNoKChjb250cm9sLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbnRleHQubm9uRGVwZW5kZW50Q2hlY2tib3hlcy5pbmNsdWRlcyhpbmRleCkpIHtcclxuICAgICAgICAgICAgZGVwZW5kZW50Q2hlY2tib3hlcy5wdXNoKGNvbnRyb2wpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRlcGVuZGVudENoZWNrYm94ZXNSZWZlcmVuY2UgPSB7IGNvbnRyb2xzOiBkZXBlbmRlbnRDaGVja2JveGVzIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb250ZXh0LnJvd0FkZGVkT3JSZW1vdmVkLm5leHQoKTtcclxuXHJcbiAgICAgIC8vd2F0Y2ggZm9yIHRoZSBjaGVja2JveCBzdGF0ZSB0byBjaGFuZ2Ugb24gYSBjaGlsZCByb3cgYW5kIHNldCB0aGUgcm93IGlzU2VsZWN0ZWQgY2xhc3MgLyBoaWdobGlnaHQgdG8gbWF0Y2hcclxuICAgICAgLy90aGlzIHdheSB0aGUgcm93cyBtYXRjaCBldmVuIGlmIGV4dGVybmFsIGNvZGUgdXBkYXRlcyB0aGUgZm9ybSBtb2RlbFxyXG4gICAgICB0aGlzLmZvcm1Db250cm9sPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKHZhbHVlOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkID0gdmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAgKiBJZiB0aGV5IGFyZSBob2xkaW5nIHRoZSBzaGlmdCBrZXksIHRyeSB0byBzZWxlY3QgYWxsIHRoZSBjaGVja2JveGVzIGJldHdlZW4gdGhlaXIgbGFzdCBzZWxlY3Rpb25cclxuICAgICogYW5kIG1vc3QgcmVjZW50IHNlbGVjdGlvbi4gVGhlIGxvZ2ljIGlzIHNldHVwIHRvIGJlaGF2ZSB0aGUgd2F5IHdpbmRvd3MgZXhwbG9yZXIgYmVoYXZlc1xyXG4gICAgKiBXZSBkb24ndCBhbGxvdyBkcmFnLXRvLXNlbGVjdCBsaWtlIHRoZSBrZW5kbyB0YWJsZXMsIGJ1dCBpdCBtZWFucyB1c2VycyBjYW4gaGlnaGxpZ2h0IHRleHQgYW5kIGNvcHkrcGFzdGUgdG8gZXhjZWwgZXRjXHJcbiAgICAqIHNvIEkgdGhpbmsgdGhpcyBpcyBhY3R1YWxseSBwcmVmZXJhYmxlXHJcbiAgICAqL1xyXG4gIHByaXZhdGUgaGFuZGxlU2hpZnRTZWxlY3QoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGxldCBsYXN0SW5kZXggPSB0aGlzLmNvbnRleHQubGFzdENsaWNrZWRJbmRleDtcclxuICAgIGxldCBjdXJJbmRleCA9IHRoaXMucm93SW5kZXg7XHJcbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgbGFzdEluZGV4ID49IDApIHtcclxuICAgICAgdGhpcy5jbGVhckFsbFJvd3MoKTtcclxuICAgICAgaWYgKGN1ckluZGV4ID4gbGFzdEluZGV4KSB7XHJcbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSBsYXN0SW5kZXg7IGluZGV4IDw9IGN1ckluZGV4OyBpbmRleCsrKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnRleHQucm93Q2hlY2tib3hlcy5hdChpbmRleCkuc2V0VmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGN1ckluZGV4IDwgbGFzdEluZGV4KSB7XHJcbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSBsYXN0SW5kZXg7IGluZGV4ID49IGN1ckluZGV4OyBpbmRleC0tKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnRleHQucm93Q2hlY2tib3hlcy5hdChpbmRleCkuc2V0VmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGN1ckluZGV4ID09PSBsYXN0SW5kZXgpIHtcclxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRydWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKT8ucmVtb3ZlQWxsUmFuZ2VzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvL3JlY29yZCB0aGUgY3VycmVudCByb3cgaW5kZXggZm9yIGZ1dHVyZSByb3cgY2xpY2tzIHRvIGtub3cgd2hlcmUgdGhleSBsYXN0IGludGVyYWN0ZWRcclxuICAgICAgLy9idXQgb25seSBpZiB0aGV5IGRvbid0IGhhdmUgc2hpZnQgZG93biBmb3IgdGhpcyBjbGljay4gSWYgc2hpZnQgaXMgZG93biB0aGVuIHRoZSBuZXh0IHNoaWZ0K2NsaWNrXHJcbiAgICAgIC8vc2hvdWxkIGJlIGNvbnNpZGVyZWQgYW4gZXh0ZW5zaW9uIChvciBjb250cmFjdGlvbikgb2YgdGhlIG9yaWdpbmFsIG11bHRpLXJvdyBzZWxlY3Rpb25cclxuICAgICAgdGhpcy5jb250ZXh0Lmxhc3RDbGlja2VkSW5kZXggPSB0aGlzLnJvd0luZGV4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckFsbFJvd3MoKSB7XHJcbiAgICB0aGlzLmNvbnRleHQucm93Q2hlY2tib3hlcy5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4gY29udHJvbC5zZXRWYWx1ZShmYWxzZSkpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
import { Component, ContentChildren, ElementRef, EventEmitter, HostBinding, Input, Output, QueryList, Renderer2, TemplateRef, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { isEqual } from 'lodash';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import { takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { ResizableColumnComponent } from './resizable-column.component';
|
|
6
|
-
import { TableMasterRowComponent } from './table-master-row.component';
|
|
7
|
-
import { TableSelectableRowContext } from './table-selectable-row.component';
|
|
8
|
-
export class TableComponent {
|
|
9
|
-
constructor(renderer, el) {
|
|
10
|
-
this.renderer = renderer;
|
|
11
|
-
this.el = el;
|
|
12
|
-
this.id = '';
|
|
13
|
-
/**
|
|
14
|
-
* Enables table scrolling with a sticky header and footer. Use
|
|
15
|
-
* <thead> and <tfoot> elements for styles to be applied correctly.
|
|
16
|
-
*/
|
|
17
|
-
this.scrollable = false;
|
|
18
|
-
/**
|
|
19
|
-
* Enables resizable table columns. Apply the 'is-resizable' class
|
|
20
|
-
* to the <th> of a table column than can be resized.
|
|
21
|
-
*/
|
|
22
|
-
this.resizable = false;
|
|
23
|
-
/**
|
|
24
|
-
* Turns on condensed table styling. By default a condensed table
|
|
25
|
-
* has no row borders. To show borders, apply the 'has-borders' class
|
|
26
|
-
* to the <ec-table> element
|
|
27
|
-
*/
|
|
28
|
-
this.condensed = false;
|
|
29
|
-
/**
|
|
30
|
-
* Enables sorting by clicking on table columns. To make a column sortable
|
|
31
|
-
* apply the `data-sortable` attribute to the columns `<th>` element with
|
|
32
|
-
* the value of the field used to sort the column. When a column is clicked
|
|
33
|
-
* the fields and current sort direction is emitted from the `sortChange`
|
|
34
|
-
* output
|
|
35
|
-
*
|
|
36
|
-
* @example
|
|
37
|
-
* ```html
|
|
38
|
-
* <ec-table [sortable]="true" [sort]="currentSort" (sortChange)="onSort($event)">
|
|
39
|
-
* <thead>
|
|
40
|
-
* <th data-sortable="name">Name</th>
|
|
41
|
-
* <th data-sortable="qty">Qty.</th>
|
|
42
|
-
* <th data-sortable="price">Price</th>
|
|
43
|
-
* </thead>
|
|
44
|
-
* ...
|
|
45
|
-
* </ec-table>
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
this.sortable = false;
|
|
49
|
-
/** Set to true if selectionContext is defined */
|
|
50
|
-
this.selectable = false;
|
|
51
|
-
/** Hides/shows the selection toolbar template when 1 or more rows is selected */
|
|
52
|
-
this.hasSelection = false;
|
|
53
|
-
/**
|
|
54
|
-
* Enables form table styling to allow form controls inside table cells.
|
|
55
|
-
*/
|
|
56
|
-
this.isForm = false;
|
|
57
|
-
/**
|
|
58
|
-
* Emits the new sort value whenever a sortable column is clicked
|
|
59
|
-
*/
|
|
60
|
-
this.sortChange = new EventEmitter();
|
|
61
|
-
/**
|
|
62
|
-
* True if a TableMasterRowComponent exists in the table content
|
|
63
|
-
*/
|
|
64
|
-
this.hasMasterDetailRows = false;
|
|
65
|
-
/**
|
|
66
|
-
* Unlisten function returned by `renderer.listen()` that are called
|
|
67
|
-
* OnDestroy to clean up all listeners
|
|
68
|
-
*/
|
|
69
|
-
this.unlisteners = [];
|
|
70
|
-
/** A map of sortable `<th>` elements */
|
|
71
|
-
this.sortableCols = {};
|
|
72
|
-
this.destroyed = new Subject();
|
|
73
|
-
}
|
|
74
|
-
ngOnChanges(changes) {
|
|
75
|
-
if (this.sortable && changes.sort && changes.sort.currentValue && !changes.sort.firstChange) {
|
|
76
|
-
const newValue = changes.sort.currentValue;
|
|
77
|
-
if (!this.currentSort || !isEqual(newValue, this.currentSort)) {
|
|
78
|
-
this.onSort(newValue.field, newValue.direction);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
ngAfterContentInit() {
|
|
83
|
-
this.hasMasterDetailRows = !!this.masterRows.length;
|
|
84
|
-
this.masterRows.changes.pipe(takeUntil(this.destroyed)).subscribe(() => {
|
|
85
|
-
this.hasMasterDetailRows = !!this.masterRows.length;
|
|
86
|
-
});
|
|
87
|
-
this.resizableColumns = this.searchableTableResizableColumns || this._resizableColumns;
|
|
88
|
-
}
|
|
89
|
-
ngAfterViewInit() {
|
|
90
|
-
if (this.sortable) {
|
|
91
|
-
this.initSortable();
|
|
92
|
-
}
|
|
93
|
-
if (this.selectable) {
|
|
94
|
-
this.initSelectable();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
ngOnDestroy() {
|
|
98
|
-
if (this.unlisteners.length) {
|
|
99
|
-
this.unlisteners.forEach(unlisten => unlisten());
|
|
100
|
-
}
|
|
101
|
-
this.destroyed.next();
|
|
102
|
-
this.destroyed.unsubscribe();
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Get all elements inside the host element that match a selector
|
|
106
|
-
* @param selector - Any valid selector for [querySelectorAll](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll)
|
|
107
|
-
*/
|
|
108
|
-
queryElements(selector) {
|
|
109
|
-
const table = this.el.nativeElement;
|
|
110
|
-
return Array.from(table.querySelectorAll(selector));
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Store a `<th>` for each sortable column and attach a click
|
|
114
|
-
* event listener.
|
|
115
|
-
*/
|
|
116
|
-
initSortable() {
|
|
117
|
-
this.queryElements('th').forEach(th => {
|
|
118
|
-
if (th.hasAttribute('data-sortfield')) {
|
|
119
|
-
const field = th.getAttribute('data-sortfield');
|
|
120
|
-
if (field) {
|
|
121
|
-
this.sortableCols[field] = th;
|
|
122
|
-
const unlisten = this.renderer.listen(th, 'click', (event) => {
|
|
123
|
-
// Do not sort if the event target was the resizable handle
|
|
124
|
-
if (th.classList.contains('is-resizable') && event.target && event.target.classList.contains('handle')) {
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
this.onSort(field);
|
|
128
|
-
});
|
|
129
|
-
// Store unlisten function to remove listener when component is destroyed
|
|
130
|
-
this.unlisteners.push(unlisten);
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
console.error(`data-sortfield attribute was not assigned a value.`, th);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
});
|
|
137
|
-
// Set the initial sort
|
|
138
|
-
if (this.sort) {
|
|
139
|
-
this.onSort(this.sort.field, this.sort.direction);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Find the sorted column and apply the desc or asc class in order
|
|
144
|
-
* to show the correct sort icon. If another field was sorted, reset it.
|
|
145
|
-
* Emit the current field and direction of the sorted column
|
|
146
|
-
* @param field
|
|
147
|
-
*/
|
|
148
|
-
onSort(field, direction) {
|
|
149
|
-
const th = this.sortableCols[field];
|
|
150
|
-
if (!th) {
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
if (this.currentSort && this.currentSort.field !== field) {
|
|
154
|
-
this.renderer.removeClass(this.sortableCols[this.currentSort.field], `is-sorted-${this.currentSort.direction}`);
|
|
155
|
-
}
|
|
156
|
-
if (th.classList.contains('is-sorted-desc')) {
|
|
157
|
-
this.renderer.removeClass(th, 'is-sorted-desc');
|
|
158
|
-
if (!direction) {
|
|
159
|
-
direction = 'asc';
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
if (th.classList.contains('is-sorted-asc')) {
|
|
164
|
-
this.renderer.removeClass(th, 'is-sorted-asc');
|
|
165
|
-
}
|
|
166
|
-
if (!direction) {
|
|
167
|
-
direction = 'desc';
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
this.renderer.addClass(th, `is-sorted-${direction}`);
|
|
171
|
-
const sortEvent = { field: field, direction: direction };
|
|
172
|
-
this.currentSort = sortEvent;
|
|
173
|
-
this.sortChange.emit(sortEvent);
|
|
174
|
-
}
|
|
175
|
-
initSelectable() {
|
|
176
|
-
this.selectionContext.rowCheckboxes.valueChanges.pipe(takeUntil(this.destroyed)).subscribe((value) => {
|
|
177
|
-
this.hasSelection = value.some(v => v);
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
TableComponent.decorators = [
|
|
182
|
-
{ type: Component, args: [{
|
|
183
|
-
selector: 'ec-table',
|
|
184
|
-
template: "<div class=\"selectable-table-toolbar\"\r\n *ngIf=\"hasSelection && selectionToolbarTemplate\">\r\n <ng-container *ngTemplateOutlet=\"selectionToolbarTemplate\"></ng-container>\r\n</div>\r\n<div id=\"{{id}}-scroll-container\" \r\n class=\"table-scroll-container\">\r\n <table class=\"main-table\"\r\n id=\"{{id}}\"\r\n [ecResizableTable]=\"resizable\"\r\n [containerEl]=\"el\"\r\n [sortableTable]=\"sortable\"\r\n [resizableColumns]=\"resizableColumns\">\r\n <ng-content></ng-content>\r\n </table>\r\n</div>",
|
|
185
|
-
encapsulation: ViewEncapsulation.None,
|
|
186
|
-
styles: ["@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:root{--ec-color-icon:rgba(26,26,35,0.66);--ec-font-size-icon:1rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}ec-table{display:flex;min-height:0;position:relative}ec-table .table-scroll-container{flex:1 1;min-height:0;overflow-y:auto}ec-table .main-table{border-collapse:separate;border-spacing:0;font-size:var(--ec-font-size-label);width:100%}ec-table .main-table th{border-bottom:1px solid var(--ec-border-color-dark);color:var(--ec-color-secondary-dark);font-weight:400;height:2rem;line-height:1rem;overflow:hidden;padding:.5rem;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}ec-table .main-table th:first-child{padding-left:1rem}ec-table .main-table th:last-child{padding-right:1rem}ec-table .main-table td{border-top:1px solid var(--ec-border-color);height:2rem;line-height:1rem;overflow:hidden;padding:.5rem;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}ec-table .main-table td:first-child{padding-left:1rem}ec-table .main-table td:last-child{padding-right:1rem}ec-table .main-table tbody>tr:first-child td{border-top:0}ec-table .main-table tbody>tr.is-error td{background-color:var(--ec-background-color-danger)}ec-table .main-table tbody>tr.is-success td{background-color:var(--ec-background-color-success)}ec-table .main-table tfoot td{font-weight:700}ec-table .main-table tbody>tr.is-selected,ec-table .main-table tbody>tr.is-selected>td{background-color:var(--ec-background-color-selected)}ec-table .main-table tr.is-heading td{border-top:0;color:var(--ec-color-secondary-dark);font-size:var(--ec-font-size-label);font-weight:var(--ec-font-weight-bold);line-height:1.333333333;padding-bottom:0;text-transform:uppercase;vertical-align:bottom}ec-table .main-table tr.is-heading+tr td{border-top:0}ec-table .main-table td.actions-col,ec-table .main-table th.actions-col{padding:0}ec-table .main-table td.actions-1,ec-table .main-table th.actions-1{width:2.0625rem}ec-table .main-table td.actions-2,ec-table .main-table th.actions-2{width:4.0625rem}ec-table .main-table td.actions-3,ec-table .main-table th.actions-3{width:6.0625rem}ec-table .main-table td.actions-4,ec-table .main-table th.actions-4{width:8.0625rem}ec-table .main-table td.actions-5,ec-table .main-table th.actions-5{width:10.0625rem}ec-table.is-condensed td,ec-table.is-condensed th{height:1.5rem;padding-bottom:.25rem;padding-top:.25rem}ec-table.is-condensed:not(.has-borders)>table td{border-bottom-width:0;border-top-width:0}ec-table .selectable-table-toolbar{align-items:center;background-color:var(--ec-background-color);border-bottom:1px solid var(--ec-border-color-dark);display:flex;height:3rem;left:calc(var(--selection-toolbar-left, 0rem) + 1.5625rem);padding:0 .5rem;position:absolute;right:0;top:0;z-index:4}ec-table.is-scrollable>.table-scroll-container>table{position:relative}ec-table.is-scrollable>.table-scroll-container>table>thead th{background-color:var(--ec-background-color);position:sticky!important;top:0;z-index:1}ec-table.is-scrollable>.table-scroll-container>table>tfoot td{background-color:var(--ec-background-color);bottom:0;position:sticky!important;z-index:1}ec-table.is-scrollable.bg-body>.table-scroll-container>table>tfoot td,ec-table.is-scrollable.bg-body>.table-scroll-container>table>thead th{background-color:var(--ec-background-color-body)}ec-table.is-sortable th[data-sortfield]{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}ec-table.is-sortable th[data-sortfield].is-resizable .content-wrapper{cursor:pointer;display:flex}ec-table.is-sortable th[data-sortfield].is-resizable .content{flex:0 1 auto}ec-table.is-sortable th[data-sortfield].is-resizable .content-wrapper:after{background-position:50%;background-repeat:no-repeat;content:\"\";display:none;flex:none;height:.875rem;margin:0 .25rem;vertical-align:top;width:.875rem}ec-table.is-sortable th[data-sortfield].is-resizable.is-sorted-asc .content-wrapper:after,ec-table.is-sortable th[data-sortfield].is-resizable.is-sorted-desc .content-wrapper:after{background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M14 8.828V27a2 2 0 1 0 4 0V8.828l4.586 4.586a2 2 0 0 0 2.828-2.828l-8-8a2 2 0 0 0-2.828 0l-8 8a2 2 0 0 0 2.828 2.828L14 8.828z\"/></svg>');display:inline-block}ec-table.is-sortable th[data-sortfield].is-resizable.is-sorted-desc .content-wrapper:after{transform:scaleY(-1)}ec-table.is-sortable th[data-sortfield].is-resizable.text-right .content-wrapper{flex-direction:row-reverse}ec-table.is-sortable th[data-sortfield]:not(.is-resizable){cursor:pointer}ec-table.is-sortable th[data-sortfield]:not(.is-resizable):after{background-position:50%;background-repeat:no-repeat;content:\"\";display:none;height:.875rem;margin:0 .25rem;vertical-align:top;width:.875rem}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).is-sorted-asc:after,ec-table.is-sortable th[data-sortfield]:not(.is-resizable).is-sorted-desc:after{background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M14 8.828V27a2 2 0 1 0 4 0V8.828l4.586 4.586a2 2 0 0 0 2.828-2.828l-8-8a2 2 0 0 0-2.828 0l-8 8a2 2 0 0 0 2.828 2.828L14 8.828z\"/></svg>');display:inline-block}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).is-sorted-desc:after{transform:scaleY(-1)}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right:after{content:\"\";display:none!important}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right:before{background-position:50%;background-repeat:no-repeat;content:\"\";display:none;height:.875rem;margin:0 .25rem;vertical-align:top;width:.875rem}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right.is-sorted-asc:before,ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right.is-sorted-desc:before{background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M14 8.828V27a2 2 0 1 0 4 0V8.828l4.586 4.586a2 2 0 0 0 2.828-2.828l-8-8a2 2 0 0 0-2.828 0l-8 8a2 2 0 0 0 2.828 2.828L14 8.828z\"/></svg>');display:inline-block}ec-table.is-sortable th[data-sortfield]:not(.is-resizable).text-right.is-sorted-desc:before{transform:scaleY(-1)}ec-table.is-resizable .main-table{table-layout:fixed;width:100%}ec-table.is-resizable th.is-resizable{overflow:visible;position:relative;z-index:1}ec-table.is-resizable th.is-resizable.is-active{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}ec-table.is-resizable th.is-resizable.is-active .handle:after{background-color:var(--ec-color-interactive)}ec-table.is-resizable th.is-resizable .handle{height:100%;padding:.5rem 0 .5rem 10px;position:absolute;right:-7px;right:0;top:0;width:13px;z-index:var(--ec-z-index-splitter)}ec-table.is-resizable th.is-resizable .handle:after{content:\"\";display:block;height:100%;position:relative;transition:background-color .3s ease}ec-table.is-resizable th.is-resizable .handle:hover{cursor:col-resize}ec-table.is-resizable th.is-resizable .handle:hover:after{background-color:var(--ec-color-interactive)}ec-table.is-resizable th.is-resizable .handle:before{background-color:var(--ec-border-color-legacy);bottom:.5rem;content:\"\";display:block;position:absolute;right:0;top:.5rem;width:1px}ec-table.is-resizable th.is-resizable .content{overflow:hidden;text-overflow:clip;white-space:nowrap}ec-table.is-resizable th.is-resizable:last-child .handle:before{display:none}ec-table.is-resizable td,ec-table.is-resizable th{overflow:hidden;text-overflow:clip;white-space:nowrap}ec-table.is-selectable .main-table thead th{height:3rem}ec-table.is-selectable .main-table tbody>tr:hover>td{background-color:var(--ec-background-color-hover);border-color:transparent;cursor:pointer}ec-table.is-selectable .main-table tbody>tr:hover.is-selected{background-color:var(--ec-background-color-selected)}ec-table.is-selectable .main-table tbody>tr:hover+tr>td{border-color:var(--ec-background-color-hover)}ec-table.is-selectable th.is-resizable .handle{padding-bottom:1rem;padding-top:1rem}ec-table.is-selectable th.is-resizable .handle:before{bottom:1rem;top:1rem}ec-table.is-master-detail>table{table-layout:fixed}ec-table.is-form-table td{border-top:0;font-size:var(--ec-font-size-body);height:2.5rem;line-height:2rem;padding-bottom:.25rem;padding-top:.25rem}ec-table.is-form-table tr:first-child td{height:2.75rem;padding-top:.5rem}ec-table.is-form-table tr:last-child td{height:2.75rem;padding-bottom:.5rem}ec-table.is-fixed .main-table{table-layout:fixed}"]
|
|
187
|
-
},] }
|
|
188
|
-
];
|
|
189
|
-
TableComponent.ctorParameters = () => [
|
|
190
|
-
{ type: Renderer2 },
|
|
191
|
-
{ type: ElementRef }
|
|
192
|
-
];
|
|
193
|
-
TableComponent.propDecorators = {
|
|
194
|
-
id: [{ type: HostBinding, args: ['attr.id',] }, { type: Input }],
|
|
195
|
-
scrollable: [{ type: HostBinding, args: ['class.is-scrollable',] }, { type: Input }],
|
|
196
|
-
resizable: [{ type: HostBinding, args: ['class.is-resizable',] }, { type: Input }],
|
|
197
|
-
condensed: [{ type: HostBinding, args: ['class.is-condensed',] }, { type: Input }],
|
|
198
|
-
sortable: [{ type: HostBinding, args: ['class.is-sortable',] }, { type: Input }],
|
|
199
|
-
selectionContext: [{ type: Input }],
|
|
200
|
-
selectionToolbarTemplate: [{ type: Input }],
|
|
201
|
-
selectable: [{ type: HostBinding, args: ['class.is-selectable',] }, { type: Input }],
|
|
202
|
-
isForm: [{ type: HostBinding, args: ['class.is-form-table',] }, { type: Input }],
|
|
203
|
-
sort: [{ type: Input }],
|
|
204
|
-
sortChange: [{ type: Output }],
|
|
205
|
-
hasMasterDetailRows: [{ type: HostBinding, args: ['class.is-master-detail',] }],
|
|
206
|
-
masterRows: [{ type: ContentChildren, args: [TableMasterRowComponent, { descendants: true },] }],
|
|
207
|
-
_resizableColumns: [{ type: ContentChildren, args: [ResizableColumnComponent, { descendants: true },] }],
|
|
208
|
-
searchableTableResizableColumns: [{ type: Input, args: ['resizableColumns',] }]
|
|
209
|
-
};
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQXdCLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFpQixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN08sT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQWM3RSxNQUFNLE9BQU8sY0FBYztJQTRHekIsWUFBb0IsUUFBbUIsRUFBUyxFQUFjO1FBQTFDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBMUdyRCxPQUFFLEdBQUcsRUFBRSxDQUFDO1FBRWpCOzs7V0FHRztRQUVNLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFNUI7OztXQUdHO1FBRU0sY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUzQjs7OztXQUlHO1FBRU0sY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBa0JHO1FBRU0sYUFBUSxHQUFHLEtBQUssQ0FBQztRQWExQixpREFBaUQ7UUFFeEMsZUFBVSxH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LENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQXBQRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLDZqQkFBcUM7Z0JBRXJDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOzthQUN0Qzs7O1lBbkI0SixTQUFTO1lBQWhHLFVBQVU7OztpQkFxQjdFLFdBQVcsU0FBQyxTQUFTLGNBQ3JCLEtBQUs7eUJBTUwsV0FBVyxTQUFDLHFCQUFxQixjQUNqQyxLQUFLO3dCQU1MLFdBQVcsU0FBQyxvQkFBb0IsY0FDaEMsS0FBSzt3QkFPTCxXQUFXLFNBQUMsb0JBQW9CLGNBQ2hDLEtBQUs7dUJBcUJMLFdBQVcsU0FBQyxtQkFBbUIsY0FDL0IsS0FBSzsrQkFRTCxLQUFLO3VDQUdMLEtBQUs7eUJBR0wsV0FBVyxTQUFDLHFCQUFxQixjQUNqQyxLQUFLO3FCQVFMLFdBQVcsU0FBQyxxQkFBcUIsY0FDakMsS0FBSzttQkFLTCxLQUFLO3lCQUtMLE1BQU07a0NBS04sV0FBVyxTQUFDLHdCQUF3Qjt5QkFFcEMsZUFBZSxTQUFDLHVCQUF1QixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztnQ0FHNUQsZUFBZSxTQUFDLHdCQUF3QixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQzs4Q0FFN0QsS0FBSyxTQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE91dHB1dCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vcmVzaXphYmxlLWNvbHVtbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZU1hc3RlclJvd0NvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtbWFzdGVyLXJvdy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZVNlbGVjdGFibGVSb3dDb250ZXh0IH0gZnJvbSAnLi90YWJsZS1zZWxlY3RhYmxlLXJvdy5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IHR5cGUgVGFibGVTb3J0RGlyZWN0aW9uID0gJ2Rlc2MnIHwgJ2FzYyc7XHJcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTb3J0IHtcclxuICBmaWVsZDogc3RyaW5nO1xyXG4gIGRpcmVjdGlvbjogVGFibGVTb3J0RGlyZWN0aW9uO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdHtcclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxyXG4gIEBJbnB1dCgpIGlkID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuYWJsZXMgdGFibGUgc2Nyb2xsaW5nIHdpdGggYSBzdGlja3kgaGVhZGVyIGFuZCBmb290ZXIuIFVzZVxyXG4gICAqIDx0aGVhZD4gYW5kIDx0Zm9vdD4gZWxlbWVudHMgZm9yIHN0eWxlcyB0byBiZSBhcHBsaWVkIGNvcnJlY3RseS4gXHJcbiAgICovXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1zY3JvbGxhYmxlJylcclxuICBASW5wdXQoKSBzY3JvbGxhYmxlID0gZmFsc2U7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlcyByZXNpemFibGUgdGFibGUgY29sdW1ucy4gQXBwbHkgdGhlICdpcy1yZXNpemFibGUnIGNsYXNzXHJcbiAgICogdG8gdGhlIDx0aD4gb2YgYSB0YWJsZSBjb2x1bW4gdGhhbiBjYW4gYmUgcmVzaXplZC5cclxuICAgKi9cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXJlc2l6YWJsZScpXHJcbiAgQElucHV0KCkgcmVzaXphYmxlID0gZmFsc2U7XHJcbiAgXHJcbiAgLyoqIFxyXG4gICAqIFR1cm5zIG9uIGNvbmRlbnNlZCB0YWJsZSBzdHlsaW5nLiBCeSBkZWZhdWx0IGEgY29uZGVuc2VkIHRhYmxlXHJcbiAgICogaGFzIG5vIHJvdyBib3JkZXJzLiBUbyBzaG93IGJvcmRlcnMsIGFwcGx5IHRoZSAnaGFzLWJvcmRlcnMnIGNsYXNzXHJcbiAgICogdG8gdGhlIDxlYy10YWJsZT4gZWxlbWVudFxyXG4gICAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtY29uZGVuc2VkJylcclxuICBASW5wdXQoKSBjb25kZW5zZWQgPSBmYWxzZTtcclxuICBcclxuICAvKiogXHJcbiAgICogRW5hYmxlcyBzb3J0aW5nIGJ5IGNsaWNraW5nIG9uIHRhYmxlIGNvbHVtbnMuIFRvIG1ha2UgYSBjb2x1bW4gc29ydGFibGVcclxuICAgKiBhcHBseSB0aGUgYGRhdGEtc29ydGFibGVgIGF0dHJpYnV0ZSB0byB0aGUgY29sdW1ucyBgPHRoPmAgZWxlbWVudCB3aXRoIFxyXG4gICAqIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgdXNlZCB0byBzb3J0IHRoZSBjb2x1bW4uIFdoZW4gYSBjb2x1bW4gaXMgY2xpY2tlZFxyXG4gICAqIHRoZSBmaWVsZHMgYW5kIGN1cnJlbnQgc29ydCBkaXJlY3Rpb24gaXMgZW1pdHRlZCBmcm9tIHRoZSBgc29ydENoYW5nZWBcclxuICAgKiBvdXRwdXRcclxuICAgKiBcclxuICAgKiBAZXhhbXBsZVxyXG4gICAqIGBgYGh0bWxcclxuICAgKiA8ZWMtdGFibGUgW3NvcnRhYmxlXT1cInRydWVcIiBbc29ydF09XCJjdXJyZW50U29ydFwiIChzb3J0Q2hhbmdlKT1cIm9uU29ydCgkZXZlbnQpXCI+XHJcbiAgICogIDx0aGVhZD5cclxuICAgKiAgICA8dGggZGF0YS1zb3J0YWJsZT1cIm5hbWVcIj5OYW1lPC90aD5cclxuICAgKiAgICA8dGggZGF0YS1zb3J0YWJsZT1cInF0eVwiPlF0eS48L3RoPlxyXG4gICAqICAgIDx0aCBkYXRhLXNvcnRhYmxlPVwicHJpY2VcIj5QcmljZTwvdGg+XHJcbiAgICogIDwvdGhlYWQ+XHJcbiAgICogIC4uLlxyXG4gICAqIDwvZWMtdGFibGU+XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1zb3J0YWJsZScpXHJcbiAgQElucHV0KCkgc29ydGFibGUgPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBTaGFyZWQgY29udGV4dCBvZiBUYWJsZVNlbGVjdGFibGVSb3dDb21wb25lbnRzIGluIHRoZSB0YWJsZS4gV2lsbCB0dXJuIG9uIGhpZ2hsaWdodGluZyBvbiByb3cgaG92ZXIuXHJcbiAgICogQWRkIHRoZSBgVGFibGVTZWxlY3RhYmxlUm93Q29tcG9uZW50YCB0byB0aGUgdGFibGUgY29udGVudCB0byBhZGQgY2hlY2tib3hlcyB0byBlYWNoIHJvdyBhbmQgYXNzaWduIGEgXHJcbiAgICogVGVtcGxhdGVSZWYgdG8gdGhlIGBbc2VsZWN0aW9uVG9vbGJhclRlbXBsYXRlXWAgaW5wdXQgdGhhdCBpbmNsdWRlcyBhY3Rpb25zIHRvIHRha2Ugb24gc2VsZWN0ZWQgaXRlbXMgXHJcbiAgICogdGhhdCB3aWxsIGFwcGVhciBvdmVyIHRoZSB0YWJsZSBoZWFkZXIgd2hlbiAxIG9yIG1vcmUgcm93cyBhcmUgc2VsZWN0ZWQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2VsZWN0aW9uQ29udGV4dD86IFRhYmxlU2VsZWN0YWJsZVJvd0NvbnRleHQ7XHJcblxyXG4gIC8qKiBJbmNsdWRlIGFjdGlvbnMgdG8gZGlzcGxheSBpbiBhIGJhciBvdmVyIHRoZSB0YWJsZSBoZWFkZXIgd2hlbiAxIG9yIG1vcmUgcm93cyBhcmUgc2VsZWN0ZWQuIFJlcXVpcmVzIGBbc2VsZWN0aW9uQ29udGV4dF1gIHRvIGJlIGRlZmluZWQgKi9cclxuICBASW5wdXQoKSBzZWxlY3Rpb25Ub29sYmFyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIFxyXG4gIC8qKiBTZXQgdG8gdHJ1ZSBpZiBzZWxlY3Rpb25Db250ZXh0IGlzIGRlZmluZWQgKi9cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXNlbGVjdGFibGUnKVxyXG4gIEBJbnB1dCgpIHNlbGVjdGFibGUgPSBmYWxzZTtcclxuXHJcbiAgLyoqIEhpZGVzL3Nob3dzIHRoZSBzZWxlY3Rpb24gdG9vbGJhciB0ZW1wbGF0ZSB3aGVuIDEgb3IgbW9yZSByb3dzIGlzIHNlbGVjdGVkICovXHJcbiAgaGFzU2VsZWN0aW9uID0gZmFsc2VcclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlcyBmb3JtIHRhYmxlIHN0eWxpbmcgdG8gYWxsb3cgZm9ybSBjb250cm9scyBpbnNpZGUgdGFibGUgY2VsbHMuXHJcbiAgICovXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1mb3JtLXRhYmxlJylcclxuICBASW5wdXQoKSBpc0Zvcm0gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBUaGUgY3VycmVudCBzb3J0IGZpZWxkIGFuZCBkaXJlY3Rpb24gKCdkZXNjJyBvciAnYXNjJylcclxuICAgKi9cclxuICBASW5wdXQoKSBzb3J0PzogVGFibGVTb3J0O1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgbmV3IHNvcnQgdmFsdWUgd2hlbmV2ZXIgYSBzb3J0YWJsZSBjb2x1bW4gaXMgY2xpY2tlZFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8VGFibGVTb3J0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVHJ1ZSBpZiBhIFRhYmxlTWFzdGVyUm93Q29tcG9uZW50IGV4aXN0cyBpbiB0aGUgdGFibGUgY29udGVudFxyXG4gICAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtbWFzdGVyLWRldGFpbCcpIGhhc01hc3RlckRldGFpbFJvd3MgPSBmYWxzZTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihUYWJsZU1hc3RlclJvd0NvbXBvbmVudCwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgbWFzdGVyUm93cyE6IFF1ZXJ5TGlzdDxUYWJsZU1hc3RlclJvd0NvbXBvbmVudD47XHJcblxyXG4gIHB1YmxpYyByZXNpemFibGVDb2x1bW5zITogUXVlcnlMaXN0PFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudD47XHJcbiAgQENvbnRlbnRDaGlsZHJlbihSZXNpemFibGVDb2x1bW5Db21wb25lbnQsIHtkZXNjZW5kYW50czogdHJ1ZX0pIF9yZXNpemFibGVDb2x1bW5zITogUXVlcnlMaXN0PFJlc2l6YWJsZUNvbHVtbkNvbXBvbmVudD47XHJcblxyXG4gIEBJbnB1dCgncmVzaXphYmxlQ29sdW1ucycpIHNlYXJjaGFibGVUYWJsZVJlc2l6YWJsZUNvbHVtbnM/OiBRdWVyeUxpc3Q8UmVzaXphYmxlQ29sdW1uQ29tcG9uZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogVW5saXN0ZW4gZnVuY3Rpb24gcmV0dXJuZWQgYnkgYHJlbmRlcmVyLmxpc3RlbigpYCB0aGF0IGFyZSBjYWxsZWRcclxuICAgKiBPbkRlc3Ryb3kgdG8gY2xlYW4gdXAgYWxsIGxpc3RlbmVyc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgdW5saXN0ZW5lcnM6ICgoKSA9PiB2b2lkKVtdID0gW107XHJcbiAgXHJcbiAgLyoqIFRoZSBjdXJyZW50IHNvcnQgdmFsdWUgKi9cclxuICBwcml2YXRlIGN1cnJlbnRTb3J0PzogVGFibGVTb3J0O1xyXG4gIFxyXG4gIC8qKiBBIG1hcCBvZiBzb3J0YWJsZSBgPHRoPmAgZWxlbWVudHMgKi9cclxuICBwcml2YXRlIHNvcnRhYmxlQ29sczoge1tmaWVsZDogc3RyaW5nXTogSFRNTFRhYmxlSGVhZGVyQ2VsbEVsZW1lbnR9ID0ge307XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveWVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHB1YmxpYyBlbDogRWxlbWVudFJlZikge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc29ydGFibGUgJiYgY2hhbmdlcy5zb3J0ICYmIGNoYW5nZXMuc29ydC5jdXJyZW50VmFsdWUgJiYgIWNoYW5nZXMuc29ydC5maXJzdENoYW5nZSkge1xyXG4gICAgICBjb25zdCBuZXdWYWx1ZTogVGFibGVTb3J0ID0gY2hhbmdlcy5zb3J0LmN1cnJlbnRWYWx1ZTtcclxuICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTb3J0IHx8ICFpc0VxdWFsKG5ld1ZhbHVlLCB0aGlzLmN1cnJlbnRTb3J0KSl7XHJcbiAgICAgICAgdGhpcy5vblNvcnQobmV3VmFsdWUuZmllbGQsIG5ld1ZhbHVlLmRpcmVjdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaGFzTWFzdGVyRGV0YWlsUm93cyA9ICEhdGhpcy5tYXN0ZXJSb3dzLmxlbmd0aDtcclxuICAgIFxyXG4gICAgdGhpcy5tYXN0ZXJSb3dzLmNoYW5nZXMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKVxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmhhc01hc3RlckRldGFpbFJvd3MgPSAhIXRoaXMubWFzdGVyUm93cy5sZW5ndGg7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlc2l6YWJsZUNvbHVtbnMgPSB0aGlzLnNlYXJjaGFibGVUYWJsZVJlc2l6YWJsZUNvbHVtbnMgfHwgdGhpcy5fcmVzaXphYmxlQ29sdW1ucztcclxuICB9XHJcbiAgXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc29ydGFibGUpIHtcclxuICAgICAgdGhpcy5pbml0U29ydGFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RhYmxlKSB7XHJcbiAgICAgIHRoaXMuaW5pdFNlbGVjdGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy51bmxpc3RlbmVycy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy51bmxpc3RlbmVycy5mb3JFYWNoKHVubGlzdGVuID0+IHVubGlzdGVuKCkpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFsbCBlbGVtZW50cyBpbnNpZGUgdGhlIGhvc3QgZWxlbWVudCB0aGF0IG1hdGNoIGEgc2VsZWN0b3IgXHJcbiAgICogQHBhcmFtIHNlbGVjdG9yIC0gQW55IHZhbGlkIHNlbGVjdG9yIGZvciBbcXVlcnlTZWxlY3RvckFsbF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RvY3VtZW50L3F1ZXJ5U2VsZWN0b3JBbGwpXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBxdWVyeUVsZW1lbnRzPFQ+KHNlbGVjdG9yOiBzdHJpbmcpOiBUW10ge1xyXG4gICAgY29uc3QgdGFibGUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdG9yZSBhIGA8dGg+YCBmb3IgZWFjaCBzb3J0YWJsZSBjb2x1bW4gYW5kIGF0dGFjaCBhIGNsaWNrXHJcbiAgICogZXZlbnQgbGlzdGVuZXIuIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdFNvcnRhYmxlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5xdWVyeUVsZW1lbnRzPEhUTUxUYWJsZUhlYWRlckNlbGxFbGVtZW50PigndGgnKS5mb3JFYWNoKHRoID0+IHtcclxuICAgICAgaWYgKHRoLmhhc0F0dHJpYnV0ZSgnZGF0YS1zb3J0ZmllbGQnKSkge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGguZ2V0QXR0cmlidXRlKCdkYXRhLXNvcnRmaWVsZCcpO1xyXG4gICAgICAgIGlmIChmaWVsZCkge1xyXG4gICAgICAgICAgdGhpcy5zb3J0YWJsZUNvbHNbZmllbGRdID0gdGg7XHJcbiAgICAgICAgICBjb25zdCB1bmxpc3RlbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoLCAnY2xpY2snLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuXHJcbiAgICAgICAgICAgIC8vIERvIG5vdCBzb3J0IGlmIHRoZSBldmVudCB0YXJnZXQgd2FzIHRoZSByZXNpemFibGUgaGFuZGxlXHJcbiAgICAgICAgICAgIGlmICh0aC5jbGFzc0xpc3QuY29udGFpbnMoJ2lzLXJlc2l6YWJsZScpICYmIGV2ZW50LnRhcmdldCAmJiAoPEhUTUxFbGVtZW50PmV2ZW50LnRhcmdldCkuY2xhc3NMaXN0LmNvbnRhaW5zKCdoYW5kbGUnKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5vblNvcnQoZmllbGQpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgXHJcbiAgICAgICAgICAvLyBTdG9yZSB1bmxpc3RlbiBmdW5jdGlvbiB0byByZW1vdmUgbGlzdGVuZXIgd2hlbiBjb21wb25lbnQgaXMgZGVzdHJveWVkXHJcbiAgICAgICAgICB0aGlzLnVubGlzdGVuZXJzLnB1c2godW5saXN0ZW4pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBkYXRhLXNvcnRmaWVsZCBhdHRyaWJ1dGUgd2FzIG5vdCBhc3NpZ25lZCBhIHZhbHVlLmAsIHRoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFNldCB0aGUgaW5pdGlhbCBzb3J0XHJcbiAgICBpZiAodGhpcy5zb3J0KSB7XHJcbiAgICAgIHRoaXMub25Tb3J0KHRoaXMuc29ydC5maWVsZCwgdGhpcy5zb3J0LmRpcmVjdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kIHRoZSBzb3J0ZWQgY29sdW1uIGFuZCBhcHBseSB0aGUgZGVzYyBvciBhc2MgY2xhc3MgaW4gb3JkZXJcclxuICAgKiB0byBzaG93IHRoZSBjb3JyZWN0IHNvcnQgaWNvbi4gSWYgYW5vdGhlciBmaWVsZCB3YXMgc29ydGVkLCByZXNldCBpdC5cclxuICAgKiBFbWl0IHRoZSBjdXJyZW50IGZpZWxkIGFuZCBkaXJlY3Rpb24gb2YgdGhlIHNvcnRlZCBjb2x1bW5cclxuICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvblNvcnQoZmllbGQ6IHN0cmluZywgZGlyZWN0aW9uPzogVGFibGVTb3J0RGlyZWN0aW9uKTogdm9pZCB7XHJcbiAgICBjb25zdCB0aCA9IHRoaXMuc29ydGFibGVDb2xzW2ZpZWxkXTtcclxuICAgIGlmICghdGgpIHsgcmV0dXJuOyB9XHJcbiAgICBcclxuICAgIGlmICh0aGlzLmN1cnJlbnRTb3J0ICYmIHRoaXMuY3VycmVudFNvcnQuZmllbGQgIT09IGZpZWxkKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5zb3J0YWJsZUNvbHNbdGhpcy5jdXJyZW50U29ydC5maWVsZF0sIGBpcy1zb3J0ZWQtJHt0aGlzLmN1cnJlbnRTb3J0LmRpcmVjdGlvbn1gKTtcclxuICAgIH0gXHJcbiAgICBcclxuICAgIGlmICh0aC5jbGFzc0xpc3QuY29udGFpbnMoJ2lzLXNvcnRlZC1kZXNjJykpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aCwgJ2lzLXNvcnRlZC1kZXNjJyk7XHJcblxyXG4gICAgICBpZiAoIWRpcmVjdGlvbikge1xyXG4gICAgICAgIGRpcmVjdGlvbiA9ICdhc2MnO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoLmNsYXNzTGlzdC5jb250YWlucygnaXMtc29ydGVkLWFzYycpKSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aCwgJ2lzLXNvcnRlZC1hc2MnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFkaXJlY3Rpb24pIHtcclxuICAgICAgICBkaXJlY3Rpb24gPSAnZGVzYyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoLCBgaXMtc29ydGVkLSR7ZGlyZWN0aW9ufWApO1xyXG5cclxuICAgIGNvbnN0IHNvcnRFdmVudCA9IHtmaWVsZDogZmllbGQsIGRpcmVjdGlvbjogZGlyZWN0aW9ufTtcclxuICAgIHRoaXMuY3VycmVudFNvcnQgPSBzb3J0RXZlbnQ7XHJcbiAgICB0aGlzLnNvcnRDaGFuZ2UuZW1pdChzb3J0RXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0U2VsZWN0YWJsZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uQ29udGV4dCEucm93Q2hlY2tib3hlcy52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKVxyXG4gICAgKS5zdWJzY3JpYmUoKHZhbHVlOiBib29sZWFuW10pID0+IHtcclxuICAgICAgdGhpcy5oYXNTZWxlY3Rpb24gPSB2YWx1ZS5zb21lKHYgPT4gdik7XHJcbiAgICB9KTtcclxuICB9XHJcbn0iXX0=
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/** Tag contains a label and type. Type is default by default */
|
|
2
|
-
export class Tag {
|
|
3
|
-
constructor(label, type, classList, icon, isDismissable, tooltip) {
|
|
4
|
-
this.label = label;
|
|
5
|
-
this.type = type || 'info';
|
|
6
|
-
this.icon = icon;
|
|
7
|
-
this.isDismissable = isDismissable !== null && isDismissable !== void 0 ? isDismissable : false;
|
|
8
|
-
this.tooltip = tooltip;
|
|
9
|
-
if (classList) {
|
|
10
|
-
this.classList = classList;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdGFncy90YWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsZ0VBQWdFO0FBQ2hFLE1BQU0sT0FBTyxHQUFHO0lBY2QsWUFBWSxLQUFhLEVBQUUsSUFBYyxFQUFFLFNBQWtCLEVBQUUsSUFBYSxFQUFFLGFBQXVCLEVBQUUsT0FBZ0I7UUFDckgsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxhQUFiLGFBQWEsY0FBYixhQUFhLEdBQUksS0FBSyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXZCLElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7SUFDSCxDQUFDO0NBQ0Y7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFRhZyB0eXBlIHVzZWQgdG8gc3R5bGUgdGhlIHRhZyAqL1xyXG5leHBvcnQgdHlwZSBUYWdUeXBlID0gXCJpbmZvXCIgfCBcInN1Y2Nlc3NcIiB8IFwid2FybmluZ1wiIHwgXCJkYW5nZXJcIiB8IFwiYWNjZW50XCIgfCBcImNoYXJnZWJhY2tcIiB8IFwiYWNjcnVhbFwiO1xyXG5cclxuLyoqIFRhZyBjb250YWlucyBhIGxhYmVsIGFuZCB0eXBlLiBUeXBlIGlzIGRlZmF1bHQgYnkgZGVmYXVsdCAqL1xyXG5leHBvcnQgY2xhc3MgVGFnIHtcclxuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcclxuXHJcbiAgcHVibGljIHR5cGU6IFRhZ1R5cGU7XHJcblxyXG4gIHB1YmxpYyBpY29uPzogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgaXNEaXNtaXNzYWJsZT86IGJvb2xlYW47XHJcblxyXG4gIC8qKiBDU1MgY2xhc3NlcyB0byBhcHBseSB0byB0YWcgZm9yIGN1c3RvbSBzdHlsaW5nICovXHJcbiAgcHVibGljIGNsYXNzTGlzdD86IHN0cmluZztcclxuXHJcbiAgcHVibGljIHRvb2x0aXA/OiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGxhYmVsOiBzdHJpbmcsIHR5cGU/OiBUYWdUeXBlLCBjbGFzc0xpc3Q/OiBzdHJpbmcsIGljb24/OiBzdHJpbmcsIGlzRGlzbWlzc2FibGU/OiBib29sZWFuLCB0b29sdGlwPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmxhYmVsID0gbGFiZWw7XHJcbiAgICB0aGlzLnR5cGUgPSB0eXBlIHx8ICdpbmZvJztcclxuICAgIHRoaXMuaWNvbiA9IGljb247XHJcbiAgICB0aGlzLmlzRGlzbWlzc2FibGUgPSBpc0Rpc21pc3NhYmxlID8/IGZhbHNlO1xyXG4gICAgdGhpcy50b29sdGlwID0gdG9vbHRpcDtcclxuXHJcbiAgICBpZiAoY2xhc3NMaXN0KSB7XHJcbiAgICAgIHRoaXMuY2xhc3NMaXN0ID0gY2xhc3NMaXN0O1xyXG4gICAgfVxyXG4gIH1cclxufTsiXX0=
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
export class TagsComponent {
|
|
3
|
-
constructor() {
|
|
4
|
-
/**The ID of this set of tags */
|
|
5
|
-
this.id = '';
|
|
6
|
-
/**
|
|
7
|
-
* Determines whether the tags will wrap or not
|
|
8
|
-
*
|
|
9
|
-
* @type {boolean}
|
|
10
|
-
* @memberof TagsComponent
|
|
11
|
-
*/
|
|
12
|
-
this.wrap = true;
|
|
13
|
-
/**
|
|
14
|
-
* Displays the tags in condensed mode
|
|
15
|
-
*/
|
|
16
|
-
this.isCondensed = false;
|
|
17
|
-
/**
|
|
18
|
-
* Emits the tag item when the tag's close button is clicked
|
|
19
|
-
*/
|
|
20
|
-
this.tagClosed = new EventEmitter();
|
|
21
|
-
/**
|
|
22
|
-
* Tags to be displayed
|
|
23
|
-
*
|
|
24
|
-
* @type {Tag[]}
|
|
25
|
-
* @memberof TagsComponent
|
|
26
|
-
*/
|
|
27
|
-
this.tagsArray = [];
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Angular onChanges lifecycle hook
|
|
31
|
-
* @see {@link https://angular.io/guide/lifecycle-hooks | Life-cycle hooks}
|
|
32
|
-
*
|
|
33
|
-
* @param {SimpleChanges} changes
|
|
34
|
-
* @memberof TagsComponent
|
|
35
|
-
*/
|
|
36
|
-
ngOnChanges(changes) {
|
|
37
|
-
if (changes.tags) {
|
|
38
|
-
if (this.tags) {
|
|
39
|
-
// If only given a single item, put it in an array so it works in the template
|
|
40
|
-
if (Array.isArray(this.tags)) {
|
|
41
|
-
this.tagsArray = this.tags;
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
this.tagsArray = [this.tags];
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
// reset array if tags becomes undefined
|
|
49
|
-
this.tagsArray = [];
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
closeTag(tag) {
|
|
54
|
-
this.tagsArray = this.tagsArray.filter(t => t !== tag);
|
|
55
|
-
this.tagClosed.emit(tag);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
TagsComponent.decorators = [
|
|
59
|
-
{ type: Component, args: [{
|
|
60
|
-
selector: 'ec-tags',
|
|
61
|
-
template: "<ul class=\"tags\" [class.is-wrapped]=\"wrap\">\r\n <li *ngFor=\"let tag of tagsArray; index as i\"\r\n id=\"{{id}}_tag_{{i}}\"\r\n class=\"tag is-{{tag.type}} {{tag.classList}} mr-1\"\r\n [ngClass]=\"{'text-caption-1': !isCondensed, 'text-caption-2': isCondensed, 'is-condensed': isCondensed, 'pr-0': tag.isDismissable}\"\r\n title=\"{{tag.tooltip | translate}}\">\r\n <i *ngIf=\"tag.icon\" class=\"ec-icon {{tag.icon}} font-color-muted ec-icon-sm\"></i>\r\n {{tag.label | translate}}\r\n <button id=\"{{id}}_tag_{{i}}_dismissButton\"\r\n *ngIf=\"tag.isDismissable\"\r\n (click)=\"closeTag(tag)\">\r\n <i class=\"ec-icon ec-icon-sm icon-cancel\"></i>\r\n </button>\r\n </li>\r\n</ul>",
|
|
62
|
-
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{display:block}.tags{display:flex;list-style:none;margin:0;padding:0}.tags.is-wrapped{flex-wrap:wrap;margin-top:.25rem}.tags.is-wrapped>.tag{margin-bottom:.25rem}.tag{align-items:center;background-color:rgba(172,188,195,.25);border:2px solid #acbcc3;border-radius:calc(var(--ec-border-radius, .25rem)*3);display:inline-flex;height:1.5rem;line-height:1.25rem;overflow:hidden;padding:0 .4375rem;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.tag>.ec-icon:first-child{margin-right:.1875rem}.tag .ec-icon{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;justify-content:center;min-width:1em}.tag .ec-icon,.tag .ec-icon:after,.tag .ec-icon:before{height:auto;width:auto}.tag.is-info{background-color:rgba(172,188,195,.25);border-color:#acbcc3}.tag.is-success{background-color:rgba(193,205,35,.25);border-color:#c1cd23}.tag.is-warning{background-color:rgba(245,212,0,.25);border-color:#f5d400}.tag.is-danger{background-color:rgba(227,52,54,.25);border-color:#e33436}.tag.is-accent{background-color:rgba(144,110,168,.25);border-color:#906ea8}.tag.is-chargeback{background-color:rgba(250,123,46,.25);border-color:#fa7b2e}.tag.is-accrual{background-color:rgba(35,195,205,.25);border-color:#23c3cd}button{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:100%;padding:0 .4375rem 0 .1875rem}button:focus,button:hover{background-color:rgba(26,26,35,.1);outline:none}.is-condensed{border:0;border-radius:var(--ec-border-radius);height:1.125rem;justify-content:center;line-height:1.125rem;min-width:1.125rem;padding:0 .25rem}.is-condensed>.ec-icon:first-child{margin-right:.125rem}.is-condensed button{padding-left:.125rem;padding-right:.25rem}"]
|
|
63
|
-
},] }
|
|
64
|
-
];
|
|
65
|
-
TagsComponent.ctorParameters = () => [];
|
|
66
|
-
TagsComponent.propDecorators = {
|
|
67
|
-
id: [{ type: Input }],
|
|
68
|
-
tags: [{ type: Input }],
|
|
69
|
-
wrap: [{ type: Input }],
|
|
70
|
-
isCondensed: [{ type: Input }],
|
|
71
|
-
tagClosed: [{ type: Output }]
|
|
72
|
-
};
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS90YWdzL3RhZ3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWEsS0FBSyxFQUFpQixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUWpHLE1BQU0sT0FBTyxhQUFhO0lBdUN4QjtRQXJDQSxnQ0FBZ0M7UUFDaEIsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQVVoQzs7Ozs7V0FLRztRQUNhLFNBQUksR0FBWSxJQUFJLENBQUM7UUFFckM7O1dBRUc7UUFDYSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUU3Qzs7V0FFRztRQUNjLGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV4RTs7Ozs7V0FLRztRQUNJLGNBQVMsR0FBVSxFQUFFLENBQUM7SUFFYixDQUFDO0lBRWpCOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDaEIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNiLDhFQUE4RTtnQkFDOUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2lCQUM1QjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM5QjthQUNGO2lCQUFNO2dCQUNMLHdDQUF3QztnQkFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7YUFDckI7U0FDRjtJQUNILENBQUM7SUFFTSxRQUFRLENBQUMsR0FBUTtRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7OztZQXhFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFNBQVM7Z0JBQ25CLHF2QkFBb0M7O2FBRXJDOzs7O2lCQUlFLEtBQUs7bUJBUUwsS0FBSzttQkFRTCxLQUFLOzBCQUtMLEtBQUs7d0JBS0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25DaGFuZ2VzLCBJbnB1dCwgU2ltcGxlQ2hhbmdlcywgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGFnIH0gZnJvbSAnLi90YWcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy10YWdzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFncy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFncy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWdzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHJcbiAgLyoqVGhlIElEIG9mIHRoaXMgc2V0IG9mIHRhZ3MgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaWQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBPbmUgb3IgbW9yZSB0YWdzXHJcbiAgICogXHJcbiAgICogQHR5cGUgeyhUYWcgfCBUYWdbXSl9XHJcbiAgICogQG1lbWJlcm9mIFRhZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgdGFncz86IFRhZyB8IFRhZ1tdO1xyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRhZ3Mgd2lsbCB3cmFwIG9yIG5vdFxyXG4gICAqIFxyXG4gICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBUYWdzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHdyYXA6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5cyB0aGUgdGFncyBpbiBjb25kZW5zZWQgbW9kZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0NvbmRlbnNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgdGFnIGl0ZW0gd2hlbiB0aGUgdGFnJ3MgY2xvc2UgYnV0dG9uIGlzIGNsaWNrZWRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgcHVibGljIHRhZ0Nsb3NlZDogRXZlbnRFbWl0dGVyPFRhZz4gPSBuZXcgRXZlbnRFbWl0dGVyPFRhZz4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGFncyB0byBiZSBkaXNwbGF5ZWRcclxuICAgKiBcclxuICAgKiBAdHlwZSB7VGFnW119XHJcbiAgICogQG1lbWJlcm9mIFRhZ3NDb21wb25lbnRcclxuICAgKi9cclxuICBwdWJsaWMgdGFnc0FycmF5OiBUYWdbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBBbmd1bGFyIG9uQ2hhbmdlcyBsaWZlY3ljbGUgaG9va1xyXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9saWZlY3ljbGUtaG9va3MgfCBMaWZlLWN5Y2xlIGhvb2tzfVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7U2ltcGxlQ2hhbmdlc30gY2hhbmdlcyBcclxuICAgKiBAbWVtYmVyb2YgVGFnc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLnRhZ3MpIHtcclxuICAgICAgaWYgKHRoaXMudGFncykge1xyXG4gICAgICAgIC8vIElmIG9ubHkgZ2l2ZW4gYSBzaW5nbGUgaXRlbSwgcHV0IGl0IGluIGFuIGFycmF5IHNvIGl0IHdvcmtzIGluIHRoZSB0ZW1wbGF0ZVxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudGFncykpIHtcclxuICAgICAgICAgIHRoaXMudGFnc0FycmF5ID0gdGhpcy50YWdzO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRhZ3NBcnJheSA9IFt0aGlzLnRhZ3NdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyByZXNldCBhcnJheSBpZiB0YWdzIGJlY29tZXMgdW5kZWZpbmVkXHJcbiAgICAgICAgdGhpcy50YWdzQXJyYXkgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlVGFnKHRhZzogVGFnKSB7XHJcbiAgICB0aGlzLnRhZ3NBcnJheSA9IHRoaXMudGFnc0FycmF5LmZpbHRlcih0ID0+IHQgIT09IHRhZyk7XHJcbiAgICB0aGlzLnRhZ0Nsb3NlZC5lbWl0KHRhZyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|