@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
package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs
ADDED
@@ -0,0 +1,210 @@
|
|
1
|
+
import moment from "moment";
|
2
|
+
import { DateInput } from "../date-input.types";
|
3
|
+
import { DateInputSelectionStrategyBase } from "./date-input-selection-strategy-base";
|
4
|
+
/**
|
5
|
+
* Selection strategy for the 'range' selection mode.
|
6
|
+
*/
|
7
|
+
export class RangeSelectionStrategy extends DateInputSelectionStrategyBase {
|
8
|
+
constructor() {
|
9
|
+
super(...arguments);
|
10
|
+
this.selectionViewMode = 'day';
|
11
|
+
this.validViewModes = ['day', 'month', 'year'];
|
12
|
+
this.showSecondaryTextbox = true;
|
13
|
+
this.showSecondaryCalendar = true;
|
14
|
+
}
|
15
|
+
formatSelection(selection) {
|
16
|
+
if (!selection) {
|
17
|
+
return { textbox: null, textbox2: null };
|
18
|
+
}
|
19
|
+
// We use the 'll' moment medium format here to make sure the formatted date is formatted according to the user's locale
|
20
|
+
if (DateInput.isSelectionSingleDate(selection)) {
|
21
|
+
return { textbox: moment(selection).format('ll'), textbox2: null };
|
22
|
+
}
|
23
|
+
else {
|
24
|
+
const start = selection.start ? moment(selection.start).format('ll') : null;
|
25
|
+
const end = selection.end ? moment(selection.end).format('ll') : null;
|
26
|
+
return { textbox: start, textbox2: end };
|
27
|
+
}
|
28
|
+
}
|
29
|
+
parseTextboxValues(value, parseFormats, opts) {
|
30
|
+
let start = this.parseString(value.textbox, parseFormats, opts);
|
31
|
+
let end = this.parseString(value.textbox2, parseFormats, opts);
|
32
|
+
// If the start date is after the end date, we need to clear out the invalid date. This is different from the last 7/28 days strategies
|
33
|
+
// because we don't have a fixed range to automatically adjust the dates to. If the user is changing the begin date or end date and ends
|
34
|
+
// up crossing the other date, we should clear out the date that's not being changed so that the user can enter a valid range using the
|
35
|
+
// begin/end date they just entered.
|
36
|
+
if (start && end && moment(start).isAfter(end)) {
|
37
|
+
if (opts?.parseFromEnd) {
|
38
|
+
start = null;
|
39
|
+
}
|
40
|
+
else {
|
41
|
+
end = null;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
if (!start && !end) {
|
45
|
+
return null;
|
46
|
+
}
|
47
|
+
else {
|
48
|
+
return { start, end };
|
49
|
+
}
|
50
|
+
}
|
51
|
+
getSelectionFromDate(date, existingSelection) {
|
52
|
+
if (DateInput.isSelectionRange(existingSelection)) {
|
53
|
+
const { start, end } = existingSelection;
|
54
|
+
if (start && !end) {
|
55
|
+
// If the selected date is before the existing start date, set it as the new start date and use the existing start date as the end date
|
56
|
+
return moment(date).isBefore(start) ? { start: date, end: start } : { start, end: date };
|
57
|
+
}
|
58
|
+
if (end && !start) {
|
59
|
+
// If the selected date is after the existing end date, set it as the new end date and use the existing end date as the start date
|
60
|
+
return moment(date).isBefore(end) ? { start: date, end } : { start: end, end: date };
|
61
|
+
}
|
62
|
+
}
|
63
|
+
else if (DateInput.isSelectionSingleDate(existingSelection)) {
|
64
|
+
// If the selected date is before the existing date, set it as the new start date and use the existing date as the end date
|
65
|
+
return moment(date).isBefore(existingSelection) ? { start: date, end: existingSelection } : { start: existingSelection, end: date };
|
66
|
+
}
|
67
|
+
// If no selection exists or we already have a complete selection, start a new one with the selected date as the start date.
|
68
|
+
return { start: date, end: null };
|
69
|
+
}
|
70
|
+
getNewSelectionFromExisting(previousSelection) {
|
71
|
+
if (DateInput.isSelectionRange(previousSelection)) {
|
72
|
+
// If we have a range, just return it as is. We don't have a fixed range to adjust the dates to.
|
73
|
+
// Even if it's incomplete, the user will still be able to select the remaining date.
|
74
|
+
return previousSelection;
|
75
|
+
}
|
76
|
+
else if (DateInput.isSelectionSingleDate(previousSelection)) {
|
77
|
+
// If we have a single date selection, use it as the start date for the new one.
|
78
|
+
return { start: previousSelection, end: null };
|
79
|
+
}
|
80
|
+
return null;
|
81
|
+
}
|
82
|
+
getSelectionForQuickSelectDate(date, existingSelection) {
|
83
|
+
// If we have a valid range, we'll shift the range to the date provided, using it as the end date
|
84
|
+
// The new selection will have the same length as the previous.
|
85
|
+
if (DateInput.isSelectionRange(existingSelection) && existingSelection.start && existingSelection.end) {
|
86
|
+
const length = moment(existingSelection.end).diff(existingSelection.start, 'days');
|
87
|
+
return {
|
88
|
+
start: moment(date).subtract(length, 'days').toDate(),
|
89
|
+
end: date
|
90
|
+
};
|
91
|
+
}
|
92
|
+
// If we only have a single date, we'll use the date provided as the end date.
|
93
|
+
// The user will be able to select the start date.
|
94
|
+
return { start: null, end: date };
|
95
|
+
}
|
96
|
+
getNextSelection(selection) {
|
97
|
+
// We can only determine the next selection if we have a valid range
|
98
|
+
if (DateInput.isSelectionRange(selection) && selection.start && selection.end) {
|
99
|
+
// Shift the range forward by the number of days between the start and end dates
|
100
|
+
const length = moment(selection.end).diff(selection.start, 'days');
|
101
|
+
return {
|
102
|
+
start: moment(selection.end).add(1, 'days').toDate(),
|
103
|
+
end: moment(selection.end).add(1 + length, 'days').toDate()
|
104
|
+
};
|
105
|
+
}
|
106
|
+
// This shouldn't happen since the next stepper is disabled if the selection only has one date.
|
107
|
+
// If it does, just return the selection as-is.
|
108
|
+
return selection;
|
109
|
+
}
|
110
|
+
getPreviousSelection(selection) {
|
111
|
+
// We can only determine the previous selection if we have a valid range
|
112
|
+
if (DateInput.isSelectionRange(selection) && selection.start && selection.end) {
|
113
|
+
// Shift the range back by the number of days between the start and end dates
|
114
|
+
const length = moment(selection.end).diff(selection.start, 'days');
|
115
|
+
return {
|
116
|
+
start: moment(selection.start).subtract(1 + length, 'days').toDate(),
|
117
|
+
end: moment(selection.start).subtract(1, 'days').toDate()
|
118
|
+
};
|
119
|
+
}
|
120
|
+
// This shouldn't happen since the previous stepper is disabled if the selection only has one date.
|
121
|
+
// If it does, just return the selection as-is.
|
122
|
+
return selection;
|
123
|
+
}
|
124
|
+
getPrimaryCalendarView(selection, minDate, maxDate, currentView) {
|
125
|
+
let viewDate;
|
126
|
+
if (DateInput.isSelectionRange(selection)) {
|
127
|
+
let start = selection.start ? moment(selection.start) : null;
|
128
|
+
let end = selection.end ? moment(selection.end) : null;
|
129
|
+
// Since we're in range mode, the primary calendar is mostly concerned with the start date
|
130
|
+
if (start) {
|
131
|
+
// If we have a start date in the selection and it's before the min date, shift the view to the min date.
|
132
|
+
if (start.isBefore(minDate, 'month')) {
|
133
|
+
viewDate = minDate;
|
134
|
+
// If the start is after the max date, shift the view to the max date.
|
135
|
+
}
|
136
|
+
else if (start.isSameOrAfter(maxDate, 'month')) {
|
137
|
+
// the secondary calendar will show the max date month.
|
138
|
+
// The primary calendar will show the month before the max date.
|
139
|
+
viewDate = moment(maxDate).subtract(1, 'month').toDate();
|
140
|
+
}
|
141
|
+
else {
|
142
|
+
viewDate = start.toDate();
|
143
|
+
}
|
144
|
+
}
|
145
|
+
else if (end && end.isSameOrBefore(minDate, 'month')) {
|
146
|
+
// If we don't have a start date, and the end date is the same month or before the min date, shift the view to the min date.
|
147
|
+
viewDate = minDate;
|
148
|
+
}
|
149
|
+
else if (end && end.isSameOrBefore(new Date(), 'month')) {
|
150
|
+
// If we don't have a start date, and the end date is the same month or before the current month, shift the view to the month before the end
|
151
|
+
viewDate = moment(end).subtract(1, 'month').toDate();
|
152
|
+
}
|
153
|
+
else {
|
154
|
+
// Otherwise, show the current month.
|
155
|
+
viewDate = new Date();
|
156
|
+
}
|
157
|
+
}
|
158
|
+
else {
|
159
|
+
viewDate = selection || new Date();
|
160
|
+
}
|
161
|
+
// If the current calendar view mode is valid for the selection mode, use it, otherwise use the selection view mode
|
162
|
+
// This prevents the calendar from changing view modes as the user types/blurs the textboxes as long as the view mode is valid
|
163
|
+
const viewMode = this.validViewModes.includes(currentView.mode) ? currentView.mode : this.selectionViewMode;
|
164
|
+
return { mode: viewMode, date: viewDate };
|
165
|
+
}
|
166
|
+
getSecondaryCalendarView(selection, minDate, maxDate, currentView) {
|
167
|
+
let viewDate;
|
168
|
+
if (DateInput.isSelectionRange(selection)) {
|
169
|
+
let start = selection.start ? moment(selection.start) : null;
|
170
|
+
let end = selection.end ? moment(selection.end) : null;
|
171
|
+
// The secondary calendar is primarily concerned with the end date in the selection.
|
172
|
+
if (end) {
|
173
|
+
if (end.isAfter(maxDate, 'month')) {
|
174
|
+
// If the end date is after the max date, shift the view to the max date.
|
175
|
+
viewDate = maxDate;
|
176
|
+
}
|
177
|
+
else if (end.isSameOrBefore(minDate, 'month')) {
|
178
|
+
// If the end date is the same month or before the min date, shift the view to show
|
179
|
+
// the month after the min date. The primary calendar will show the min date month.
|
180
|
+
viewDate = moment(minDate).add(1, 'month').toDate();
|
181
|
+
}
|
182
|
+
else {
|
183
|
+
// Otherwise, show the end date month.
|
184
|
+
viewDate = end.toDate();
|
185
|
+
}
|
186
|
+
}
|
187
|
+
else if (start && start.isSameOrAfter(maxDate, 'month')) {
|
188
|
+
// If we don't have an end date, and the start date is after the max date, show the max date month
|
189
|
+
viewDate = maxDate;
|
190
|
+
}
|
191
|
+
else if (start && start.isSameOrAfter(new Date(), 'month')) {
|
192
|
+
// If we don't have an end date, and the start date is on or after the current month,
|
193
|
+
// show the month after the start date.
|
194
|
+
viewDate = moment(start).add(1, 'month').toDate();
|
195
|
+
}
|
196
|
+
else {
|
197
|
+
// Otherwise, show the current month.
|
198
|
+
viewDate = new Date();
|
199
|
+
}
|
200
|
+
}
|
201
|
+
else {
|
202
|
+
viewDate = selection || new Date();
|
203
|
+
}
|
204
|
+
// If the current calendar view mode is valid for the selection mode, use it, otherwise use the selection view mode
|
205
|
+
// This prevents the calendar from changing view modes as the user types/blurs the textboxes as long as the view mode is valid
|
206
|
+
const viewMode = this.validViewModes.includes(currentView.mode) ? currentView.mode : this.selectionViewMode;
|
207
|
+
return { mode: viewMode, date: viewDate };
|
208
|
+
}
|
209
|
+
}
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2VsZWN0aW9uLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC1zZWxlY3Rpb24tc3RyYXRlZ2llcy9yYW5nZS1zZWxlY3Rpb24tc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0Rjs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSw4QkFBOEI7SUFBMUU7O1FBQ2tCLHNCQUFpQixHQUFzQixLQUFLLENBQUM7UUFDN0MsbUJBQWMsR0FBd0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUM1QiwwQkFBcUIsR0FBRyxJQUFJLENBQUM7SUEyTS9DLENBQUM7SUF6TUMsZUFBZSxDQUFDLFNBQXNDO1FBQ3BELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMzQyxDQUFDO1FBRUQsd0hBQXdIO1FBQ3hILElBQUksU0FBUyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNyRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxL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LE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BELENBQUM7aUJBQU0sQ0FBQztnQkFDTixxQ0FBcUM7Z0JBQ3JDLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLFFBQVEsR0FBRyxTQUFTLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNyQyxDQUFDO1FBRUQsbUhBQW1IO1FBQ25ILDhIQUE4SDtRQUM5SCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUU1RyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDNUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSBcIi4uLy4uL2NhbGVuZGFyL2NhbGVuZGFyLnR5cGVzXCI7XHJcbmltcG9ydCB7IERhdGVJbnB1dCB9IGZyb20gXCIuLi9kYXRlLWlucHV0LnR5cGVzXCI7XHJcbmltcG9ydCB7IERhdGVJbnB1dFNlbGVjdGlvblN0cmF0ZWd5QmFzZSB9IGZyb20gXCIuL2RhdGUtaW5wdXQtc2VsZWN0aW9uLXN0cmF0ZWd5LWJhc2VcIjtcclxuXHJcbi8qKlxyXG4gKiBTZWxlY3Rpb24gc3RyYXRlZ3kgZm9yIHRoZSAncmFuZ2UnIHNlbGVjdGlvbiBtb2RlLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFJhbmdlU2VsZWN0aW9uU3RyYXRlZ3kgZXh0ZW5kcyBEYXRlSW5wdXRTZWxlY3Rpb25TdHJhdGVneUJhc2Uge1xyXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25WaWV3TW9kZTogQ2FsZW5kYXIuVmlld01vZGUgPSAnZGF5JztcclxuICBwdWJsaWMgcmVhZG9ubHkgdmFsaWRWaWV3TW9kZXM6IENhbGVuZGFyLlZpZXdNb2RlW10gPSBbJ2RheScsICdtb250aCcsICd5ZWFyJ107XHJcbiAgcHVibGljIHJlYWRvbmx5IHNob3dTZWNvbmRhcnlUZXh0Ym94ID0gdHJ1ZTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc2hvd1NlY29uZGFyeUNhbGVuZGFyID0gdHJ1ZTtcclxuXHJcbiAgZm9ybWF0U2VsZWN0aW9uKHNlbGVjdGlvbj86IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsKTogRGF0ZUlucHV0LlRleHRib3hHcm91cFsndmFsdWUnXSB7XHJcbiAgICBpZiAoIXNlbGVjdGlvbikge1xyXG4gICAgICByZXR1cm4geyB0ZXh0Ym94OiBudWxsLCB0ZXh0Ym94MjogbnVsbCB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdlIHVzZSB0aGUgJ2xsJyBtb21lbnQgbWVkaXVtIGZvcm1hdCBoZXJlIHRvIG1ha2Ugc3VyZSB0aGUgZm9ybWF0dGVkIGRhdGUgaXMgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgdXNlcidzIGxvY2FsZVxyXG4gICAgaWYgKERhdGVJbnB1dC5pc1NlbGVjdGlvblNpbmdsZURhdGUoc2VsZWN0aW9uKSkge1xyXG4gICAgICByZXR1cm4geyB0ZXh0Ym94OiBtb21lbnQoc2VsZWN0aW9uKS5mb3JtYXQoJ2xsJyksIHRleHRib3gyOiBudWxsIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBzdGFydCA9IHNlbGVjdGlvbi5zdGFydCA/IG1vbWVudChzZWxlY3Rpb24uc3RhcnQpLmZvcm1hdCgnbGwnKSA6IG51bGw7XHJcbiAgICAgIGNvbnN0IGVuZCA9IHNlbGVjdGlvbi5lbmQgPyBtb21lbnQoc2VsZWN0aW9uLmVuZCkuZm9ybWF0KCdsbCcpIDogbnVsbDtcclxuXHJcbiAgICAgIHJldHVybiB7IHRleHRib3g6IHN0YXJ0LCB0ZXh0Ym94MjogZW5kIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwYXJzZVRleHRib3hWYWx1ZXModmFsdWU6IERhdGVJbnB1dC5UZXh0Ym94R3JvdXBbJ3ZhbHVlJ10sIHBhcnNlRm9ybWF0czogc3RyaW5nW10sIG9wdHM/OiBEYXRlSW5wdXQuUGFyc2luZ09wdGlvbnMpOiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCB7XHJcbiAgICBsZXQgc3RhcnQgPSB0aGlzLnBhcnNlU3RyaW5nKHZhbHVlLnRleHRib3gsIHBhcnNlRm9ybWF0cywgb3B0cyk7XHJcbiAgICBsZXQgZW5kID0gdGhpcy5wYXJzZVN0cmluZyh2YWx1ZS50ZXh0Ym94MiwgcGFyc2VGb3JtYXRzLCBvcHRzKTtcclxuXHJcbiAgICAvLyBJZiB0aGUgc3RhcnQgZGF0ZSBpcyBhZnRlciB0aGUgZW5kIGRhdGUsIHdlIG5lZWQgdG8gY2xlYXIgb3V0IHRoZSBpbnZhbGlkIGRhdGUuIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIGxhc3QgNy8yOCBkYXlzIHN0cmF0ZWdpZXNcclxuICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIGZpeGVkIHJhbmdlIHRvIGF1dG9tYXRpY2FsbHkgYWRqdXN0IHRoZSBkYXRlcyB0by4gSWYgdGhlIHVzZXIgaXMgY2hhbmdpbmcgdGhlIGJlZ2luIGRhdGUgb3IgZW5kIGRhdGUgYW5kIGVuZHNcclxuICAgIC8vIHVwIGNyb3NzaW5nIHRoZSBvdGhlciBkYXRlLCB3ZSBzaG91bGQgY2xlYXIgb3V0IHRoZSBkYXRlIHRoYXQncyBub3QgYmVpbmcgY2hhbmdlZCBzbyB0aGF0IHRoZSB1c2VyIGNhbiBlbnRlciBhIHZhbGlkIHJhbmdlIHVzaW5nIHRoZVxyXG4gICAgLy8gYmVnaW4vZW5kIGRhdGUgdGhleSBqdXN0IGVudGVyZWQuXHJcbiAgICBpZiAoc3RhcnQgJiYgZW5kICYmIG1vbWVudChzdGFydCkuaXNBZnRlcihlbmQpKSB7XHJcbiAgICAgIGlmIChvcHRzPy5wYXJzZUZyb21FbmQpIHtcclxuICAgICAgICBzdGFydCA9IG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZW5kID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghc3RhcnQgJiYgIWVuZCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IHN0YXJ0LCBlbmQgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGlvbkZyb21EYXRlKGRhdGU6IERhdGUsIGV4aXN0aW5nU2VsZWN0aW9uOiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCk6IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsIHtcclxuICAgIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25SYW5nZShleGlzdGluZ1NlbGVjdGlvbikpIHtcclxuICAgICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBleGlzdGluZ1NlbGVjdGlvbjtcclxuICAgICAgaWYgKHN0YXJ0ICYmICFlbmQpIHtcclxuICAgICAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgZGF0ZSBpcyBiZWZvcmUgdGhlIGV4aXN0aW5nIHN0YXJ0IGRhdGUsIHNldCBpdCBhcyB0aGUgbmV3IHN0YXJ0IGRhdGUgYW5kIHVzZSB0aGUgZXhpc3Rpbmcgc3RhcnQgZGF0ZSBhcyB0aGUgZW5kIGRhdGVcclxuICAgICAgICByZXR1cm4gbW9tZW50KGRhdGUpLmlzQmVmb3JlKHN0YXJ0KSA/IHsgc3RhcnQ6IGRhdGUsIGVuZDogc3RhcnQgfSA6IHsgc3RhcnQsIGVuZDogZGF0ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlbmQgJiYgIXN0YXJ0KSB7XHJcbiAgICAgICAgLy8gSWYgdGhlIHNlbGVjdGVkIGRhdGUgaXMgYWZ0ZXIgdGhlIGV4aXN0aW5nIGVuZCBkYXRlLCBzZXQgaXQgYXMgdGhlIG5ldyBlbmQgZGF0ZSBhbmQgdXNlIHRoZSBleGlzdGluZyBlbmQgZGF0ZSBhcyB0aGUgc3RhcnQgZGF0ZVxyXG4gICAgICAgIHJldHVybiBtb21lbnQoZGF0ZSkuaXNCZWZvcmUoZW5kKSA/IHsgc3RhcnQ6IGRhdGUsIGVuZCB9IDogeyBzdGFydDogZW5kLCBlbmQ6IGRhdGUgfTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25TaW5nbGVEYXRlKGV4aXN0aW5nU2VsZWN0aW9uKSkge1xyXG4gICAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgZGF0ZSBpcyBiZWZvcmUgdGhlIGV4aXN0aW5nIGRhdGUsIHNldCBpdCBhcyB0aGUgbmV3IHN0YXJ0IGRhdGUgYW5kIHVzZSB0aGUgZXhpc3RpbmcgZGF0ZSBhcyB0aGUgZW5kIGRhdGVcclxuICAgICAgcmV0dXJuIG1vbWVudChkYXRlKS5pc0JlZm9yZShleGlzdGluZ1NlbGVjdGlvbikgPyB7IHN0YXJ0OiBkYXRlLCBlbmQ6IGV4aXN0aW5nU2VsZWN0aW9uIH0gOiB7IHN0YXJ0OiBleGlzdGluZ1NlbGVjdGlvbiwgZW5kOiBkYXRlIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgbm8gc2VsZWN0aW9uIGV4aXN0cyBvciB3ZSBhbHJlYWR5IGhhdmUgYSBjb21wbGV0ZSBzZWxlY3Rpb24sIHN0YXJ0IGEgbmV3IG9uZSB3aXRoIHRoZSBzZWxlY3RlZCBkYXRlIGFzIHRoZSBzdGFydCBkYXRlLlxyXG4gICAgcmV0dXJuIHsgc3RhcnQ6IGRhdGUsIGVuZDogbnVsbCB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0TmV3U2VsZWN0aW9uRnJvbUV4aXN0aW5nKHByZXZpb3VzU2VsZWN0aW9uPzogRGF0ZUlucHV0LlNlbGVjdGlvbik6IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsIHtcclxuICAgIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25SYW5nZShwcmV2aW91c1NlbGVjdGlvbikpIHtcclxuICAgICAgLy8gSWYgd2UgaGF2ZSBhIHJhbmdlLCBqdXN0IHJldHVybiBpdCBhcyBpcy4gV2UgZG9uJ3QgaGF2ZSBhIGZpeGVkIHJhbmdlIHRvIGFkanVzdCB0aGUgZGF0ZXMgdG8uXHJcbiAgICAgIC8vIEV2ZW4gaWYgaXQncyBpbmNvbXBsZXRlLCB0aGUgdXNlciB3aWxsIHN0aWxsIGJlIGFibGUgdG8gc2VsZWN0IHRoZSByZW1haW5pbmcgZGF0ZS5cclxuICAgICAgcmV0dXJuIHByZXZpb3VzU2VsZWN0aW9uO1xyXG4gICAgfSBlbHNlIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25TaW5nbGVEYXRlKHByZXZpb3VzU2VsZWN0aW9uKSkge1xyXG4gICAgICAvLyBJZiB3ZSBoYXZlIGEgc2luZ2xlIGRhdGUgc2VsZWN0aW9uLCB1c2UgaXQgYXMgdGhlIHN0YXJ0IGRhdGUgZm9yIHRoZSBuZXcgb25lLlxyXG4gICAgICByZXR1cm4geyBzdGFydDogcHJldmlvdXNTZWxlY3Rpb24sIGVuZDogbnVsbCB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0aW9uRm9yUXVpY2tTZWxlY3REYXRlKGRhdGU6IERhdGUsIGV4aXN0aW5nU2VsZWN0aW9uPzogRGF0ZUlucHV0LlNlbGVjdGlvbiB8IG51bGwpOiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCB7XHJcbiAgICAvLyBJZiB3ZSBoYXZlIGEgdmFsaWQgcmFuZ2UsIHdlJ2xsIHNoaWZ0IHRoZSByYW5nZSB0byB0aGUgZGF0ZSBwcm92aWRlZCwgdXNpbmcgaXQgYXMgdGhlIGVuZCBkYXRlXHJcbiAgICAvLyBUaGUgbmV3IHNlbGVjdGlvbiB3aWxsIGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBwcmV2aW91cy5cclxuICAgIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25SYW5nZShleGlzdGluZ1NlbGVjdGlvbikgJiYgZXhpc3RpbmdTZWxlY3Rpb24uc3RhcnQgJiYgZXhpc3RpbmdTZWxlY3Rpb24uZW5kKSB7XHJcbiAgICAgIGNvbnN0IGxlbmd0aCA9IG1vbWVudChleGlzdGluZ1NlbGVjdGlvbi5lbmQpLmRpZmYoZXhpc3RpbmdTZWxlY3Rpb24uc3RhcnQsICdkYXlzJyk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgc3RhcnQ6IG1vbWVudChkYXRlKS5zdWJ0cmFjdChsZW5ndGgsICdkYXlzJykudG9EYXRlKCksXHJcbiAgICAgICAgZW5kOiBkYXRlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgd2Ugb25seSBoYXZlIGEgc2luZ2xlIGRhdGUsIHdlJ2xsIHVzZSB0aGUgZGF0ZSBwcm92aWRlZCBhcyB0aGUgZW5kIGRhdGUuXHJcbiAgICAvLyBUaGUgdXNlciB3aWxsIGJlIGFibGUgdG8gc2VsZWN0IHRoZSBzdGFydCBkYXRlLlxyXG4gICAgcmV0dXJuIHsgc3RhcnQ6IG51bGwsIGVuZDogZGF0ZSB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0TmV4dFNlbGVjdGlvbihzZWxlY3Rpb246IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsKTogRGF0ZUlucHV0LlNlbGVjdGlvbiB8IG51bGwge1xyXG4gICAgLy8gV2UgY2FuIG9ubHkgZGV0ZXJtaW5lIHRoZSBuZXh0IHNlbGVjdGlvbiBpZiB3ZSBoYXZlIGEgdmFsaWQgcmFuZ2VcclxuICAgIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb24pICYmIHNlbGVjdGlvbi5zdGFydCAmJiBzZWxlY3Rpb24uZW5kKSB7XHJcbiAgICAgIC8vIFNoaWZ0IHRoZSByYW5nZSBmb3J3YXJkIGJ5IHRoZSBudW1iZXIgb2YgZGF5cyBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kIGRhdGVzXHJcbiAgICAgIGNvbnN0IGxlbmd0aCA9IG1vbWVudChzZWxlY3Rpb24uZW5kKS5kaWZmKHNlbGVjdGlvbi5zdGFydCwgJ2RheXMnKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBzdGFydDogbW9tZW50KHNlbGVjdGlvbi5lbmQpLmFkZCgxLCAnZGF5cycpLnRvRGF0ZSgpLFxyXG4gICAgICAgIGVuZDogbW9tZW50KHNlbGVjdGlvbi5lbmQpLmFkZCgxICsgbGVuZ3RoLCAnZGF5cycpLnRvRGF0ZSgpXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIHNpbmNlIHRoZSBuZXh0IHN0ZXBwZXIgaXMgZGlzYWJsZWQgaWYgdGhlIHNlbGVjdGlvbiBvbmx5IGhhcyBvbmUgZGF0ZS5cclxuICAgIC8vIElmIGl0IGRvZXMsIGp1c3QgcmV0dXJuIHRoZSBzZWxlY3Rpb24gYXMtaXMuXHJcbiAgICByZXR1cm4gc2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJldmlvdXNTZWxlY3Rpb24oc2VsZWN0aW9uOiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCk6IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsIHtcclxuICAgIC8vIFdlIGNhbiBvbmx5IGRldGVybWluZSB0aGUgcHJldmlvdXMgc2VsZWN0aW9uIGlmIHdlIGhhdmUgYSB2YWxpZCByYW5nZVxyXG4gICAgaWYgKERhdGVJbnB1dC5pc1NlbGVjdGlvblJhbmdlKHNlbGVjdGlvbikgJiYgc2VsZWN0aW9uLnN0YXJ0ICYmIHNlbGVjdGlvbi5lbmQpIHtcclxuICAgICAgLy8gU2hpZnQgdGhlIHJhbmdlIGJhY2sgYnkgdGhlIG51bWJlciBvZiBkYXlzIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZXNcclxuICAgICAgY29uc3QgbGVuZ3RoID0gbW9tZW50KHNlbGVjdGlvbi5lbmQpLmRpZmYoc2VsZWN0aW9uLnN0YXJ0LCAnZGF5cycpO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHN0YXJ0OiBtb21lbnQoc2VsZWN0aW9uLnN0YXJ0KS5zdWJ0cmFjdCgxICsgbGVuZ3RoLCAnZGF5cycpLnRvRGF0ZSgpLFxyXG4gICAgICAgIGVuZDogbW9tZW50KHNlbGVjdGlvbi5zdGFydCkuc3VidHJhY3QoMSwgJ2RheXMnKS50b0RhdGUoKVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBzaW5jZSB0aGUgcHJldmlvdXMgc3RlcHBlciBpcyBkaXNhYmxlZCBpZiB0aGUgc2VsZWN0aW9uIG9ubHkgaGFzIG9uZSBkYXRlLlxyXG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHNlbGVjdGlvbiBhcy1pcy5cclxuICAgIHJldHVybiBzZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBnZXRQcmltYXJ5Q2FsZW5kYXJWaWV3KHNlbGVjdGlvbjogRGF0ZUlucHV0LlNlbGVjdGlvbiB8IG51bGwsIG1pbkRhdGU6IERhdGUsIG1heERhdGU6IERhdGUsIGN1cnJlbnRWaWV3OiBDYWxlbmRhci5WaWV3KTogQ2FsZW5kYXIuVmlldyB7XHJcbiAgICBsZXQgdmlld0RhdGU6IERhdGU7XHJcbiAgICBpZiAoRGF0ZUlucHV0LmlzU2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uKSkge1xyXG4gICAgICBsZXQgc3RhcnQgPSBzZWxlY3Rpb24uc3RhcnQgPyBtb21lbnQoc2VsZWN0aW9uLnN0YXJ0KSA6IG51bGw7XHJcbiAgICAgIGxldCBlbmQgPSBzZWxlY3Rpb24uZW5kID8gbW9tZW50KHNlbGVjdGlvbi5lbmQpIDogbnVsbDtcclxuXHJcbiAgICAgIC8vIFNpbmNlIHdlJ3JlIGluIHJhbmdlIG1vZGUsIHRoZSBwcmltYXJ5IGNhbGVuZGFyIGlzIG1vc3RseSBjb25jZXJuZWQgd2l0aCB0aGUgc3RhcnQgZGF0ZVxyXG4gICAgICBpZiAoc3RhcnQpIHtcclxuICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgc3RhcnQgZGF0ZSBpbiB0aGUgc2VsZWN0aW9uIGFuZCBpdCdzIGJlZm9yZSB0aGUgbWluIGRhdGUsIHNoaWZ0IHRoZSB2aWV3IHRvIHRoZSBtaW4gZGF0ZS5cclxuICAgICAgICBpZiAoc3RhcnQuaXNCZWZvcmUobWluRGF0ZSwgJ21vbnRoJykpIHtcclxuICAgICAgICAgIHZpZXdEYXRlID0gbWluRGF0ZTtcclxuICAgICAgICAgIC8vIElmIHRoZSBzdGFydCBpcyBhZnRlciB0aGUgbWF4IGRhdGUsIHNoaWZ0IHRoZSB2aWV3IHRvIHRoZSBtYXggZGF0ZS5cclxuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0LmlzU2FtZU9yQWZ0ZXIobWF4RGF0ZSwgJ21vbnRoJykpIHtcclxuICAgICAgICAgIC8vIHRoZSBzZWNvbmRhcnkgY2FsZW5kYXIgd2lsbCBzaG93IHRoZSBtYXggZGF0ZSBtb250aC5cclxuICAgICAgICAgIC8vIFRoZSBwcmltYXJ5IGNhbGVuZGFyIHdpbGwgc2hvdyB0aGUgbW9udGggYmVmb3JlIHRoZSBtYXggZGF0ZS5cclxuICAgICAgICAgIHZpZXdEYXRlID0gbW9tZW50KG1heERhdGUpLnN1YnRyYWN0KDEsICdtb250aCcpLnRvRGF0ZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2aWV3RGF0ZSA9IHN0YXJ0LnRvRGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlbmQgJiYgZW5kLmlzU2FtZU9yQmVmb3JlKG1pbkRhdGUsICdtb250aCcpKSB7XHJcbiAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHN0YXJ0IGRhdGUsIGFuZCB0aGUgZW5kIGRhdGUgaXMgdGhlIHNhbWUgbW9udGggb3IgYmVmb3JlIHRoZSBtaW4gZGF0ZSwgc2hpZnQgdGhlIHZpZXcgdG8gdGhlIG1pbiBkYXRlLlxyXG4gICAgICAgIHZpZXdEYXRlID0gbWluRGF0ZTtcclxuICAgICAgfSBlbHNlIGlmIChlbmQgJiYgZW5kLmlzU2FtZU9yQmVmb3JlKG5ldyBEYXRlKCksICdtb250aCcpKSB7XHJcbiAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHN0YXJ0IGRhdGUsIGFuZCB0aGUgZW5kIGRhdGUgaXMgdGhlIHNhbWUgbW9udGggb3IgYmVmb3JlIHRoZSBjdXJyZW50IG1vbnRoLCBzaGlmdCB0aGUgdmlldyB0byB0aGUgbW9udGggYmVmb3JlIHRoZSBlbmRcclxuICAgICAgICB2aWV3RGF0ZSA9IG1vbWVudChlbmQpLnN1YnRyYWN0KDEsICdtb250aCcpLnRvRGF0ZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIE90aGVyd2lzZSwgc2hvdyB0aGUgY3VycmVudCBtb250aC5cclxuICAgICAgICB2aWV3RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZpZXdEYXRlID0gc2VsZWN0aW9uIHx8IG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWYgdGhlIGN1cnJlbnQgY2FsZW5kYXIgdmlldyBtb2RlIGlzIHZhbGlkIGZvciB0aGUgc2VsZWN0aW9uIG1vZGUsIHVzZSBpdCwgb3RoZXJ3aXNlIHVzZSB0aGUgc2VsZWN0aW9uIHZpZXcgbW9kZVxyXG4gICAgLy8gVGhpcyBwcmV2ZW50cyB0aGUgY2FsZW5kYXIgZnJvbSBjaGFuZ2luZyB2aWV3IG1vZGVzIGFzIHRoZSB1c2VyIHR5cGVzL2JsdXJzIHRoZSB0ZXh0Ym94ZXMgYXMgbG9uZyBhcyB0aGUgdmlldyBtb2RlIGlzIHZhbGlkXHJcbiAgICBjb25zdCB2aWV3TW9kZSA9IHRoaXMudmFsaWRWaWV3TW9kZXMuaW5jbHVkZXMoY3VycmVudFZpZXcubW9kZSkgPyBjdXJyZW50Vmlldy5tb2RlIDogdGhpcy5zZWxlY3Rpb25WaWV3TW9kZTtcclxuXHJcbiAgICByZXR1cm4geyBtb2RlOiB2aWV3TW9kZSwgZGF0ZTogdmlld0RhdGUgfTtcclxuICB9XHJcblxyXG4gIGdldFNlY29uZGFyeUNhbGVuZGFyVmlldyhzZWxlY3Rpb246IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsLCBtaW5EYXRlOiBEYXRlLCBtYXhEYXRlOiBEYXRlLCBjdXJyZW50VmlldzogQ2FsZW5kYXIuVmlldyk6IENhbGVuZGFyLlZpZXcge1xyXG4gICAgbGV0IHZpZXdEYXRlOiBEYXRlO1xyXG5cclxuICAgIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb24pKSB7XHJcbiAgICAgIGxldCBzdGFydCA9IHNlbGVjdGlvbi5zdGFydCA/IG1vbWVudChzZWxlY3Rpb24uc3RhcnQpIDogbnVsbDtcclxuICAgICAgbGV0IGVuZCA9IHNlbGVjdGlvbi5lbmQgPyBtb21lbnQoc2VsZWN0aW9uLmVuZCkgOiBudWxsO1xyXG5cclxuICAgICAgLy8gVGhlIHNlY29uZGFyeSBjYWxlbmRhciBpcyBwcmltYXJpbHkgY29uY2VybmVkIHdpdGggdGhlIGVuZCBkYXRlIGluIHRoZSBzZWxlY3Rpb24uXHJcbiAgICAgIGlmIChlbmQpIHtcclxuICAgICAgICBpZiAoZW5kLmlzQWZ0ZXIobWF4RGF0ZSwgJ21vbnRoJykpIHtcclxuICAgICAgICAgIC8vIElmIHRoZSBlbmQgZGF0ZSBpcyBhZnRlciB0aGUgbWF4IGRhdGUsIHNoaWZ0IHRoZSB2aWV3IHRvIHRoZSBtYXggZGF0ZS5cclxuICAgICAgICAgIHZpZXdEYXRlID0gbWF4RGF0ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVuZC5pc1NhbWVPckJlZm9yZShtaW5EYXRlLCAnbW9udGgnKSkge1xyXG4gICAgICAgICAgLy8gSWYgdGhlIGVuZCBkYXRlIGlzIHRoZSBzYW1lIG1vbnRoIG9yIGJlZm9yZSB0aGUgbWluIGRhdGUsIHNoaWZ0IHRoZSB2aWV3IHRvIHNob3dcclxuICAgICAgICAgIC8vIHRoZSBtb250aCBhZnRlciB0aGUgbWluIGRhdGUuIFRoZSBwcmltYXJ5IGNhbGVuZGFyIHdpbGwgc2hvdyB0aGUgbWluIGRhdGUgbW9udGguXHJcbiAgICAgICAgICB2aWV3RGF0ZSA9IG1vbWVudChtaW5EYXRlKS5hZGQoMSwgJ21vbnRoJykudG9EYXRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIE90aGVyd2lzZSwgc2hvdyB0aGUgZW5kIGRhdGUgbW9udGguXHJcbiAgICAgICAgICB2aWV3RGF0ZSA9IGVuZC50b0RhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnQgJiYgc3RhcnQuaXNTYW1lT3JBZnRlcihtYXhEYXRlLCAnbW9udGgnKSkge1xyXG4gICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYW4gZW5kIGRhdGUsIGFuZCB0aGUgc3RhcnQgZGF0ZSBpcyBhZnRlciB0aGUgbWF4IGRhdGUsIHNob3cgdGhlIG1heCBkYXRlIG1vbnRoXHJcbiAgICAgICAgdmlld0RhdGUgPSBtYXhEYXRlO1xyXG4gICAgICB9IGVsc2UgaWYgKHN0YXJ0ICYmIHN0YXJ0LmlzU2FtZU9yQWZ0ZXIobmV3IERhdGUoKSwgJ21vbnRoJykpIHtcclxuICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGFuIGVuZCBkYXRlLCBhbmQgdGhlIHN0YXJ0IGRhdGUgaXMgb24gb3IgYWZ0ZXIgdGhlIGN1cnJlbnQgbW9udGgsXHJcbiAgICAgICAgLy8gc2hvdyB0aGUgbW9udGggYWZ0ZXIgdGhlIHN0YXJ0IGRhdGUuXHJcbiAgICAgICAgdmlld0RhdGUgPSBtb21lbnQoc3RhcnQpLmFkZCgxLCAnbW9udGgnKS50b0RhdGUoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBPdGhlcndpc2UsIHNob3cgdGhlIGN1cnJlbnQgbW9udGguXHJcbiAgICAgICAgdmlld0RhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2aWV3RGF0ZSA9IHNlbGVjdGlvbiB8fCBuZXcgRGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHRoZSBjdXJyZW50IGNhbGVuZGFyIHZpZXcgbW9kZSBpcyB2YWxpZCBmb3IgdGhlIHNlbGVjdGlvbiBtb2RlLCB1c2UgaXQsIG90aGVyd2lzZSB1c2UgdGhlIHNlbGVjdGlvbiB2aWV3IG1vZGVcclxuICAgIC8vIFRoaXMgcHJldmVudHMgdGhlIGNhbGVuZGFyIGZyb20gY2hhbmdpbmcgdmlldyBtb2RlcyBhcyB0aGUgdXNlciB0eXBlcy9ibHVycyB0aGUgdGV4dGJveGVzIGFzIGxvbmcgYXMgdGhlIHZpZXcgbW9kZSBpcyB2YWxpZFxyXG4gICAgY29uc3Qgdmlld01vZGUgPSB0aGlzLnZhbGlkVmlld01vZGVzLmluY2x1ZGVzKGN1cnJlbnRWaWV3Lm1vZGUpID8gY3VycmVudFZpZXcubW9kZSA6IHRoaXMuc2VsZWN0aW9uVmlld01vZGU7XHJcblxyXG4gICAgcmV0dXJuIHsgbW9kZTogdmlld01vZGUsIGRhdGU6IHZpZXdEYXRlIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
import moment from "moment";
|
2
|
+
import { DateInput } from "../date-input.types";
|
3
|
+
import { DateInputSelectionStrategyBase } from "./date-input-selection-strategy-base";
|
4
|
+
/**
|
5
|
+
* Selection strategy for the 'year' selection mode.
|
6
|
+
*/
|
7
|
+
export class YearSelectionStrategy extends DateInputSelectionStrategyBase {
|
8
|
+
constructor() {
|
9
|
+
super(...arguments);
|
10
|
+
this.selectionViewMode = 'year';
|
11
|
+
this.validViewModes = ['year'];
|
12
|
+
this.showSecondaryTextbox = false;
|
13
|
+
this.showSecondaryCalendar = false;
|
14
|
+
}
|
15
|
+
formatSelection(selection) {
|
16
|
+
if (!selection) {
|
17
|
+
return { textbox: null, textbox2: null };
|
18
|
+
}
|
19
|
+
// Only one date is needed for formatting since the ranges span a single year.
|
20
|
+
// There shouldn't be any case where there's only a single date but it's covered anyway.
|
21
|
+
const date = DateInput.isSelectionRange(selection) ? selection.start : selection;
|
22
|
+
return { textbox: moment(date).format('YYYY'), textbox2: null };
|
23
|
+
}
|
24
|
+
parseString(value, parseFormats, opts) {
|
25
|
+
// Including 'YY' and 'YYYY' as valid formats for year input. These aren't included in the default parse
|
26
|
+
// formats because they cause issues with the default date parsing.
|
27
|
+
return super.parseString(value, ['YY', 'YYYY', ...parseFormats], opts);
|
28
|
+
}
|
29
|
+
parseTextboxValues(value, parseFormats, opts) {
|
30
|
+
// Only a single textbox is used in year mode
|
31
|
+
const date = this.parseString(value.textbox, parseFormats, opts);
|
32
|
+
if (!date) {
|
33
|
+
return null;
|
34
|
+
}
|
35
|
+
return this.getSelectionFromDate(date);
|
36
|
+
}
|
37
|
+
getSelectionFromDate(date) {
|
38
|
+
return {
|
39
|
+
start: moment(date).startOf('year').toDate(),
|
40
|
+
end: moment(date).endOf('year').toDate()
|
41
|
+
};
|
42
|
+
}
|
43
|
+
getNewSelectionFromExisting(previousSelection) {
|
44
|
+
if (DateInput.isSelectionRange(previousSelection)) {
|
45
|
+
// Base the year range off of the existing selection's end date, falling back to the start date
|
46
|
+
const date = previousSelection.end || previousSelection.start;
|
47
|
+
if (date) {
|
48
|
+
return this.getSelectionFromDate(date);
|
49
|
+
}
|
50
|
+
}
|
51
|
+
else if (DateInput.isSelectionSingleDate(previousSelection)) {
|
52
|
+
// If the previous selection was a single date, make the range that year
|
53
|
+
return this.getSelectionFromDate(previousSelection);
|
54
|
+
}
|
55
|
+
return null;
|
56
|
+
}
|
57
|
+
getSelectionForQuickSelectDate(date) {
|
58
|
+
return this.getSelectionFromDate(date);
|
59
|
+
}
|
60
|
+
getNextSelection(selection) {
|
61
|
+
// Move the selection to the next year
|
62
|
+
if (DateInput.isSelectionRange(selection) && selection.start) {
|
63
|
+
const date = moment(selection.start).add(1, 'year');
|
64
|
+
return this.getSelectionFromDate(date.toDate());
|
65
|
+
}
|
66
|
+
// This shouldn't happen since the next stepper is disabled if the selection only has one date.
|
67
|
+
// If it does, just return the selection as-is.
|
68
|
+
return selection;
|
69
|
+
}
|
70
|
+
getPreviousSelection(selection) {
|
71
|
+
// Move the selection to the previous year
|
72
|
+
if (DateInput.isSelectionRange(selection) && selection.start) {
|
73
|
+
const date = moment(selection.start).subtract(1, 'year');
|
74
|
+
return this.getSelectionFromDate(date.toDate());
|
75
|
+
}
|
76
|
+
// This shouldn't happen since the previous stepper is disabled if the selection only has one date.
|
77
|
+
// If it does, just return the selection as-is.
|
78
|
+
return selection;
|
79
|
+
}
|
80
|
+
}
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci1zZWxlY3Rpb24tc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LXNlbGVjdGlvbi1zdHJhdGVnaWVzL3llYXItc2VsZWN0aW9uLXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdEY7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsOEJBQThCO0lBQXpFOztRQUNrQixzQkFBaUIsR0FBc0IsTUFBTSxDQUFDO1FBQzlDLG1CQUFjLEdBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztJQStFaEQsQ0FBQztJQTdFQyxlQUFlLENBQUMsU0FBc0M7UUFDcEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzNDLENBQUM7UUFFRCw4RUFBOEU7UUFDOUUsd0ZBQXdGO1FBQ3hGLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDbEUs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QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tIFwiLi4vLi4vY2FsZW5kYXIvY2FsZW5kYXIudHlwZXNcIjtcclxuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSBcIi4uL2RhdGUtaW5wdXQudHlwZXNcIjtcclxuaW1wb3J0IHsgRGF0ZUlucHV0U2VsZWN0aW9uU3RyYXRlZ3lCYXNlIH0gZnJvbSBcIi4vZGF0ZS1pbnB1dC1zZWxlY3Rpb24tc3RyYXRlZ3ktYmFzZVwiO1xyXG5cclxuLyoqXHJcbiAqIFNlbGVjdGlvbiBzdHJhdGVneSBmb3IgdGhlICd5ZWFyJyBzZWxlY3Rpb24gbW9kZS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBZZWFyU2VsZWN0aW9uU3RyYXRlZ3kgZXh0ZW5kcyBEYXRlSW5wdXRTZWxlY3Rpb25TdHJhdGVneUJhc2Uge1xyXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25WaWV3TW9kZTogQ2FsZW5kYXIuVmlld01vZGUgPSAneWVhcic7XHJcbiAgcHVibGljIHJlYWRvbmx5IHZhbGlkVmlld01vZGVzOiBDYWxlbmRhci5WaWV3TW9kZVtdID0gWyd5ZWFyJ107XHJcbiAgcHVibGljIHJlYWRvbmx5IHNob3dTZWNvbmRhcnlUZXh0Ym94ID0gZmFsc2U7XHJcbiAgcHVibGljIHJlYWRvbmx5IHNob3dTZWNvbmRhcnlDYWxlbmRhciA9IGZhbHNlO1xyXG5cclxuICBmb3JtYXRTZWxlY3Rpb24oc2VsZWN0aW9uPzogRGF0ZUlucHV0LlNlbGVjdGlvbiB8IG51bGwpOiBEYXRlSW5wdXQuVGV4dGJveEdyb3VwWyd2YWx1ZSddIHtcclxuICAgIGlmICghc2VsZWN0aW9uKSB7XHJcbiAgICAgIHJldHVybiB7IHRleHRib3g6IG51bGwsIHRleHRib3gyOiBudWxsIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gT25seSBvbmUgZGF0ZSBpcyBuZWVkZWQgZm9yIGZvcm1hdHRpbmcgc2luY2UgdGhlIHJhbmdlcyBzcGFuIGEgc2luZ2xlIHllYXIuXHJcbiAgICAvLyBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IGNhc2Ugd2hlcmUgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGRhdGUgYnV0IGl0J3MgY292ZXJlZCBhbnl3YXkuXHJcbiAgICBjb25zdCBkYXRlID0gRGF0ZUlucHV0LmlzU2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uKSA/IHNlbGVjdGlvbi5zdGFydCA6IHNlbGVjdGlvbjtcclxuICAgIHJldHVybiB7IHRleHRib3g6IG1vbWVudChkYXRlKS5mb3JtYXQoJ1lZWVknKSwgdGV4dGJveDI6IG51bGwgfTtcclxuICB9XHJcblxyXG4gIHBhcnNlU3RyaW5nKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBwYXJzZUZvcm1hdHM6IHN0cmluZ1tdLCBvcHRzPzogRGF0ZUlucHV0LlBhcnNpbmdPcHRpb25zKTogRGF0ZSB8IG51bGwge1xyXG4gICAgLy8gSW5jbHVkaW5nICdZWScgYW5kICdZWVlZJyBhcyB2YWxpZCBmb3JtYXRzIGZvciB5ZWFyIGlucHV0LiBUaGVzZSBhcmVuJ3QgaW5jbHVkZWQgaW4gdGhlIGRlZmF1bHQgcGFyc2VcclxuICAgIC8vIGZvcm1hdHMgYmVjYXVzZSB0aGV5IGNhdXNlIGlzc3VlcyB3aXRoIHRoZSBkZWZhdWx0IGRhdGUgcGFyc2luZy5cclxuICAgIHJldHVybiBzdXBlci5wYXJzZVN0cmluZyh2YWx1ZSwgWydZWScsICdZWVlZJywgLi4ucGFyc2VGb3JtYXRzXSwgb3B0cyk7XHJcbiAgfVxyXG5cclxuICBwYXJzZVRleHRib3hWYWx1ZXModmFsdWU6IERhdGVJbnB1dC5UZXh0Ym94R3JvdXBbJ3ZhbHVlJ10sIHBhcnNlRm9ybWF0czogc3RyaW5nW10sIG9wdHM/OiBEYXRlSW5wdXQuUGFyc2luZ09wdGlvbnMpOiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCB7XHJcbiAgICAvLyBPbmx5IGEgc2luZ2xlIHRleHRib3ggaXMgdXNlZCBpbiB5ZWFyIG1vZGVcclxuICAgIGNvbnN0IGRhdGUgPSB0aGlzLnBhcnNlU3RyaW5nKHZhbHVlLnRleHRib3gsIHBhcnNlRm9ybWF0cywgb3B0cyk7XHJcblxyXG4gICAgaWYgKCFkYXRlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGlvbkZyb21EYXRlKGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0aW9uRnJvbURhdGUoZGF0ZTogRGF0ZSk6IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHN0YXJ0OiBtb21lbnQoZGF0ZSkuc3RhcnRPZigneWVhcicpLnRvRGF0ZSgpLFxyXG4gICAgICBlbmQ6IG1vbWVudChkYXRlKS5lbmRPZigneWVhcicpLnRvRGF0ZSgpXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0TmV3U2VsZWN0aW9uRnJvbUV4aXN0aW5nKHByZXZpb3VzU2VsZWN0aW9uPzogRGF0ZUlucHV0LlNlbGVjdGlvbik6IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsIHtcclxuICAgIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25SYW5nZShwcmV2aW91c1NlbGVjdGlvbikpIHtcclxuICAgICAgLy8gQmFzZSB0aGUgeWVhciByYW5nZSBvZmYgb2YgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbidzIGVuZCBkYXRlLCBmYWxsaW5nIGJhY2sgdG8gdGhlIHN0YXJ0IGRhdGVcclxuICAgICAgY29uc3QgZGF0ZSA9IHByZXZpb3VzU2VsZWN0aW9uLmVuZCB8fCBwcmV2aW91c1NlbGVjdGlvbi5zdGFydDtcclxuICAgICAgaWYgKGRhdGUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3Rpb25Gcm9tRGF0ZShkYXRlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25TaW5nbGVEYXRlKHByZXZpb3VzU2VsZWN0aW9uKSkge1xyXG4gICAgICAvLyBJZiB0aGUgcHJldmlvdXMgc2VsZWN0aW9uIHdhcyBhIHNpbmdsZSBkYXRlLCBtYWtlIHRoZSByYW5nZSB0aGF0IHllYXJcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0U2VsZWN0aW9uRnJvbURhdGUocHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0aW9uRm9yUXVpY2tTZWxlY3REYXRlKGRhdGU6IERhdGUpOiBEYXRlSW5wdXQuU2VsZWN0aW9uIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3Rpb25Gcm9tRGF0ZShkYXRlKTtcclxuICB9XHJcblxyXG4gIGdldE5leHRTZWxlY3Rpb24oc2VsZWN0aW9uOiBEYXRlSW5wdXQuU2VsZWN0aW9uKTogRGF0ZUlucHV0LlNlbGVjdGlvbiB8IG51bGwge1xyXG4gICAgLy8gTW92ZSB0aGUgc2VsZWN0aW9uIHRvIHRoZSBuZXh0IHllYXJcclxuICAgIGlmIChEYXRlSW5wdXQuaXNTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb24pICYmIHNlbGVjdGlvbi5zdGFydCkge1xyXG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KHNlbGVjdGlvbi5zdGFydCkuYWRkKDEsICd5ZWFyJyk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGlvbkZyb21EYXRlKGRhdGUudG9EYXRlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBzaW5jZSB0aGUgbmV4dCBzdGVwcGVyIGlzIGRpc2FibGVkIGlmIHRoZSBzZWxlY3Rpb24gb25seSBoYXMgb25lIGRhdGUuXHJcbiAgICAvLyBJZiBpdCBkb2VzLCBqdXN0IHJldHVybiB0aGUgc2VsZWN0aW9uIGFzLWlzLlxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIGdldFByZXZpb3VzU2VsZWN0aW9uKHNlbGVjdGlvbjogRGF0ZUlucHV0LlNlbGVjdGlvbik6IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsIHtcclxuICAgIC8vIE1vdmUgdGhlIHNlbGVjdGlvbiB0byB0aGUgcHJldmlvdXMgeWVhclxyXG4gICAgaWYgKERhdGVJbnB1dC5pc1NlbGVjdGlvblJhbmdlKHNlbGVjdGlvbikgJiYgc2VsZWN0aW9uLnN0YXJ0KSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoc2VsZWN0aW9uLnN0YXJ0KS5zdWJ0cmFjdCgxLCAneWVhcicpO1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3Rpb25Gcm9tRGF0ZShkYXRlLnRvRGF0ZSgpKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIHNpbmNlIHRoZSBwcmV2aW91cyBzdGVwcGVyIGlzIGRpc2FibGVkIGlmIHRoZSBzZWxlY3Rpb24gb25seSBoYXMgb25lIGRhdGUuXHJcbiAgICAvLyBJZiBpdCBkb2VzLCBqdXN0IHJldHVybiB0aGUgc2VsZWN0aW9uIGFzLWlzLlxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbjtcclxuICB9XHJcbn1cclxuIl19
|