@energycap/components 0.42.4-esbuild.20250131-1219 → 0.42.4-esbuild.20250131-1256
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/energycap-components.mjs +5 -0
- package/esm2022/lib/components.module.mjs +423 -0
- package/esm2022/lib/controls/banner/banner.component.mjs +109 -0
- package/esm2022/lib/controls/button/button.component.mjs +106 -0
- package/esm2022/lib/controls/button/copy-button-base.directive.mjs +67 -0
- package/esm2022/lib/controls/button/copy-button.directive.mjs +28 -0
- package/esm2022/lib/controls/button/copy-table-button.directive.mjs +43 -0
- package/esm2022/lib/controls/calendar/calendar-item.component.mjs +91 -0
- package/esm2022/lib/controls/calendar/calendar.component.mjs +248 -0
- package/esm2022/lib/controls/calendar/calendar.types.mjs +2 -0
- package/esm2022/lib/controls/checkbox/checkbox.component.mjs +140 -0
- package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -0
- package/esm2022/lib/controls/combobox/combobox.component.mjs +879 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +57 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +62 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +100 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +101 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +76 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +79 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +210 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +81 -0
- package/esm2022/lib/controls/date-input/date-input.component.mjs +464 -0
- package/esm2022/lib/controls/date-input/date-input.types.mjs +44 -0
- package/esm2022/lib/controls/dropdown/dropdown.component.mjs +243 -0
- package/esm2022/lib/controls/file-upload/file-upload.component.mjs +261 -0
- package/esm2022/lib/controls/form-control/form-control.component.mjs +98 -0
- package/esm2022/lib/controls/form-control-base.mjs +151 -0
- package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
- package/esm2022/lib/controls/form-group/form-group.component.mjs +261 -0
- package/esm2022/lib/controls/help-popover/help-popover.component.mjs +31 -0
- package/esm2022/lib/controls/item-picker/item-picker.component.mjs +329 -0
- package/esm2022/lib/controls/link-button/link-button.component.mjs +11 -0
- package/esm2022/lib/controls/menu/menu.component.mjs +485 -0
- package/esm2022/lib/controls/navigation/link-item.mjs +2 -0
- package/esm2022/lib/controls/navigation/nav-group.mjs +39 -0
- package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
- package/esm2022/lib/controls/navigation/nav-item.mjs +2 -0
- package/esm2022/lib/controls/numericbox/numericbox.component.mjs +372 -0
- package/esm2022/lib/controls/popover/popover.component.mjs +117 -0
- package/esm2022/lib/controls/radio-button/radio-button-option.mjs +3 -0
- package/esm2022/lib/controls/radio-button/radio-button.component.mjs +82 -0
- package/esm2022/lib/controls/select/select.component.mjs +88 -0
- package/esm2022/lib/controls/tabs/tabs.component.mjs +47 -0
- package/esm2022/lib/controls/textbox/textbox.component.mjs +155 -0
- package/esm2022/lib/core/cache.service.mjs +105 -0
- package/esm2022/lib/core/custom-validators.mjs +29 -0
- package/esm2022/lib/core/date-time-helper.mjs +228 -0
- package/esm2022/lib/core/error.service.mjs +61 -0
- package/esm2022/lib/core/router-helper.service.mjs +111 -0
- package/esm2022/lib/core/scroll.service.mjs +89 -0
- package/esm2022/lib/core/telemetry-tracker.service.mjs +16 -0
- package/esm2022/lib/core/telemetry.service.mjs +38 -0
- package/esm2022/lib/core/validation-message.service.mjs +185 -0
- package/esm2022/lib/core/validation-patterns.mjs +31 -0
- package/esm2022/lib/core/window.service.mjs +186 -0
- package/esm2022/lib/display/app-bar/app-bar.component.mjs +46 -0
- package/esm2022/lib/display/avatar/avatar.component.mjs +67 -0
- package/esm2022/lib/display/avatar/avatar.service.mjs +64 -0
- package/esm2022/lib/display/confirm/confirm.component.mjs +168 -0
- package/esm2022/lib/display/dialog/dialog-content.mjs +2 -0
- package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
- package/esm2022/lib/display/dialog/dialog-types.mjs +77 -0
- package/esm2022/lib/display/dialog/dialog.component.mjs +281 -0
- package/esm2022/lib/display/dialog/dialog.service.mjs +71 -0
- package/esm2022/lib/display/help/help-types.mjs +2 -0
- package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +111 -0
- package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +54 -0
- package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +61 -0
- package/esm2022/lib/display/item-display/item-display.component.mjs +81 -0
- package/esm2022/lib/display/json-display/json-display.component.mjs +47 -0
- package/esm2022/lib/display/resizable/resizable-base.mjs +120 -0
- package/esm2022/lib/display/resizable/resizable.component.mjs +57 -0
- package/esm2022/lib/display/spinner/spinner.component.mjs +12 -0
- package/esm2022/lib/display/splash/splash.component.mjs +42 -0
- package/esm2022/lib/display/splash/splash.service.mjs +35 -0
- package/esm2022/lib/display/table/resizable-column.component.mjs +20 -0
- package/esm2022/lib/display/table/resizable-table.directive.mjs +227 -0
- package/esm2022/lib/display/table/searchable-table.component.mjs +342 -0
- package/esm2022/lib/display/table/table-detail-row.component.mjs +28 -0
- package/esm2022/lib/display/table/table-locked-column.component.mjs +58 -0
- package/esm2022/lib/display/table/table-master-header-row.component.mjs +14 -0
- package/esm2022/lib/display/table/table-master-row.component.mjs +163 -0
- package/esm2022/lib/display/table/table-pagination.component.mjs +155 -0
- package/esm2022/lib/display/table/table-selectable-row.component.mjs +235 -0
- package/esm2022/lib/display/table/table.component.mjs +249 -0
- package/esm2022/lib/display/tags/tag.mjs +18 -0
- package/esm2022/lib/display/tags/tags.component.mjs +77 -0
- package/esm2022/lib/display/toast/toast/toast.component.mjs +77 -0
- package/esm2022/lib/display/toast/toast-types.mjs +8 -0
- package/esm2022/lib/display/toast/toast.service.mjs +35 -0
- package/esm2022/lib/display/toast/toaster/toaster.component.mjs +114 -0
- package/esm2022/lib/display/tooltip/tooltip.component.mjs +28 -0
- package/esm2022/lib/display/tooltip/tooltip.service.mjs +78 -0
- package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +173 -0
- package/esm2022/lib/display/tour/tour-types.mjs +34 -0
- package/esm2022/lib/display/tour/tour.component.mjs +398 -0
- package/esm2022/lib/display/tour/tour.service.mjs +75 -0
- package/esm2022/lib/display/tree/tree.component.mjs +135 -0
- package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +58 -0
- package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
- package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
- package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +100 -0
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +166 -0
- package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
- package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
- package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +62 -0
- package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
- package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
- package/esm2022/lib/shared/display.mjs +6 -0
- package/esm2022/lib/shared/form-group.helper.mjs +67 -0
- package/esm2022/lib/shared/json-helper.mjs +19 -0
- package/esm2022/lib/shared/lodash-helper.mjs +52 -0
- package/esm2022/lib/shared/page/page-base/page-base.component.mjs +387 -0
- package/esm2022/lib/shared/page/page-statuses.mjs +23 -0
- package/esm2022/lib/shared/page/page-title/page-title.component.mjs +23 -0
- package/esm2022/lib/shared/page/page-view/page-view.component.mjs +147 -0
- package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +17 -0
- package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +17 -0
- package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +38 -0
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +98 -0
- package/esm2022/lib/shared/testing/public-mocks.spec.mjs +148 -0
- package/esm2022/lib/shared/testing/spy-factory.spec.mjs +40 -0
- package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +57 -0
- package/esm2022/lib/shared/user-preference.service.mjs +17 -0
- package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
- package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -0
- package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -0
- package/esm2022/public-api.mjs +117 -0
- package/fesm2022/energycap-components.mjs +13219 -0
- package/fesm2022/energycap-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components.module.d.ts +92 -0
- package/lib/controls/banner/banner.component.d.ts +50 -0
- package/lib/controls/button/button.component.d.ts +78 -0
- package/lib/controls/button/copy-button-base.directive.d.ts +20 -0
- package/lib/controls/button/copy-button.directive.d.ts +14 -0
- package/lib/controls/button/copy-table-button.directive.d.ts +19 -0
- package/lib/controls/calendar/calendar-item.component.d.ts +22 -0
- package/lib/controls/calendar/calendar.component.d.ts +52 -0
- package/lib/controls/calendar/calendar.types.d.ts +11 -0
- package/lib/controls/checkbox/checkbox.component.d.ts +65 -0
- package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +25 -0
- package/lib/controls/combobox/combobox.component.d.ts +418 -0
- package/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.d.ts +42 -0
- package/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.d.ts +21 -0
- package/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.d.ts +21 -0
- package/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.d.ts +21 -0
- package/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.d.ts +18 -0
- package/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.d.ts +18 -0
- package/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.d.ts +21 -0
- package/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.d.ts +20 -0
- package/lib/controls/date-input/date-input.component.d.ts +115 -0
- package/lib/controls/date-input/date-input.types.d.ts +62 -0
- package/lib/controls/dropdown/dropdown.component.d.ts +161 -0
- package/lib/controls/file-upload/file-upload.component.d.ts +124 -0
- package/lib/controls/form-control/form-control.component.d.ts +28 -0
- package/lib/controls/form-control-base.d.ts +110 -0
- package/lib/controls/form-control-label/form-control-label.component.d.ts +73 -0
- package/lib/controls/form-group/form-group.component.d.ts +105 -0
- package/lib/controls/help-popover/help-popover.component.d.ts +11 -0
- package/lib/controls/item-picker/item-picker.component.d.ts +164 -0
- package/lib/controls/link-button/link-button.component.d.ts +5 -0
- package/lib/controls/menu/menu.component.d.ts +255 -0
- package/lib/controls/navigation/link-item.d.ts +32 -0
- package/lib/controls/navigation/nav-group.d.ts +18 -0
- package/lib/controls/navigation/nav-item-active.directive.d.ts +42 -0
- package/lib/controls/navigation/nav-item.d.ts +31 -0
- package/lib/controls/numericbox/numericbox.component.d.ts +148 -0
- package/lib/controls/popover/popover.component.d.ts +51 -0
- package/lib/controls/radio-button/radio-button-option.d.ts +19 -0
- package/lib/controls/radio-button/radio-button.component.d.ts +53 -0
- package/lib/controls/select/select.component.d.ts +44 -0
- package/lib/controls/tabs/tabs.component.d.ts +30 -0
- package/lib/controls/textbox/textbox.component.d.ts +107 -0
- package/lib/core/cache.service.d.ts +33 -0
- package/lib/core/custom-validators.d.ts +20 -0
- package/lib/core/date-time-helper.d.ts +101 -0
- package/lib/core/error.service.d.ts +20 -0
- package/lib/core/router-helper.service.d.ts +48 -0
- package/lib/core/scroll.service.d.ts +36 -0
- package/lib/core/telemetry-tracker.service.d.ts +13 -0
- package/lib/core/telemetry.service.d.ts +31 -0
- package/lib/core/validation-message.service.d.ts +26 -0
- package/lib/core/validation-patterns.d.ts +22 -0
- package/lib/core/window.service.d.ts +116 -0
- package/lib/display/app-bar/app-bar.component.d.ts +20 -0
- package/lib/display/avatar/avatar.component.d.ts +35 -0
- package/lib/display/avatar/avatar.service.d.ts +24 -0
- package/lib/display/confirm/confirm.component.d.ts +123 -0
- package/lib/display/dialog/dialog-content.d.ts +19 -0
- package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +32 -0
- package/lib/display/dialog/dialog-types.d.ts +130 -0
- package/lib/display/dialog/dialog.component.d.ts +120 -0
- package/lib/display/dialog/dialog.service.d.ts +48 -0
- package/lib/display/help/help-types.d.ts +33 -0
- package/lib/display/hierarchy/hierarchy-base.d.ts +97 -0
- package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +53 -0
- package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +34 -0
- package/lib/display/item-display/item-display.component.d.ts +43 -0
- package/lib/display/json-display/json-display.component.d.ts +16 -0
- package/lib/display/resizable/resizable-base.d.ts +67 -0
- package/lib/display/resizable/resizable.component.d.ts +31 -0
- package/lib/display/spinner/spinner.component.d.ts +5 -0
- package/lib/display/splash/splash.component.d.ts +16 -0
- package/lib/display/splash/splash.service.d.ts +22 -0
- package/lib/display/table/resizable-column.component.d.ts +10 -0
- package/lib/display/table/resizable-table.directive.d.ts +93 -0
- package/lib/display/table/searchable-table.component.d.ts +206 -0
- package/lib/display/table/table-detail-row.component.d.ts +8 -0
- package/lib/display/table/table-locked-column.component.d.ts +20 -0
- package/lib/display/table/table-master-header-row.component.d.ts +9 -0
- package/lib/display/table/table-master-row.component.d.ts +113 -0
- package/lib/display/table/table-pagination.component.d.ts +91 -0
- package/lib/display/table/table-selectable-row.component.d.ts +102 -0
- package/lib/display/table/table.component.d.ts +121 -0
- package/lib/display/tags/tag.d.ts +18 -0
- package/lib/display/tags/tags.component.d.ts +48 -0
- package/lib/display/toast/toast/toast.component.d.ts +23 -0
- package/lib/display/toast/toast-types.d.ts +24 -0
- package/lib/display/toast/toast.service.d.ts +20 -0
- package/lib/display/toast/toaster/toaster.component.d.ts +35 -0
- package/lib/display/tooltip/tooltip.component.d.ts +70 -0
- package/lib/display/tooltip/tooltip.service.d.ts +16 -0
- package/lib/display/tooltip-directive/tooltip.directive.d.ts +44 -0
- package/lib/display/tour/tour-types.d.ts +70 -0
- package/lib/display/tour/tour.component.d.ts +147 -0
- package/lib/display/tour/tour.service.d.ts +38 -0
- package/lib/display/tree/tree.component.d.ts +75 -0
- package/lib/display/view-overlay/view-overlay.component.d.ts +38 -0
- package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +14 -0
- package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +60 -0
- package/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.d.ts +23 -0
- package/lib/shared/directives/popup/popup-container.directive.d.ts +101 -0
- package/lib/shared/display/pipes/date-display.pipe.d.ts +21 -0
- package/lib/shared/display/pipes/highlight-text.pipe.d.ts +9 -0
- package/lib/shared/display/pipes/relative-date.pipe.d.ts +36 -0
- package/lib/shared/display/pipes/row-count.pipe.d.ts +23 -0
- package/lib/shared/display/pipes/time-display.pipe.d.ts +18 -0
- package/lib/shared/display.d.ts +42 -0
- package/lib/shared/form-group.helper.d.ts +31 -0
- package/lib/shared/json-helper.d.ts +7 -0
- package/lib/shared/lodash-helper.d.ts +18 -0
- package/lib/shared/page/page-base/page-base.component.d.ts +259 -0
- package/lib/shared/page/page-statuses.d.ts +13 -0
- package/lib/shared/page/page-title/page-title.component.d.ts +9 -0
- package/lib/shared/page/page-view/page-view.component.d.ts +102 -0
- package/lib/shared/testing/copy-button-base-test-injector-factory.spec.d.ts +4 -0
- package/lib/shared/testing/hierarchy-base-test-injector-factory.spec.d.ts +4 -0
- package/lib/shared/testing/page-base-component-test-helper.spec.d.ts +30 -0
- package/lib/shared/testing/page-base-component-test-injector-factory.spec.d.ts +28 -0
- package/lib/shared/testing/public-mocks.spec.d.ts +90 -0
- package/lib/shared/testing/spy-factory.spec.d.ts +27 -0
- package/lib/shared/testing/translation-mocks.spec.d.ts +30 -0
- package/lib/shared/user-preference.service.d.ts +13 -0
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +134 -0
- package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +27 -0
- package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +10 -0
- package/package.json +1 -5
- package/public-api.d.ts +113 -0
- package/schematics/collection.json +10 -0
- package/schematics/rxjs-7-upgrade/index.d.ts +3 -0
- package/schematics/rxjs-7-upgrade/index.js +68 -0
- package/schematics/rxjs-7-upgrade/index.js.map +1 -0
- package/schematics/rxjs-7-upgrade/schema.d.ts +4 -0
- package/schematics/rxjs-7-upgrade/schema.js +3 -0
- package/schematics/rxjs-7-upgrade/schema.js.map +1 -0
- package/schematics/rxjs-7-upgrade/schema.json +14 -0
- package/schematics/utilities/typescript.d.ts +7 -0
- package/schematics/utilities/typescript.js +42 -0
- package/schematics/utilities/typescript.js.map +1 -0
- package/schematics/utilities/workspace.d.ts +8 -0
- package/schematics/utilities/workspace.js +72 -0
- package/schematics/utilities/workspace.js.map +1 -0
- package/src/assets/images/email-icon.png +0 -0
- package/src/assets/images/email-logo.png +0 -0
- package/src/assets/images/favicon-ech.svg +7 -0
- package/src/assets/images/favicon-esa.svg +6 -0
- package/src/assets/images/favicon-eum.svg +6 -0
- package/src/assets/images/favicon.svg +5 -0
- package/src/assets/images/icon-carbonhub.svg +10 -0
- package/src/assets/images/icon-eum.svg +5 -0
- package/src/assets/images/icon-ucp.svg +5 -0
- package/src/assets/images/icon-wattics.svg +5 -0
- package/src/assets/images/icon.svg +4 -0
- package/src/assets/images/logo.svg +3 -0
- package/src/assets/images/splash.gif +0 -0
- package/src/assets/locales/en_US.json +59 -0
- package/src/assets/scripts/unsupported-browser.js +17 -0
- package/src/styles/_base.scss +38 -0
- package/src/styles/_colors.scss +96 -0
- package/src/styles/_core.scss +4 -0
- package/src/styles/_functions.scss +114 -0
- package/src/styles/_global-variables.scss +232 -0
- package/src/styles/_icons.scss +24 -0
- package/src/styles/bootstrap/_grid.scss +34 -0
- package/src/styles/bootstrap/_reboot.scss +323 -0
- package/src/styles/components/_card.scss +21 -0
- package/src/styles/components/_link-icons.scss +38 -0
- package/src/styles/components/_splash.scss +57 -0
- package/src/styles/components/_unsupported-browsers.scss +24 -0
- package/src/styles/email/_email-base.scss +228 -0
- package/src/styles/email/email.scss +43 -0
- package/src/styles/index.scss +27 -0
- package/src/styles/mixins/_animations.scss +18 -0
- package/src/styles/mixins/_button-base.scss +185 -0
- package/src/styles/mixins/_card-base.scss +40 -0
- package/src/styles/mixins/_common.scss +52 -0
- package/src/styles/mixins/_dialog-base.scss +96 -0
- package/src/styles/mixins/_form-control-base.scss +641 -0
- package/src/styles/mixins/_login.scss +74 -0
- package/src/styles/mixins/_menu-base.scss +153 -0
- package/src/styles/mixins/_overlay-base.scss +33 -0
- package/src/styles/mixins/_resizable-base.scss +57 -0
- package/src/styles/mixins/_spinner-base.scss +34 -0
- package/src/styles/mixins/_table-base.scss +298 -0
- package/src/styles/mixins/_tabs-base.scss +110 -0
- package/src/styles/mixins/_tags-base.scss +116 -0
- package/src/styles/mixins/_text.scss +89 -0
- package/src/styles/mixins.scss +15 -0
- package/src/styles/utilities/_borders.scss +30 -0
- package/src/styles/utilities/_common.scss +49 -0
- package/src/styles/utilities/_layout.scss +116 -0
- package/src/styles/utilities/_spacing.scss +65 -0
- package/src/styles/utilities/_text.scss +139 -0
@@ -0,0 +1,115 @@
|
|
1
|
+
import { CdkConnectedOverlay, Overlay } from '@angular/cdk/overlay';
|
2
|
+
import { ElementRef, OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
3
|
+
import { KeyboardNavContainerDirective } from '../../../public-api';
|
4
|
+
import { ValidationMessageService } from '../../core/validation-message.service';
|
5
|
+
import { FormGroupHelper } from '../../shared/form-group.helper';
|
6
|
+
import { UserPreferenceService } from '../../shared/user-preference.service';
|
7
|
+
import { Calendar } from '../calendar/calendar.types';
|
8
|
+
import { FormControlBase } from '../form-control-base';
|
9
|
+
import { DateInputSelectionStrategyBase } from './date-input-selection-strategies/date-input-selection-strategy-base';
|
10
|
+
import { DateInput } from './date-input.types';
|
11
|
+
import * as i0 from "@angular/core";
|
12
|
+
export declare class DateInputComponent extends FormControlBase implements OnInit, OnChanges {
|
13
|
+
protected validationMessageService: ValidationMessageService;
|
14
|
+
protected formGroupHelper: FormGroupHelper;
|
15
|
+
private userPreferenceService;
|
16
|
+
private el;
|
17
|
+
private overlayService;
|
18
|
+
private selectionStrategies;
|
19
|
+
id: string;
|
20
|
+
/** The form control provided by the hosting form. */
|
21
|
+
formModel: DateInput.FormModel;
|
22
|
+
minDate: Date;
|
23
|
+
maxDate: Date;
|
24
|
+
/** The initial selection mode for the calendar. Defaults to day if not provided */
|
25
|
+
selectionMode: DateInput.SelectionMode;
|
26
|
+
/** The available selection modes for the calendar. Defaults to only the initial selection mode if not provided. */
|
27
|
+
selectionModeOptions: DateInput.SelectionMode[];
|
28
|
+
/**
|
29
|
+
* When a date is provided, enables the 'quick select' button.
|
30
|
+
* Clicking the button will shift the selected date range to the provided date.
|
31
|
+
*/
|
32
|
+
quickSelectDate?: Date;
|
33
|
+
/** Enables the next/previous selection buttons. */
|
34
|
+
enableSteppers: boolean;
|
35
|
+
/** The form group for the internal textboxes. Textbox2 is only used for ranges. */
|
36
|
+
textboxGroup: DateInput.TextboxGroup;
|
37
|
+
/**
|
38
|
+
* The current calendar selection.
|
39
|
+
* Updated when the user clicks on a calendar item or when the date entered into the textbox is parsed.
|
40
|
+
*/
|
41
|
+
calendarSelection: DateInput.Selection | null;
|
42
|
+
/** Controls whether the calendar overlay is open or not. */
|
43
|
+
isCalendarOpen: boolean;
|
44
|
+
/** Placeholder for the textbox. Updated to reflect the user's date display preference. */
|
45
|
+
placeholder: string;
|
46
|
+
/** Overlay scroll strategy for the calendar overlay. Closes the calendar on scroll. */
|
47
|
+
overlayScrollStrategy: import("@angular/cdk/overlay").CloseScrollStrategy;
|
48
|
+
primaryCalendarView: Calendar.View;
|
49
|
+
secondaryCalendarView: Calendar.View;
|
50
|
+
primaryCalendarMaxDate: Date;
|
51
|
+
secondaryCalendarMinDate: Date;
|
52
|
+
disableSteppers: boolean;
|
53
|
+
selectionStrategy: DateInputSelectionStrategyBase;
|
54
|
+
/**
|
55
|
+
* Date parsing formats for user-entered dates. Defaults to month-first formats, but is updated in onInit
|
56
|
+
* to use the user's preferred date format.
|
57
|
+
*/
|
58
|
+
private parseFormats;
|
59
|
+
calendar?: KeyboardNavContainerDirective;
|
60
|
+
controls?: KeyboardNavContainerDirective;
|
61
|
+
/** Reference to the overlay directive (see template). Used to update the overlay position on validation changes. */
|
62
|
+
overlay?: CdkConnectedOverlay;
|
63
|
+
constructor(validationMessageService: ValidationMessageService, formGroupHelper: FormGroupHelper, userPreferenceService: UserPreferenceService, el: ElementRef, overlayService: Overlay, selectionStrategies: DateInput.SelectionStrategies);
|
64
|
+
ngOnChanges(changes: SimpleChanges): void;
|
65
|
+
ngOnInit(): void;
|
66
|
+
/** Focuses the input whenever the calendar is shift-tabbed out of. */
|
67
|
+
onCalendarFocusOutStart(): void;
|
68
|
+
/** Closes the calendar and focuses the input whenever the calendar is tabbed out of. */
|
69
|
+
onCalendarFocusOutEnd(): void;
|
70
|
+
/** Closes the calendar if the user clicks outside of the calendar and date input. */
|
71
|
+
onOverlayOutsideClick(event: MouseEvent): void;
|
72
|
+
/** If the user tabs out of the form control's action button and the calendar is open, focus the first item in the calendar overlay */
|
73
|
+
onControlsFocusOutEnd(): void;
|
74
|
+
onTextboxBlur(): void;
|
75
|
+
onTextbox2Blur(): void;
|
76
|
+
onSelectionModeChange(mode: DateInput.SelectionMode): void;
|
77
|
+
onCalendarDateSelected(date: Date): void;
|
78
|
+
onPrimaryCalendarViewChange(view: Calendar.View): void;
|
79
|
+
onSecondaryCalendarViewChange(view: Calendar.View): void;
|
80
|
+
/** Shifts the calendar views to display today. Does not update the calendar selection. */
|
81
|
+
goToToday(): void;
|
82
|
+
goToQuickSelectDate(): void;
|
83
|
+
nextSelection(): void;
|
84
|
+
previousSelection(): void;
|
85
|
+
private updateFormModel;
|
86
|
+
private onFormModelStatusChanges;
|
87
|
+
private onFormModelValueChanges;
|
88
|
+
private onTextboxValueChanges;
|
89
|
+
private syncTextboxControlDisabledStatus;
|
90
|
+
private syncFormErrors;
|
91
|
+
/**
|
92
|
+
* Updates the date parsing formats and placeholder based on the user's display preference.
|
93
|
+
* NOTE: This is async because we're retrieving the user's preferences. We're not awaiting the result
|
94
|
+
* because the only logic that depends on this is the text box date parsing logic and placeholder.
|
95
|
+
* Our forms should always be behind a pending overlay, so the user won't be able to interact with the
|
96
|
+
* form until the user is loaded anyway.
|
97
|
+
*/
|
98
|
+
private setDateFormats;
|
99
|
+
/** Focuses the date input. */
|
100
|
+
private focusInput;
|
101
|
+
private setSelectionMode;
|
102
|
+
/**
|
103
|
+
* Sets the max date for the primary calendar and the min date for the secondary calendar based
|
104
|
+
* on the current views in each. This prevents the user from moving the calendars out of order.
|
105
|
+
*/
|
106
|
+
private updateCalendarMinMaxDates;
|
107
|
+
private updateCalendars;
|
108
|
+
private updatePrimaryCalendar;
|
109
|
+
private updateSecondaryCalendar;
|
110
|
+
private updateSteppers;
|
111
|
+
private validateTextboxes;
|
112
|
+
private validateDateString;
|
113
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DateInputComponent, never>;
|
114
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DateInputComponent, "ec-date-input", never, { "id": { "alias": "id"; "required": false; }; "formModel": { "alias": "formModel"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "selectionModeOptions": { "alias": "selectionModeOptions"; "required": false; }; "quickSelectDate": { "alias": "quickSelectDate"; "required": false; }; "enableSteppers": { "alias": "enableSteppers"; "required": false; }; }, {}, never, never, false, never>;
|
115
|
+
}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
import { FormControl, FormGroup } from "@angular/forms";
|
2
|
+
import { DateDisplayPipe } from "../../shared/display/pipes/date-display.pipe";
|
3
|
+
import { DateInputSelectionStrategyBase } from "./date-input-selection-strategies/date-input-selection-strategy-base";
|
4
|
+
import { DaySelectionStrategy } from "./date-input-selection-strategies/day-selection-strategy";
|
5
|
+
import { Last28DaysSelectionStrategy } from "./date-input-selection-strategies/last-28-days-selection-strategy";
|
6
|
+
import { Last7DaysSelectionStrategy } from "./date-input-selection-strategies/last-7-days-selection-strategy";
|
7
|
+
import { MonthSelectionStrategy } from "./date-input-selection-strategies/month-selection-strategy";
|
8
|
+
import { QuarterSelectionStrategy } from "./date-input-selection-strategies/quarter-selection-strategy";
|
9
|
+
import { RangeSelectionStrategy } from "./date-input-selection-strategies/range-selection-strategy";
|
10
|
+
import { YearSelectionStrategy } from "./date-input-selection-strategies/year-selection-strategy";
|
11
|
+
import * as i0 from "@angular/core";
|
12
|
+
export declare namespace DateInput {
|
13
|
+
type FormModel = FormControl<Selection | null>;
|
14
|
+
type TextboxGroup = FormGroup<{
|
15
|
+
textbox: FormControl<string | null>;
|
16
|
+
textbox2: FormControl<string | null>;
|
17
|
+
}>;
|
18
|
+
type Range = {
|
19
|
+
start: Date | null;
|
20
|
+
end: Date | null;
|
21
|
+
};
|
22
|
+
type Selection = Date | Range;
|
23
|
+
type SelectionMode = 'day' | 'last7Days' | 'last28Days' | 'month' | 'quarter' | 'year' | 'range';
|
24
|
+
function isSelectionSingleDate(selection?: Selection | null): selection is Date;
|
25
|
+
function isSelectionRange(selection?: Selection | null): selection is Range;
|
26
|
+
type ParsingOptions = {
|
27
|
+
/**
|
28
|
+
* When configured, the parser will shift the parsed date to the current year if the date is below this date.
|
29
|
+
* This is used to prevent the calendars from showing unhelpful dates in the distant past before the user finishes typing in the date.
|
30
|
+
*/
|
31
|
+
shiftToCurrentYearIfBelow?: Date;
|
32
|
+
/**
|
33
|
+
* When true, the range selection modes (range, last7Days, last28Days) will key off of the end date string to determine the selection range.
|
34
|
+
*/
|
35
|
+
parseFromEnd?: boolean;
|
36
|
+
/**
|
37
|
+
* Stops the parser from automatically completing the date range when there is only a start or an end date.
|
38
|
+
* Only applicable to the fixed length range selection modes (last7Days, last28Days).
|
39
|
+
*/
|
40
|
+
preventAutoComplete?: boolean;
|
41
|
+
};
|
42
|
+
class SelectionStrategies implements Record<SelectionMode, DateInputSelectionStrategyBase> {
|
43
|
+
private dateDisplayPipe;
|
44
|
+
constructor(dateDisplayPipe: DateDisplayPipe);
|
45
|
+
private _range;
|
46
|
+
get range(): RangeSelectionStrategy;
|
47
|
+
private _day;
|
48
|
+
get day(): DaySelectionStrategy;
|
49
|
+
private _last7Days;
|
50
|
+
get last7Days(): Last7DaysSelectionStrategy;
|
51
|
+
private _last28Days;
|
52
|
+
get last28Days(): Last28DaysSelectionStrategy;
|
53
|
+
private _month;
|
54
|
+
get month(): MonthSelectionStrategy;
|
55
|
+
private _quarter;
|
56
|
+
get quarter(): QuarterSelectionStrategy;
|
57
|
+
_year: YearSelectionStrategy;
|
58
|
+
get year(): YearSelectionStrategy;
|
59
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SelectionStrategies, never>;
|
60
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SelectionStrategies>;
|
61
|
+
}
|
62
|
+
}
|
@@ -0,0 +1,161 @@
|
|
1
|
+
import { AfterViewInit, EventEmitter, OnDestroy, OnInit, TemplateRef } from '@angular/core';
|
2
|
+
import { PopupStatus } from '../../shared/directives/popup/popup-container.directive';
|
3
|
+
import { DisplayStatus } from '../../shared/display';
|
4
|
+
import { ButtonComponent, ButtonType } from '../button/button.component';
|
5
|
+
import { MenuItem, MenuTemplateType } from '../menu/menu.component';
|
6
|
+
import * as i0 from "@angular/core";
|
7
|
+
export declare class DropdownComponent implements OnInit, AfterViewInit, OnDestroy {
|
8
|
+
/**
|
9
|
+
* Base id for the component's sub-elements
|
10
|
+
*/
|
11
|
+
id?: string;
|
12
|
+
/**
|
13
|
+
* Automatically focus the dropdown toggle button
|
14
|
+
*/
|
15
|
+
autofocus: boolean;
|
16
|
+
/**
|
17
|
+
* Controls the display status overlay for the menu
|
18
|
+
*/
|
19
|
+
status?: DisplayStatus;
|
20
|
+
/**
|
21
|
+
* Disable the button to prevent the menu from being opened
|
22
|
+
*/
|
23
|
+
disabled: boolean;
|
24
|
+
/**
|
25
|
+
* Optional label for the button
|
26
|
+
*/
|
27
|
+
label?: string;
|
28
|
+
/**
|
29
|
+
* Optional icon for the button
|
30
|
+
*/
|
31
|
+
icon?: string;
|
32
|
+
/**
|
33
|
+
* The button type, defaults to icon
|
34
|
+
*/
|
35
|
+
buttonType?: ButtonType;
|
36
|
+
/**
|
37
|
+
* Optionally align the label of the button to the left or right. If not set,
|
38
|
+
* will be centered.
|
39
|
+
*/
|
40
|
+
buttonAlignment?: 'left' | 'right';
|
41
|
+
/**
|
42
|
+
* Adds a tooltip to the dropdown toggle button. Should only be used when
|
43
|
+
* the toggle buttonType is 'icon'
|
44
|
+
*/
|
45
|
+
buttonTitle: string;
|
46
|
+
/**
|
47
|
+
* The tabindex of the button
|
48
|
+
*/
|
49
|
+
tabindex?: number;
|
50
|
+
/**
|
51
|
+
* Display a caret with the button label or icon
|
52
|
+
*/
|
53
|
+
showArrow: boolean;
|
54
|
+
/**
|
55
|
+
* Items to display in the menu
|
56
|
+
*/
|
57
|
+
items: MenuItem[];
|
58
|
+
/**
|
59
|
+
* The menu item template
|
60
|
+
*/
|
61
|
+
menuTemplateType: MenuTemplateType;
|
62
|
+
/**
|
63
|
+
* Display a header on the menu
|
64
|
+
* @deprecated use first menu item with display set to 'heading' instead
|
65
|
+
*/
|
66
|
+
menuTitle?: string;
|
67
|
+
/**
|
68
|
+
* Set a fixed height for the menu, auto by default
|
69
|
+
*/
|
70
|
+
menuHeight?: number;
|
71
|
+
/**
|
72
|
+
* Set a fixed width in pixels for the menu, auto by default
|
73
|
+
*/
|
74
|
+
menuWidth?: number;
|
75
|
+
/**
|
76
|
+
* Set a min-width in pixels on the menu. It will expand if the content is greater than the min-width
|
77
|
+
*/
|
78
|
+
menuMinWidth?: number;
|
79
|
+
/**
|
80
|
+
* Pin the menu to the left or right of the button. Right by default
|
81
|
+
*/
|
82
|
+
menuPosition?: 'left' | 'right';
|
83
|
+
/**
|
84
|
+
* Sticky footer to display at the bottom of the popup menu
|
85
|
+
*/
|
86
|
+
menuFooter?: string;
|
87
|
+
/**
|
88
|
+
* Fix position the menu instead of absolute. Useful when the dropdown is in a
|
89
|
+
* dialog
|
90
|
+
*/
|
91
|
+
popupFixed: boolean;
|
92
|
+
/**
|
93
|
+
* Pass a custom template to the toggle button
|
94
|
+
*/
|
95
|
+
buttonCustomTemplate?: TemplateRef<any>;
|
96
|
+
/**
|
97
|
+
* Used to set the menu buttons state to pending
|
98
|
+
*/
|
99
|
+
pending: boolean;
|
100
|
+
/**
|
101
|
+
* Emits an event when a menu item is selected
|
102
|
+
*/
|
103
|
+
itemSelected: EventEmitter<MenuItem>;
|
104
|
+
/**
|
105
|
+
* Emits an event when the popup menu opens
|
106
|
+
*/
|
107
|
+
popupOpened: EventEmitter<void>;
|
108
|
+
/**
|
109
|
+
* The status of the menu
|
110
|
+
*/
|
111
|
+
menuStatus: PopupStatus;
|
112
|
+
/** Item to highlight when the menu is opened, used when the user
|
113
|
+
* opens the menu via the keyboard
|
114
|
+
*/
|
115
|
+
highlightedItem: MenuItem | null;
|
116
|
+
/** Used to know if the menu was toggled via the keyboard */
|
117
|
+
private isKeyboardEvent;
|
118
|
+
/**
|
119
|
+
* Internal reference to the menu element
|
120
|
+
*/
|
121
|
+
private menuEl;
|
122
|
+
/**
|
123
|
+
* Internal reference to the popup directive
|
124
|
+
*/
|
125
|
+
private popup;
|
126
|
+
/**
|
127
|
+
* Get a reference to the toggle button
|
128
|
+
*/
|
129
|
+
dropdownToggleButton: ButtonComponent;
|
130
|
+
/**
|
131
|
+
* Unsubscribe any active subscriptions when the component is destroyed
|
132
|
+
*/
|
133
|
+
private componentDestroyed;
|
134
|
+
constructor();
|
135
|
+
/**
|
136
|
+
* Subscribe to changes to the menu status
|
137
|
+
*/
|
138
|
+
ngOnInit(): void;
|
139
|
+
/**
|
140
|
+
* Set up the popup
|
141
|
+
*/
|
142
|
+
ngAfterViewInit(): void;
|
143
|
+
/**
|
144
|
+
* Unsubscribe to any active subscriptions
|
145
|
+
*/
|
146
|
+
ngOnDestroy(): void;
|
147
|
+
/**
|
148
|
+
* Open and close the menu
|
149
|
+
*/
|
150
|
+
toggleMenu(event?: Event): void;
|
151
|
+
/**
|
152
|
+
* Emit the selected item when it changes and close the menu
|
153
|
+
*/
|
154
|
+
selectedChanged(item: MenuItem): void;
|
155
|
+
/**
|
156
|
+
* Closes the menu if the tab key is pressed
|
157
|
+
*/
|
158
|
+
keyNavigate(event: KeyboardEvent): void;
|
159
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownComponent, never>;
|
160
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DropdownComponent, "ec-dropdown", never, { "id": { "alias": "id"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "status": { "alias": "status"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "label": { "alias": "label"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "buttonType": { "alias": "buttonType"; "required": false; }; "buttonAlignment": { "alias": "buttonAlignment"; "required": false; }; "buttonTitle": { "alias": "buttonTitle"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "showArrow": { "alias": "showArrow"; "required": false; }; "items": { "alias": "items"; "required": false; }; "menuTemplateType": { "alias": "menuTemplateType"; "required": false; }; "menuTitle": { "alias": "menuTitle"; "required": false; }; "menuHeight": { "alias": "menuHeight"; "required": false; }; "menuWidth": { "alias": "menuWidth"; "required": false; }; "menuMinWidth": { "alias": "menuMinWidth"; "required": false; }; "menuPosition": { "alias": "menuPosition"; "required": false; }; "menuFooter": { "alias": "menuFooter"; "required": false; }; "popupFixed": { "alias": "popupFixed"; "required": false; }; "buttonCustomTemplate": { "alias": "buttonCustomTemplate"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; }, { "itemSelected": "itemSelected"; "popupOpened": "popupOpened"; }, never, never, false, never>;
|
161
|
+
}
|
@@ -0,0 +1,124 @@
|
|
1
|
+
import { ElementRef, OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
2
|
+
import { AsyncValidatorFn, FormControl, FormGroup, ValidatorFn } from '@angular/forms';
|
3
|
+
import { ValidationMessageService } from '../../core/validation-message.service';
|
4
|
+
import { FormGroupHelper } from '../../shared/form-group.helper';
|
5
|
+
import { FormControlBase } from '../form-control-base';
|
6
|
+
import * as i0 from "@angular/core";
|
7
|
+
export type FileType = 'zip' | 'excel' | 'custom';
|
8
|
+
export type FileOutput = 'raw' | 'base64';
|
9
|
+
export declare const FileTypeExtensions: {
|
10
|
+
zip: string[];
|
11
|
+
excel: string[];
|
12
|
+
};
|
13
|
+
export type FileUploadFormGroup = {
|
14
|
+
file: FormControl<File | null>;
|
15
|
+
name: FormControl<string | null>;
|
16
|
+
base64FileString: FormControl<string | null>;
|
17
|
+
uploadResult: FormControl<any>;
|
18
|
+
};
|
19
|
+
export type InvalidFileError = {
|
20
|
+
invalidFile: true;
|
21
|
+
};
|
22
|
+
export type FileValidatorCallback = (file: File | null | undefined, base64: string | null | undefined) => Promise<InvalidFileError | null>;
|
23
|
+
export declare class FileUploadComponent extends FormControlBase implements OnInit, OnChanges {
|
24
|
+
protected validationMessageService: ValidationMessageService;
|
25
|
+
protected formGroupHelper: FormGroupHelper;
|
26
|
+
static getFormModel(validators: ValidatorFn[], disabled?: boolean,
|
27
|
+
/** Any validators required to make sure the selected file is valid. It is recommended that you use `FileUploadComponent.getFileValidator` to help construct the validator(s). NOTE: This currently only works when multiSelect is false. */
|
28
|
+
fileValidators?: AsyncValidatorFn | AsyncValidatorFn[]): FormGroup<FileUploadFormGroup>;
|
29
|
+
/**
|
30
|
+
* Helper function that returns an async validator to be used with the file upload control.
|
31
|
+
* This is useful for when the file needs to be validated before it can be uploaded.
|
32
|
+
*
|
33
|
+
* @param callback The callback function that will be called to validate the file. Parameters for the callback are the file and the base64 string for the file.
|
34
|
+
* base64 is null if the fileOutput input on the FileUploadComponent is set to raw. Using fileOutput set to base64 is recommended for images.
|
35
|
+
*/
|
36
|
+
static getFileValidator(callback: FileValidatorCallback): AsyncValidatorFn;
|
37
|
+
formModel: FormGroup<FileUploadFormGroup>;
|
38
|
+
/**
|
39
|
+
* The value of the textbox input's placeholder
|
40
|
+
*/
|
41
|
+
placeholder?: string;
|
42
|
+
/** Common extensions for a file browsing dialog
|
43
|
+
* Note: Edge does not support the accept attribute on file inputs, therefor all file types
|
44
|
+
* will be shown. Firefox and Chrome both support this feature.
|
45
|
+
*/
|
46
|
+
fileType?: FileType | undefined;
|
47
|
+
/**
|
48
|
+
* File output, determines which properties are supplied on the formModel
|
49
|
+
*/
|
50
|
+
fileOutput?: FileOutput;
|
51
|
+
/** If fileType is set to custom set the acceptable file types based on the custom array */
|
52
|
+
customExtensions?: Array<string> | undefined;
|
53
|
+
/**
|
54
|
+
* Optional callback supported if the hosting page needs to process the file before
|
55
|
+
* setting the formModel with the file information. If the promise resolves it will continue
|
56
|
+
* and set the file name and contents to the formModel, otherwise on failure it'll do nothing.
|
57
|
+
*/
|
58
|
+
onFileSelected?: (file: File) => Promise<any>;
|
59
|
+
/**
|
60
|
+
* Optional callback supported for when the hosting page needs to process multiple files
|
61
|
+
* We simply map the FileList to an array of File objects and pass that array to the
|
62
|
+
* callback and let the hosting page handle the processing
|
63
|
+
*/
|
64
|
+
onMultipleFilesSelected?: (files: File[]) => Promise<any>;
|
65
|
+
/**
|
66
|
+
* Optional display type that controls whether the file input textbox is displayed or
|
67
|
+
* simply a button the user clicks to launch the OS file storage dialog.
|
68
|
+
* Default: file
|
69
|
+
*/
|
70
|
+
displayType?: 'file' | 'button';
|
71
|
+
/**
|
72
|
+
* When display type is set to button this property will control the button label
|
73
|
+
*/
|
74
|
+
buttonLabel?: string;
|
75
|
+
/**
|
76
|
+
* When display type is set to button this property will control the button type
|
77
|
+
*/
|
78
|
+
buttonType?: string;
|
79
|
+
/**
|
80
|
+
* Optional property to control whether the user can select multiple files
|
81
|
+
*/
|
82
|
+
multiSelect?: boolean;
|
83
|
+
/**
|
84
|
+
* When true, the onFileSelected callback will not be called if the form is invalid.
|
85
|
+
* This is useful when the file needs to be validated before it can be uploaded.
|
86
|
+
* For server-side validation, leave this as false and use the onFileSelected callback
|
87
|
+
* to upload the file and handle any errors thrown by the API.
|
88
|
+
*/
|
89
|
+
validateBeforeUpload: boolean;
|
90
|
+
fileInput?: ElementRef;
|
91
|
+
/** Property bound to the file input to filter what file types are shown in the dialog */
|
92
|
+
fileTypeAccept: string | undefined;
|
93
|
+
constructor(validationMessageService: ValidationMessageService, formGroupHelper: FormGroupHelper);
|
94
|
+
ngOnChanges(changes: SimpleChanges): void;
|
95
|
+
ngOnInit(): void;
|
96
|
+
fileChange(files: FileList): Promise<void>;
|
97
|
+
/**
|
98
|
+
* Checks the file type and updates the file type accept property. This is what determines the file
|
99
|
+
* type choices that the user will be limited to in the file browse dialog
|
100
|
+
*/
|
101
|
+
private updateFileTypeAccept;
|
102
|
+
/**
|
103
|
+
* Take a file that was selected by the user and process/patch our form model
|
104
|
+
* If the host component requires an action to occur with the file prior to the patch it will call
|
105
|
+
* and wait for it to return.
|
106
|
+
* @param file
|
107
|
+
* @param base64FileString Optional: Will have a value provided if the fileOutput is set to base64
|
108
|
+
*/
|
109
|
+
private processFile;
|
110
|
+
/** Patches the form with the selected file in order to trigger control validation */
|
111
|
+
private validateFile;
|
112
|
+
/**
|
113
|
+
* Based on the fileOutput return whether this component is expected to deliver a base64 output
|
114
|
+
* @returns
|
115
|
+
*/
|
116
|
+
private isBase64FileOutput;
|
117
|
+
/** Maps the files to an array of File objects and sends them along
|
118
|
+
* to the derived onMultipleFileSelected method in the hosting component
|
119
|
+
*/
|
120
|
+
private handleMultipleFiles;
|
121
|
+
private readFile;
|
122
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadComponent, never>;
|
123
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FileUploadComponent, "ec-file-upload", never, { "formModel": { "alias": "formModel"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "fileType": { "alias": "fileType"; "required": false; }; "fileOutput": { "alias": "fileOutput"; "required": false; }; "customExtensions": { "alias": "customExtensions"; "required": false; }; "onFileSelected": { "alias": "onFileSelected"; "required": false; }; "onMultipleFilesSelected": { "alias": "onMultipleFilesSelected"; "required": false; }; "displayType": { "alias": "displayType"; "required": false; }; "buttonLabel": { "alias": "buttonLabel"; "required": false; }; "buttonType": { "alias": "buttonType"; "required": false; }; "multiSelect": { "alias": "multiSelect"; "required": false; }; "validateBeforeUpload": { "alias": "validateBeforeUpload"; "required": false; }; }, {}, never, never, false, never>;
|
124
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import { AfterViewInit, ElementRef, EventEmitter } from '@angular/core';
|
2
|
+
import { AbstractControl } from '@angular/forms';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export declare class FormControlComponent implements AfterViewInit {
|
5
|
+
private el;
|
6
|
+
formControlDirective?: AbstractControl;
|
7
|
+
id: string;
|
8
|
+
icon?: string;
|
9
|
+
actionIcon?: string;
|
10
|
+
showClear: boolean;
|
11
|
+
formModelInput?: AbstractControl;
|
12
|
+
autofocus: boolean;
|
13
|
+
pending: boolean;
|
14
|
+
required: boolean;
|
15
|
+
readonly: boolean;
|
16
|
+
get empty(): boolean;
|
17
|
+
get invalid(): boolean;
|
18
|
+
get disabled(): boolean;
|
19
|
+
actionClicked: EventEmitter<Event>;
|
20
|
+
private get _formModel();
|
21
|
+
constructor(el: ElementRef);
|
22
|
+
ngAfterViewInit(): void;
|
23
|
+
onClick(): void;
|
24
|
+
focus(): void;
|
25
|
+
clear(): void;
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormControlComponent, never>;
|
27
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormControlComponent, "ec-form-control", never, { "id": { "alias": "id"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "actionIcon": { "alias": "actionIcon"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "formModelInput": { "alias": "formModel"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; }, { "actionClicked": "actionClicked"; }, ["formControlDirective"], ["*"], false, never>;
|
28
|
+
}
|
@@ -0,0 +1,110 @@
|
|
1
|
+
import { OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
|
2
|
+
import { AbstractControl } from "@angular/forms";
|
3
|
+
import { Subject } from "rxjs";
|
4
|
+
import { ValidationMessageService } from "../core/validation-message.service";
|
5
|
+
import { FormGroupHelper } from '../shared/form-group.helper';
|
6
|
+
import { PopoverContentPosition } from './popover/popover.component';
|
7
|
+
import * as i0 from "@angular/core";
|
8
|
+
export type ControlLabelPosition = "top" | "bottom" | "left";
|
9
|
+
/**
|
10
|
+
* Base class for Reactive Form Controls, containing ECI-specific shared properties
|
11
|
+
*/
|
12
|
+
export declare abstract class FormControlBase implements OnInit, OnDestroy, OnChanges {
|
13
|
+
protected validationMessageService: ValidationMessageService;
|
14
|
+
protected formGroupHelper: FormGroupHelper;
|
15
|
+
/**
|
16
|
+
* If true, will focus the control's input when the view is intialized
|
17
|
+
*/
|
18
|
+
autofocus?: boolean;
|
19
|
+
/**
|
20
|
+
* UI-oriented form model that retains the states and values of the HTML controls on screen.
|
21
|
+
* Can be a {@link FormControl} or a {@link FormGroup}
|
22
|
+
*/
|
23
|
+
formModel: AbstractControl;
|
24
|
+
/**
|
25
|
+
* The form control label
|
26
|
+
*/
|
27
|
+
label?: string;
|
28
|
+
/**
|
29
|
+
* The position of the form control label (top|bottom)
|
30
|
+
*/
|
31
|
+
labelPosition?: ControlLabelPosition;
|
32
|
+
/**
|
33
|
+
* The id of the component. We use this to identify a control on focus events and help.
|
34
|
+
*/
|
35
|
+
id: string;
|
36
|
+
/**
|
37
|
+
* The pending status of the control, can be used to tell the user the control is
|
38
|
+
* awaiting data via a spinner or animation
|
39
|
+
*/
|
40
|
+
pending?: boolean;
|
41
|
+
/**
|
42
|
+
* Whether the input is a required field or not
|
43
|
+
* @todo: Sometime in the future Angular makes it sound like this will be handled via the Reactive form When that happens this property can be removed
|
44
|
+
*/
|
45
|
+
required?: boolean;
|
46
|
+
/**
|
47
|
+
* The tabindex of the control
|
48
|
+
*/
|
49
|
+
tabindex?: number;
|
50
|
+
/**
|
51
|
+
* Disable the control and display the value
|
52
|
+
*/
|
53
|
+
readonly?: boolean;
|
54
|
+
/**
|
55
|
+
* Conditionally show a tooltip on the form control's input.
|
56
|
+
*/
|
57
|
+
tooltip?: string;
|
58
|
+
/**
|
59
|
+
* Conditionally show a help popover next to the controls label.
|
60
|
+
*/
|
61
|
+
helpPopover?: string;
|
62
|
+
/**
|
63
|
+
* When a help popover is present, allows the popover to be positioned in different locations.
|
64
|
+
*/
|
65
|
+
helpPopoverPosition?: PopoverContentPosition;
|
66
|
+
/**
|
67
|
+
* All current validation errors
|
68
|
+
*/
|
69
|
+
validationErrors: string;
|
70
|
+
/**
|
71
|
+
* The id of the form controls input, getnerated from the components id.
|
72
|
+
*/
|
73
|
+
inputId: string;
|
74
|
+
/**
|
75
|
+
* Notifies component subscriptions that component is destroyed.
|
76
|
+
* Use with `takeUntil()` when subscribing to complete subscriptions
|
77
|
+
* automatically.
|
78
|
+
*
|
79
|
+
* See:
|
80
|
+
* [RxJs]{@link http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-takeUntil}
|
81
|
+
* [and this]{@link https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87}
|
82
|
+
* [and this]{@link https://netbasal.com/when-to-unsubscribe-in-angular-d61c6b21bad3}
|
83
|
+
* [and this]{@link http://brianflove.com/2016/12/11/anguar-2-unsubscribe-observables/}
|
84
|
+
*/
|
85
|
+
protected componentDestroyed: Subject<void>;
|
86
|
+
/**
|
87
|
+
* Creates an instance of FormControlBase.
|
88
|
+
*/
|
89
|
+
constructor(validationMessageService: ValidationMessageService, formGroupHelper: FormGroupHelper);
|
90
|
+
/**
|
91
|
+
* Angular onChange lifecyle hook
|
92
|
+
*/
|
93
|
+
ngOnChanges(changes: SimpleChanges): void;
|
94
|
+
/**
|
95
|
+
* Angular onInit lifecycle hook.
|
96
|
+
*/
|
97
|
+
ngOnInit(): void;
|
98
|
+
/**
|
99
|
+
* Angular onDestroy lifecyle hook.
|
100
|
+
* Unsubscribe from any observables
|
101
|
+
*/
|
102
|
+
ngOnDestroy(): void;
|
103
|
+
/**
|
104
|
+
* Function that subscribes to the formModel's valueChanges Observable
|
105
|
+
* to take any erros and translate them
|
106
|
+
*/
|
107
|
+
protected translateValidationMessages(data?: any): Promise<void>;
|
108
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormControlBase, never>;
|
109
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FormControlBase, never, never, { "autofocus": { "alias": "autofocus"; "required": false; }; "formModel": { "alias": "formModel"; "required": false; }; "label": { "alias": "label"; "required": false; }; "labelPosition": { "alias": "labelPosition"; "required": false; }; "id": { "alias": "id"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; "required": { "alias": "required"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "helpPopover": { "alias": "helpPopover"; "required": false; }; "helpPopoverPosition": { "alias": "helpPopoverPosition"; "required": false; }; }, {}, never, never, false, never>;
|
110
|
+
}
|