@datarailsshared/datarailsshared 1.4.569 → 1.5.3
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/assets/styles/_storybook-styles.scss +37 -0
- package/assets/styles/_styles.scss +9 -2
- package/assets/styles/colors.scss +88 -74
- package/assets/styles/dataRailsFont.scss +1 -1
- package/assets/styles/dialog.scss +22 -0
- package/assets/styles/icons.scss +1 -1
- package/assets/styles/mixins.scss +106 -6
- package/assets/styles/vars.scss +6 -4
- package/datarailsshared-datarailsshared-1.5.3.tgz +0 -0
- package/esm2022/datarailsshared-datarailsshared.mjs +5 -0
- package/esm2022/lib/date-tags/any-tag.component.mjs +42 -0
- package/esm2022/lib/date-tags/date-tag.component.mjs +126 -0
- package/esm2022/lib/date-tags/date-tag.module.mjs +53 -0
- package/esm2022/lib/date-tags/day-tag/day-tag.component.mjs +95 -0
- package/esm2022/lib/date-tags/forecast-tag/forecast-tag.component.mjs +222 -0
- package/esm2022/lib/date-tags/forecast-tag/forecast-tag.service.mjs +87 -0
- package/esm2022/lib/date-tags/month-tag/month-tag.component.mjs +98 -0
- package/esm2022/lib/date-tags/quarter-tag/quarter-tag.component.mjs +126 -0
- package/esm2022/lib/date-tags/week-tag/week-tag.component.mjs +102 -0
- package/esm2022/lib/date-tags/year-tag/year-tag.component.mjs +96 -0
- package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +92 -0
- package/esm2022/lib/directives/click-outside/click-outside.module.mjs +19 -0
- package/esm2022/lib/directives/dr-shine-animation/dr-shine-animation.directive.mjs +63 -0
- package/esm2022/lib/directives/let/let.directive.mjs +35 -0
- package/esm2022/lib/directives/ng-track-by-property/ng-track-by-property.directive.mjs +23 -0
- package/esm2022/lib/dr-accordion/accordion-item-body.component.mjs +61 -0
- package/esm2022/lib/dr-accordion/accordion-item-header.component.mjs +154 -0
- package/esm2022/lib/dr-accordion/accordion-item.component.mjs +143 -0
- package/esm2022/lib/dr-accordion/accordion.component.mjs +55 -0
- package/esm2022/lib/dr-accordion/accordion.module.mjs +35 -0
- package/esm2022/lib/dr-alert/dr-alert.component.mjs +64 -0
- package/esm2022/lib/dr-alert/dr-alert.module.mjs +20 -0
- package/{esm2015/lib/dr-alert/enums/dr-alert-theme.enum.js → esm2022/lib/dr-alert/enums/dr-alert-theme.enum.mjs} +1 -2
- package/esm2022/lib/dr-avatar/dr-avatar.component.mjs +142 -0
- package/esm2022/lib/dr-avatar/dr-avatar.module.mjs +21 -0
- package/esm2022/lib/dr-avatar/dr-avatar.pipe.mjs +20 -0
- package/esm2022/lib/dr-avatar/services/dr-avatar.service.mjs +17 -0
- package/esm2022/lib/dr-avatar/types.mjs +2 -0
- package/esm2022/lib/dr-badge-status/dr-badge-status.component.mjs +53 -0
- package/esm2022/lib/dr-badge-status/dr-badge-status.module.mjs +21 -0
- package/esm2022/lib/dr-chat/chat.component.mjs +202 -0
- package/esm2022/lib/dr-chat/chat.module.mjs +81 -0
- package/esm2022/lib/dr-chat/dr-chat-alert/dr-chat-alert.component.mjs +31 -0
- package/esm2022/lib/dr-chat/dr-chat-form/chat-form.component.mjs +273 -0
- package/esm2022/lib/dr-chat/dr-chat-form-with-history/chat-form-with-history.component.mjs +380 -0
- package/esm2022/lib/dr-chat/dr-chat-message/chat-message.component.mjs +185 -0
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.mjs +47 -0
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.mjs +26 -0
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.mjs +78 -0
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.mjs +30 -0
- package/esm2022/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.mjs +187 -0
- package/esm2022/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.mjs +14 -0
- package/esm2022/lib/dr-chip/dr-chip.component.mjs +58 -0
- package/esm2022/lib/dr-code-editor/components/code-editor-hint-wrapper.component.mjs +19 -0
- package/esm2022/lib/dr-code-editor/components/dr-codemirror.component.mjs +204 -0
- package/esm2022/lib/dr-code-editor/dr-code-editor.component.mjs +326 -0
- package/esm2022/lib/dr-code-editor/dr-code-editor.module.mjs +29 -0
- package/esm2022/lib/dr-code-editor/models/code-editor-hint.mjs +6 -0
- package/esm2022/lib/dr-details-list/dr-details-list.component.mjs +106 -0
- package/esm2022/lib/dr-details-list/dr-details-list.module.mjs +20 -0
- package/esm2022/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.mjs +339 -0
- package/esm2022/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.mjs +238 -0
- package/esm2022/lib/dr-dialog/dialog.module.mjs +27 -0
- package/esm2022/lib/dr-dialog/interfaces/dialog-data.mjs +27 -0
- package/esm2022/lib/dr-dialog/services/dialog.service.mjs +77 -0
- package/esm2022/lib/dr-dropdown/dr-dropdown-item/dr-dropdown-item.component.mjs +29 -0
- package/esm2022/lib/dr-dropdown/dr-dropdown-item-show.pipe.mjs +16 -0
- package/esm2022/lib/dr-dropdown/dr-dropdown.component.mjs +248 -0
- package/esm2022/lib/dr-dropdown/dr-dropdown.directive.mjs +142 -0
- package/esm2022/lib/dr-dropdown/dr-dropdown.module.mjs +41 -0
- package/esm2022/lib/dr-dropdown/dr-dropdown.service.mjs +62 -0
- package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.component.mjs +203 -0
- package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.module.mjs +21 -0
- package/esm2022/lib/dr-error/dr-error.component.mjs +90 -0
- package/esm2022/lib/dr-error/dr-error.module.mjs +22 -0
- package/esm2022/lib/dr-inputs/button/button.component.mjs +101 -0
- package/esm2022/lib/dr-inputs/checkbox/checkbox.component.mjs +110 -0
- package/esm2022/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.mjs +55 -0
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.mjs +400 -0
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker-range/dr-date-picker-range.component.mjs +157 -0
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.mjs +269 -0
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.mjs +326 -0
- package/esm2022/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.mjs +16 -0
- package/esm2022/lib/dr-inputs/date-pickers/services/dr-date-picker.service.mjs +224 -0
- package/esm2022/lib/dr-inputs/date-pickers/services/week-selection-strategy.mjs +34 -0
- package/esm2022/lib/dr-inputs/date-pickers/week-selector/week-selector.component.mjs +91 -0
- package/esm2022/lib/dr-inputs/dr-input/dr-input.component.mjs +336 -0
- package/esm2022/lib/dr-inputs/dr-inputs.module.mjs +128 -0
- package/esm2022/lib/dr-inputs/dr-link/dr-link.component.mjs +43 -0
- package/esm2022/lib/dr-inputs/dr-model-debounce-change.directive.mjs +37 -0
- package/esm2022/lib/dr-inputs/dr-select/dr-select.component.mjs +391 -0
- package/esm2022/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.mjs +138 -0
- package/esm2022/lib/dr-inputs/dr-slider/dr-slider.component.mjs +53 -0
- package/esm2022/lib/dr-inputs/dr-toggle/dr-toggle.component.mjs +108 -0
- package/esm2022/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.mjs +108 -0
- package/esm2022/lib/dr-inputs/radio-button/radio-button.component.mjs +88 -0
- package/esm2022/lib/dr-inputs/radio-button/radio-group.component.mjs +185 -0
- package/esm2022/lib/dr-layout/dr-layout-body.component.mjs +19 -0
- package/esm2022/lib/dr-layout/dr-layout-header.component.mjs +25 -0
- package/esm2022/lib/dr-layout/dr-layout.component.mjs +21 -0
- package/esm2022/lib/dr-layout/dr-layout.module.mjs +22 -0
- package/esm2022/lib/dr-popover/dr-popover-ref.mjs +23 -0
- package/esm2022/lib/dr-popover/dr-popover.component.mjs +155 -0
- package/esm2022/lib/dr-popover/dr-popover.directive.mjs +137 -0
- package/esm2022/lib/dr-popover/dr-popover.module.mjs +20 -0
- package/esm2022/lib/dr-popover/dr-popover.service.mjs +117 -0
- package/esm2022/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.mjs +104 -0
- package/esm2022/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.mjs +100 -0
- package/esm2022/lib/dr-scenario/consts/scenario-tags-config.mjs +87 -0
- package/esm2022/lib/dr-scenario/dr-scenario.module.mjs +27 -0
- package/esm2022/lib/dr-scenario/services/scenario.service.mjs +195 -0
- package/esm2022/lib/dr-spinner/dr-spinner.component.mjs +27 -0
- package/esm2022/lib/dr-spinner/dr-spinner.directive.mjs +66 -0
- package/esm2022/lib/dr-spinner/dr-spinner.module.mjs +22 -0
- package/esm2022/lib/dr-tabs/dr-tab.component.mjs +47 -0
- package/esm2022/lib/dr-tabs/dr-tabs.component.mjs +252 -0
- package/esm2022/lib/dr-tabs/dr-tabs.module.mjs +25 -0
- package/esm2022/lib/dr-tags/dr-tag.component.mjs +235 -0
- package/esm2022/lib/dr-tags/dr-tag.module.mjs +23 -0
- package/esm2022/lib/dr-tags-constructor/dr-tags-constructor.component.mjs +161 -0
- package/esm2022/lib/dr-tags-constructor/dr-tags-constructor.module.mjs +24 -0
- package/esm2022/lib/dr-tags-constructor/tags-constructor.service.mjs +71 -0
- package/esm2022/lib/dr-toastr/default-toastr/default-toastr.component.mjs +73 -0
- package/esm2022/lib/dr-toastr/dr-toastr.module.mjs +31 -0
- package/esm2022/lib/dr-toastr/dr-toastr.service.mjs +44 -0
- package/esm2022/lib/dr-tooltip/components/tooltip-default/tooltip-default.component.mjs +31 -0
- package/esm2022/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.mjs +82 -0
- package/esm2022/lib/dr-tooltip/dr-tooltip.component.mjs +86 -0
- package/esm2022/lib/dr-tooltip/dr-tooltip.directive.mjs +194 -0
- package/esm2022/lib/dr-tooltip/dr-tooltip.module.mjs +24 -0
- package/esm2022/lib/dr-tooltip/interfaces/tooltip-component-context.mjs +14 -0
- package/esm2022/lib/dr-treeview/components/treeview/treeview.component.mjs +407 -0
- package/esm2022/lib/dr-treeview/components/treeview-item/treeview-item.component.mjs +97 -0
- package/esm2022/lib/dr-treeview/dr-tree-view.module.mjs +31 -0
- package/esm2022/lib/dr-treeview/helpers/treeview-event-parser.mjs +108 -0
- package/esm2022/lib/dr-treeview/helpers/treeview-helper.mjs +82 -0
- package/esm2022/lib/dr-treeview/models/treeview-config.mjs +25 -0
- package/{esm2015/lib/dr-treeview/models/treeview-header-template-context.js → esm2022/lib/dr-treeview/models/treeview-header-template-context.mjs} +1 -1
- package/esm2022/lib/dr-treeview/models/treeview-i18n.mjs +47 -0
- package/{esm2015/lib/dr-treeview/models/treeview-item-template-context.js → esm2022/lib/dr-treeview/models/treeview-item-template-context.mjs} +1 -1
- package/esm2022/lib/dr-treeview/models/treeview-item.mjs +155 -0
- package/esm2022/lib/dr-treeview/pipes/treeview.pipe.mjs +21 -0
- package/esm2022/lib/drawer/drawer-animation.mjs +18 -0
- package/esm2022/lib/drawer/drawer-config.mjs +35 -0
- package/esm2022/lib/drawer/drawer-container.component.mjs +179 -0
- package/esm2022/lib/drawer/drawer-position-strategy.mjs +14 -0
- package/esm2022/lib/drawer/drawer-ref.mjs +106 -0
- package/esm2022/lib/drawer/drawer.module.mjs +19 -0
- package/esm2022/lib/drawer/drawer.service.mjs +140 -0
- package/esm2022/lib/drawer/public-api.mjs +6 -0
- package/esm2022/lib/image-cropper/dr-image-cropper-canvas.service.mjs +78 -0
- package/esm2022/lib/image-cropper/dr-image-cropper.component.mjs +133 -0
- package/esm2022/lib/image-cropper/dr-image-cropper.types.mjs +6 -0
- package/esm2022/lib/list-tags/list-tag.component.mjs +82 -0
- package/esm2022/lib/list-tags/list-tag.module.mjs +22 -0
- package/esm2022/lib/models/chat.mjs +36 -0
- package/{esm2015/lib/models/constants.js → esm2022/lib/models/constants.mjs} +17 -22
- package/{esm2015/lib/models/datePicker.js → esm2022/lib/models/datePicker.mjs} +2 -2
- package/esm2022/lib/models/datePickerRange.mjs +2 -0
- package/esm2022/lib/models/dropdown.mjs +2 -0
- package/{esm2015/lib/models/feedback.js → esm2022/lib/models/feedback.mjs} +1 -2
- package/esm2022/lib/models/popover.mjs +27 -0
- package/{esm2015/lib/models/serverTags.js → esm2022/lib/models/serverTags.mjs} +1 -1
- package/esm2022/lib/models/spinnerOptions.mjs +2 -0
- package/esm2022/lib/models/toastr.mjs +14 -0
- package/esm2022/lib/pipes/filter/filter.pipe.mjs +48 -0
- package/esm2022/lib/pipes/img/img.pipe.mjs +19 -0
- package/esm2022/lib/stepper/stepper.component.mjs +270 -0
- package/esm2022/lib/stepper/stepper.module.mjs +20 -0
- package/esm2022/lib/utils/data-analytics.service.mjs +21 -0
- package/esm2022/lib/utils/decorators.mjs +12 -0
- package/esm2022/lib/utils/dr-shared-utils.mjs +85 -0
- package/esm2022/public-api.mjs +156 -0
- package/esm2022/src/lib/drawer/drDrawer.mjs +5 -0
- package/esm2022/src/lib/drawer/drawer-animation.mjs +18 -0
- package/esm2022/src/lib/drawer/drawer-config.mjs +35 -0
- package/esm2022/src/lib/drawer/drawer-container.component.mjs +179 -0
- package/esm2022/src/lib/drawer/drawer-position-strategy.mjs +14 -0
- package/esm2022/src/lib/drawer/drawer-ref.mjs +106 -0
- package/esm2022/src/lib/drawer/drawer.module.mjs +19 -0
- package/esm2022/src/lib/drawer/drawer.service.mjs +140 -0
- package/esm2022/src/lib/drawer/public-api.mjs +6 -0
- package/fesm2022/datarailsshared-datarailsshared.mjs +13716 -0
- package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -0
- package/fesm2022/drDrawer.mjs +496 -0
- package/fesm2022/drDrawer.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/date-tags/any-tag.component.d.ts +20 -0
- package/lib/date-tags/date-tag.component.d.ts +4 -16
- package/lib/date-tags/date-tag.module.d.ts +19 -2
- package/lib/date-tags/day-tag/day-tag.component.d.ts +4 -1
- package/lib/date-tags/forecast-tag/forecast-tag.component.d.ts +4 -1
- package/lib/date-tags/forecast-tag/forecast-tag.service.d.ts +11 -8
- package/lib/date-tags/month-tag/month-tag.component.d.ts +4 -1
- package/lib/date-tags/quarter-tag/quarter-tag.component.d.ts +4 -1
- package/lib/date-tags/week-tag/week-tag.component.d.ts +4 -1
- package/lib/date-tags/year-tag/year-tag.component.d.ts +4 -1
- package/lib/directives/click-outside/click-outside.directive.d.ts +23 -0
- package/lib/directives/click-outside/click-outside.module.d.ts +8 -0
- package/lib/directives/dr-shine-animation/dr-shine-animation.directive.d.ts +18 -0
- package/lib/directives/let/let.directive.d.ts +19 -0
- package/lib/directives/ng-track-by-property/ng-track-by-property.directive.d.ts +8 -0
- package/lib/dr-accordion/accordion-item-body.component.d.ts +3 -0
- package/lib/dr-accordion/accordion-item-header.component.d.ts +14 -1
- package/lib/dr-accordion/accordion-item.component.d.ts +4 -1
- package/lib/dr-accordion/accordion.component.d.ts +5 -0
- package/lib/dr-accordion/accordion.module.d.ts +9 -0
- package/lib/dr-alert/dr-alert.component.d.ts +3 -0
- package/lib/dr-alert/dr-alert.module.d.ts +6 -0
- package/lib/dr-avatar/dr-avatar.component.d.ts +15 -13
- package/lib/dr-avatar/dr-avatar.module.d.ts +8 -0
- package/lib/dr-avatar/dr-avatar.pipe.d.ts +5 -1
- package/lib/dr-avatar/services/dr-avatar.service.d.ts +1 -1
- package/lib/dr-avatar/types.d.ts +8 -0
- package/lib/dr-badge-status/dr-badge-status.component.d.ts +5 -4
- package/lib/dr-badge-status/dr-badge-status.module.d.ts +7 -0
- package/lib/dr-chat/chat.component.d.ts +6 -7
- package/lib/dr-chat/chat.module.d.ts +20 -0
- package/lib/dr-chat/dr-chat-alert/dr-chat-alert.component.d.ts +8 -0
- package/lib/dr-chat/dr-chat-form/chat-form.component.d.ts +11 -1
- package/lib/dr-chat/dr-chat-form-with-history/chat-form-with-history.component.d.ts +81 -0
- package/lib/dr-chat/dr-chat-message/chat-message.component.d.ts +4 -0
- package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.d.ts +3 -0
- package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.d.ts +3 -0
- package/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.d.ts +3 -0
- package/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.d.ts +3 -0
- package/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.d.ts +15 -2
- package/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.d.ts +3 -0
- package/lib/dr-chip/dr-chip.component.d.ts +10 -0
- package/lib/dr-code-editor/components/code-editor-hint-wrapper.component.d.ts +7 -0
- package/lib/dr-code-editor/components/dr-codemirror.component.d.ts +47 -0
- package/lib/dr-code-editor/dr-code-editor.component.d.ts +45 -0
- package/lib/dr-code-editor/dr-code-editor.module.d.ts +17 -0
- package/lib/dr-code-editor/models/code-editor-hint.d.ts +14 -0
- package/lib/dr-details-list/dr-details-list.component.d.ts +3 -0
- package/lib/dr-details-list/dr-details-list.module.d.ts +6 -0
- package/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.d.ts +6 -5
- package/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.d.ts +6 -5
- package/lib/dr-dialog/dialog.module.d.ts +12 -0
- package/lib/dr-dialog/interfaces/dialog-data.d.ts +13 -9
- package/lib/dr-dialog/services/dialog.service.d.ts +10 -3
- package/lib/dr-dropdown/dr-dropdown-item/dr-dropdown-item.component.d.ts +8 -0
- package/lib/dr-dropdown/dr-dropdown-item-show.pipe.d.ts +3 -0
- package/lib/dr-dropdown/dr-dropdown.component.d.ts +28 -21
- package/lib/dr-dropdown/dr-dropdown.directive.d.ts +21 -14
- package/lib/dr-dropdown/dr-dropdown.module.d.ts +11 -0
- package/lib/dr-dropdown/dr-dropdown.service.d.ts +26 -8
- package/lib/dr-dynamic-tag/dr-dynamic-tag.component.d.ts +3 -0
- package/lib/dr-dynamic-tag/dr-dynamic-tag.module.d.ts +8 -0
- package/lib/dr-error/dr-error.component.d.ts +12 -8
- package/lib/dr-error/dr-error.module.d.ts +8 -0
- package/lib/dr-inputs/button/button.component.d.ts +6 -8
- package/lib/dr-inputs/checkbox/checkbox.component.d.ts +10 -2
- package/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.d.ts +3 -0
- package/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.d.ts +29 -9
- package/lib/dr-inputs/date-pickers/dr-date-picker-range/dr-date-picker-range.component.d.ts +40 -0
- package/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.d.ts +18 -11
- package/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +11 -10
- package/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.d.ts +4 -2
- package/lib/dr-inputs/date-pickers/services/dr-date-picker.service.d.ts +22 -5
- package/lib/dr-inputs/date-pickers/services/week-selection-strategy.d.ts +12 -0
- package/lib/dr-inputs/date-pickers/week-selector/week-selector.component.d.ts +23 -0
- package/lib/dr-inputs/dr-input/dr-input.component.d.ts +35 -20
- package/lib/dr-inputs/dr-inputs.module.d.ts +30 -0
- package/lib/dr-inputs/dr-link/dr-link.component.d.ts +16 -0
- package/lib/dr-inputs/dr-model-debounce-change.directive.d.ts +4 -0
- package/lib/dr-inputs/dr-select/dr-select.component.d.ts +20 -3
- package/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.d.ts +4 -0
- package/lib/dr-inputs/dr-slider/dr-slider.component.d.ts +18 -0
- package/lib/dr-inputs/dr-toggle/dr-toggle.component.d.ts +3 -0
- package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +6 -1
- package/lib/dr-inputs/radio-button/radio-button.component.d.ts +3 -0
- package/lib/dr-inputs/radio-button/radio-group.component.d.ts +3 -0
- package/lib/dr-layout/dr-layout-body.component.d.ts +3 -0
- package/lib/dr-layout/dr-layout-header.component.d.ts +3 -0
- package/lib/dr-layout/dr-layout.component.d.ts +3 -0
- package/lib/dr-layout/dr-layout.module.d.ts +8 -0
- package/lib/dr-popover/dr-popover-ref.d.ts +1 -0
- package/lib/dr-popover/dr-popover.component.d.ts +8 -4
- package/lib/dr-popover/dr-popover.directive.d.ts +9 -5
- package/lib/dr-popover/dr-popover.module.d.ts +7 -0
- package/lib/dr-popover/dr-popover.service.d.ts +5 -1
- package/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.d.ts +3 -4
- package/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.d.ts +3 -0
- package/lib/dr-scenario/dr-scenario.module.d.ts +11 -0
- package/lib/dr-scenario/interfaces/scenario.d.ts +3 -3
- package/lib/dr-scenario/services/scenario.service.d.ts +3 -0
- package/lib/dr-spinner/dr-spinner.component.d.ts +3 -0
- package/lib/dr-spinner/dr-spinner.directive.d.ts +4 -2
- package/lib/dr-spinner/dr-spinner.module.d.ts +7 -0
- package/lib/dr-tabs/dr-tab.component.d.ts +5 -0
- package/lib/dr-tabs/dr-tabs.component.d.ts +21 -4
- package/lib/dr-tabs/dr-tabs.module.d.ts +11 -0
- package/lib/dr-tags/dr-tag.component.d.ts +3 -0
- package/lib/dr-tags/dr-tag.module.d.ts +9 -0
- package/lib/dr-tags-constructor/dr-tags-constructor.component.d.ts +33 -0
- package/lib/dr-tags-constructor/dr-tags-constructor.module.d.ts +10 -0
- package/lib/dr-tags-constructor/tags-constructor.service.d.ts +12 -0
- package/lib/dr-toastr/default-toastr/default-toastr.component.d.ts +15 -0
- package/lib/dr-toastr/dr-toastr.module.d.ts +9 -0
- package/lib/dr-toastr/dr-toastr.service.d.ts +14 -0
- package/lib/dr-tooltip/components/tooltip-default/tooltip-default.component.d.ts +9 -0
- package/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.d.ts +3 -1
- package/lib/dr-tooltip/dr-tooltip.component.d.ts +4 -1
- package/lib/dr-tooltip/dr-tooltip.directive.d.ts +7 -0
- package/lib/dr-tooltip/dr-tooltip.module.d.ts +9 -0
- package/lib/dr-tooltip/interfaces/tooltip-component-context.d.ts +18 -2
- package/lib/dr-treeview/components/treeview/treeview.component.d.ts +3 -0
- package/lib/dr-treeview/components/treeview-item/treeview-item.component.d.ts +3 -0
- package/lib/dr-treeview/dr-tree-view.module.d.ts +9 -0
- package/lib/dr-treeview/helpers/treeview-event-parser.d.ts +9 -0
- package/lib/dr-treeview/models/treeview-config.d.ts +3 -0
- package/lib/dr-treeview/models/treeview-i18n.d.ts +5 -0
- package/lib/dr-treeview/models/treeview-item.d.ts +2 -1
- package/lib/dr-treeview/pipes/treeview.pipe.d.ts +3 -0
- package/lib/drawer/drawer-animation.d.ts +5 -0
- package/lib/drawer/drawer-config.d.ts +68 -0
- package/lib/drawer/drawer-container.component.d.ts +45 -0
- package/lib/drawer/drawer-position-strategy.d.ts +10 -0
- package/lib/drawer/drawer-ref.d.ts +55 -0
- package/lib/drawer/drawer.module.d.ts +7 -0
- package/lib/drawer/drawer.service.d.ts +62 -0
- package/lib/drawer/public-api.d.ts +5 -0
- package/lib/image-cropper/dr-image-cropper-canvas.service.d.ts +20 -0
- package/lib/image-cropper/dr-image-cropper.component.d.ts +28 -0
- package/lib/image-cropper/dr-image-cropper.types.d.ts +9 -0
- package/lib/list-tags/list-tag.component.d.ts +3 -0
- package/lib/list-tags/list-tag.module.d.ts +8 -0
- package/lib/models/chat.d.ts +3 -3
- package/lib/models/datePicker.d.ts +10 -3
- package/lib/models/datePickerRange.d.ts +4 -0
- package/lib/models/dropdown.d.ts +15 -21
- package/lib/models/popover.d.ts +7 -4
- package/lib/models/serverTags.d.ts +4 -4
- package/lib/models/spinnerOptions.d.ts +2 -10
- package/lib/models/toastr.d.ts +18 -0
- package/lib/pipes/filter/filter.pipe.d.ts +7 -0
- package/lib/pipes/img/img.pipe.d.ts +7 -0
- package/lib/stepper/interfaces/stepper.d.ts +1 -1
- package/lib/stepper/stepper.component.d.ts +13 -8
- package/lib/stepper/stepper.module.d.ts +7 -0
- package/lib/utils/data-analytics.service.d.ts +8 -0
- package/lib/utils/decorators.d.ts +1 -0
- package/lib/utils/dr-shared-utils.d.ts +9 -0
- package/package.json +41 -15
- package/public-api.d.ts +59 -6
- package/src/lib/drawer/drawer-animation.d.ts +5 -0
- package/src/lib/drawer/drawer-config.d.ts +68 -0
- package/src/lib/drawer/drawer-container.component.d.ts +45 -0
- package/src/lib/drawer/drawer-position-strategy.d.ts +10 -0
- package/src/lib/drawer/drawer-ref.d.ts +55 -0
- package/src/lib/drawer/drawer.module.d.ts +7 -0
- package/src/lib/drawer/drawer.service.d.ts +62 -0
- package/src/lib/drawer/index.d.ts +5 -0
- package/src/lib/drawer/public-api.d.ts +5 -0
- package/styles.css +749 -0
- package/_datarailsshared.styles.css +0 -4
- package/assets/styles/img/dr-icon-info.svg +0 -4
- package/bundles/datarailsshared-datarailsshared.umd.js +0 -8372
- package/bundles/datarailsshared-datarailsshared.umd.js.map +0 -1
- package/datarailsshared-datarailsshared-1.4.569.tgz +0 -0
- package/datarailsshared-datarailsshared.d.ts +0 -34
- package/datarailsshared-datarailsshared.metadata.json +0 -1
- package/esm2015/datarailsshared-datarailsshared.js +0 -35
- package/esm2015/lib/date-tags/date-tag.component.js +0 -74
- package/esm2015/lib/date-tags/date-tag.module.js +0 -36
- package/esm2015/lib/date-tags/day-tag/day-tag.component.js +0 -77
- package/esm2015/lib/date-tags/forecast-tag/forecast-tag.component.js +0 -164
- package/esm2015/lib/date-tags/forecast-tag/forecast-tag.service.js +0 -83
- package/esm2015/lib/date-tags/month-tag/month-tag.component.js +0 -80
- package/esm2015/lib/date-tags/quarter-tag/quarter-tag.component.js +0 -114
- package/esm2015/lib/date-tags/week-tag/week-tag.component.js +0 -84
- package/esm2015/lib/date-tags/year-tag/year-tag.component.js +0 -78
- package/esm2015/lib/dr-accordion/accordion-item-body.component.js +0 -55
- package/esm2015/lib/dr-accordion/accordion-item-header.component.js +0 -77
- package/esm2015/lib/dr-accordion/accordion-item.component.js +0 -123
- package/esm2015/lib/dr-accordion/accordion.component.js +0 -43
- package/esm2015/lib/dr-accordion/accordion.module.js +0 -23
- package/esm2015/lib/dr-alert/dr-alert.component.js +0 -35
- package/esm2015/lib/dr-alert/dr-alert.module.js +0 -18
- package/esm2015/lib/dr-avatar/dr-avatar.component.js +0 -54
- package/esm2015/lib/dr-avatar/dr-avatar.module.js +0 -26
- package/esm2015/lib/dr-avatar/dr-avatar.pipe.js +0 -16
- package/esm2015/lib/dr-avatar/services/dr-avatar.service.js +0 -17
- package/esm2015/lib/dr-badge-status/dr-badge-status.component.js +0 -25
- package/esm2015/lib/dr-badge-status/dr-badge-status.module.js +0 -20
- package/esm2015/lib/dr-chat/chat.component.js +0 -119
- package/esm2015/lib/dr-chat/chat.module.js +0 -41
- package/esm2015/lib/dr-chat/dr-chat-form/chat-form.component.js +0 -155
- package/esm2015/lib/dr-chat/dr-chat-message/chat-message.component.js +0 -71
- package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.js +0 -49
- package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.js +0 -23
- package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.js +0 -47
- package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.js +0 -18
- package/esm2015/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.js +0 -87
- package/esm2015/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.js +0 -15
- package/esm2015/lib/dr-details-list/dr-details-list.component.js +0 -65
- package/esm2015/lib/dr-details-list/dr-details-list.module.js +0 -16
- package/esm2015/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.js +0 -84
- package/esm2015/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.js +0 -92
- package/esm2015/lib/dr-dialog/dialog.module.js +0 -34
- package/esm2015/lib/dr-dialog/interfaces/dialog-data.js +0 -25
- package/esm2015/lib/dr-dialog/services/dialog.service.js +0 -78
- package/esm2015/lib/dr-dropdown/dr-dropdown-item-show.pipe.js +0 -12
- package/esm2015/lib/dr-dropdown/dr-dropdown-position.directive.js +0 -104
- package/esm2015/lib/dr-dropdown/dr-dropdown.component.js +0 -114
- package/esm2015/lib/dr-dropdown/dr-dropdown.directive.js +0 -104
- package/esm2015/lib/dr-dropdown/dr-dropdown.module.js +0 -34
- package/esm2015/lib/dr-dropdown/dr-dropdown.service.js +0 -24
- package/esm2015/lib/dr-dynamic-tag/dr-dynamic-tag.component.js +0 -120
- package/esm2015/lib/dr-dynamic-tag/dr-dynamic-tag.module.js +0 -19
- package/esm2015/lib/dr-error/dr-error.component.js +0 -56
- package/esm2015/lib/dr-error/dr-error.module.js +0 -22
- package/esm2015/lib/dr-inputs/button/button.component.js +0 -39
- package/esm2015/lib/dr-inputs/checkbox/checkbox.component.js +0 -66
- package/esm2015/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.js +0 -47
- package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.js +0 -234
- package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.js +0 -182
- package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +0 -183
- package/esm2015/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.js +0 -12
- package/esm2015/lib/dr-inputs/date-pickers/services/dr-date-picker.service.js +0 -194
- package/esm2015/lib/dr-inputs/dr-input/dr-input.component.js +0 -194
- package/esm2015/lib/dr-inputs/dr-inputs.module.js +0 -68
- package/esm2015/lib/dr-inputs/dr-model-debounce-change.directive.js +0 -29
- package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +0 -123
- package/esm2015/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.js +0 -74
- package/esm2015/lib/dr-inputs/dr-toggle/dr-toggle.component.js +0 -68
- package/esm2015/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.js +0 -67
- package/esm2015/lib/dr-inputs/radio-button/radio-button.component.js +0 -73
- package/esm2015/lib/dr-inputs/radio-button/radio-group.component.js +0 -157
- package/esm2015/lib/dr-layout/dr-layout-body.component.js +0 -13
- package/esm2015/lib/dr-layout/dr-layout-header.component.js +0 -17
- package/esm2015/lib/dr-layout/dr-layout.component.js +0 -14
- package/esm2015/lib/dr-layout/dr-layout.module.js +0 -20
- package/esm2015/lib/dr-popover/dr-popover-ref.js +0 -20
- package/esm2015/lib/dr-popover/dr-popover.component.js +0 -106
- package/esm2015/lib/dr-popover/dr-popover.directive.js +0 -84
- package/esm2015/lib/dr-popover/dr-popover.module.js +0 -23
- package/esm2015/lib/dr-popover/dr-popover.service.js +0 -106
- package/esm2015/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.js +0 -104
- package/esm2015/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.js +0 -75
- package/esm2015/lib/dr-scenario/consts/scenario-tags-config.js +0 -79
- package/esm2015/lib/dr-scenario/dr-scenario.module.js +0 -28
- package/esm2015/lib/dr-scenario/services/scenario.service.js +0 -196
- package/esm2015/lib/dr-spinner/dr-spinner.component.js +0 -18
- package/esm2015/lib/dr-spinner/dr-spinner.directive.js +0 -58
- package/esm2015/lib/dr-spinner/dr-spinner.module.js +0 -18
- package/esm2015/lib/dr-tabs/dr-tab.component.js +0 -26
- package/esm2015/lib/dr-tabs/dr-tabs.component.js +0 -35
- package/esm2015/lib/dr-tabs/dr-tabs.module.js +0 -32
- package/esm2015/lib/dr-tags/dr-tag.component.js +0 -183
- package/esm2015/lib/dr-tags/dr-tag.module.js +0 -24
- package/esm2015/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.js +0 -19
- package/esm2015/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.js +0 -18
- package/esm2015/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.js +0 -20
- package/esm2015/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.js +0 -34
- package/esm2015/lib/dr-tooltip/dr-tooltip.component.js +0 -41
- package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +0 -151
- package/esm2015/lib/dr-tooltip/dr-tooltip.module.js +0 -38
- package/esm2015/lib/dr-tooltip/interfaces/tooltip-component-context.js +0 -2
- package/esm2015/lib/dr-treeview/components/treeview/treeview.component.js +0 -210
- package/esm2015/lib/dr-treeview/components/treeview-item/treeview-item.component.js +0 -58
- package/esm2015/lib/dr-treeview/dr-tree-view.module.js +0 -38
- package/esm2015/lib/dr-treeview/helpers/treeview-event-parser.js +0 -97
- package/esm2015/lib/dr-treeview/helpers/treeview-helper.js +0 -82
- package/esm2015/lib/dr-treeview/models/treeview-config.js +0 -22
- package/esm2015/lib/dr-treeview/models/treeview-i18n.js +0 -42
- package/esm2015/lib/dr-treeview/models/treeview-item.js +0 -155
- package/esm2015/lib/dr-treeview/pipes/treeview.pipe.js +0 -17
- package/esm2015/lib/list-tags/list-tag.component.js +0 -37
- package/esm2015/lib/list-tags/list-tag.module.js +0 -23
- package/esm2015/lib/models/chat.js +0 -38
- package/esm2015/lib/models/dropdown.js +0 -2
- package/esm2015/lib/models/popover.js +0 -27
- package/esm2015/lib/models/spinnerOptions.js +0 -13
- package/esm2015/lib/stepper/stepper.component.js +0 -55
- package/esm2015/lib/stepper/stepper.module.js +0 -17
- package/esm2015/lib/utils/dr-shared-utils.js +0 -47
- package/esm2015/public-api.js +0 -101
- package/fesm2015/datarailsshared-datarailsshared.js +0 -7194
- package/fesm2015/datarailsshared-datarailsshared.js.map +0 -1
- package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +0 -12
- package/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.d.ts +0 -5
- package/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.d.ts +0 -6
- package/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.d.ts +0 -4
- /package/{esm2015/lib/dr-inputs/dr-toggle-button/toggle-button-mode.js → esm2022/lib/dr-inputs/dr-toggle-button/toggle-button-mode.mjs} +0 -0
- /package/{esm2015/lib/dr-scenario/interfaces/scenario.js → esm2022/lib/dr-scenario/interfaces/scenario.mjs} +0 -0
- /package/{esm2015/lib/dr-tags/dr-tag.types.js → esm2022/lib/dr-tags/dr-tag.types.mjs} +0 -0
- /package/{esm2015/lib/dr-tooltip/enums/tooltip-position.enum.js → esm2022/lib/dr-tooltip/enums/tooltip-position.enum.mjs} +0 -0
- /package/{esm2015/lib/dr-tooltip/enums/tooltip-theme.enum.js → esm2022/lib/dr-tooltip/enums/tooltip-theme.enum.mjs} +0 -0
- /package/{esm2015/lib/models/badgeStatus.js → esm2022/lib/models/badgeStatus.mjs} +0 -0
- /package/{esm2015/lib/models/validationError.js → esm2022/lib/models/validationError.mjs} +0 -0
- /package/{esm2015/lib/stepper/interfaces/stepper.js → esm2022/lib/stepper/interfaces/stepper.mjs} +0 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, distinctUntilChanged, Subject } from 'rxjs';
|
|
3
|
+
import { DateFromats, DateTags, TimeframeOption } from '../../../models/datePicker';
|
|
4
|
+
import { DrSharedUtils } from '../../../utils/dr-shared-utils';
|
|
5
|
+
import * as _ from 'lodash';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class DrDatePickerService {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.isTimeframeSelectionEnabled = false;
|
|
10
|
+
this._timeframe$ = new BehaviorSubject(TimeframeOption.DAY);
|
|
11
|
+
this.timeframe$ = this._timeframe$.asObservable().pipe(distinctUntilChanged());
|
|
12
|
+
// TODO: here we can have inconsistency between format and timeframe
|
|
13
|
+
// we need to get rid of a separate subject and use pipe from timeframe$ for it
|
|
14
|
+
// making @Input() format in component just setting the timeframe
|
|
15
|
+
this.format$ = new BehaviorSubject(DateFromats.MAT_DEFAULT_DATE_FORMAT);
|
|
16
|
+
this.updatedQuarter$ = new Subject();
|
|
17
|
+
this.weekSelectionChange$ = new Subject();
|
|
18
|
+
this.updatedDateAndClose$ = new Subject();
|
|
19
|
+
this.presetTag$ = new BehaviorSubject('');
|
|
20
|
+
this.onSameDaySelectedInCalendar$ = new Subject();
|
|
21
|
+
this.keepPresetTag = false;
|
|
22
|
+
this.isValueUpdating = false;
|
|
23
|
+
this.availableTimeframes = [
|
|
24
|
+
TimeframeOption.DAY,
|
|
25
|
+
TimeframeOption.WEEK,
|
|
26
|
+
TimeframeOption.MONTH,
|
|
27
|
+
TimeframeOption.QUARTER,
|
|
28
|
+
TimeframeOption.YEAR,
|
|
29
|
+
];
|
|
30
|
+
this.formatConfig = {
|
|
31
|
+
day: DateFromats.MAT_DEFAULT_DATE_FORMAT,
|
|
32
|
+
month: DateFromats.MONTH_YEAR_FORMAT,
|
|
33
|
+
year: DateFromats.YEAR_FORMAT,
|
|
34
|
+
quarter: DateFromats.QUARTER_FORMAT,
|
|
35
|
+
week: DateFromats.WEEK_FORMAT,
|
|
36
|
+
};
|
|
37
|
+
this.fiscalYearMonthsModifier = 0;
|
|
38
|
+
this.fiscalYearBack = false;
|
|
39
|
+
this._innerValue$ = new BehaviorSubject(null);
|
|
40
|
+
this.innerValue$ = this._innerValue$.asObservable();
|
|
41
|
+
}
|
|
42
|
+
get timeframe() {
|
|
43
|
+
return this._timeframe$.getValue();
|
|
44
|
+
}
|
|
45
|
+
set timeframe(value) {
|
|
46
|
+
this._timeframe$.next(value);
|
|
47
|
+
}
|
|
48
|
+
set innerValue(value) {
|
|
49
|
+
this._innerValue$.next(value);
|
|
50
|
+
}
|
|
51
|
+
get innerValue() {
|
|
52
|
+
return this._innerValue$.getValue();
|
|
53
|
+
}
|
|
54
|
+
getDisplayPrefix() {
|
|
55
|
+
const formatCached = this.getConfiguredFormat(this.timeframe);
|
|
56
|
+
switch (true) {
|
|
57
|
+
case formatCached?.includes('Q'):
|
|
58
|
+
return 'Q';
|
|
59
|
+
case formatCached?.includes('W'):
|
|
60
|
+
return 'W';
|
|
61
|
+
default:
|
|
62
|
+
return '';
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
getTimeframe(format) {
|
|
66
|
+
return DrSharedUtils.getTimeframeByDateFormat(format);
|
|
67
|
+
}
|
|
68
|
+
getConfiguredFormat(timeframe) {
|
|
69
|
+
return this.formatConfig[timeframe];
|
|
70
|
+
}
|
|
71
|
+
updateTimeframeAndFormat(format) {
|
|
72
|
+
const normalizedFormat = this.normalizeValue(format || this.format$.getValue());
|
|
73
|
+
this.timeframe = this.getTimeframe(normalizedFormat);
|
|
74
|
+
this.format$.next(this.getConfiguredFormat(this.timeframe));
|
|
75
|
+
}
|
|
76
|
+
normalizeValue(value) {
|
|
77
|
+
return value.replace(/d/g, 'D');
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get quarter number for date according to fiscal year
|
|
81
|
+
*
|
|
82
|
+
* @param date
|
|
83
|
+
*/
|
|
84
|
+
getQuarterAccordingToFiscalYear(date) {
|
|
85
|
+
let fiscalMonth = this.fiscalYearMonthsModifier;
|
|
86
|
+
const dateMonth = date.month();
|
|
87
|
+
if (dateMonth < fiscalMonth) {
|
|
88
|
+
fiscalMonth -= 12;
|
|
89
|
+
}
|
|
90
|
+
return Math.trunc((date.month() - fiscalMonth) / 3) + 1;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Sets date to end of quarter in FY by passed quarter number
|
|
94
|
+
*
|
|
95
|
+
* @param date
|
|
96
|
+
* @param quarterNumber
|
|
97
|
+
*/
|
|
98
|
+
setEndOfQuarter(date, quarterNumber) {
|
|
99
|
+
date.subtract(this.fiscalYearMonthsModifier, 'M')
|
|
100
|
+
.startOf('year')
|
|
101
|
+
.add(this.fiscalYearMonthsModifier + quarterNumber * 3 - 1, 'M')
|
|
102
|
+
.endOf('month');
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Sets date to start of quarter in FY by passed quarter number
|
|
106
|
+
*
|
|
107
|
+
* @param date
|
|
108
|
+
* @param quarterNumber
|
|
109
|
+
*/
|
|
110
|
+
setStartOfQuarter(date, quarterNumber) {
|
|
111
|
+
date.subtract(this.fiscalYearMonthsModifier, 'M')
|
|
112
|
+
.startOf('year')
|
|
113
|
+
.add(this.fiscalYearMonthsModifier + (quarterNumber - 1) * 3, 'M');
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Sets date to end of current quarter (in which date is located) according to FY
|
|
117
|
+
*
|
|
118
|
+
* @param date
|
|
119
|
+
*/
|
|
120
|
+
setEndOfCurrentQuarter(date) {
|
|
121
|
+
this.setEndOfQuarter(date, this.getQuarterAccordingToFiscalYear(date));
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Sets date to start of current quarter (in which date is located) according to FY
|
|
125
|
+
*
|
|
126
|
+
* @param date
|
|
127
|
+
*/
|
|
128
|
+
setStartOfCurrentQuarter(date) {
|
|
129
|
+
this.setStartOfQuarter(date, this.getQuarterAccordingToFiscalYear(date));
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* If date selection on this timeframe depends on Fiscal Year
|
|
133
|
+
*
|
|
134
|
+
* @param timeframe
|
|
135
|
+
*/
|
|
136
|
+
isTimeframeDependingOnFY(timeframe) {
|
|
137
|
+
return _.includes([TimeframeOption.QUARTER, TimeframeOption.YEAR], timeframe);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Subtract from date fiscal year shift months count
|
|
141
|
+
*
|
|
142
|
+
* @param date
|
|
143
|
+
*/
|
|
144
|
+
subtractFiscalYearMonthsFromDate(date) {
|
|
145
|
+
return this.getDateModifiedByFiscalMonths(date, true);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Add to date fiscal year shift months count
|
|
149
|
+
*
|
|
150
|
+
* @param date
|
|
151
|
+
*/
|
|
152
|
+
addFiscalYearMonthsToDate(date) {
|
|
153
|
+
return this.getDateModifiedByFiscalMonths(date);
|
|
154
|
+
}
|
|
155
|
+
applyFiscalYearShiftForYear(momentDate, isSubtract = false) {
|
|
156
|
+
if (this.fiscalYearBack || !this.fiscalYearMonthsModifier)
|
|
157
|
+
return;
|
|
158
|
+
return momentDate[isSubtract ? 'subtract' : 'add'](1, 'year');
|
|
159
|
+
}
|
|
160
|
+
addFiscalYearShiftForYear(momentDate) {
|
|
161
|
+
return this.applyFiscalYearShiftForYear(momentDate);
|
|
162
|
+
}
|
|
163
|
+
subtractFiscalYearShiftForYear(momentDate) {
|
|
164
|
+
return this.applyFiscalYearShiftForYear(momentDate, true);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Add or subtract depending on isRevert paremeter Fiscal year month shift
|
|
168
|
+
*
|
|
169
|
+
* @param date
|
|
170
|
+
* @param isSubtract
|
|
171
|
+
*/
|
|
172
|
+
getDateModifiedByFiscalMonths(date, isSubtract = false) {
|
|
173
|
+
return date ? _.cloneDeep(date)[isSubtract ? 'subtract' : 'add'](this.fiscalYearMonthsModifier, 'month') : date;
|
|
174
|
+
}
|
|
175
|
+
updateDatePickerByPreset(tag, calender) {
|
|
176
|
+
this.keepPresetTag = true;
|
|
177
|
+
let date = null;
|
|
178
|
+
if (tag) {
|
|
179
|
+
date = DrSharedUtils.getDateByTag(tag);
|
|
180
|
+
switch (tag) {
|
|
181
|
+
case DateTags.TODAY:
|
|
182
|
+
this.updateTimeframeAndFormat(DateFromats.MAT_DEFAULT_DATE_FORMAT);
|
|
183
|
+
break;
|
|
184
|
+
case DateTags.YESTERDAY:
|
|
185
|
+
this.updateTimeframeAndFormat(DateFromats.MAT_DEFAULT_DATE_FORMAT);
|
|
186
|
+
break;
|
|
187
|
+
case DateTags.THIS_MONTH:
|
|
188
|
+
this.updateTimeframeAndFormat(DateFromats.MONTH_YEAR_FORMAT);
|
|
189
|
+
this.selectDateInCalendarMonthView(date, calender);
|
|
190
|
+
break;
|
|
191
|
+
case DateTags.PREV_MONTH:
|
|
192
|
+
this.updateTimeframeAndFormat(DateFromats.MONTH_YEAR_FORMAT);
|
|
193
|
+
this.selectDateInCalendarMonthView(date, calender);
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
this.presetTag$.next(tag);
|
|
198
|
+
this.updatedDateAndClose$.next(date);
|
|
199
|
+
}
|
|
200
|
+
selectDateInCalendarMonthView(date, calender) {
|
|
201
|
+
setTimeout(() => {
|
|
202
|
+
const monthView = calender.monthView;
|
|
203
|
+
if (monthView) {
|
|
204
|
+
monthView._activeDate = date;
|
|
205
|
+
monthView._selected = date;
|
|
206
|
+
monthView._init();
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
resetPresetTag() {
|
|
211
|
+
if (!this.keepPresetTag) {
|
|
212
|
+
this.presetTag$.next(null);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
this.keepPresetTag = false;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/** @nocollapse */ static { this.ɵfac = function DrDatePickerService_Factory(t) { return new (t || DrDatePickerService)(); }; }
|
|
219
|
+
/** @nocollapse */ static { this.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: DrDatePickerService, factory: DrDatePickerService.ɵfac }); }
|
|
220
|
+
}
|
|
221
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrDatePickerService, [{
|
|
222
|
+
type: Injectable
|
|
223
|
+
}], null, null); })();
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kYXRlLXBpY2tlcnMvc2VydmljZXMvZHItZGF0ZS1waWNrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUEyQixlQUFlLEVBQW9CLE1BQU0sNEJBQTRCLENBQUM7QUFDL0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQUk1QixNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRUksZ0NBQTJCLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGdCQUFXLEdBQXNDLElBQUksZUFBZSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRixlQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBVTFGLG9FQUFvRTtRQUNwRSwrRUFBK0U7UUFDL0UsaUVBQWlFO1FBQ2pFLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBUyxXQUFXLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUUzRSxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDL0IseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQVksQ0FBQztRQUN4RCx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRzdDLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBVyxF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RU0sNkJBQTZCLENBQUMsSUFBWSxFQUFFLFFBQWE7UUFDNUQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFnQixDQUFDO1lBQzVDLElBQUksU0FBUyxFQUFFO2dCQUNYLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUM3QixTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDM0IsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3JCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjthQUFNO1lBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7U0FDOUI7SUFDTCxDQUFDO3VHQTlPUSxtQkFBbUI7c0dBQW5CLG1CQUFtQixXQUFuQixtQkFBbUI7O3VGQUFuQixtQkFBbUI7Y0FEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENhbGVuZGFyLCBNYXREYXRlcGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0ZUZyb21hdHMsIERhdGVUYWdzLCBJRGF0ZVBpY2tlckZvcm1hdENvbmZpZywgVGltZWZyYW1lT3B0aW9uLCBUVGltZWZyYW1lT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2RhdGVQaWNrZXInO1xuaW1wb3J0IHsgRHJTaGFyZWRVdGlscyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RyLXNoYXJlZC11dGlscyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBXZWVrSW5mbyB9IGZyb20gJy4uL3dlZWstc2VsZWN0b3Ivd2Vlay1zZWxlY3Rvci5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRHJEYXRlUGlja2VyU2VydmljZSB7XG4gICAgaXNUaW1lZnJhbWVTZWxlY3Rpb25FbmFibGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGltZWZyYW1lJDogQmVoYXZpb3JTdWJqZWN0PFRUaW1lZnJhbWVPcHRpb24+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChUaW1lZnJhbWVPcHRpb24uREFZKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGltZWZyYW1lJCA9IHRoaXMuX3RpbWVmcmFtZSQuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICAgIHB1YmxpYyBnZXQgdGltZWZyYW1lKCk6IFRUaW1lZnJhbWVPcHRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGltZWZyYW1lJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdGltZWZyYW1lKHZhbHVlOiBUVGltZWZyYW1lT3B0aW9uKSB7XG4gICAgICAgIHRoaXMuX3RpbWVmcmFtZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogaGVyZSB3ZSBjYW4gaGF2ZSBpbmNvbnNpc3RlbmN5IGJldHdlZW4gZm9ybWF0IGFuZCB0aW1lZnJhbWVcbiAgICAvLyB3ZSBuZWVkIHRvIGdldCByaWQgb2YgYSBzZXBhcmF0ZSBzdWJqZWN0IGFuZCB1c2UgcGlwZSBmcm9tIHRpbWVmcmFtZSQgZm9yIGl0XG4gICAgLy8gbWFraW5nIEBJbnB1dCgpIGZvcm1hdCBpbiBjb21wb25lbnQganVzdCBzZXR0aW5nIHRoZSB0aW1lZnJhbWVcbiAgICBmb3JtYXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KERhdGVGcm9tYXRzLk1BVF9ERUZBVUxUX0RBVEVfRk9STUFUKTtcblxuICAgIHVwZGF0ZWRRdWFydGVyJCA9IG5ldyBTdWJqZWN0PE1vbWVudD4oKTtcbiAgICByZWFkb25seSB3ZWVrU2VsZWN0aW9uQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PFdlZWtJbmZvPigpO1xuICAgIHVwZGF0ZWREYXRlQW5kQ2xvc2UkID0gbmV3IFN1YmplY3Q8TW9tZW50PigpO1xuICAgIGRhdGVQaWNrZXJJbnN0YW5jZTogTWF0RGF0ZXBpY2tlcjxhbnk+O1xuICAgIGlzVXNpbmdEYXRlVGFnUHJlc2V0czogYm9vbGVhbjtcbiAgICBwcmVzZXRUYWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlVGFncz4oJycgYXMgRGF0ZVRhZ3MpO1xuICAgIG9uU2FtZURheVNlbGVjdGVkSW5DYWxlbmRhciQgPSBuZXcgU3ViamVjdDxNb21lbnQ+KCk7XG4gICAga2VlcFByZXNldFRhZyA9IGZhbHNlO1xuICAgIGlzVmFsdWVVcGRhdGluZyA9IGZhbHNlO1xuICAgIGF2YWlsYWJsZVRpbWVmcmFtZXMgPSBbXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5EQVksXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5XRUVLLFxuICAgICAgICBUaW1lZnJhbWVPcHRpb24uTU9OVEgsXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5RVUFSVEVSLFxuICAgICAgICBUaW1lZnJhbWVPcHRpb24uWUVBUixcbiAgICBdO1xuXG4gICAgcHVibGljIGZvcm1hdENvbmZpZzogSURhdGVQaWNrZXJGb3JtYXRDb25maWcgPSB7XG4gICAgICAgIGRheTogRGF0ZUZyb21hdHMuTUFUX0RFRkFVTFRfREFURV9GT1JNQVQsXG4gICAgICAgIG1vbnRoOiBEYXRlRnJvbWF0cy5NT05USF9ZRUFSX0ZPUk1BVCxcbiAgICAgICAgeWVhcjogRGF0ZUZyb21hdHMuWUVBUl9GT1JNQVQsXG4gICAgICAgIHF1YXJ0ZXI6IERhdGVGcm9tYXRzLlFVQVJURVJfRk9STUFULFxuICAgICAgICB3ZWVrOiBEYXRlRnJvbWF0cy5XRUVLX0ZPUk1BVCxcbiAgICB9O1xuICAgIHB1YmxpYyBjYWxlbmRhckluc3RhbmNlOiBNYXRDYWxlbmRhcjxhbnk+O1xuXG4gICAgcHVibGljIGZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IDA7XG4gICAgcHVibGljIGZpc2NhbFllYXJCYWNrID0gZmFsc2U7XG4gICAgcHVibGljIGRhdGVwaWNrZXJGaWx0ZXI6IChtb21lbnQ6IE1vbWVudCkgPT4gYm9vbGVhbjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lubmVyVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNb21lbnQ+KG51bGwpO1xuICAgIHB1YmxpYyByZWFkb25seSBpbm5lclZhbHVlJCA9IHRoaXMuX2lubmVyVmFsdWUkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHVibGljIHNldCBpbm5lclZhbHVlKHZhbHVlOiBNb21lbnQpIHtcbiAgICAgICAgdGhpcy5faW5uZXJWYWx1ZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgaW5uZXJWYWx1ZSgpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5uZXJWYWx1ZSQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBnZXREaXNwbGF5UHJlZml4KCkge1xuICAgICAgICBjb25zdCBmb3JtYXRDYWNoZWQgPSB0aGlzLmdldENvbmZpZ3VyZWRGb3JtYXQodGhpcy50aW1lZnJhbWUpO1xuICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgIGNhc2UgZm9ybWF0Q2FjaGVkPy5pbmNsdWRlcygnUScpOlxuICAgICAgICAgICAgICAgIHJldHVybiAnUSc7XG4gICAgICAgICAgICBjYXNlIGZvcm1hdENhY2hlZD8uaW5jbHVkZXMoJ1cnKTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1cnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRUaW1lZnJhbWUoZm9ybWF0OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIERyU2hhcmVkVXRpbHMuZ2V0VGltZWZyYW1lQnlEYXRlRm9ybWF0KGZvcm1hdCk7XG4gICAgfVxuXG4gICAgZ2V0Q29uZmlndXJlZEZvcm1hdCh0aW1lZnJhbWU6IFRUaW1lZnJhbWVPcHRpb24pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRDb25maWdbdGltZWZyYW1lXTtcbiAgICB9XG5cbiAgICB1cGRhdGVUaW1lZnJhbWVBbmRGb3JtYXQoZm9ybWF0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZEZvcm1hdCA9IHRoaXMubm9ybWFsaXplVmFsdWUoZm9ybWF0IHx8IHRoaXMuZm9ybWF0JC5nZXRWYWx1ZSgpKTtcbiAgICAgICAgdGhpcy50aW1lZnJhbWUgPSB0aGlzLmdldFRpbWVmcmFtZShub3JtYWxpemVkRm9ybWF0KTtcbiAgICAgICAgdGhpcy5mb3JtYXQkLm5leHQodGhpcy5nZXRDb25maWd1cmVkRm9ybWF0KHRoaXMudGltZWZyYW1lKSk7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9kL2csICdEJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHF1YXJ0ZXIgbnVtYmVyIGZvciBkYXRlIGFjY29yZGluZyB0byBmaXNjYWwgeWVhclxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UXVhcnRlckFjY29yZGluZ1RvRmlzY2FsWWVhcihkYXRlOiBNb21lbnQpOiBudW1iZXIge1xuICAgICAgICBsZXQgZmlzY2FsTW9udGggPSB0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllcjtcbiAgICAgICAgY29uc3QgZGF0ZU1vbnRoID0gZGF0ZS5tb250aCgpO1xuICAgICAgICBpZiAoZGF0ZU1vbnRoIDwgZmlzY2FsTW9udGgpIHtcbiAgICAgICAgICAgIGZpc2NhbE1vbnRoIC09IDEyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBNYXRoLnRydW5jKChkYXRlLm1vbnRoKCkgLSBmaXNjYWxNb250aCkgLyAzKSArIDE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBkYXRlIHRvIGVuZCBvZiBxdWFydGVyIGluIEZZIGJ5IHBhc3NlZCBxdWFydGVyIG51bWJlclxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVcbiAgICAgKiBAcGFyYW0gcXVhcnRlck51bWJlclxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRFbmRPZlF1YXJ0ZXIoZGF0ZTogTW9tZW50LCBxdWFydGVyTnVtYmVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgZGF0ZS5zdWJ0cmFjdCh0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllciwgJ00nKVxuICAgICAgICAgICAgLnN0YXJ0T2YoJ3llYXInKVxuICAgICAgICAgICAgLmFkZCh0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllciArIHF1YXJ0ZXJOdW1iZXIgKiAzIC0gMSwgJ00nKVxuICAgICAgICAgICAgLmVuZE9mKCdtb250aCcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgZGF0ZSB0byBzdGFydCBvZiBxdWFydGVyIGluIEZZIGJ5IHBhc3NlZCBxdWFydGVyIG51bWJlclxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVcbiAgICAgKiBAcGFyYW0gcXVhcnRlck51bWJlclxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRTdGFydE9mUXVhcnRlcihkYXRlOiBNb21lbnQsIHF1YXJ0ZXJOdW1iZXI6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBkYXRlLnN1YnRyYWN0KHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyLCAnTScpXG4gICAgICAgICAgICAuc3RhcnRPZigneWVhcicpXG4gICAgICAgICAgICAuYWRkKHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyICsgKHF1YXJ0ZXJOdW1iZXIgLSAxKSAqIDMsICdNJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBkYXRlIHRvIGVuZCBvZiBjdXJyZW50IHF1YXJ0ZXIgKGluIHdoaWNoIGRhdGUgaXMgbG9jYXRlZCkgYWNjb3JkaW5nIHRvIEZZXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRFbmRPZkN1cnJlbnRRdWFydGVyKGRhdGU6IE1vbWVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldEVuZE9mUXVhcnRlcihkYXRlLCB0aGlzLmdldFF1YXJ0ZXJBY2NvcmRpbmdUb0Zpc2NhbFllYXIoZGF0ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgZGF0ZSB0byBzdGFydCBvZiBjdXJyZW50IHF1YXJ0ZXIgKGluIHdoaWNoIGRhdGUgaXMgbG9jYXRlZCkgYWNjb3JkaW5nIHRvIEZZXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRTdGFydE9mQ3VycmVudFF1YXJ0ZXIoZGF0ZTogTW9tZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0U3RhcnRPZlF1YXJ0ZXIoZGF0ZSwgdGhpcy5nZXRRdWFydGVyQWNjb3JkaW5nVG9GaXNjYWxZZWFyKGRhdGUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiBkYXRlIHNlbGVjdGlvbiBvbiB0aGlzIHRpbWVmcmFtZSBkZXBlbmRzIG9uIEZpc2NhbCBZZWFyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGltZWZyYW1lXG4gICAgICovXG4gICAgcHVibGljIGlzVGltZWZyYW1lRGVwZW5kaW5nT25GWSh0aW1lZnJhbWU6IFRpbWVmcmFtZU9wdGlvbikge1xuICAgICAgICByZXR1cm4gXy5pbmNsdWRlcyhbVGltZWZyYW1lT3B0aW9uLlFVQVJURVIsIFRpbWVmcmFtZU9wdGlvbi5ZRUFSXSwgdGltZWZyYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJ0cmFjdCBmcm9tIGRhdGUgZmlzY2FsIHllYXIgc2hpZnQgbW9udGhzIGNvdW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdWJ0cmFjdEZpc2NhbFllYXJNb250aHNGcm9tRGF0ZShkYXRlOiBNb21lbnQpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlTW9kaWZpZWRCeUZpc2NhbE1vbnRocyhkYXRlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdG8gZGF0ZSBmaXNjYWwgeWVhciBzaGlmdCBtb250aHMgY291bnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpc2NhbFllYXJNb250aHNUb0RhdGUoZGF0ZTogTW9tZW50KTogTW9tZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZU1vZGlmaWVkQnlGaXNjYWxNb250aHMoZGF0ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseUZpc2NhbFllYXJTaGlmdEZvclllYXIobW9tZW50RGF0ZTogTW9tZW50LCBpc1N1YnRyYWN0OiBib29sZWFuID0gZmFsc2UpOiBNb21lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5maXNjYWxZZWFyQmFjayB8fCAhdGhpcy5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXIpIHJldHVybjtcbiAgICAgICAgcmV0dXJuIG1vbWVudERhdGVbaXNTdWJ0cmFjdCA/ICdzdWJ0cmFjdCcgOiAnYWRkJ10oMSwgJ3llYXInKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlzY2FsWWVhclNoaWZ0Rm9yWWVhcihtb21lbnREYXRlOiBNb21lbnQpOiBNb21lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBseUZpc2NhbFllYXJTaGlmdEZvclllYXIobW9tZW50RGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN1YnRyYWN0RmlzY2FsWWVhclNoaWZ0Rm9yWWVhcihtb21lbnREYXRlOiBNb21lbnQpOiBNb21lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBseUZpc2NhbFllYXJTaGlmdEZvclllYXIobW9tZW50RGF0ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIG9yIHN1YnRyYWN0IGRlcGVuZGluZyBvbiBpc1JldmVydCBwYXJlbWV0ZXIgRmlzY2FsIHllYXIgbW9udGggc2hpZnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICogQHBhcmFtIGlzU3VidHJhY3RcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldERhdGVNb2RpZmllZEJ5RmlzY2FsTW9udGhzKGRhdGU6IE1vbWVudCwgaXNTdWJ0cmFjdCA9IGZhbHNlKTogTW9tZW50IHtcbiAgICAgICAgcmV0dXJuIGRhdGUgPyBfLmNsb25lRGVlcChkYXRlKVtpc1N1YnRyYWN0ID8gJ3N1YnRyYWN0JyA6ICdhZGQnXSh0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllciwgJ21vbnRoJykgOiBkYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVEYXRlUGlja2VyQnlQcmVzZXQodGFnOiBEYXRlVGFncywgY2FsZW5kZXI6IGFueSkge1xuICAgICAgICB0aGlzLmtlZXBQcmVzZXRUYWcgPSB0cnVlO1xuICAgICAgICBsZXQgZGF0ZSA9IG51bGw7XG4gICAgICAgIGlmICh0YWcpIHtcbiAgICAgICAgICAgIGRhdGUgPSBEclNoYXJlZFV0aWxzLmdldERhdGVCeVRhZyh0YWcpO1xuICAgICAgICAgICAgc3dpdGNoICh0YWcpIHtcbiAgICAgICAgICAgICAgICBjYXNlIERhdGVUYWdzLlRPREFZOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWVmcmFtZUFuZEZvcm1hdChEYXRlRnJvbWF0cy5NQVRfREVGQVVMVF9EQVRFX0ZPUk1BVCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRGF0ZVRhZ3MuWUVTVEVSREFZOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWVmcmFtZUFuZEZvcm1hdChEYXRlRnJvbWF0cy5NQVRfREVGQVVMVF9EQVRFX0ZPUk1BVCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRGF0ZVRhZ3MuVEhJU19NT05USDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUaW1lZnJhbWVBbmRGb3JtYXQoRGF0ZUZyb21hdHMuTU9OVEhfWUVBUl9GT1JNQVQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdERhdGVJbkNhbGVuZGFyTW9udGhWaWV3KGRhdGUsIGNhbGVuZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBEYXRlVGFncy5QUkVWX01PTlRIOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWVmcmFtZUFuZEZvcm1hdChEYXRlRnJvbWF0cy5NT05USF9ZRUFSX0ZPUk1BVCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0ZUluQ2FsZW5kYXJNb250aFZpZXcoZGF0ZSwgY2FsZW5kZXIpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByZXNldFRhZyQubmV4dCh0YWcpO1xuICAgICAgICB0aGlzLnVwZGF0ZWREYXRlQW5kQ2xvc2UkLm5leHQoZGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdERhdGVJbkNhbGVuZGFyTW9udGhWaWV3KGRhdGU6IE1vbWVudCwgY2FsZW5kZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vbnRoVmlldyA9IGNhbGVuZGVyLm1vbnRoVmlldyBhcyBhbnk7XG4gICAgICAgICAgICBpZiAobW9udGhWaWV3KSB7XG4gICAgICAgICAgICAgICAgbW9udGhWaWV3Ll9hY3RpdmVEYXRlID0gZGF0ZTtcbiAgICAgICAgICAgICAgICBtb250aFZpZXcuX3NlbGVjdGVkID0gZGF0ZTtcbiAgICAgICAgICAgICAgICBtb250aFZpZXcuX2luaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0UHJlc2V0VGFnKCkge1xuICAgICAgICBpZiAoIXRoaXMua2VlcFByZXNldFRhZykge1xuICAgICAgICAgICAgdGhpcy5wcmVzZXRUYWckLm5leHQobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmtlZXBQcmVzZXRUYWcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { DateAdapter } from '@angular/material/core';
|
|
3
|
+
import { DateRange } from '@angular/material/datepicker';
|
|
4
|
+
import moment from 'moment';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/material/core";
|
|
7
|
+
export class WeekSelectionStrategy {
|
|
8
|
+
constructor(_dateAdapter) {
|
|
9
|
+
this._dateAdapter = _dateAdapter;
|
|
10
|
+
}
|
|
11
|
+
selectionFinished(date) {
|
|
12
|
+
return this._createWeekRange(date);
|
|
13
|
+
}
|
|
14
|
+
createPreview(activeDate) {
|
|
15
|
+
return this._createWeekRange(activeDate);
|
|
16
|
+
}
|
|
17
|
+
_createWeekRange(date) {
|
|
18
|
+
if (!date) {
|
|
19
|
+
return new DateRange(null, null);
|
|
20
|
+
}
|
|
21
|
+
// ISO week
|
|
22
|
+
const startDays = moment(date).diff(moment(date).startOf('isoWeek'), 'days');
|
|
23
|
+
const endDays = moment(date).diff(moment(date).endOf('isoWeek'), 'days');
|
|
24
|
+
const start = this._dateAdapter.addCalendarDays(date, -Math.abs(startDays));
|
|
25
|
+
const end = this._dateAdapter.addCalendarDays(date, Math.abs(endDays));
|
|
26
|
+
return new DateRange(start, end);
|
|
27
|
+
}
|
|
28
|
+
/** @nocollapse */ static { this.ɵfac = function WeekSelectionStrategy_Factory(t) { return new (t || WeekSelectionStrategy)(i0.ɵɵinject(i1.DateAdapter)); }; }
|
|
29
|
+
/** @nocollapse */ static { this.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: WeekSelectionStrategy, factory: WeekSelectionStrategy.ɵfac }); }
|
|
30
|
+
}
|
|
31
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WeekSelectionStrategy, [{
|
|
32
|
+
type: Injectable
|
|
33
|
+
}], function () { return [{ type: i1.DateAdapter }]; }, null); })();
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vlay1zZWxlY3Rpb24tc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1pbnB1dHMvZGF0ZS1waWNrZXJzL3NlcnZpY2VzL3dlZWstc2VsZWN0aW9uLXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBaUMsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEYsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7QUFHNUIsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixZQUFvQixZQUE0QjtRQUE1QixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7SUFBRyxDQUFDO0lBRXBELGlCQUFpQixDQUFDLElBQWM7UUFDNUIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFvQjtRQUM5QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBYztRQUNuQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsT0FBTyxJQUFJLFNBQVMsQ0FBSSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdkM7UUFFRCxXQUFXO1FBQ1gsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV6RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUV2RSxPQUFPLElBQUksU0FBUyxDQUFJLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDO3lHQXhCUSxxQkFBcUI7c0dBQXJCLHFCQUFxQixXQUFyQixxQkFBcUI7O3VGQUFyQixxQkFBcUI7Y0FEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlUmFuZ2VTZWxlY3Rpb25TdHJhdGVneSwgRGF0ZVJhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBXZWVrU2VsZWN0aW9uU3RyYXRlZ3k8RD4gaW1wbGVtZW50cyBNYXREYXRlUmFuZ2VTZWxlY3Rpb25TdHJhdGVneTxEPiB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPEQ+KSB7fVxuXG4gICAgc2VsZWN0aW9uRmluaXNoZWQoZGF0ZTogRCB8IG51bGwpOiBEYXRlUmFuZ2U8RD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlV2Vla1JhbmdlKGRhdGUpO1xuICAgIH1cblxuICAgIGNyZWF0ZVByZXZpZXcoYWN0aXZlRGF0ZTogRCB8IG51bGwpOiBEYXRlUmFuZ2U8RD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlV2Vla1JhbmdlKGFjdGl2ZURhdGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZVdlZWtSYW5nZShkYXRlOiBEIHwgbnVsbCk6IERhdGVSYW5nZTxEPiB7XG4gICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlUmFuZ2U8RD4obnVsbCwgbnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJU08gd2Vla1xuICAgICAgICBjb25zdCBzdGFydERheXMgPSBtb21lbnQoZGF0ZSkuZGlmZihtb21lbnQoZGF0ZSkuc3RhcnRPZignaXNvV2VlaycpLCAnZGF5cycpO1xuICAgICAgICBjb25zdCBlbmREYXlzID0gbW9tZW50KGRhdGUpLmRpZmYobW9tZW50KGRhdGUpLmVuZE9mKCdpc29XZWVrJyksICdkYXlzJyk7XG5cbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9kYXRlQWRhcHRlci5hZGRDYWxlbmRhckRheXMoZGF0ZSwgLU1hdGguYWJzKHN0YXJ0RGF5cykpO1xuICAgICAgICBjb25zdCBlbmQgPSB0aGlzLl9kYXRlQWRhcHRlci5hZGRDYWxlbmRhckRheXMoZGF0ZSwgTWF0aC5hYnMoZW5kRGF5cykpO1xuXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZVJhbmdlPEQ+KHN0YXJ0LCBlbmQpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatCalendar } from '@angular/material/datepicker';
|
|
4
|
+
import { startWith, Subject, takeUntil } from 'rxjs';
|
|
5
|
+
import { DrDatePickerService } from '../services/dr-date-picker.service';
|
|
6
|
+
import moment from 'moment';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common";
|
|
9
|
+
function WeekSelectorComponent_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
11
|
+
i0.ɵɵelementStart(0, "div", 5);
|
|
12
|
+
i0.ɵɵlistener("click", function WeekSelectorComponent_div_4_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r3); const week_r1 = restoredCtx.$implicit; const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.service.datePickerInstance.close(); return i0.ɵɵresetView(ctx_r2.service.weekSelectionChange$.next(week_r1)); });
|
|
13
|
+
i0.ɵɵtext(1);
|
|
14
|
+
i0.ɵɵelementEnd();
|
|
15
|
+
} if (rf & 2) {
|
|
16
|
+
const week_r1 = ctx.$implicit;
|
|
17
|
+
i0.ɵɵclassProp("selected", week_r1.selected);
|
|
18
|
+
i0.ɵɵadvance(1);
|
|
19
|
+
i0.ɵɵtextInterpolate1(" W", week_r1.yearWeekNumber, " ");
|
|
20
|
+
} }
|
|
21
|
+
export class WeekSelectorComponent {
|
|
22
|
+
constructor() {
|
|
23
|
+
this.service = inject(DrDatePickerService);
|
|
24
|
+
this.calendar = inject(MatCalendar);
|
|
25
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
26
|
+
this.destroy$ = new Subject();
|
|
27
|
+
this.currentMonthWeeks = [];
|
|
28
|
+
inject(DestroyRef, { skipSelf: true }).onDestroy(() => {
|
|
29
|
+
this.destroy$.next();
|
|
30
|
+
this.destroy$.complete();
|
|
31
|
+
});
|
|
32
|
+
this.calendar.stateChanges.pipe(startWith(null), takeUntil(this.destroy$)).subscribe(() => {
|
|
33
|
+
setTimeout(() => {
|
|
34
|
+
const activeDate = moment(this.calendar.activeDate);
|
|
35
|
+
const selectedRange = this.calendar.selected;
|
|
36
|
+
this.currentMonthWeeks = this.getWeeksInMonth(activeDate, selectedRange);
|
|
37
|
+
this.cdr.detectChanges();
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
getWeeksInMonth(date, selectedRange) {
|
|
42
|
+
const weeks = [];
|
|
43
|
+
const firstDay = moment(date).startOf('month');
|
|
44
|
+
const lastDay = moment(date).endOf('month');
|
|
45
|
+
const firstWeekStart = moment(firstDay).startOf('isoWeek');
|
|
46
|
+
const lastWeekEnd = moment(lastDay).endOf('isoWeek');
|
|
47
|
+
let currentWeekStart = moment(firstWeekStart);
|
|
48
|
+
let weekNumber = 1;
|
|
49
|
+
while (currentWeekStart.isSameOrBefore(lastWeekEnd)) {
|
|
50
|
+
const weekEnd = moment(currentWeekStart).endOf('isoWeek');
|
|
51
|
+
const days = [];
|
|
52
|
+
for (let i = 0; i < 7; i++) {
|
|
53
|
+
days.push(moment(currentWeekStart).add(i, 'days'));
|
|
54
|
+
}
|
|
55
|
+
const isPartial = days.some((day) => !day.isSame(date, 'month'));
|
|
56
|
+
const selected = days.some((day) => day.isSame(selectedRange.start, 'day'));
|
|
57
|
+
// isoWeek() returns the ISO week number (1-53)
|
|
58
|
+
const yearWeekNumber = moment(currentWeekStart).isoWeek();
|
|
59
|
+
weeks.push({
|
|
60
|
+
weekNumber,
|
|
61
|
+
yearWeekNumber,
|
|
62
|
+
start: moment(currentWeekStart),
|
|
63
|
+
end: moment(weekEnd),
|
|
64
|
+
days,
|
|
65
|
+
isPartial,
|
|
66
|
+
selected,
|
|
67
|
+
});
|
|
68
|
+
currentWeekStart.add(1, 'week');
|
|
69
|
+
weekNumber++;
|
|
70
|
+
}
|
|
71
|
+
return weeks;
|
|
72
|
+
}
|
|
73
|
+
/** @nocollapse */ static { this.ɵfac = function WeekSelectorComponent_Factory(t) { return new (t || WeekSelectorComponent)(); }; }
|
|
74
|
+
/** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: WeekSelectorComponent, selectors: [["dr-week-selector"]], standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 6, vars: 1, consts: [[1, "weeks"], [1, "header"], [1, "weeks__container"], ["class", "btn", 3, "selected", "click", 4, "ngFor", "ngForOf"], [1, "weeks-border"], [1, "btn", 3, "click"]], template: function WeekSelectorComponent_Template(rf, ctx) { if (rf & 1) {
|
|
75
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
76
|
+
i0.ɵɵtext(2, "Week");
|
|
77
|
+
i0.ɵɵelementEnd();
|
|
78
|
+
i0.ɵɵelementStart(3, "div", 2);
|
|
79
|
+
i0.ɵɵtemplate(4, WeekSelectorComponent_div_4_Template, 2, 3, "div", 3);
|
|
80
|
+
i0.ɵɵelementEnd()();
|
|
81
|
+
i0.ɵɵelement(5, "div", 4);
|
|
82
|
+
} if (rf & 2) {
|
|
83
|
+
i0.ɵɵadvance(4);
|
|
84
|
+
i0.ɵɵproperty("ngForOf", ctx.currentMonthWeeks);
|
|
85
|
+
} }, dependencies: [CommonModule, i1.NgForOf], styles: ["[_nghost-%COMP%]{font-size:14px;font-weight:400;line-height:22px;text-align:center;color:#333;display:flex}[_nghost-%COMP%] .weeks[_ngcontent-%COMP%]{height:100%;flex-direction:column;display:flex}[_nghost-%COMP%] .weeks-border[_ngcontent-%COMP%]{height:100%;width:1px;background-color:#dfe0e3;margin:0 4px}[_nghost-%COMP%] .weeks__container[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:space-between;height:100%}[_nghost-%COMP%] .weeks[_ngcontent-%COMP%] .header[_ngcontent-%COMP%]{font-weight:600;color:#19181a;padding-bottom:8px;line-height:16px}[_nghost-%COMP%] .weeks[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{padding:9px 16px;border-radius:40px;cursor:pointer}[_nghost-%COMP%] .weeks[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]:hover{font-weight:600;background-color:#f2f2fb;color:#4646ce}[_nghost-%COMP%] .weeks[_ngcontent-%COMP%] .btn.selected[_ngcontent-%COMP%]{font-weight:600;background-color:#4646ce;color:#fff}"], changeDetection: 0 }); }
|
|
86
|
+
}
|
|
87
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WeekSelectorComponent, [{
|
|
88
|
+
type: Component,
|
|
89
|
+
args: [{ selector: 'dr-week-selector', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"weeks\">\n <div class=\"header\">Week</div>\n\n <div class=\"weeks__container\">\n <div\n (click)=\"service.datePickerInstance.close(); service.weekSelectionChange$.next(week)\"\n class=\"btn\"\n [class.selected]=\"week.selected\"\n *ngFor=\"let week of currentMonthWeeks\">\n W{{ week.yearWeekNumber }}\n </div>\n </div>\n</div>\n<div class=\"weeks-border\"></div>\n", styles: [":host{font-size:14px;font-weight:400;line-height:22px;text-align:center;color:#333;display:flex}:host .weeks{height:100%;flex-direction:column;display:flex}:host .weeks-border{height:100%;width:1px;background-color:#dfe0e3;margin:0 4px}:host .weeks__container{display:flex;flex-direction:column;justify-content:space-between;height:100%}:host .weeks .header{font-weight:600;color:#19181a;padding-bottom:8px;line-height:16px}:host .weeks .btn{padding:9px 16px;border-radius:40px;cursor:pointer}:host .weeks .btn:hover{font-weight:600;background-color:#f2f2fb;color:#4646ce}:host .weeks .btn.selected{font-weight:600;background-color:#4646ce;color:#fff}\n"] }]
|
|
90
|
+
}], function () { return []; }, null); })();
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vlay1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1pbnB1dHMvZGF0ZS1waWNrZXJzL3dlZWstc2VsZWN0b3Ivd2Vlay1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1pbnB1dHMvZGF0ZS1waWNrZXJzL3dlZWstc2VsZWN0b3Ivd2Vlay1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBYSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxNQUFrQixNQUFNLFFBQVEsQ0FBQzs7Ozs7SUNEaEMsOEJBSTJDO0lBSHZDLG1OQUFTLHlDQUFrQyxTQUFFLGVBQUEsaURBQXVDLENBQUEsSUFBQztJQUlyRixZQUNKO0lBQUEsaUJBQU07OztJQUhGLDRDQUFnQztJQUVoQyxlQUNKO0lBREksd0RBQ0o7O0FEZVIsTUFBTSxPQUFPLHFCQUFxQjtJQVE5QjtRQVBTLFlBQU8sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM5QixhQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9CLFFBQUcsR0FBRyxN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QyxJQUFJLENBQUM7Z0JBQ1AsVUFBVTtnQkFDVixjQUFjO2dCQUNkLEtBQUssRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUM7Z0JBQy9CLEdBQUcsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUNwQixJQUFJO2dCQUNKLFNBQVM7Z0JBQ1QsUUFBUTthQUNYLENBQUMsQ0FBQztZQUVILGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDaEMsVUFBVSxFQUFFLENBQUM7U0FDaEI7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO3lHQWhFUSxxQkFBcUI7bUdBQXJCLHFCQUFxQjtZQ3pCbEMsOEJBQW1CLGFBQUE7WUFDSyxvQkFBSTtZQUFBLGlCQUFNO1lBRTlCLDhCQUE4QjtZQUMxQixzRUFNTTtZQUNWLGlCQUFNLEVBQUE7WUFFVix5QkFBZ0M7O1lBTEgsZUFBb0I7WUFBcEIsK0NBQW9COzRCRFluQyxZQUFZOzt1RkFLYixxQkFBcUI7Y0FSakMsU0FBUzsyQkFDSSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLG1CQUdOLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRGVzdHJveVJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0ZVJhbmdlLCBNYXRDYWxlbmRhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERyRGF0ZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kci1kYXRlLXBpY2tlci5zZXJ2aWNlJztcbmltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBXZWVrSW5mbyB7XG4gICAgd2Vla051bWJlcjogbnVtYmVyO1xuICAgIHllYXJXZWVrTnVtYmVyOiBudW1iZXI7XG4gICAgc3RhcnQ6IE1vbWVudDtcbiAgICBlbmQ6IE1vbWVudDtcbiAgICBkYXlzOiBNb21lbnRbXTtcbiAgICBpc1BhcnRpYWw6IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItd2Vlay1zZWxlY3RvcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vd2Vlay1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vd2Vlay1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBXZWVrU2VsZWN0b3JDb21wb25lbnQge1xuICAgIHJlYWRvbmx5IHNlcnZpY2UgPSBpbmplY3QoRHJEYXRlUGlja2VyU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYWxlbmRhciA9IGluamVjdChNYXRDYWxlbmRhcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY3VycmVudE1vbnRoV2Vla3M6IFdlZWtJbmZvW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpbmplY3QoRGVzdHJveVJlZiwgeyBza2lwU2VsZjogdHJ1ZSB9KS5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2FsZW5kYXIuc3RhdGVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKG51bGwpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVEYXRlID0gbW9tZW50KHRoaXMuY2FsZW5kYXIuYWN0aXZlRGF0ZSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRSYW5nZTogRGF0ZVJhbmdlPE1vbWVudD4gPSB0aGlzLmNhbGVuZGFyLnNlbGVjdGVkO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoV2Vla3MgPSB0aGlzLmdldFdlZWtzSW5Nb250aChhY3RpdmVEYXRlLCBzZWxlY3RlZFJhbmdlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRXZWVrc0luTW9udGgoZGF0ZTogTW9tZW50LCBzZWxlY3RlZFJhbmdlOiBEYXRlUmFuZ2U8TW9tZW50Pik6IFdlZWtJbmZvW10ge1xuICAgICAgICBjb25zdCB3ZWVrczogV2Vla0luZm9bXSA9IFtdO1xuICAgICAgICBjb25zdCBmaXJzdERheSA9IG1vbWVudChkYXRlKS5zdGFydE9mKCdtb250aCcpO1xuICAgICAgICBjb25zdCBsYXN0RGF5ID0gbW9tZW50KGRhdGUpLmVuZE9mKCdtb250aCcpO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0V2Vla1N0YXJ0ID0gbW9tZW50KGZpcnN0RGF5KS5zdGFydE9mKCdpc29XZWVrJyk7XG4gICAgICAgIGNvbnN0IGxhc3RXZWVrRW5kID0gbW9tZW50KGxhc3REYXkpLmVuZE9mKCdpc29XZWVrJyk7XG5cbiAgICAgICAgbGV0IGN1cnJlbnRXZWVrU3RhcnQgPSBtb21lbnQoZmlyc3RXZWVrU3RhcnQpO1xuICAgICAgICBsZXQgd2Vla051bWJlciA9IDE7XG5cbiAgICAgICAgd2hpbGUgKGN1cnJlbnRXZWVrU3RhcnQuaXNTYW1lT3JCZWZvcmUobGFzdFdlZWtFbmQpKSB7XG4gICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gbW9tZW50KGN1cnJlbnRXZWVrU3RhcnQpLmVuZE9mKCdpc29XZWVrJyk7XG4gICAgICAgICAgICBjb25zdCBkYXlzOiBNb21lbnRbXSA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgICAgIGRheXMucHVzaChtb21lbnQoY3VycmVudFdlZWtTdGFydCkuYWRkKGksICdkYXlzJykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpc1BhcnRpYWwgPSBkYXlzLnNvbWUoKGRheSkgPT4gIWRheS5pc1NhbWUoZGF0ZSwgJ21vbnRoJykpO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBkYXlzLnNvbWUoKGRheSkgPT4gZGF5LmlzU2FtZShzZWxlY3RlZFJhbmdlLnN0YXJ0LCAnZGF5JykpO1xuXG4gICAgICAgICAgICAvLyBpc29XZWVrKCkgcmV0dXJucyB0aGUgSVNPIHdlZWsgbnVtYmVyICgxLTUzKVxuICAgICAgICAgICAgY29uc3QgeWVhcldlZWtOdW1iZXIgPSBtb21lbnQoY3VycmVudFdlZWtTdGFydCkuaXNvV2VlaygpO1xuXG4gICAgICAgICAgICB3ZWVrcy5wdXNoKHtcbiAgICAgICAgICAgICAgICB3ZWVrTnVtYmVyLFxuICAgICAgICAgICAgICAgIHllYXJXZWVrTnVtYmVyLFxuICAgICAgICAgICAgICAgIHN0YXJ0OiBtb21lbnQoY3VycmVudFdlZWtTdGFydCksXG4gICAgICAgICAgICAgICAgZW5kOiBtb21lbnQod2Vla0VuZCksXG4gICAgICAgICAgICAgICAgZGF5cyxcbiAgICAgICAgICAgICAgICBpc1BhcnRpYWwsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY3VycmVudFdlZWtTdGFydC5hZGQoMSwgJ3dlZWsnKTtcbiAgICAgICAgICAgIHdlZWtOdW1iZXIrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB3ZWVrcztcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid2Vla3NcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+V2VlazwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIndlZWtzX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlcnZpY2UuZGF0ZVBpY2tlckluc3RhbmNlLmNsb3NlKCk7IHNlcnZpY2Uud2Vla1NlbGVjdGlvbkNoYW5nZSQubmV4dCh3ZWVrKVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwid2Vlay5zZWxlY3RlZFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgd2VlayBvZiBjdXJyZW50TW9udGhXZWVrc1wiPlxuICAgICAgICAgICAgV3t7IHdlZWsueWVhcldlZWtOdW1iZXIgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3ZWVrcy1ib3JkZXJcIj48L2Rpdj5cbiJdfQ==
|