@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,207 +0,0 @@
|
|
|
1
|
-
import { Component, Input, ElementRef, ViewChild, Output, EventEmitter, TemplateRef } from '@angular/core';
|
|
2
|
-
import { MenuComponent } from '../menu/menu.component';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import { takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { PopupContainerDirective } from '../../shared/directives/popup/popup-container.directive';
|
|
6
|
-
export class DropdownComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
/**
|
|
9
|
-
* Automatically focus the dropdown toggle button
|
|
10
|
-
*/
|
|
11
|
-
this.autofocus = false;
|
|
12
|
-
/**
|
|
13
|
-
* Controls the display status overlay for the menu
|
|
14
|
-
*/
|
|
15
|
-
this.status = { status: 'hasData', message: '' };
|
|
16
|
-
/**
|
|
17
|
-
* Disable the button to prevent the menu from being opened
|
|
18
|
-
*/
|
|
19
|
-
this.disabled = false;
|
|
20
|
-
/**
|
|
21
|
-
* The button type, defaults to icon
|
|
22
|
-
*/
|
|
23
|
-
this.buttonType = 'icon';
|
|
24
|
-
/**
|
|
25
|
-
* Adds a tooltip to the dropdown toggle button. Should only be used when
|
|
26
|
-
* the toggle buttonType is 'icon'
|
|
27
|
-
*/
|
|
28
|
-
this.buttonTitle = '';
|
|
29
|
-
/**
|
|
30
|
-
* Display a caret with the button label or icon
|
|
31
|
-
*/
|
|
32
|
-
this.showArrow = true;
|
|
33
|
-
/**
|
|
34
|
-
* Items to display in the menu
|
|
35
|
-
*/
|
|
36
|
-
this.items = [];
|
|
37
|
-
/**
|
|
38
|
-
* The menu item template
|
|
39
|
-
*/
|
|
40
|
-
this.menuTemplateType = 'label';
|
|
41
|
-
/**
|
|
42
|
-
* Fix position the menu instead of absolute. Useful when the dropdown is in a
|
|
43
|
-
* dialog
|
|
44
|
-
*/
|
|
45
|
-
this.popupFixed = false;
|
|
46
|
-
/**
|
|
47
|
-
* Used to set the menu buttons state to pending
|
|
48
|
-
*/
|
|
49
|
-
this.pending = false;
|
|
50
|
-
/**
|
|
51
|
-
* Emits an event when a menu item is selected
|
|
52
|
-
*/
|
|
53
|
-
this.itemSelected = new EventEmitter();
|
|
54
|
-
/**
|
|
55
|
-
* Emits an event when the popup menu opens
|
|
56
|
-
*/
|
|
57
|
-
this.popupOpened = new EventEmitter();
|
|
58
|
-
/**
|
|
59
|
-
* The status of the menu
|
|
60
|
-
*/
|
|
61
|
-
this.menuStatus = 'hidden';
|
|
62
|
-
/** Item to highlight when the menu is opened, used when the user
|
|
63
|
-
* opens the menu via the keyboard
|
|
64
|
-
*/
|
|
65
|
-
this.highlightedItem = null;
|
|
66
|
-
/** Used to know if the menu was toggled via the keyboard */
|
|
67
|
-
this.isKeyboardEvent = false;
|
|
68
|
-
/**
|
|
69
|
-
* Unsubscribe any active subscriptions when the component is destroyed
|
|
70
|
-
*/
|
|
71
|
-
this.componentDestroyed = new Subject();
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Subscribe to changes to the menu status
|
|
75
|
-
*/
|
|
76
|
-
ngOnInit() {
|
|
77
|
-
this.popup.popperStatusChange
|
|
78
|
-
.pipe(takeUntil(this.componentDestroyed))
|
|
79
|
-
.subscribe((event) => {
|
|
80
|
-
this.menuStatus = event;
|
|
81
|
-
if (this.menuStatus === 'visible') {
|
|
82
|
-
this.popupOpened.emit();
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Set up the popup
|
|
88
|
-
*/
|
|
89
|
-
ngAfterViewInit() {
|
|
90
|
-
let popperOptions = {
|
|
91
|
-
modifiers: {
|
|
92
|
-
preventOverflow: {
|
|
93
|
-
boundariesElement: 'viewport'
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
|
-
placement: 'bottom-end'
|
|
97
|
-
};
|
|
98
|
-
if (this.menuPosition === 'left') {
|
|
99
|
-
popperOptions.placement = 'bottom-start';
|
|
100
|
-
}
|
|
101
|
-
if (this.popupFixed) {
|
|
102
|
-
popperOptions.onCreate = () => {
|
|
103
|
-
this.popup.fixPosition();
|
|
104
|
-
};
|
|
105
|
-
popperOptions.onUpdate = () => {
|
|
106
|
-
// Hide the popup when the dropdown changes position due to window resize
|
|
107
|
-
// or container scrolling
|
|
108
|
-
this.popup.hide();
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
this.popup.popperOptions = popperOptions;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Unsubscribe to any active subscriptions
|
|
115
|
-
*/
|
|
116
|
-
ngOnDestroy() {
|
|
117
|
-
this.componentDestroyed.next();
|
|
118
|
-
this.componentDestroyed.unsubscribe();
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Open and close the menu
|
|
122
|
-
*/
|
|
123
|
-
toggleMenu(event) {
|
|
124
|
-
if (event) {
|
|
125
|
-
event.stopPropagation();
|
|
126
|
-
}
|
|
127
|
-
if (!this.disabled) {
|
|
128
|
-
if (this.menuStatus === 'hidden') {
|
|
129
|
-
if (this.isKeyboardEvent && this.items.length) {
|
|
130
|
-
// Setup the first item in the list to highlight when opening the
|
|
131
|
-
// menu via the keyboard, ignoring headings
|
|
132
|
-
this.highlightedItem = this.items.find(item => item.display !== 'heading') || null;
|
|
133
|
-
}
|
|
134
|
-
this.popup.show();
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
this.popup.hide();
|
|
138
|
-
// Reset the highlighted item and our keyboard flag
|
|
139
|
-
// when we close the popup
|
|
140
|
-
this.highlightedItem = null;
|
|
141
|
-
this.isKeyboardEvent = false;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Emit the selected item when it changes and close the menu
|
|
147
|
-
*/
|
|
148
|
-
selectedChanged(item) {
|
|
149
|
-
this.itemSelected.emit(item);
|
|
150
|
-
this.toggleMenu();
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Closes the menu if the tab key is pressed
|
|
154
|
-
*/
|
|
155
|
-
keyNavigate(event) {
|
|
156
|
-
switch (event.key) {
|
|
157
|
-
case 'Enter':
|
|
158
|
-
this.isKeyboardEvent = true;
|
|
159
|
-
break;
|
|
160
|
-
case 'Escape':
|
|
161
|
-
case 'Tab':
|
|
162
|
-
if (this.menuStatus === 'visible') {
|
|
163
|
-
this.toggleMenu(event);
|
|
164
|
-
}
|
|
165
|
-
break;
|
|
166
|
-
default:
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
DropdownComponent.decorators = [
|
|
172
|
-
{ type: Component, args: [{
|
|
173
|
-
selector: 'ec-dropdown',
|
|
174
|
-
template: "<div class=\"control\">\r\n <ec-button [disabled]=\"disabled\"\r\n id=\"{{id}}_toggle\"\r\n [ngClass]=\"{'has-arrow':showArrow, 'active': menuStatus === 'visible', 'text-left': buttonAlignment === 'left', 'text-right': buttonAlignment === 'right'}\"\r\n *ecPopup=\"dropdownMenu\"\r\n [label]=\"label\"\r\n [icon]=\"icon\"\r\n [tabindex]=\"tabindex\"\r\n [type]=\"buttonType\"\r\n [customTemplate]=\"buttonCustomTemplate\"\r\n [pending]=\"pending\"\r\n title=\"{{buttonTitle}}\"\r\n (click)=\"toggleMenu($event)\"\r\n (keydown)=\"keyNavigate($event)\"\r\n [autofocus]=\"autofocus\">\r\n </ec-button>\r\n <span class=\"arrow is-{{buttonType}}\"\r\n *ngIf=\"showArrow\"\r\n [class.is-disabled]=\"disabled\">\r\n <i class=\"ec-icon icon-caret-down\" [class.flip-y]=\"menuStatus === 'visible'\"></i>\r\n </span>\r\n</div>\r\n\r\n<ng-template #dropdownMenu>\r\n <div id=\"{{id}}_popup\"\r\n class=\"popup\"\r\n ecOverlay\r\n [status]=\"status?.status\"\r\n [message]=\"status?.message\"\r\n [displayAsMask]=\"true\">\r\n <!-- Dropdown Menu Title -->\r\n <header id=\"{{id}}_title\"\r\n class=\"text-heading-2 px-2 my-2\"\r\n *ngIf=\"menuTitle\">{{menuTitle}}\r\n </header>\r\n <!-- Dropdown Menu -->\r\n <ec-menu id=\"{{id}}_menu\"\r\n [class.wrap-items]=\"menuWidth\"\r\n [templateType]=\"menuTemplateType\"\r\n [style.width]=\"menuWidth ? menuWidth + 'px' : 'auto'\"\r\n [style.min-width]=\"menuMinWidth ? menuMinWidth + 'px' : 'auto'\"\r\n [style.height]=\"menuHeight ? menuHeight + 'px' : 'auto'\"\r\n [items]=\"items\"\r\n [showNoItems]=\"true\"\r\n [enableKeyNav]=\"true\"\r\n [highlightedItem]=\"highlightedItem\"\r\n (selectedChanged)=\"selectedChanged($event)\">\r\n </ec-menu>\r\n <footer *ngIf=\"menuFooter\">{{menuFooter}}</footer>\r\n </div>\r\n</ng-template>",
|
|
175
|
-
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{box-sizing:border-box;display:inline-block;vertical-align:top}:host(.font-size-inherit) ec-button,:host(.font-size-inherit) ec-button ::ng-deep button{font-size:inherit}:host(.fill),:host(.fill) .control,:host(.fill) .control ec-button{display:block;height:100%;width:100%}:host(.fill) .control ec-button ::ng-deep button{display:block;display:flex;height:100%;width:100%}:host(.fill) ec-menu{min-width:100%}:host(.td-fill){left:0;position:absolute;top:0}:host(.td-fill) ec-button ::ng-deep button{font-size:.75rem;padding-left:.375rem;padding-right:.375rem}:host(.is-action) .arrow,:host(.is-action) ec-button{color:var(--ec-color-interactive)}:host(.is-condensed) ec-button ::ng-deep button{height:1.5rem}:host(.is-condensed) ec-button.has-arrow ::ng-deep button{padding:0 1.125rem 0 .25rem}:host(.is-condensed) ec-button.has-arrow~.arrow{right:.375rem}:host(.d-block) ec-button{display:block}:host(.d-block) ec-button ::ng-deep button{width:100%}:host-context(th){color:var(--ec-color-primary-dark)}.control{position:relative}ec-button{display:block}ec-button.has-arrow~.arrow{align-items:center;display:flex;height:100%;pointer-events:none;position:absolute;right:.5rem;top:0;width:.625rem;z-index:1}ec-button.has-arrow~.arrow .ec-icon{color:var(--ec-color-icon);transition:color .3s ease;width:auto}ec-button.has-arrow~.arrow.is-common .ec-icon{color:var(--ec-color-primary-light)}ec-button.has-arrow~.arrow.is-link .ec-icon{color:var(--ec-color-interactive)}ec-button.has-arrow~.arrow.is-disabled .ec-icon{color:var(--ec-color-icon);opacity:.5}ec-button.has-arrow ::ng-deep button{padding-right:1.25rem;width:auto}ec-button.has-arrow ::ng-deep button:not(.ec-button-custom){padding-left:.5rem}.popup{background-color:var(--ec-background-color);border-radius:var(--ec-border-radius-card);box-shadow:var(--ec-box-shadow-overlay);margin-top:.25rem;overflow:hidden;text-align:start;z-index:var(--ec-z-index-popup)}.popup>header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.popup footer{border-top:.0625rem solid var(--ec-border-color-legacy);color:var(--ec-color-secondary-dark);font-size:var(--ec-font-size-label);line-height:1.2;padding:.1875rem .5rem}ec-menu ::ng-deep ul{max-height:50vh}ec-menu ::ng-deep li{white-space:nowrap}ec-menu.wrap-items ::ng-deep li{white-space:normal}"]
|
|
176
|
-
},] }
|
|
177
|
-
];
|
|
178
|
-
DropdownComponent.ctorParameters = () => [];
|
|
179
|
-
DropdownComponent.propDecorators = {
|
|
180
|
-
id: [{ type: Input }],
|
|
181
|
-
autofocus: [{ type: Input }],
|
|
182
|
-
status: [{ type: Input }],
|
|
183
|
-
disabled: [{ type: Input }],
|
|
184
|
-
label: [{ type: Input }],
|
|
185
|
-
icon: [{ type: Input }],
|
|
186
|
-
buttonType: [{ type: Input }],
|
|
187
|
-
buttonAlignment: [{ type: Input }],
|
|
188
|
-
buttonTitle: [{ type: Input }],
|
|
189
|
-
tabindex: [{ type: Input }],
|
|
190
|
-
showArrow: [{ type: Input }],
|
|
191
|
-
items: [{ type: Input }],
|
|
192
|
-
menuTemplateType: [{ type: Input }],
|
|
193
|
-
menuTitle: [{ type: Input }],
|
|
194
|
-
menuHeight: [{ type: Input }],
|
|
195
|
-
menuWidth: [{ type: Input }],
|
|
196
|
-
menuMinWidth: [{ type: Input }],
|
|
197
|
-
menuPosition: [{ type: Input }],
|
|
198
|
-
menuFooter: [{ type: Input }],
|
|
199
|
-
popupFixed: [{ type: Input }],
|
|
200
|
-
buttonCustomTemplate: [{ type: Input }],
|
|
201
|
-
pending: [{ type: Input }],
|
|
202
|
-
itemSelected: [{ type: Output }],
|
|
203
|
-
popupOpened: [{ type: Output }],
|
|
204
|
-
menuEl: [{ type: ViewChild, args: [MenuComponent, { read: ElementRef },] }],
|
|
205
|
-
popup: [{ type: ViewChild, args: [PopupContainerDirective, { static: true },] }]
|
|
206
|
-
};
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3SSxPQUFPLEVBQThCLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRW5GLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBZSx1QkFBdUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBTy9HLE1BQU0sT0FBTyxpQkFBaUI7SUEwSjVCO1FBbkpBOztXQUVHO1FBQ2EsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQzs7V0FFRztRQUNhLFdBQU0sR0FBa0IsRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUMsQ0FBQztRQUV6RTs7V0FFRztRQUNhLGFBQVEsR0FBVyxLQUFLLENBQUM7UUFZekM7O1dBRUc7UUFDYSxlQUFVLEdBQWdCLE1BQU0sQ0FBQztRQVFqRDs7O1dBR0c7UUFDYSxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQU96Qzs7V0FFRztRQUNhLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFFMUM7O1dBRUc7UUFDYSxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBRXZDOztXQUVHO1FBQ2EscUJBQWdCLEdBQXFCLE9BQU8sQ0FBQztRQWlDN0Q7OztXQUdHO1FBQ2EsZUFBVSxHQUFZLEtBQUssQ0FBQztRQU81Qzs7VUFFRTtRQUNjLFlBQU8sR0FBWSxLQUFL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ImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZW51VGVtcGxhdGVUeXBlLCBNZW51SXRlbSwgTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL21lbnUvbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IFBvcHBlciBmcm9tICdwb3BwZXIuanMnO1xyXG5pbXBvcnQgeyBEaXNwbGF5U3RhdHVzIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Rpc3BsYXknO1xyXG5pbXBvcnQgeyBQb3B1cFN0YXR1cywgUG9wdXBDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGlyZWN0aXZlcy9wb3B1cC9wb3B1cC1jb250YWluZXIuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtZHJvcGRvd24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJhc2UgaWQgZm9yIHRoZSBjb21wb25lbnQncyBzdWItZWxlbWVudHNcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaWQ/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEF1dG9tYXRpY2FsbHkgZm9jdXMgdGhlIGRyb3Bkb3duIHRvZ2dsZSBidXR0b25cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgYXV0b2ZvY3VzID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRyb2xzIHRoZSBkaXNwbGF5IHN0YXR1cyBvdmVybGF5IGZvciB0aGUgbWVudVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzdGF0dXM/OkRpc3BsYXlTdGF0dXMgPSB7c3RhdHVzOiAnaGFzRGF0YScsIG1lc3NhZ2U6ICcnfTtcclxuXHJcbiAgLyoqXHJcbiAgICogRGlzYWJsZSB0aGUgYnV0dG9uIHRvIHByZXZlbnQgdGhlIG1lbnUgZnJvbSBiZWluZyBvcGVuZWRcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6Ym9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBPcHRpb25hbCBsYWJlbCBmb3IgdGhlIGJ1dHRvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWwgaWNvbiBmb3IgdGhlIGJ1dHRvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpY29uPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgYnV0dG9uIHR5cGUsIGRlZmF1bHRzIHRvIGljb25cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgYnV0dG9uVHlwZT86IEJ1dHRvblR5cGUgPSAnaWNvbic7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsbHkgYWxpZ24gdGhlIGxhYmVsIG9mIHRoZSBidXR0b24gdG8gdGhlIGxlZnQgb3IgcmlnaHQuIElmIG5vdCBzZXQsXHJcbiAgICogd2lsbCBiZSBjZW50ZXJlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgYnV0dG9uQWxpZ25tZW50PzogJ2xlZnQnIHwgJ3JpZ2h0JztcclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBhIHRvb2x0aXAgdG8gdGhlIGRyb3Bkb3duIHRvZ2dsZSBidXR0b24uIFNob3VsZCBvbmx5IGJlIHVzZWQgd2hlblxyXG4gICAqIHRoZSB0b2dnbGUgYnV0dG9uVHlwZSBpcyAnaWNvbidcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgYnV0dG9uVGl0bGU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgdGFiaW5kZXggb2YgdGhlIGJ1dHRvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0YWJpbmRleD86IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhIGNhcmV0IHdpdGggdGhlIGJ1dHRvbiBsYWJlbCBvciBpY29uXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHNob3dBcnJvdzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0ZW1zIHRvIGRpc3BsYXkgaW4gdGhlIG1lbnVcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG1lbnUgaXRlbSB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtZW51VGVtcGxhdGVUeXBlOiBNZW51VGVtcGxhdGVUeXBlID0gJ2xhYmVsJztcclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhIGhlYWRlciBvbiB0aGUgbWVudVxyXG4gICAqIEBkZXByZWNhdGVkIHVzZSBmaXJzdCBtZW51IGl0ZW0gd2l0aCBkaXNwbGF5IHNldCB0byAnaGVhZGluZycgaW5zdGVhZFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtZW51VGl0bGU/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBhIGZpeGVkIGhlaWdodCBmb3IgdGhlIG1lbnUsIGF1dG8gYnkgZGVmYXVsdFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtZW51SGVpZ2h0PzogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgYSBmaXhlZCB3aWR0aCBpbiBwaXhlbHMgZm9yIHRoZSBtZW51LCBhdXRvIGJ5IGRlZmF1bHRcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgbWVudVdpZHRoPzogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgYSBtaW4td2lkdGggaW4gcGl4ZWxzIG9uIHRoZSBtZW51LiBJdCB3aWxsIGV4cGFuZCBpZiB0aGUgY29udGVudCBpcyBncmVhdGVyIHRoYW4gdGhlIG1pbi13aWR0aFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtZW51TWluV2lkdGg/OiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIFBpbiB0aGUgbWVudSB0byB0aGUgbGVmdCBvciByaWdodCBvZiB0aGUgYnV0dG9uLiBSaWdodCBieSBkZWZhdWx0XHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIG1lbnVQb3NpdGlvbj86ICdsZWZ0JyB8ICdyaWdodCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0aWNreSBmb290ZXIgdG8gZGlzcGxheSBhdCB0aGUgYm90dG9tIG9mIHRoZSBwb3B1cCBtZW51XHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIG1lbnVGb290ZXI/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpeCBwb3NpdGlvbiB0aGUgbWVudSBpbnN0ZWFkIG9mIGFic29sdXRlLiBVc2VmdWwgd2hlbiB0aGUgZHJvcGRvd24gaXMgaW4gYVxyXG4gICAqIGRpYWxvZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwb3B1cEZpeGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhc3MgYSBjdXN0b20gdGVtcGxhdGUgdG8gdGhlIHRvZ2dsZSBidXR0b25cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgYnV0dG9uQ3VzdG9tVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvKipcclxuICAqIFVzZWQgdG8gc2V0IHRoZSBtZW51IGJ1dHRvbnMgc3RhdGUgdG8gcGVuZGluZ1xyXG4gICovXHJcbiAgQElucHV0KCkgcHVibGljIHBlbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiBhIG1lbnUgaXRlbSBpcyBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgaXRlbVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8TWVudUl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxNZW51SXRlbT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgcG9wdXAgbWVudSBvcGVuc1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgcG9wdXBPcGVuZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgbWVudVxyXG4gICAqL1xyXG4gIHB1YmxpYyBtZW51U3RhdHVzOiBQb3B1cFN0YXR1cyA9ICdoaWRkZW4nO1xyXG5cclxuICAvKiogSXRlbSB0byBoaWdobGlnaHQgd2hlbiB0aGUgbWVudSBpcyBvcGVuZWQsIHVzZWQgd2hlbiB0aGUgdXNlclxyXG4gICAqICBvcGVucyB0aGUgbWVudSB2aWEgdGhlIGtleWJvYXJkXHJcbiAgICovXHJcbiAgcHVibGljIGhpZ2hsaWdodGVkSXRlbTogTWVudUl0ZW0gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIFVzZWQgdG8ga25vdyBpZiB0aGUgbWVudSB3YXMgdG9nZ2xlZCB2aWEgdGhlIGtleWJvYXJkICovXHJcbiAgcHJpdmF0ZSBpc0tleWJvYXJkRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW50ZXJuYWwgcmVmZXJlbmNlIHRvIHRoZSBtZW51IGVsZW1lbnRcclxuICAgKi9cclxuICBAVmlld0NoaWxkKE1lbnVDb21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwcml2YXRlIG1lbnVFbCE6RWxlbWVudFJlZjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW50ZXJuYWwgcmVmZXJlbmNlIHRvIHRoZSBwb3B1cCBkaXJlY3RpdmVcclxuICAgKi9cclxuICBAVmlld0NoaWxkKFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIHBvcHVwITogUG9wdXBDb250YWluZXJEaXJlY3RpdmU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFVuc3Vic2NyaWJlIGFueSBhY3RpdmUgc3Vic2NyaXB0aW9ucyB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjb21wb25lbnREZXN0cm95ZWQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBTdWJzY3JpYmUgdG8gY2hhbmdlcyB0byB0aGUgbWVudSBzdGF0dXNcclxuICAgKi9cclxuICBwdWJsaWMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnBvcHVwLnBvcHBlclN0YXR1c0NoYW5nZVxyXG4gICAgLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkKSlcclxuICAgIC5zdWJzY3JpYmUoKGV2ZW50OiAndmlzaWJsZScgfCAnaGlkZGVuJykgPT4ge1xyXG4gICAgICB0aGlzLm1lbnVTdGF0dXMgPSBldmVudDtcclxuICAgICAgaWYodGhpcy5tZW51U3RhdHVzID09PSAndmlzaWJsZScpIHtcclxuICAgICAgICB0aGlzLnBvcHVwT3BlbmVkLmVtaXQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdXAgdGhlIHBvcHVwXHJcbiAgICovXHJcbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGxldCBwb3BwZXJPcHRpb25zOiBQb3BwZXIuUG9wcGVyT3B0aW9ucyA9IHtcclxuXHRcdFx0bW9kaWZpZXJzOiB7XHJcblx0XHRcdFx0cHJldmVudE92ZXJmbG93OiB7XHJcblx0XHRcdFx0XHRib3VuZGFyaWVzRWxlbWVudDogJ3ZpZXdwb3J0J1xyXG5cdFx0XHRcdH1cclxuICAgICAgfSxcclxuICAgICAgcGxhY2VtZW50OiAnYm90dG9tLWVuZCdcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMubWVudVBvc2l0aW9uID09PSAnbGVmdCcpIHtcclxuICAgICAgcG9wcGVyT3B0aW9ucy5wbGFjZW1lbnQgPSAnYm90dG9tLXN0YXJ0JztcclxuICAgIH1cclxuXHJcblxyXG4gICAgaWYgKHRoaXMucG9wdXBGaXhlZCkge1xyXG4gICAgICBwb3BwZXJPcHRpb25zLm9uQ3JlYXRlID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucG9wdXAuZml4UG9zaXRpb24oKTtcclxuICAgICAgfVxyXG5cclxuXHRcdFx0cG9wcGVyT3B0aW9ucy5vblVwZGF0ZSA9ICgpID0+IHtcclxuICAgICAgICAvLyBIaWRlIHRoZSBwb3B1cCB3aGVuIHRoZSBkcm9wZG93biBjaGFuZ2VzIHBvc2l0aW9uIGR1ZSB0byB3aW5kb3cgcmVzaXplXHJcbiAgICAgICAgLy8gb3IgY29udGFpbmVyIHNjcm9sbGluZ1xyXG4gICAgICAgIHRoaXMucG9wdXAuaGlkZSgpO1xyXG5cdFx0XHR9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wb3B1cC5wb3BwZXJPcHRpb25zID0gcG9wcGVyT3B0aW9ucztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVuc3Vic2NyaWJlIHRvIGFueSBhY3RpdmUgc3Vic2NyaXB0aW9uc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuY29tcG9uZW50RGVzdHJveWVkLm5leHQoKTtcclxuICAgIHRoaXMuY29tcG9uZW50RGVzdHJveWVkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGFuZCBjbG9zZSB0aGUgbWVudVxyXG4gICAqL1xyXG4gIHB1YmxpYyB0b2dnbGVNZW51KGV2ZW50PzpFdmVudCk6dm9pZCB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuXHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIGlmICh0aGlzLm1lbnVTdGF0dXMgPT09ICdoaWRkZW4nKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNLZXlib2FyZEV2ZW50ICYmIHRoaXMuaXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAvLyBTZXR1cCB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCB0byBoaWdobGlnaHQgd2hlbiBvcGVuaW5nIHRoZVxyXG4gICAgICAgICAgLy8gbWVudSB2aWEgdGhlIGtleWJvYXJkLCBpZ25vcmluZyBoZWFkaW5nc1xyXG5cclxuICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRJdGVtID0gdGhpcy5pdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5kaXNwbGF5ICE9PSAnaGVhZGluZycpIHx8IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucG9wdXAuc2hvdygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucG9wdXAuaGlkZSgpO1xyXG5cclxuICAgICAgICAvLyBSZXNldCB0aGUgaGlnaGxpZ2h0ZWQgaXRlbSBhbmQgb3VyIGtleWJvYXJkIGZsYWdcclxuICAgICAgICAvLyB3aGVuIHdlIGNsb3NlIHRoZSBwb3B1cFxyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRJdGVtID0gbnVsbDtcclxuICAgICAgICB0aGlzLmlzS2V5Ym9hcmRFdmVudCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0IHRoZSBzZWxlY3RlZCBpdGVtIHdoZW4gaXQgY2hhbmdlcyBhbmQgY2xvc2UgdGhlIG1lbnVcclxuICAgKi9cclxuICBwdWJsaWMgc2VsZWN0ZWRDaGFuZ2VkKGl0ZW06TWVudUl0ZW0pOnZvaWQge1xyXG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChpdGVtKTtcclxuICAgIHRoaXMudG9nZ2xlTWVudSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvc2VzIHRoZSBtZW51IGlmIHRoZSB0YWIga2V5IGlzIHByZXNzZWRcclxuICAgKi9cclxuICBwdWJsaWMga2V5TmF2aWdhdGUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcbiAgICAgIGNhc2UgJ0VudGVyJzpcclxuICAgICAgICB0aGlzLmlzS2V5Ym9hcmRFdmVudCA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XHJcbiAgICAgIGNhc2UgJ1RhYic6XHJcbiAgICAgICAgaWYgKHRoaXMubWVudVN0YXR1cyA9PT0gJ3Zpc2libGUnKSB7XHJcbiAgICAgICAgICB0aGlzLnRvZ2dsZU1lbnUoZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Component, ElementRef, Input, ViewChild } from '@angular/core';
|
|
3
|
-
import { FormControl, FormGroup } from '@angular/forms';
|
|
4
|
-
import { takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { ValidationMessageService } from '../../core/validation-message.service';
|
|
6
|
-
import { FormGroupHelper } from '../../shared/form-group.helper';
|
|
7
|
-
import { FormControlBase } from '../form-control-base';
|
|
8
|
-
export const FileTypeExtensions = {
|
|
9
|
-
zip: ['.zip'],
|
|
10
|
-
excel: ['.xls', '.xlsx']
|
|
11
|
-
};
|
|
12
|
-
export class FileUploadComponent extends FormControlBase {
|
|
13
|
-
constructor(validationMessageService, formGroupHelper) {
|
|
14
|
-
super(validationMessageService, formGroupHelper);
|
|
15
|
-
this.validationMessageService = validationMessageService;
|
|
16
|
-
this.formGroupHelper = formGroupHelper;
|
|
17
|
-
/**
|
|
18
|
-
* The value of the textbox input's placeholder
|
|
19
|
-
*/
|
|
20
|
-
this.placeholder = "Choose file...";
|
|
21
|
-
/**
|
|
22
|
-
* File output, determines which properties are supplied on the formModel
|
|
23
|
-
*/
|
|
24
|
-
this.fileOutput = 'base64';
|
|
25
|
-
}
|
|
26
|
-
// static class to create the form group from a parent component
|
|
27
|
-
static getFormModel(validators, disabled = false) {
|
|
28
|
-
let formGroup = new FormGroup({
|
|
29
|
-
file: new FormControl({ value: null, disabled: disabled }, validators),
|
|
30
|
-
name: new FormControl({ value: null, disabled: disabled }, validators),
|
|
31
|
-
base64FileString: new FormControl(null),
|
|
32
|
-
uploadResult: new FormControl(null)
|
|
33
|
-
});
|
|
34
|
-
if (disabled) {
|
|
35
|
-
formGroup.disable();
|
|
36
|
-
}
|
|
37
|
-
return formGroup;
|
|
38
|
-
}
|
|
39
|
-
ngOnChanges(changes) {
|
|
40
|
-
super.ngOnChanges(changes);
|
|
41
|
-
this.updateFileTypeAccept();
|
|
42
|
-
}
|
|
43
|
-
ngOnInit() {
|
|
44
|
-
var _a, _b;
|
|
45
|
-
super.ngOnInit();
|
|
46
|
-
// Watch for name to change, if the value is cleared we will clear the other
|
|
47
|
-
// supporting model properties. The name can be cleared by the user manually or via
|
|
48
|
-
// the clear button
|
|
49
|
-
(_b = (_a = this.formModel) === null || _a === void 0 ? void 0 : _a.get('name')) === null || _b === void 0 ? void 0 : _b.valueChanges.pipe(takeUntil(this.componentDestroyed)).subscribe(value => {
|
|
50
|
-
if (!value) {
|
|
51
|
-
this.formModel.patchValue({
|
|
52
|
-
file: null,
|
|
53
|
-
base64FileString: null,
|
|
54
|
-
uploadResult: null
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
fileChange(files) {
|
|
60
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
-
let file = files.item(0);
|
|
62
|
-
// If there is a file selected and then opened again and click cancel you get null so don't try and set anything
|
|
63
|
-
if (file) {
|
|
64
|
-
let reader = new FileReader();
|
|
65
|
-
reader.onloadend = (e) => __awaiter(this, void 0, void 0, function* () {
|
|
66
|
-
var _a;
|
|
67
|
-
let base64FileString = (_a = reader === null || reader === void 0 ? void 0 : reader.result) === null || _a === void 0 ? void 0 : _a.toString().split(",")[1];
|
|
68
|
-
this.processFile(file, base64FileString);
|
|
69
|
-
});
|
|
70
|
-
if (this.isBase64FileOutput()) {
|
|
71
|
-
reader.readAsDataURL(file);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
yield this.processFile(file);
|
|
75
|
-
}
|
|
76
|
-
// Clear the file inputs value, this will allow the user to pick the same filename and cause
|
|
77
|
-
// the fileChange to trigger.
|
|
78
|
-
if (this.fileInput) {
|
|
79
|
-
this.fileInput.nativeElement.value = '';
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Checks the file type and updates the file type accept property. This is what determines the file
|
|
86
|
-
* type choices that the user will be limited to in the file browse dialog
|
|
87
|
-
*/
|
|
88
|
-
updateFileTypeAccept() {
|
|
89
|
-
if (this.fileType) {
|
|
90
|
-
if (this.fileType !== "custom") {
|
|
91
|
-
this.fileTypeAccept = FileTypeExtensions[this.fileType].join(",");
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
if (this.customExtensions) {
|
|
95
|
-
this.fileTypeAccept = this.customExtensions.join(",");
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Take a file that was selected by the user and process/patch our form model
|
|
102
|
-
* If the host component requires an action to occur with the file prior to the patch it will call
|
|
103
|
-
* and wait for it to return.
|
|
104
|
-
* @param file
|
|
105
|
-
* @param base64FileString Optional: Will have a value provided if the fileOutput is set to base64
|
|
106
|
-
*/
|
|
107
|
-
processFile(file, base64FileString) {
|
|
108
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
109
|
-
if (this.onFileSelected) {
|
|
110
|
-
try {
|
|
111
|
-
let result = yield this.onFileSelected(file);
|
|
112
|
-
this.patchFileResult(file, base64FileString, result);
|
|
113
|
-
}
|
|
114
|
-
catch (e) {
|
|
115
|
-
// Bummer, we're not going to do anything about it though.
|
|
116
|
-
// We are not patching any of the result so any existing information remains
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
this.patchFileResult(file, base64FileString);
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Based on the fileOutput return whether this component is expected to deliver a base64 output
|
|
126
|
-
* @returns
|
|
127
|
-
*/
|
|
128
|
-
isBase64FileOutput() {
|
|
129
|
-
return this.fileOutput === 'base64';
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* When the file was selected and processed patch the file information that the hosting form will
|
|
133
|
-
* be looking for.
|
|
134
|
-
* @param file
|
|
135
|
-
* @param base64FileString
|
|
136
|
-
* @param onFileSelectedResult
|
|
137
|
-
*/
|
|
138
|
-
patchFileResult(file, base64FileString, onFileSelectedResult) {
|
|
139
|
-
var _a;
|
|
140
|
-
(_a = this.formModel) === null || _a === void 0 ? void 0 : _a.patchValue({
|
|
141
|
-
file: file,
|
|
142
|
-
name: file === null || file === void 0 ? void 0 : file.name,
|
|
143
|
-
base64FileString: base64FileString !== null && base64FileString !== void 0 ? base64FileString : null
|
|
144
|
-
});
|
|
145
|
-
if (onFileSelectedResult) {
|
|
146
|
-
this.formModel.patchValue({ uploadResult: onFileSelectedResult });
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
this.formModel.patchValue({ uploadResult: null });
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
FileUploadComponent.decorators = [
|
|
154
|
-
{ type: Component, args: [{
|
|
155
|
-
selector: "ec-file-upload",
|
|
156
|
-
template: "<ec-form-group [label]=\"label\"\r\n [formGroup]=\"formModel\"\r\n class=\"mb-0\">\r\n <div class=\"d-flex control-group\">\r\n <div class=\"d-flex flex-grow position-relative\">\r\n <input #fileInput\r\n id=\"{{inputId}}_input\"\r\n type=\"file\"\r\n tabindex=\"-1\"\r\n [attr.accept]=\"fileTypeAccept\"\r\n (click)=\"browseBtn.focus()\"\r\n (change)=\"fileChange($event.target.files)\"\r\n [class.has-value]=\"formModel?.get('name')?.value\">\r\n <ec-form-control id=\"{{inputId}}_formControl\"\r\n class=\"text-truncate\"\r\n [required]=\"required\"\r\n [pending]=\"pending\">\r\n <input id=\"{{inputId}}_name\"\r\n [formControl]=\"formModel?.get('name')\"\r\n type=\"text\"\r\n [placeholder]=\"placeholder\"\r\n [tabindex]=\"-1\">\r\n </ec-form-control>\r\n </div>\r\n <ec-button #browseBtn\r\n id=\"{{inputId}}_browseBtn\"\r\n (clicked)=\"fileInput.click()\"\r\n type=\"secondary\"\r\n [tabindex]=\"tabindex\"\r\n [disabled]=\"formModel?.get('name')?.disabled\"\r\n label=\"Browse\"\r\n [autofocus]=\"autofocus\">\r\n </ec-button>\r\n </div>\r\n</ec-form-group>",
|
|
157
|
-
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;margin-bottom:1rem}ec-form-control{margin-bottom:0}ec-form-control ::ng-deep>.ec-focus-ring{display:none!important}input[type=file]{cursor:pointer;display:block;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:1}input[type=file].has-value{width:calc(100% - 1.5rem)}"]
|
|
158
|
-
},] }
|
|
159
|
-
];
|
|
160
|
-
FileUploadComponent.ctorParameters = () => [
|
|
161
|
-
{ type: ValidationMessageService },
|
|
162
|
-
{ type: FormGroupHelper }
|
|
163
|
-
];
|
|
164
|
-
FileUploadComponent.propDecorators = {
|
|
165
|
-
placeholder: [{ type: Input }],
|
|
166
|
-
fileType: [{ type: Input }],
|
|
167
|
-
fileOutput: [{ type: Input }],
|
|
168
|
-
customExtensions: [{ type: Input }],
|
|
169
|
-
onFileSelected: [{ type: Input }],
|
|
170
|
-
fileInput: [{ type: ViewChild, args: ["fileInput", { read: ElementRef, static: true },] }]
|
|
171
|
-
};
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFvQyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUt2RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDYixLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO0NBQ3pCLENBQUM7QUFPRixNQUFNLE9BQU8sbUJBQW9CLFNBQVEsZUFBZTtJQWtEdEQsWUFDWSx3QkFBa0QsRUFDbEQsZUFBZ0M7UUFFMUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBSHZDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBakM1Qzs7V0FFRztRQUNhLGdCQUFXLEdBQVksZ0JBQWdCLENBQUM7UUFReEQ7O1dBRUc7UUFDYSxlQUFVLEdBQWdCLFFBQVEsQ0FBQztJQXNCbkQsQ0FBQztJQXJERCxnRUFBZ0U7SUFDekQsTUFBTSxDQUFDLFlBQVksQ0FD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QkFBb0IsRUFBRSxDQUFDLENBQUM7U0FDbkU7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDOzs7WUFqTEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLHM2Q0FBMkM7O2FBRTVDOzs7WUFoQlEsd0JBQXdCO1lBQ3hCLGVBQWU7OzswQkFzQ3JCLEtBQUs7dUJBTUwsS0FBSzt5QkFLTCxLQUFLOytCQUdMLEtBQUs7NkJBT0wsS0FBSzt3QkFFTCxTQUFTLFNBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3ZhbGlkYXRpb24tbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwSGVscGVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xCYXNlIH0gZnJvbSAnLi4vZm9ybS1jb250cm9sLWJhc2UnO1xyXG5cclxuZXhwb3J0IHR5cGUgRmlsZVR5cGUgPSAnemlwJyB8ICdleGNlbCcgfCAnY3VzdG9tJztcclxuZXhwb3J0IHR5cGUgRmlsZU91dHB1dCA9ICdyYXcnIHwgJ2Jhc2U2NCc7XHJcblxyXG5leHBvcnQgY29uc3QgRmlsZVR5cGVFeHRlbnNpb25zID0ge1xyXG4gIHppcDogWycuemlwJ10sXHJcbiAgZXhjZWw6IFsnLnhscycsICcueGxzeCddXHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJlYy1maWxlLXVwbG9hZFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8vIHN0YXRpYyBjbGFzcyB0byBjcmVhdGUgdGhlIGZvcm0gZ3JvdXAgZnJvbSBhIHBhcmVudCBjb21wb25lbnRcclxuICBwdWJsaWMgc3RhdGljIGdldEZvcm1Nb2RlbChcclxuICAgIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10sXHJcbiAgICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKTogRm9ybUdyb3VwIHtcclxuICAgIGxldCBmb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgICAgZmlsZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBkaXNhYmxlZCB9LCB2YWxpZGF0b3JzKSxcclxuICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBkaXNhYmxlZCB9LCB2YWxpZGF0b3JzKSxcclxuICAgICAgYmFzZTY0RmlsZVN0cmluZzogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICB1cGxvYWRSZXN1bHQ6IG5ldyBGb3JtQ29udHJvbChudWxsKVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgZm9ybUdyb3VwLmRpc2FibGUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JtR3JvdXA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHRleHRib3ggaW5wdXQncyBwbGFjZWhvbGRlclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcj86IHN0cmluZyA9IFwiQ2hvb3NlIGZpbGUuLi5cIjtcclxuXHJcbiAgLyoqIENvbW1vbiBleHRlbnNpb25zIGZvciBhIGZpbGUgYnJvd3NpbmcgZGlhbG9nXHJcbiAgICogIE5vdGU6IEVkZ2UgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYWNjZXB0IGF0dHJpYnV0ZSBvbiBmaWxlIGlucHV0cywgdGhlcmVmb3IgYWxsIGZpbGUgdHlwZXNcclxuICAgKiAgICAgICAgd2lsbCBiZSBzaG93bi4gIEZpcmVmb3ggYW5kIENocm9tZSBib3RoIHN1cHBvcnQgdGhpcyBmZWF0dXJlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWxlVHlwZT86IEZpbGVUeXBlIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBGaWxlIG91dHB1dCwgZGV0ZXJtaW5lcyB3aGljaCBwcm9wZXJ0aWVzIGFyZSBzdXBwbGllZCBvbiB0aGUgZm9ybU1vZGVsXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGZpbGVPdXRwdXQ/OiBGaWxlT3V0cHV0ID0gJ2Jhc2U2NCc7XHJcblxyXG4gIC8qKiBJZiBmaWxlVHlwZSBpcyBzZXQgdG8gY3VzdG9tIHNldCB0aGUgYWNjZXB0YWJsZSBmaWxlIHR5cGVzIGJhc2VkIG9uIHRoZSBjdXN0b20gYXJyYXkgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tRXh0ZW5zaW9ucz86IEFycmF5PHN0cmluZz4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsIGNhbGxiYWNrIHN1cHBvcnRlZCBpZiB0aGUgaG9zdGluZyBwYWdlIG5lZWRzIHRvIHByb2Nlc3MgdGhlIGZpbGUgYmVmb3JlXHJcbiAgICogc2V0dGluZyB0aGUgZm9ybU1vZGVsIHdpdGggdGhlIGZpbGUgaW5mb3JtYXRpb24uIElmIHRoZSBwcm9taXNlIHJlc29sdmVzIGl0IHdpbGwgY29udGludWVcclxuICAgKiBhbmQgc2V0IHRoZSBmaWxlIG5hbWUgYW5kIGNvbnRlbnRzIHRvIHRoZSBmb3JtTW9kZWwsIG90aGVyd2lzZSBvbiBmYWlsdXJlIGl0J2xsIGRvIG5vdGhpbmcuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIG9uRmlsZVNlbGVjdGVkPzogKGZpbGU6IEZpbGUpID0+IFByb21pc2U8YW55PjtcclxuXHJcbiAgQFZpZXdDaGlsZChcImZpbGVJbnB1dFwiLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgZmlsZUlucHV0PzogRWxlbWVudFJlZjtcclxuXHJcbiAgLyoqIFByb3BlcnR5IGJvdW5kIHRvIHRoZSBmaWxlIGlucHV0IHRvIGZpbHRlciB3aGF0IGZpbGUgdHlwZXMgYXJlIHNob3duIGluIHRoZSBkaWFsb2cgKi9cclxuICBwdWJsaWMgZmlsZVR5cGVBY2NlcHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgdmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlOiBWYWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcm90ZWN0ZWQgZm9ybUdyb3VwSGVscGVyOiBGb3JtR3JvdXBIZWxwZXJcclxuICApIHtcclxuICAgIHN1cGVyKHZhbGlkYXRpb25NZXNzYWdlU2VydmljZSwgZm9ybUdyb3VwSGVscGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUZpbGVUeXBlQWNjZXB0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuICAgIC8vIFdhdGNoIGZvciBuYW1lIHRvIGNoYW5nZSwgaWYgdGhlIHZhbHVlIGlzIGNsZWFyZWQgd2Ugd2lsbCBjbGVhciB0aGUgb3RoZXJcclxuICAgIC8vIHN1cHBvcnRpbmcgbW9kZWwgcHJvcGVydGllcy4gVGhlIG5hbWUgY2FuIGJlIGNsZWFyZWQgYnkgdGhlIHVzZXIgbWFudWFsbHkgb3IgdmlhXHJcbiAgICAvLyB0aGUgY2xlYXIgYnV0dG9uXHJcbiAgICB0aGlzLmZvcm1Nb2RlbD8uZ2V0KCduYW1lJyk/LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQpXHJcbiAgICApLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICB0aGlzLmZvcm1Nb2RlbC5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgICAgICAgICBiYXNlNjRGaWxlU3RyaW5nOiBudWxsLFxyXG4gICAgICAgICAgdXBsb2FkUmVzdWx0OiBudWxsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGZpbGVDaGFuZ2UoZmlsZXM6IEZpbGVMaXN0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgZmlsZTogRmlsZSB8IG51bGwgPSBmaWxlcy5pdGVtKDApO1xyXG5cclxuICAgIC8vIElmIHRoZXJlIGlzIGEgZmlsZSBzZWxlY3RlZCBhbmQgdGhlbiBvcGVuZWQgYWdhaW4gYW5kIGNsaWNrIGNhbmNlbCB5b3UgZ2V0IG51bGwgc28gZG9uJ3QgdHJ5IGFuZCBzZXQgYW55dGhpbmdcclxuICAgIGlmIChmaWxlKSB7XHJcbiAgICAgIGxldCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9IGFzeW5jIGUgPT4ge1xyXG4gICAgICAgIGxldCBiYXNlNjRGaWxlU3RyaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQgPSByZWFkZXI/LnJlc3VsdD8udG9TdHJpbmcoKS5zcGxpdChcIixcIilbMV07XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzRmlsZShmaWxlISwgYmFzZTY0RmlsZVN0cmluZyk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAodGhpcy5pc0Jhc2U2NEZpbGVPdXRwdXQoKSkge1xyXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGF3YWl0IHRoaXMucHJvY2Vzc0ZpbGUoZmlsZSEpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDbGVhciB0aGUgZmlsZSBpbnB1dHMgdmFsdWUsIHRoaXMgd2lsbCBhbGxvdyB0aGUgdXNlciB0byBwaWNrIHRoZSBzYW1lIGZpbGVuYW1lIGFuZCBjYXVzZVxyXG4gICAgICAvLyB0aGUgZmlsZUNoYW5nZSB0byB0cmlnZ2VyLlxyXG4gICAgICBpZiAodGhpcy5maWxlSW5wdXQpIHtcclxuICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyB0aGUgZmlsZSB0eXBlIGFuZCB1cGRhdGVzIHRoZSBmaWxlIHR5cGUgYWNjZXB0IHByb3BlcnR5LiBUaGlzIGlzIHdoYXQgZGV0ZXJtaW5lcyB0aGUgZmlsZVxyXG4gICAqIHR5cGUgY2hvaWNlcyB0aGF0IHRoZSB1c2VyIHdpbGwgYmUgbGltaXRlZCB0byBpbiB0aGUgZmlsZSBicm93c2UgZGlhbG9nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVGaWxlVHlwZUFjY2VwdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZpbGVUeXBlKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpbGVUeXBlICE9PSBcImN1c3RvbVwiKSB7XHJcbiAgICAgICAgdGhpcy5maWxlVHlwZUFjY2VwdCA9IEZpbGVUeXBlRXh0ZW5zaW9uc1t0aGlzLmZpbGVUeXBlXS5qb2luKFwiLFwiKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5jdXN0b21FeHRlbnNpb25zKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVUeXBlQWNjZXB0ID0gdGhpcy5jdXN0b21FeHRlbnNpb25zLmpvaW4oXCIsXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGFrZSBhIGZpbGUgdGhhdCB3YXMgc2VsZWN0ZWQgYnkgdGhlIHVzZXIgYW5kIHByb2Nlc3MvcGF0Y2ggb3VyIGZvcm0gbW9kZWxcclxuICAgKiBJZiB0aGUgaG9zdCBjb21wb25lbnQgcmVxdWlyZXMgYW4gYWN0aW9uIHRvIG9jY3VyIHdpdGggdGhlIGZpbGUgcHJpb3IgdG8gdGhlIHBhdGNoIGl0IHdpbGwgY2FsbFxyXG4gICAqIGFuZCB3YWl0IGZvciBpdCB0byByZXR1cm4uXHJcbiAgICogQHBhcmFtIGZpbGUgXHJcbiAgICogQHBhcmFtIGJhc2U2NEZpbGVTdHJpbmcgT3B0aW9uYWw6IFdpbGwgaGF2ZSBhIHZhbHVlIHByb3ZpZGVkIGlmIHRoZSBmaWxlT3V0cHV0IGlzIHNldCB0byBiYXNlNjRcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NGaWxlKGZpbGU6IEZpbGUsIGJhc2U2NEZpbGVTdHJpbmc/OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLm9uRmlsZVNlbGVjdGVkKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMub25GaWxlU2VsZWN0ZWQoZmlsZSk7XHJcbiAgICAgICAgdGhpcy5wYXRjaEZpbGVSZXN1bHQoZmlsZSwgYmFzZTY0RmlsZVN0cmluZywgcmVzdWx0KTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIC8vIEJ1bW1lciwgd2UncmUgbm90IGdvaW5nIHRvIGRvIGFueXRoaW5nIGFib3V0IGl0IHRob3VnaC4gXHJcbiAgICAgICAgLy8gV2UgYXJlIG5vdCBwYXRjaGluZyBhbnkgb2YgdGhlIHJlc3VsdCBzbyBhbnkgZXhpc3RpbmcgaW5mb3JtYXRpb24gcmVtYWluc1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBhdGNoRmlsZVJlc3VsdChmaWxlLCBiYXNlNjRGaWxlU3RyaW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJhc2VkIG9uIHRoZSBmaWxlT3V0cHV0IHJldHVybiB3aGV0aGVyIHRoaXMgY29tcG9uZW50IGlzIGV4cGVjdGVkIHRvIGRlbGl2ZXIgYSBiYXNlNjQgb3V0cHV0XHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpc0Jhc2U2NEZpbGVPdXRwdXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlT3V0cHV0ID09PSAnYmFzZTY0JztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZW4gdGhlIGZpbGUgd2FzIHNlbGVjdGVkIGFuZCBwcm9jZXNzZWQgcGF0Y2ggdGhlIGZpbGUgaW5mb3JtYXRpb24gdGhhdCB0aGUgaG9zdGluZyBmb3JtIHdpbGxcclxuICAgKiBiZSBsb29raW5nIGZvci4gXHJcbiAgICogQHBhcmFtIGZpbGUgXHJcbiAgICogQHBhcmFtIGJhc2U2NEZpbGVTdHJpbmcgXHJcbiAgICogQHBhcmFtIG9uRmlsZVNlbGVjdGVkUmVzdWx0IFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGF0Y2hGaWxlUmVzdWx0KGZpbGU6IEZpbGUgfCBudWxsLCBiYXNlNjRGaWxlU3RyaW5nPzogc3RyaW5nLCBvbkZpbGVTZWxlY3RlZFJlc3VsdD86IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtTW9kZWw/LnBhdGNoVmFsdWUoeyBcclxuICAgICAgZmlsZTogZmlsZSwgXHJcbiAgICAgIG5hbWU6IGZpbGU/Lm5hbWUsIFxyXG4gICAgICBiYXNlNjRGaWxlU3RyaW5nOiBiYXNlNjRGaWxlU3RyaW5nID8/IG51bGxcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChvbkZpbGVTZWxlY3RlZFJlc3VsdCkge1xyXG4gICAgICB0aGlzLmZvcm1Nb2RlbC5wYXRjaFZhbHVlKHsgdXBsb2FkUmVzdWx0OiBvbkZpbGVTZWxlY3RlZFJlc3VsdCB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybU1vZGVsLnBhdGNoVmFsdWUoeyB1cGxvYWRSZXN1bHQ6IG51bGwgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, ViewEncapsulation, ContentChild } from '@angular/core';
|
|
2
|
-
import { AbstractControl, FormControlDirective } from '@angular/forms';
|
|
3
|
-
export class FormControlComponent {
|
|
4
|
-
constructor(el) {
|
|
5
|
-
this.el = el;
|
|
6
|
-
this.id = '';
|
|
7
|
-
this.showClear = true;
|
|
8
|
-
this.pending = false;
|
|
9
|
-
this.required = false;
|
|
10
|
-
this.readonly = false;
|
|
11
|
-
this.actionClicked = new EventEmitter();
|
|
12
|
-
}
|
|
13
|
-
get empty() { var _a, _b; return !((_a = this.formModel) === null || _a === void 0 ? void 0 : _a.value) && ((_b = this.formModel) === null || _b === void 0 ? void 0 : _b.value) !== 0; }
|
|
14
|
-
;
|
|
15
|
-
get invalid() { var _a; return ((_a = this.formModel) === null || _a === void 0 ? void 0 : _a.touched) == true && this.formModel.invalid == true; }
|
|
16
|
-
;
|
|
17
|
-
get disabled() { var _a; return ((_a = this.formModel) === null || _a === void 0 ? void 0 : _a.disabled) == true; }
|
|
18
|
-
;
|
|
19
|
-
ngAfterViewInit() {
|
|
20
|
-
if (!this.formModel) {
|
|
21
|
-
console.error('Missing [formControl] directive on ec-form-control content.');
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
onClick() {
|
|
25
|
-
this.focus();
|
|
26
|
-
}
|
|
27
|
-
focus() {
|
|
28
|
-
const el = this.el.nativeElement;
|
|
29
|
-
const inputs = el.querySelectorAll('input, textarea, select');
|
|
30
|
-
if (inputs.length) {
|
|
31
|
-
inputs.item(0).focus();
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
clear() {
|
|
35
|
-
var _a;
|
|
36
|
-
(_a = this.formModel) === null || _a === void 0 ? void 0 : _a.reset();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
FormControlComponent.decorators = [
|
|
40
|
-
{ type: Component, args: [{
|
|
41
|
-
selector: 'ec-form-control',
|
|
42
|
-
template: "<ng-content></ng-content>\r\n<i id=\"{{id + '_icon'}}\" class=\"ec-form-control-icon ec-icon {{icon}}\"></i>\r\n<i id=\"{{id + '_loading'}}\" class=\"ec-form-control-icon ec-icon icon-loading\"></i>\r\n<i id=\"{{id + '_required'}}\" class=\"ec-form-control-icon ec-icon icon-required\"></i>\r\n<i id=\"{{id + '_invalid'}}\" class=\"ec-form-control-icon ec-icon icon-invalid\"></i>\r\n<i id=\"{{id + '_clear'}}\" *ngIf=\"showClear\" class=\"ec-form-control-clear ec-icon icon-cancel\" (click)=\"clear()\"></i>\r\n<i id=\"{{id + '_action'}}\" *ngIf=\"actionIcon\" class=\"ec-form-control-action ec-icon {{actionIcon}}\" (click)=\"actionClicked.emit()\"></i>\r\n<div class=\"ec-focus-ring\"></div>",
|
|
43
|
-
encapsulation: ViewEncapsulation.None,
|
|
44
|
-
styles: ["ec-form-control{background-clip:padding-box;background-color:var(--ec-background-color);border:1px solid var(--ec-border-color);border-radius:var(--ec-border-radius);color:var(--ec-color-primary-dark);display:flex;font-size:var(--ec-font-size-body);min-height:2rem;padding:0 .5rem;position:relative;width:100%}ec-form-control>input,ec-form-control>select,ec-form-control>textarea{background-color:transparent;border:0;color:inherit;flex:1 1;min-width:0;order:2}ec-form-control>input::-moz-selection,ec-form-control>select::-moz-selection,ec-form-control>textarea::-moz-selection{background-color:var(--ec-color-interactive);color:var(--ec-color-primary-light)}ec-form-control>input::selection,ec-form-control>select::selection,ec-form-control>textarea::selection{background-color:var(--ec-color-interactive);color:var(--ec-color-primary-light)}ec-form-control>input::-webkit-input-placeholder,ec-form-control>select::-webkit-input-placeholder,ec-form-control>textarea::-webkit-input-placeholder{color:var(--ec-color-hint-dark)}ec-form-control>input::-moz-placeholder,ec-form-control>select::-moz-placeholder,ec-form-control>textarea::-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}ec-form-control>input:-ms-input-placeholder,ec-form-control>select:-ms-input-placeholder,ec-form-control>textarea:-ms-input-placeholder{color:var(--ec-color-hint-dark)}ec-form-control>input:-moz-placeholder,ec-form-control>select:-moz-placeholder,ec-form-control>textarea:-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}ec-form-control>input:focus,ec-form-control>select:focus,ec-form-control>textarea:focus{outline:none}ec-form-control>input:focus~.ec-focus-ring,ec-form-control>select:focus~.ec-focus-ring,ec-form-control>textarea:focus~.ec-focus-ring{display:block}ec-form-control .ec-form-control-prefix,ec-form-control .ec-form-control-suffix,ec-form-control>input,ec-form-control>select,ec-form-control>textarea{font-size:inherit;line-height:1.25;padding:calc(.9375rem - var(--ec-font-size-body)*1.25/2) 0}ec-form-control>textarea{padding:.3125rem 0;resize:none}ec-form-control .ec-form-control-icon{margin-right:.25rem;margin-top:.4375rem;order:1}ec-form-control .ec-form-control-icon:not([class*=icon-]){display:none}ec-form-control .icon-required{color:var(--ec-color-caution)}ec-form-control .ec-form-control-action,ec-form-control .ec-form-control-clear{cursor:pointer;flex:none;height:1.875rem;order:3;width:2rem}ec-form-control .ec-form-control-action:last-of-type,ec-form-control .ec-form-control-clear:last-of-type{margin-right:-.5rem}ec-form-control .ec-form-control-action:hover,ec-form-control .ec-form-control-clear:hover{background-color:var(--ec-background-color-hover)}ec-form-control .ec-form-control-clear{width:1.5rem}ec-form-control .ec-form-control-prefix,ec-form-control .ec-form-control-suffix{color:var(--ec-color-secondary-dark);cursor:default;flex:none}ec-form-control .ec-form-control-prefix{margin-right:.125rem;order:2}ec-form-control .ec-form-control-suffix{margin-left:.125rem;order:3}ec-form-control .ec-focus-ring{border:.125rem solid var(--ec-border-color-focus);border-radius:var(--ec-border-radius);bottom:-1px;display:none;left:-1px;pointer-events:none;position:absolute;right:-1px;top:-1px;z-index:1}ec-form-control.is-pending .icon-invalid,ec-form-control.is-pending .icon-required{display:none}ec-form-control.is-invalid{background-color:var(--ec-background-color-caution);border-color:var(--ec-color-caution)}ec-form-control.is-empty .ec-form-control-clear,ec-form-control.is-invalid .icon-required,ec-form-control.is-required.is-empty .ec-form-control-icon:first-of-type,ec-form-control:not(.is-empty) .icon-required,ec-form-control:not(.is-invalid) .icon-invalid,ec-form-control:not(.is-pending) .icon-loading,ec-form-control:not(.is-required) .icon-required{display:none}ec-form-control.is-disabled,ec-form-control.is-readonly{background-color:var(--ec-background-color-disabled)}ec-form-control.is-disabled .ec-form-control-clear,ec-form-control.is-disabled .icon-invalid,ec-form-control.is-disabled .icon-loading,ec-form-control.is-disabled .icon-required,ec-form-control.is-readonly .ec-form-control-clear,ec-form-control.is-readonly .icon-invalid,ec-form-control.is-readonly .icon-loading,ec-form-control.is-readonly .icon-required{display:none}ec-form-control.is-readonly{border-color:transparent;color:var(--ec-color-primary-dark)}ec-form-control.is-readonly .ec-form-control-action{display:none}ec-form-control.is-disabled:not(.is-readonly){color:var(--ec-color-disabled-dark);opacity:.6}ec-form-control.is-disabled:not(.is-readonly) .ec-form-control-prefix,ec-form-control.is-disabled:not(.is-readonly) .ec-form-control-suffix{color:inherit}"]
|
|
45
|
-
},] }
|
|
46
|
-
];
|
|
47
|
-
FormControlComponent.ctorParameters = () => [
|
|
48
|
-
{ type: ElementRef }
|
|
49
|
-
];
|
|
50
|
-
FormControlComponent.propDecorators = {
|
|
51
|
-
formModel: [{ type: ContentChild, args: [FormControlDirective,] }],
|
|
52
|
-
id: [{ type: Input }],
|
|
53
|
-
icon: [{ type: Input }],
|
|
54
|
-
actionIcon: [{ type: Input }],
|
|
55
|
-
showClear: [{ type: Input }],
|
|
56
|
-
pending: [{ type: Input }, { type: HostBinding, args: ['class.is-pending',] }],
|
|
57
|
-
required: [{ type: Input }, { type: HostBinding, args: ['class.is-required',] }],
|
|
58
|
-
readonly: [{ type: Input }, { type: HostBinding, args: ['class.is-readonly',] }],
|
|
59
|
-
empty: [{ type: HostBinding, args: ['class.is-empty',] }],
|
|
60
|
-
invalid: [{ type: HostBinding, args: ['class.is-invalid',] }],
|
|
61
|
-
disabled: [{ type: HostBinding, args: ['class.is-disabled',] }],
|
|
62
|
-
actionClicked: [{ type: Output }],
|
|
63
|
-
onClick: [{ type: HostListener, args: ['click',] }]
|
|
64
|
-
};
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBMkMsTUFBTSxlQUFlLENBQUE7QUFDL0wsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXZFLE1BQU0sT0FBTyxvQkFBb0I7SUFrQi9CLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBZmxCLE9BQUUsR0FBVyxFQUFFLENBQUM7UUFHdkIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVnQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2YsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBTWxELGtCQUFhLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFM0IsQ0FBQztJQU52QyxJQUFtQyxLQUFLLGlCQUFhLE9BQU8sUUFBQyxJQUFJLENBQUMsU0FBUywwQ0FBRSxLQUFLLENBQUEsSUFBSSxPQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLEtBQUssTUFBSyxDQUFDLENBQUEsQ0FBQSxDQUFDO0lBQUEsQ0FBQztJQUNuSCxJQUFxQyxPQUFPLGFBQWMsT0FBTyxPQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sS0FBSSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFBLENBQUEsQ0FBQztJQUFBLENBQUM7SUFDcEksSUFBc0MsUUFBUSxhQUFjLE9BQU8sT0FBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxRQUFRLEtBQUksSUFBSSxDQUFBLENBQUMsQ0FBQztJQUFBLENBQUM7SUFNdEcsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztTQUM5RTtJQUNILENBQUM7SUFHRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELEtBQUs7UUFDSCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQTRCLENBQUM7UUFDaEQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFjLHlCQUF5QixDQUFDLENBQUM7UUFDM0UsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUQsS0FBSzs7UUFDSCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLEtBQUssR0FBRztJQUMxQixDQUFDOzs7WUEvQ0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLGtzQkFBNEM7Z0JBRTVDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOzthQUN0Qzs7O1lBUm1CLFVBQVU7Ozt3QkFVM0IsWUFBWSxTQUFDLG9CQUFvQjtpQkFFakMsS0FBSzttQkFDTCxLQUFLO3lCQUNMLEtBQUs7d0JBQ0wsS0FBSztzQkFFTCxLQUFLLFlBQUksV0FBVyxTQUFDLGtCQUFrQjt1QkFDdkMsS0FBSyxZQUFJLFdBQVcsU0FBQyxtQkFBbUI7dUJBQ3hDLEtBQUssWUFBSSxXQUFXLFNBQUMsbUJBQW1CO29CQUV4QyxXQUFXLFNBQUMsZ0JBQWdCO3NCQUM1QixXQUFXLFNBQUMsa0JBQWtCO3VCQUM5QixXQUFXLFNBQUMsbUJBQW1COzRCQUUvQixNQUFNO3NCQVVOLFlBQVksU0FBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24sIENvbnRlbnRDaGlsZCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtZm9ybS1jb250cm9sJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1jb250cm9sLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWNvbnRyb2wuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29udHJvbENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXR7XHJcbiAgQENvbnRlbnRDaGlsZChGb3JtQ29udHJvbERpcmVjdGl2ZSkgZm9ybU1vZGVsPzogQWJzdHJhY3RDb250cm9sO1xyXG4gIFxyXG4gIEBJbnB1dCgpIHB1YmxpYyBpZDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgaWNvbj86IHN0cmluZztcclxuICBASW5wdXQoKSBhY3Rpb25JY29uPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dDbGVhciA9IHRydWU7XHJcbiAgXHJcbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1wZW5kaW5nJykgcGVuZGluZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuaXMtcmVxdWlyZWQnKSByZXF1aXJlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuaXMtcmVhZG9ubHknKSByZWFkb25seSA9IGZhbHNlO1xyXG4gIFxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtZW1wdHknKSBnZXQgZW1wdHkoKTpib29sZWFuIHsgcmV0dXJuICF0aGlzLmZvcm1Nb2RlbD8udmFsdWUgJiYgdGhpcy5mb3JtTW9kZWw/LnZhbHVlICE9PSAwfTtcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLWludmFsaWQnKSBnZXQgaW52YWxpZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZm9ybU1vZGVsPy50b3VjaGVkID09IHRydWUgJiYgdGhpcy5mb3JtTW9kZWwuaW52YWxpZCA9PSB0cnVlfTtcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLWRpc2FibGVkJykgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5mb3JtTW9kZWw/LmRpc2FibGVkID09IHRydWUgfTtcclxuICBcclxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLmZvcm1Nb2RlbCkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdNaXNzaW5nIFtmb3JtQ29udHJvbF0gZGlyZWN0aXZlIG9uIGVjLWZvcm0tY29udHJvbCBjb250ZW50LicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxyXG4gIG9uQ2xpY2soKSB7XHJcbiAgICB0aGlzLmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBmb2N1cygpIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgaW5wdXRzID0gZWwucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oJ2lucHV0LCB0ZXh0YXJlYSwgc2VsZWN0Jyk7XHJcbiAgICBpZiAoaW5wdXRzLmxlbmd0aCkge1xyXG4gICAgICBpbnB1dHMuaXRlbSgwKS5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLmZvcm1Nb2RlbD8ucmVzZXQoKTtcclxuICB9XHJcbn0iXX0=
|