@datarailsshared/datarailsshared 1.4.188 → 1.4.193-rocket
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/_datarailsshared.styles.css +4 -4
- package/assets/styles/_styles.scss +2 -2
- package/datarailsshared-datarailsshared-1.4.193-rocket.tgz +0 -0
- package/esm2022/datarailsshared-datarailsshared.mjs +5 -0
- package/esm2022/lib/date-tags/any-tag.component.mjs +45 -0
- package/esm2022/lib/date-tags/date-tag.component.mjs +48 -0
- package/esm2022/lib/date-tags/date-tag.module.mjs +66 -0
- package/esm2022/lib/date-tags/day-tag/day-tag.component.mjs +84 -0
- package/esm2022/lib/date-tags/forecast-tag/forecast-tag.component.mjs +162 -0
- package/esm2022/lib/date-tags/month-tag/month-tag.component.mjs +87 -0
- package/esm2022/lib/date-tags/quarter-tag/quarter-tag.component.mjs +107 -0
- package/esm2022/lib/date-tags/week-tag/week-tag.component.mjs +91 -0
- package/esm2022/lib/date-tags/year-tag/year-tag.component.mjs +85 -0
- package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +94 -0
- package/esm2022/lib/directives/click-outside/click-outside.module.mjs +18 -0
- package/esm2022/lib/dr-accordion/accordion-item-body.component.mjs +59 -0
- package/esm2022/lib/dr-accordion/accordion-item-header.component.mjs +109 -0
- package/esm2022/lib/dr-accordion/accordion-item.component.mjs +142 -0
- package/esm2022/lib/dr-accordion/accordion.component.mjs +41 -0
- package/esm2022/lib/dr-accordion/accordion.module.mjs +34 -0
- package/esm2022/lib/dr-avatar/dr-avatar.component.mjs +48 -0
- package/esm2022/lib/dr-avatar/dr-avatar.module.mjs +37 -0
- package/esm2022/lib/dr-avatar/dr-avatar.pipe.mjs +20 -0
- package/esm2022/lib/dr-badge-status/dr-badge-status.component.mjs +30 -0
- package/esm2022/lib/dr-badge-status/dr-badge-status.module.mjs +27 -0
- package/esm2022/lib/dr-chat/chat.component.mjs +147 -0
- package/esm2022/lib/dr-chat/chat.module.mjs +68 -0
- package/esm2022/lib/dr-chat/dr-chat-form/chat-form.component.mjs +169 -0
- package/esm2022/lib/dr-chat/dr-chat-message/chat-message.component.mjs +108 -0
- package/{esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.js → esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.mjs} +21 -21
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.mjs +24 -0
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.mjs +57 -0
- package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.mjs +23 -0
- package/esm2022/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.mjs +89 -0
- package/esm2022/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.mjs +13 -0
- package/esm2022/lib/dr-details-list/dr-details-list.component.mjs +78 -0
- package/esm2022/lib/dr-details-list/dr-details-list.module.mjs +21 -0
- package/esm2022/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.mjs +79 -0
- package/esm2022/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.mjs +102 -0
- package/esm2022/lib/dr-dialog/dialog.module.mjs +51 -0
- package/esm2022/lib/dr-dialog/interfaces/dialog-data.mjs +25 -0
- package/esm2022/lib/dr-dialog/services/dialog.service.mjs +78 -0
- package/esm2022/lib/dr-dropdown/dr-dropdown-item-show.pipe.mjs +16 -0
- package/esm2022/lib/dr-dropdown/dr-dropdown-position.directive.mjs +108 -0
- package/esm2022/lib/dr-dropdown/dr-dropdown.component.mjs +124 -0
- package/esm2022/lib/dr-dropdown/dr-dropdown.directive.mjs +125 -0
- package/esm2022/lib/dr-dropdown/dr-dropdown.module.mjs +49 -0
- package/esm2022/lib/dr-dropdown/dr-dropdown.service.mjs +26 -0
- package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.component.mjs +119 -0
- package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.module.mjs +28 -0
- package/esm2022/lib/dr-error/dr-error.component.mjs +69 -0
- package/esm2022/lib/dr-error/dr-error.module.mjs +31 -0
- package/esm2022/lib/dr-inputs/button/button.component.mjs +70 -0
- package/esm2022/lib/dr-inputs/checkbox/checkbox.component.mjs +67 -0
- package/esm2022/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.mjs +67 -0
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.mjs +234 -0
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.mjs +194 -0
- package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.mjs +190 -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 +198 -0
- package/esm2022/lib/dr-inputs/dr-input/dr-input.component.mjs +232 -0
- package/esm2022/lib/dr-inputs/dr-inputs.module.mjs +108 -0
- package/esm2022/lib/dr-inputs/dr-model-debounce-change.directive.mjs +32 -0
- package/esm2022/lib/dr-inputs/dr-select/dr-select.component.mjs +182 -0
- package/esm2022/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.mjs +82 -0
- package/esm2022/lib/dr-inputs/dr-toggle/dr-toggle.component.mjs +77 -0
- package/esm2022/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.mjs +69 -0
- package/esm2022/lib/dr-inputs/radio-button/radio-button.component.mjs +82 -0
- package/esm2022/lib/dr-inputs/radio-button/radio-group.component.mjs +180 -0
- package/esm2022/lib/dr-layout/dr-layout-body.component.mjs +16 -0
- package/esm2022/lib/dr-layout/dr-layout-header.component.mjs +24 -0
- package/esm2022/lib/dr-layout/dr-layout.component.mjs +13 -0
- package/esm2022/lib/dr-layout/dr-layout.module.mjs +29 -0
- package/esm2022/lib/dr-popover/dr-popover-ref.mjs +23 -0
- package/esm2022/lib/dr-popover/dr-popover.component.mjs +141 -0
- package/esm2022/lib/dr-popover/dr-popover.directive.mjs +115 -0
- package/esm2022/lib/dr-popover/dr-popover.module.mjs +30 -0
- package/esm2022/lib/dr-popover/dr-popover.service.mjs +110 -0
- package/esm2022/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.mjs +110 -0
- package/esm2022/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.mjs +85 -0
- package/esm2022/lib/dr-scenario/consts/scenario-tags-config.mjs +81 -0
- package/esm2022/lib/dr-scenario/dr-scenario.module.mjs +41 -0
- package/esm2022/lib/dr-scenario/services/scenario.service.mjs +166 -0
- package/esm2022/lib/dr-spinner/dr-spinner.component.mjs +18 -0
- package/esm2022/lib/dr-spinner/dr-spinner.directive.mjs +66 -0
- package/esm2022/lib/dr-spinner/dr-spinner.module.mjs +23 -0
- package/esm2022/lib/dr-tabs/dr-tab.component.mjs +42 -0
- package/esm2022/lib/dr-tabs/dr-tabs.component.mjs +51 -0
- package/esm2022/lib/dr-tabs/dr-tabs.module.mjs +49 -0
- package/esm2022/lib/dr-tags/dr-tag.component.mjs +201 -0
- package/esm2022/lib/dr-tags/dr-tag.module.mjs +35 -0
- package/esm2022/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.mjs +20 -0
- package/esm2022/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.mjs +17 -0
- package/esm2022/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.mjs +19 -0
- package/esm2022/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.mjs +20 -0
- package/esm2022/lib/dr-tooltip/dr-tooltip.component.mjs +53 -0
- package/esm2022/lib/dr-tooltip/dr-tooltip.directive.mjs +165 -0
- package/esm2022/lib/dr-tooltip/dr-tooltip.module.mjs +48 -0
- package/esm2022/lib/dr-treeview/components/treeview/treeview.component.mjs +224 -0
- package/esm2022/lib/dr-treeview/components/treeview-item/treeview-item.component.mjs +62 -0
- package/esm2022/lib/dr-treeview/dr-tree-view.module.mjs +48 -0
- package/esm2022/lib/dr-treeview/helpers/treeview-event-parser.mjs +103 -0
- package/esm2022/lib/dr-treeview/models/treeview-config.mjs +23 -0
- package/esm2022/lib/dr-treeview/models/treeview-i18n.mjs +47 -0
- package/esm2022/lib/dr-treeview/models/treeview-item.mjs +158 -0
- package/esm2022/lib/dr-treeview/pipes/treeview.pipe.mjs +21 -0
- package/esm2022/lib/list-tags/list-tag.component.mjs +45 -0
- package/esm2022/lib/list-tags/list-tag.module.mjs +34 -0
- package/esm2022/lib/models/chat.mjs +49 -0
- package/esm2022/lib/models/datePicker.mjs +71 -0
- package/esm2022/lib/models/popover.mjs +27 -0
- package/esm2022/lib/stepper/stepper.component.mjs +66 -0
- package/esm2022/lib/stepper/stepper.module.mjs +24 -0
- package/esm2022/public-api.mjs +120 -0
- package/fesm2022/datarailsshared-datarailsshared.mjs +7893 -0
- package/fesm2022/datarailsshared-datarailsshared.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 +5 -2
- 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/dr-accordion/accordion-item-body.component.d.ts +3 -0
- package/lib/dr-accordion/accordion-item-header.component.d.ts +3 -0
- package/lib/dr-accordion/accordion-item.component.d.ts +3 -0
- package/lib/dr-accordion/accordion.component.d.ts +3 -0
- package/lib/dr-accordion/accordion.module.d.ts +9 -0
- package/lib/dr-avatar/dr-avatar.component.d.ts +3 -0
- package/lib/dr-avatar/dr-avatar.module.d.ts +9 -0
- package/lib/dr-avatar/dr-avatar.pipe.d.ts +3 -0
- package/lib/dr-badge-status/dr-badge-status.component.d.ts +3 -0
- package/lib/dr-badge-status/dr-badge-status.module.d.ts +7 -0
- package/lib/dr-chat/chat.component.d.ts +3 -0
- package/lib/dr-chat/chat.module.d.ts +17 -0
- package/lib/dr-chat/dr-chat-form/chat-form.component.d.ts +3 -0
- package/lib/dr-chat/dr-chat-message/chat-message.component.d.ts +3 -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 +3 -0
- package/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.d.ts +3 -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 +4 -1
- package/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.d.ts +4 -1
- package/lib/dr-dialog/dialog.module.d.ts +12 -0
- package/lib/dr-dialog/interfaces/dialog-data.d.ts +7 -7
- package/lib/dr-dialog/services/dialog.service.d.ts +4 -1
- package/lib/dr-dropdown/dr-dropdown-item-show.pipe.d.ts +3 -0
- package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +3 -0
- package/lib/dr-dropdown/dr-dropdown.component.d.ts +3 -0
- package/lib/dr-dropdown/dr-dropdown.directive.d.ts +3 -0
- package/lib/dr-dropdown/dr-dropdown.module.d.ts +10 -0
- package/lib/dr-dropdown/dr-dropdown.service.d.ts +3 -0
- 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 +3 -0
- package/lib/dr-error/dr-error.module.d.ts +8 -0
- package/lib/dr-inputs/button/button.component.d.ts +4 -1
- package/lib/dr-inputs/checkbox/checkbox.component.d.ts +3 -0
- 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 +3 -0
- package/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.d.ts +3 -0
- package/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +4 -8
- 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 +3 -0
- package/lib/dr-inputs/dr-input/dr-input.component.d.ts +3 -0
- package/lib/dr-inputs/dr-inputs.module.d.ts +25 -0
- package/lib/dr-inputs/dr-model-debounce-change.directive.d.ts +3 -0
- package/lib/dr-inputs/dr-select/dr-select.component.d.ts +3 -0
- package/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.d.ts +3 -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 +3 -0
- 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.component.d.ts +8 -4
- package/lib/dr-popover/dr-popover.directive.d.ts +3 -0
- package/lib/dr-popover/dr-popover.module.d.ts +7 -0
- package/lib/dr-popover/dr-popover.service.d.ts +3 -0
- package/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.d.ts +3 -0
- 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 +10 -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 +3 -0
- package/lib/dr-spinner/dr-spinner.module.d.ts +7 -0
- package/lib/dr-tabs/dr-tab.component.d.ts +3 -0
- package/lib/dr-tabs/dr-tabs.component.d.ts +3 -0
- 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-tooltip/components/tooltip-info/tooltip-info.component.d.ts +3 -0
- package/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.d.ts +3 -0
- package/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.d.ts +3 -0
- package/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.d.ts +3 -0
- package/lib/dr-tooltip/dr-tooltip.component.d.ts +4 -1
- package/lib/dr-tooltip/dr-tooltip.directive.d.ts +3 -0
- package/lib/dr-tooltip/dr-tooltip.module.d.ts +11 -0
- package/lib/dr-tooltip/interfaces/tooltip-component-context.d.ts +1 -1
- 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/pipes/treeview.pipe.d.ts +3 -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 +2 -2
- package/lib/models/datePicker.d.ts +10 -3
- package/lib/models/dropdown.d.ts +1 -1
- package/lib/models/popover.d.ts +1 -1
- package/lib/models/serverTags.d.ts +4 -4
- package/lib/stepper/interfaces/stepper.d.ts +1 -1
- package/lib/stepper/stepper.component.d.ts +3 -0
- package/lib/stepper/stepper.module.d.ts +7 -0
- package/package.json +27 -15
- package/public-api.d.ts +27 -0
- package/bundles/datarailsshared-datarailsshared.umd.js +0 -8041
- package/bundles/datarailsshared-datarailsshared.umd.js.map +0 -1
- package/datarailsshared-datarailsshared-1.4.188.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 -73
- 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 -153
- 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 -105
- 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-avatar/dr-avatar.component.js +0 -44
- 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-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.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 -70
- 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 -103
- package/esm2015/lib/dr-dynamic-tag/dr-dynamic-tag.module.js +0 -19
- package/esm2015/lib/dr-error/dr-error.component.js +0 -64
- 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 -65
- 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 -216
- package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.js +0 -180
- 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 -66
- 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 -119
- 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 -63
- 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 -102
- package/esm2015/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.js +0 -74
- package/esm2015/lib/dr-scenario/consts/scenario-tags-config.js +0 -73
- package/esm2015/lib/dr-scenario/dr-scenario.module.js +0 -28
- package/esm2015/lib/dr-scenario/services/scenario.service.js +0 -167
- package/esm2015/lib/dr-spinner/dr-spinner.component.js +0 -18
- package/esm2015/lib/dr-spinner/dr-spinner.directive.js +0 -56
- 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 -177
- 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 -40
- package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +0 -147
- package/esm2015/lib/dr-tooltip/dr-tooltip.module.js +0 -35
- 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/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 -36
- package/esm2015/lib/models/datePicker.js +0 -73
- package/esm2015/lib/models/popover.js +0 -27
- package/esm2015/lib/stepper/stepper.component.js +0 -55
- package/esm2015/lib/stepper/stepper.module.js +0 -17
- package/esm2015/public-api.js +0 -93
- package/fesm2015/datarailsshared-datarailsshared.js +0 -6885
- package/fesm2015/datarailsshared-datarailsshared.js.map +0 -1
- /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-tooltip/enums/tooltip-position.enum.js → esm2022/lib/dr-tooltip/enums/tooltip-position.enum.mjs} +0 -0
- /package/{esm2015/lib/dr-tooltip/interfaces/tooltip-component-context.js → esm2022/lib/dr-tooltip/interfaces/tooltip-component-context.mjs} +0 -0
- /package/{esm2015/lib/dr-treeview/helpers/treeview-helper.js → esm2022/lib/dr-treeview/helpers/treeview-helper.mjs} +0 -0
- /package/{esm2015/lib/dr-treeview/models/treeview-header-template-context.js → esm2022/lib/dr-treeview/models/treeview-header-template-context.mjs} +0 -0
- /package/{esm2015/lib/dr-treeview/models/treeview-item-template-context.js → esm2022/lib/dr-treeview/models/treeview-item-template-context.mjs} +0 -0
- /package/{esm2015/lib/models/badgeStatus.js → esm2022/lib/models/badgeStatus.mjs} +0 -0
- /package/{esm2015/lib/models/constants.js → esm2022/lib/models/constants.mjs} +0 -0
- /package/{esm2015/lib/models/dropdown.js → esm2022/lib/models/dropdown.mjs} +0 -0
- /package/{esm2015/lib/models/serverTags.js → esm2022/lib/models/serverTags.mjs} +0 -0
- /package/{esm2015/lib/models/spinnerOptions.js → esm2022/lib/models/spinnerOptions.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
- /package/{esm2015/lib/utils/dr-shared-utils.js → esm2022/lib/utils/dr-shared-utils.mjs} +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import { AnyTagComponent } from '../any-tag.component';
|
|
3
|
+
import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from '@angular/material-moment-adapter';
|
|
4
|
+
import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
import * as i2 from "../../dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component";
|
|
8
|
+
// @ts-ignore
|
|
9
|
+
const moment = require('moment');
|
|
10
|
+
const DAY_FORMATS = {
|
|
11
|
+
parse: {
|
|
12
|
+
dateInput: 'DD-MM-YYYY',
|
|
13
|
+
},
|
|
14
|
+
display: {
|
|
15
|
+
dateInput: 'DD.MM.YYYY',
|
|
16
|
+
monthYearLabel: 'MMMM YYYY',
|
|
17
|
+
dateA11yLabel: 'LL',
|
|
18
|
+
monthYearA11yLabel: 'MMMM YYYY'
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
export class DayTagComponent extends AnyTagComponent {
|
|
22
|
+
get isLocked() {
|
|
23
|
+
return this.date ? !this.dateFilter(moment.unix(this.date)) : false;
|
|
24
|
+
}
|
|
25
|
+
lockedDate = [];
|
|
26
|
+
date;
|
|
27
|
+
constructor() {
|
|
28
|
+
super();
|
|
29
|
+
}
|
|
30
|
+
initDate() {
|
|
31
|
+
this.date = this.defaultValue || moment().unix();
|
|
32
|
+
this.dateObj.date = this.date;
|
|
33
|
+
}
|
|
34
|
+
initName() {
|
|
35
|
+
if (!this.name) {
|
|
36
|
+
this.name = 'Day';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
chosenTagHandler(value) {
|
|
40
|
+
const date = moment.unix(value);
|
|
41
|
+
const resultTag = {
|
|
42
|
+
name: this.name,
|
|
43
|
+
value: date.unix(),
|
|
44
|
+
label: date.format('MM/DD/YYYY'),
|
|
45
|
+
locked: !this.dateFilter(date)
|
|
46
|
+
};
|
|
47
|
+
console.log('resultTag', resultTag);
|
|
48
|
+
this.dateChange.emit(resultTag);
|
|
49
|
+
}
|
|
50
|
+
dateFilter(momentData) {
|
|
51
|
+
const date = momentData.date();
|
|
52
|
+
return !this.lockedDate.some((timestamp) => {
|
|
53
|
+
const lockDate = moment.unix(timestamp);
|
|
54
|
+
return lockDate.date() === date;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
;
|
|
58
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: DayTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: DayTagComponent, selector: "day-tag", inputs: { lockedDate: "lockedDate" }, host: { properties: { "class.locked": "this.isLocked" } }, providers: [
|
|
60
|
+
{
|
|
61
|
+
provide: DateAdapter,
|
|
62
|
+
useClass: MomentDateAdapter,
|
|
63
|
+
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
64
|
+
},
|
|
65
|
+
{ provide: MAT_DATE_FORMATS, useValue: DAY_FORMATS },
|
|
66
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"tag-wrapper\">\n <p class=\"tag__label\">{{ name }}</p>\n <dr-date-picker format=\"day\"\n [(ngModel)]=\"date\"\n [disabled]=\"disabled\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n (ngModelChange)=\"chosenTagHandler($event)\"></dr-date-picker>\n</div>\n\n", styles: [":host.locked>.tag-wrapper>dr-date-picker{opacity:.4}.tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.DrDatePickerComponent, selector: "dr-date-picker", inputs: ["format", "min", "max", "periodPosition", "placeholder", "disabled", "fiscalYearMonthsModifier", "datepickerFilter"] }] });
|
|
67
|
+
}
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: DayTagComponent, decorators: [{
|
|
69
|
+
type: Component,
|
|
70
|
+
args: [{ selector: 'day-tag', providers: [
|
|
71
|
+
{
|
|
72
|
+
provide: DateAdapter,
|
|
73
|
+
useClass: MomentDateAdapter,
|
|
74
|
+
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
75
|
+
},
|
|
76
|
+
{ provide: MAT_DATE_FORMATS, useValue: DAY_FORMATS },
|
|
77
|
+
], template: "<div class=\"tag-wrapper\">\n <p class=\"tag__label\">{{ name }}</p>\n <dr-date-picker format=\"day\"\n [(ngModel)]=\"date\"\n [disabled]=\"disabled\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n (ngModelChange)=\"chosenTagHandler($event)\"></dr-date-picker>\n</div>\n\n", styles: [":host.locked>.tag-wrapper>dr-date-picker{opacity:.4}.tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}\n"] }]
|
|
78
|
+
}], ctorParameters: function () { return []; }, propDecorators: { isLocked: [{
|
|
79
|
+
type: HostBinding,
|
|
80
|
+
args: ['class.locked']
|
|
81
|
+
}], lockedDate: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}] } });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LXRhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kYXRlLXRhZ3MvZGF5LXRhZy9kYXktdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9kYXktdGFnL2RheS10YWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RyxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7O0FBRXhGLGFBQWE7QUFDYixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFakMsTUFBTSxXQUFXLEdBQUc7SUFDaEIsS0FBSyxFQUFFO1FBQ0gsU0FBUyxFQUFFLFlBQVk7S0FDMUI7SUFDRCxPQUFPLEVBQUU7UUFDTCxTQUFTLEVBQUUsWUFBWTtRQUN2QixjQUFjLEVBQUUsV0FBVztRQUMzQixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxXQUFXO0tBQ2xDO0NBQ0osQ0FBQztBQWdCRixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxlQUFlO0lBQ2hELElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN4RSxDQUFDO0lBRVEsVUFBVSxHQUFVLEVBQUUsQ0FBQztJQUVoQyxJQUFJLENBQUM7SUFFTDtRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNsQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1osSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYTtRQUMxQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sU0FBUyxHQUFhO1lBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2xCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUNoQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztTQUNqQyxDQUFDO1FBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxVQUFVO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUvQixPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUN2QyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFBQSxDQUFDO3VHQTVDTyxlQUFlOzJGQUFmLGVBQWUsbUlBVmI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsV0FBVztnQkFDcEIsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLCtCQUErQixDQUFDO2FBQzNEO1lBQ0QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtTQUN2RCxpRENoQ0wsc1dBU0E7OzJGRDBCYSxlQUFlO2tCQWQzQixTQUFTOytCQUVJLFNBQVMsYUFFUjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsV0FBVzs0QkFDcEIsUUFBUSxFQUFFLGlCQUFpQjs0QkFDM0IsSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLCtCQUErQixDQUFDO3lCQUMzRDt3QkFDRCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFO3FCQUN2RDswRUFLRyxRQUFRO3NCQURYLFdBQVc7dUJBQUMsY0FBYztnQkFLbEIsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRGF0ZVRhZyB9IGZyb20gJy4uLy4uL21vZGVscy9zZXJ2ZXJUYWdzJztcbmltcG9ydCB7IEFueVRhZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FueS10YWcuY29tcG9uZW50JztcbmltcG9ydCB7IE1BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlMsIE1vbWVudERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMsIE1BVF9EQVRFX0xPQ0FMRSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG4vLyBAdHMtaWdub3JlXG5jb25zdCBtb21lbnQgPSByZXF1aXJlKCdtb21lbnQnKTtcblxuY29uc3QgREFZX0ZPUk1BVFMgPSB7XG4gICAgcGFyc2U6IHtcbiAgICAgICAgZGF0ZUlucHV0OiAnREQtTU0tWVlZWScsXG4gICAgfSxcbiAgICBkaXNwbGF5OiB7XG4gICAgICAgIGRhdGVJbnB1dDogJ0RELk1NLllZWVknLFxuICAgICAgICBtb250aFllYXJMYWJlbDogJ01NTU0gWVlZWScsXG4gICAgICAgIGRhdGVBMTF5TGFiZWw6ICdMTCcsXG4gICAgICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0gWVlZWSdcbiAgICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICdkYXktdGFnLmNvbXBvbmVudC5odG1sJyxcbiAgICBzZWxlY3RvcjogJ2RheS10YWcnLFxuICAgIHN0eWxlVXJsczogWycuL2RheS10YWcuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsXG4gICAgICAgICAgICB1c2VDbGFzczogTW9tZW50RGF0ZUFkYXB0ZXIsXG4gICAgICAgICAgICBkZXBzOiBbTUFUX0RBVEVfTE9DQUxFLCBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TXSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogREFZX0ZPUk1BVFMgfSxcbiAgICBdLFxufSlcblxuZXhwb3J0IGNsYXNzIERheVRhZ0NvbXBvbmVudCBleHRlbmRzIEFueVRhZ0NvbXBvbmVudCB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5sb2NrZWQnKVxuICAgIGdldCBpc0xvY2tlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZSA/ICF0aGlzLmRhdGVGaWx0ZXIobW9tZW50LnVuaXgodGhpcy5kYXRlKSkgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBsb2NrZWREYXRlOiBhbnlbXSA9IFtdO1xuXG4gICAgZGF0ZTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGluaXREYXRlKCkge1xuICAgICAgICB0aGlzLmRhdGUgPSB0aGlzLmRlZmF1bHRWYWx1ZSB8fCBtb21lbnQoKS51bml4KCk7XG4gICAgICAgIHRoaXMuZGF0ZU9iai5kYXRlID0gdGhpcy5kYXRlO1xuICAgIH1cblxuICAgIGluaXROYW1lKCkge1xuICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ0RheSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaG9zZW5UYWdIYW5kbGVyKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudC51bml4KHZhbHVlKTtcbiAgICAgICAgY29uc3QgcmVzdWx0VGFnOiBJRGF0ZVRhZyA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiBkYXRlLnVuaXgoKSxcbiAgICAgICAgICAgIGxhYmVsOiBkYXRlLmZvcm1hdCgnTU0vREQvWVlZWScpLFxuICAgICAgICAgICAgbG9ja2VkOiAhdGhpcy5kYXRlRmlsdGVyKGRhdGUpXG4gICAgICAgIH07XG4gICAgICAgIGNvbnNvbGUubG9nKCdyZXN1bHRUYWcnLCByZXN1bHRUYWcpO1xuICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChyZXN1bHRUYWcpO1xuICAgIH1cblxuICAgIGRhdGVGaWx0ZXIobW9tZW50RGF0YSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBkYXRlID0gbW9tZW50RGF0YS5kYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuICF0aGlzLmxvY2tlZERhdGUuc29tZSgodGltZXN0YW1wKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb2NrRGF0ZSA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XG4gICAgICAgICAgICByZXR1cm4gbG9ja0RhdGUuZGF0ZSgpID09PSBkYXRlO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cInRhZy13cmFwcGVyXCI+XG4gICAgPHAgY2xhc3M9XCJ0YWdfX2xhYmVsXCI+e3sgbmFtZSB9fTwvcD5cbiAgICA8ZHItZGF0ZS1waWNrZXIgZm9ybWF0PVwiZGF5XCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2RhdGVwaWNrZXJGaWx0ZXJdPVwiZGF0ZUZpbHRlci5iaW5kKHRoaXMpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hvc2VuVGFnSGFuZGxlcigkZXZlbnQpXCI+PC9kci1kYXRlLXBpY2tlcj5cbjwvZGl2PlxuXG4iXX0=
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { AnyTagComponent } from '../any-tag.component';
|
|
3
|
+
import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';
|
|
4
|
+
import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from '@angular/material-moment-adapter';
|
|
5
|
+
import { find as _find } from 'lodash';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/forms";
|
|
8
|
+
import * as i2 from "../../dr-inputs/dr-select/dr-select.component";
|
|
9
|
+
import * as i3 from "../../dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component";
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
const moment = require('moment');
|
|
12
|
+
export class ForecastTagComponent extends AnyTagComponent {
|
|
13
|
+
fiscalYearStartsFrom;
|
|
14
|
+
fiscalYearBack;
|
|
15
|
+
lockedDate = [];
|
|
16
|
+
forecastValue = undefined;
|
|
17
|
+
isDateEventHappened = false;
|
|
18
|
+
forecastTags = [
|
|
19
|
+
{ value: 0, label: '0+12' },
|
|
20
|
+
{ value: 1, label: '1+11' },
|
|
21
|
+
{ value: 2, label: '2+10' },
|
|
22
|
+
{ value: 3, label: '3+9' },
|
|
23
|
+
{ value: 4, label: '4+8' },
|
|
24
|
+
{ value: 5, label: '5+7' },
|
|
25
|
+
{ value: 6, label: '6+6' },
|
|
26
|
+
{ value: 7, label: '7+5' },
|
|
27
|
+
{ value: 8, label: '8+4' },
|
|
28
|
+
{ value: 9, label: '9+3' },
|
|
29
|
+
{ value: 10, label: '10+2' },
|
|
30
|
+
{ value: 11, label: '11+1' }
|
|
31
|
+
];
|
|
32
|
+
constructor() {
|
|
33
|
+
super();
|
|
34
|
+
}
|
|
35
|
+
initDate() {
|
|
36
|
+
const dateVal = this.defaultValue ? moment.unix(this.defaultValue) : moment();
|
|
37
|
+
const fiscal_year_starts_from = this.fiscalYearStartsFrom || 1;
|
|
38
|
+
const fiscal_year_back = this.fiscalYearBack || false;
|
|
39
|
+
this.forecastValue = this.getFiscalMonthFromDate(dateVal, fiscal_year_starts_from) - 1;
|
|
40
|
+
const fiscal_year = this.getFiscalYearFromDate(dateVal, fiscal_year_starts_from, fiscal_year_back);
|
|
41
|
+
this.updateYear(fiscal_year, this.forecastValue);
|
|
42
|
+
this.updateLockedDate();
|
|
43
|
+
}
|
|
44
|
+
updateYear(fiscalYear, month) {
|
|
45
|
+
const MONTH_DIFF = 1;
|
|
46
|
+
this.dateObj.date = fiscalYear
|
|
47
|
+
? moment(`${month + MONTH_DIFF || '01'}/01/${fiscalYear} 12:00:00`, 'MM/DD/YYYY hh:mm:ss').utc().unix()
|
|
48
|
+
: moment.utc().unix();
|
|
49
|
+
}
|
|
50
|
+
updateLockedDate() {
|
|
51
|
+
const year = moment.unix(this.dateObj.date).year();
|
|
52
|
+
for (const forecastTag of this.forecastTags) {
|
|
53
|
+
forecastTag.disabled = this.lockedDate.some((timestamp) => {
|
|
54
|
+
const locked = moment.unix(timestamp);
|
|
55
|
+
return locked.month() === forecastTag.value && +locked.year() === +year;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
initName() {
|
|
60
|
+
if (!this.name) {
|
|
61
|
+
this.name = 'Forecast (New)';
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
getFiscalMonthFromDate(dateObj, fiscal_year_starts_from) {
|
|
65
|
+
const all_months = [];
|
|
66
|
+
for (let i = fiscal_year_starts_from; i < 13; i++) {
|
|
67
|
+
all_months.push(i);
|
|
68
|
+
}
|
|
69
|
+
for (let i = 1; i < fiscal_year_starts_from; i++) {
|
|
70
|
+
all_months.push(i);
|
|
71
|
+
}
|
|
72
|
+
return all_months.indexOf(dateObj.month() + 1) + 1;
|
|
73
|
+
}
|
|
74
|
+
getFiscalYearFromDate(dateObj, fiscal_year_starts_from, fiscal_year_back) {
|
|
75
|
+
let fiscal_year = dateObj.year();
|
|
76
|
+
if (!fiscal_year_back) {
|
|
77
|
+
if (dateObj.month() + 1 >= fiscal_year_starts_from && fiscal_year_starts_from !== 1) {
|
|
78
|
+
fiscal_year += 1;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
if (dateObj.month() + 1 < fiscal_year_starts_from && fiscal_year_starts_from !== 1) {
|
|
83
|
+
fiscal_year -= 1;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return fiscal_year;
|
|
87
|
+
}
|
|
88
|
+
changeTagInputHandler(event) {
|
|
89
|
+
this.chosenTagHandler();
|
|
90
|
+
}
|
|
91
|
+
changeYearInputHandler(event) {
|
|
92
|
+
this.updateLockedDate();
|
|
93
|
+
this.chosenTagHandler();
|
|
94
|
+
}
|
|
95
|
+
chosenTagHandler() {
|
|
96
|
+
if (this.isDateEventHappened)
|
|
97
|
+
return;
|
|
98
|
+
const month = this.forecastValue;
|
|
99
|
+
const year = moment.unix(this.dateObj.date).year();
|
|
100
|
+
if (!Number.isNaN(month) && !Number.isNaN(year)) {
|
|
101
|
+
const date = new Date(year, month, 1, 12, 0, 0, 0);
|
|
102
|
+
const fiscal_year_starts_from = this.fiscalYearStartsFrom || 1;
|
|
103
|
+
const fiscal_year_back = this.fiscalYearBack || false;
|
|
104
|
+
if (fiscal_year_starts_from !== 1) {
|
|
105
|
+
if (!fiscal_year_back) {
|
|
106
|
+
date.setMonth(date.getMonth() - 13 + fiscal_year_starts_from);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
date.setMonth(date.getMonth() - 1 + fiscal_year_starts_from);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const momentDate = moment.unix(date.getTime() / 1000);
|
|
113
|
+
const fiscal_year = this.getFiscalYearFromDate(momentDate, fiscal_year_starts_from, fiscal_year_back);
|
|
114
|
+
this.updateYear(fiscal_year, date.getMonth());
|
|
115
|
+
this.isDateEventHappened = true;
|
|
116
|
+
setTimeout(() => {
|
|
117
|
+
this.isDateEventHappened = false;
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
const resultTag = {
|
|
121
|
+
name: this.name,
|
|
122
|
+
value: this.dateObj.date,
|
|
123
|
+
label: _find(this.forecastTags, { value: this.forecastValue })?.label,
|
|
124
|
+
locked: !this.dateFilter(moment.unix(this.dateObj.date))
|
|
125
|
+
};
|
|
126
|
+
this.dateChange.emit(resultTag);
|
|
127
|
+
}
|
|
128
|
+
dateFilter(date) {
|
|
129
|
+
const month = this.forecastValue;
|
|
130
|
+
const year = date.year();
|
|
131
|
+
return !this.lockedDate.some((timestamp) => {
|
|
132
|
+
const lockDate = moment.unix(timestamp);
|
|
133
|
+
return lockDate.month() === month && lockDate.year() === year;
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
;
|
|
137
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ForecastTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
138
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: ForecastTagComponent, selector: "forecast-tag", inputs: { fiscalYearStartsFrom: "fiscalYearStartsFrom", fiscalYearBack: "fiscalYearBack", lockedDate: "lockedDate" }, providers: [
|
|
139
|
+
{
|
|
140
|
+
provide: DateAdapter,
|
|
141
|
+
useClass: MomentDateAdapter,
|
|
142
|
+
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
143
|
+
}
|
|
144
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"forecast-tag__container\">\n <div class=\"forecast-tag__forecast\">\n <p class=\"tag__label\">Forecast</p>\n <dr-select placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n (ngModelChange)=\"changeTagInputHandler($event)\"></dr-select>\n </div>\n <div class=\"forecast-tag__year\">\n <p class=\"tag__label\">Year</p>\n <dr-date-picker format=\"year\"\n [(ngModel)]=\"dateObj.date\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"changeYearInputHandler($event)\"></dr-date-picker>\n </div>\n</div>\n", styles: [".tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.forecast-tag__container{display:flex;align-items:center}.forecast-tag__year{width:50%;margin-left:24px}.forecast-tag__forecast{width:50%}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.DrSelectComponent, selector: "dr-select", inputs: ["className", "items", "addTag", "appendTo", "bindLabel", "bindValue", "clearable", "searchable", "searchFn", "multiple", "hideSelected", "placeholder", "loading", "readonly", "disabled", "groupBy", "optionWithDescription", "id", "keyDownFn", "selectedItem", "dropdownClass", "closeOnSelect", "textView", "autofocus", "isOpen"], outputs: ["change", "open"] }, { kind: "component", type: i3.DrDatePickerComponent, selector: "dr-date-picker", inputs: ["format", "min", "max", "periodPosition", "placeholder", "disabled", "fiscalYearMonthsModifier", "datepickerFilter"] }] });
|
|
145
|
+
}
|
|
146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ForecastTagComponent, decorators: [{
|
|
147
|
+
type: Component,
|
|
148
|
+
args: [{ selector: 'forecast-tag', providers: [
|
|
149
|
+
{
|
|
150
|
+
provide: DateAdapter,
|
|
151
|
+
useClass: MomentDateAdapter,
|
|
152
|
+
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
153
|
+
}
|
|
154
|
+
], template: "<div class=\"forecast-tag__container\">\n <div class=\"forecast-tag__forecast\">\n <p class=\"tag__label\">Forecast</p>\n <dr-select placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n (ngModelChange)=\"changeTagInputHandler($event)\"></dr-select>\n </div>\n <div class=\"forecast-tag__year\">\n <p class=\"tag__label\">Year</p>\n <dr-date-picker format=\"year\"\n [(ngModel)]=\"dateObj.date\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"changeYearInputHandler($event)\"></dr-date-picker>\n </div>\n</div>\n", styles: [".tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.forecast-tag__container{display:flex;align-items:center}.forecast-tag__year{width:50%;margin-left:24px}.forecast-tag__forecast{width:50%}\n"] }]
|
|
155
|
+
}], ctorParameters: function () { return []; }, propDecorators: { fiscalYearStartsFrom: [{
|
|
156
|
+
type: Input
|
|
157
|
+
}], fiscalYearBack: [{
|
|
158
|
+
type: Input
|
|
159
|
+
}], lockedDate: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}] } });
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9mb3JlY2FzdC10YWcvZm9yZWNhc3QtdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9mb3JlY2FzdC10YWcvZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7OztBQUV2QyxhQUFhO0FBQ2IsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBZWpDLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxlQUFlO0lBQzVDLG9CQUFvQixDQUFVO0lBQzlCLGNBQWMsQ0FBVztJQUN6QixVQUFVLEdBQVUsRUFBRSxDQUFDO0lBRWhDLGFBQWEsR0FBdUIsU0FBUyxDQUFDO0lBQzlDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUU1QixZQUFZLEdBQVU7UUFDbEIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7UUFDM0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7UUFDM0IsRUFBRSxLQUFL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QUMsS0FBSyxFQUFFLEtBQUssS0FBSyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQUEsQ0FBQzt1R0FySk8sb0JBQW9COzJGQUFwQixvQkFBb0IsNkpBVGxCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSwrQkFBK0IsQ0FBQzthQUMzRDtTQUNKLGlEQ3RCTCxvNEJBb0JBOzsyRkRLYSxvQkFBb0I7a0JBYmhDLFNBQVM7K0JBRUksY0FBYyxhQUViO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxXQUFXOzRCQUNwQixRQUFRLEVBQUUsaUJBQWlCOzRCQUMzQixJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsK0JBQStCLENBQUM7eUJBQzNEO3FCQUNKOzBFQUlRLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRGF0ZVRhZyB9IGZyb20gJy4uLy4uL21vZGVscy9zZXJ2ZXJUYWdzJztcbmltcG9ydCB7IEFueVRhZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FueS10YWcuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdExlZ2FjeVNlbGVjdENoYW5nZSBhcyBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc2VsZWN0JztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZUNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0xPQ0FMRSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgTW9tZW50RGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG5pbXBvcnQgeyBmaW5kIGFzIF9maW5kIH0gZnJvbSAnbG9kYXNoJztcblxuLy8gQHRzLWlnbm9yZVxuY29uc3QgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50Jyk7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5odG1sJyxcbiAgICBzZWxlY3RvcjogJ2ZvcmVjYXN0LXRhZycsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IERhdGVBZGFwdGVyLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IE1vbWVudERhdGVBZGFwdGVyLFxuICAgICAgICAgICAgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU10sXG4gICAgICAgIH1cbiAgICBdXG59KVxuXG5leHBvcnQgY2xhc3MgRm9yZWNhc3RUYWdDb21wb25lbnQgZXh0ZW5kcyBBbnlUYWdDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGZpc2NhbFllYXJTdGFydHNGcm9tPzogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGZpc2NhbFllYXJCYWNrPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBsb2NrZWREYXRlOiBhbnlbXSA9IFtdO1xuXG4gICAgZm9yZWNhc3RWYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlzRGF0ZUV2ZW50SGFwcGVuZWQgPSBmYWxzZTtcblxuICAgIGZvcmVjYXN0VGFnczogYW55W10gPSBbXG4gICAgICAgIHsgdmFsdWU6IDAsIGxhYmVsOiAnMCsxMicgfSxcbiAgICAgICAgeyB2YWx1ZTogMSwgbGFiZWw6ICcxKzExJyB9LFxuICAgICAgICB7IHZhbHVlOiAyLCBsYWJlbDogJzIrMTAnIH0sXG4gICAgICAgIHsgdmFsdWU6IDMsIGxhYmVsOiAnMys5JyB9LFxuICAgICAgICB7IHZhbHVlOiA0LCBsYWJlbDogJzQrOCcgfSxcbiAgICAgICAgeyB2YWx1ZTogNSwgbGFiZWw6ICc1KzcnIH0sXG4gICAgICAgIHsgdmFsdWU6IDYsIGxhYmVsOiAnNis2JyB9LFxuICAgICAgICB7IHZhbHVlOiA3LCBsYWJlbDogJzcrNScgfSxcbiAgICAgICAgeyB2YWx1ZTogOCwgbGFiZWw6ICc4KzQnIH0sXG4gICAgICAgIHsgdmFsdWU6IDksIGxhYmVsOiAnOSszJyB9LFxuICAgICAgICB7IHZhbHVlOiAxMCwgbGFiZWw6ICcxMCsyJyB9LFxuICAgICAgICB7IHZhbHVlOiAxMSwgbGFiZWw6ICcxMSsxJyB9XG4gICAgXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGluaXREYXRlKCkge1xuICAgICAgICBjb25zdCBkYXRlVmFsID0gdGhpcy5kZWZhdWx0VmFsdWUgPyBtb21lbnQudW5peCh0aGlzLmRlZmF1bHRWYWx1ZSkgOiBtb21lbnQoKTtcbiAgICAgICAgY29uc3QgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gPSB0aGlzLmZpc2NhbFllYXJTdGFydHNGcm9tIHx8IDE7XG4gICAgICAgIGNvbnN0IGZpc2NhbF95ZWFyX2JhY2sgPSB0aGlzLmZpc2NhbFllYXJCYWNrIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLmZvcmVjYXN0VmFsdWUgPSB0aGlzLmdldEZpc2NhbE1vbnRoRnJvbURhdGUoZGF0ZVZhbCwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20pIC0gMTtcbiAgICAgICAgY29uc3QgZmlzY2FsX3llYXIgPSB0aGlzLmdldEZpc2NhbFllYXJGcm9tRGF0ZShkYXRlVmFsLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSwgZmlzY2FsX3llYXJfYmFjayk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVZZWFyKGZpc2NhbF95ZWFyLCB0aGlzLmZvcmVjYXN0VmFsdWUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUxvY2tlZERhdGUoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVZZWFyKGZpc2NhbFllYXI/OiBudW1iZXIsIG1vbnRoPzogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IE1PTlRIX0RJRkYgPSAxO1xuXG4gICAgICAgIHRoaXMuZGF0ZU9iai5kYXRlID0gZmlzY2FsWWVhclxuICAgICAgICAgICAgPyBtb21lbnQoYCR7IG1vbnRoICsgTU9OVEhfRElGRiB8fCAnMDEnIH0vMDEvJHsgZmlzY2FsWWVhciB9IDEyOjAwOjAwYCwgJ01NL0REL1lZWVkgaGg6bW06c3MnKS51dGMoKS51bml4KClcbiAgICAgICAgICAgIDogbW9tZW50LnV0YygpLnVuaXgoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVMb2NrZWREYXRlKCkge1xuICAgICAgICBjb25zdCB5ZWFyID0gbW9tZW50LnVuaXgodGhpcy5kYXRlT2JqLmRhdGUpLnllYXIoKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGZvcmVjYXN0VGFnIG9mIHRoaXMuZm9yZWNhc3RUYWdzKSB7XG4gICAgICAgICAgICBmb3JlY2FzdFRhZy5kaXNhYmxlZCA9IHRoaXMubG9ja2VkRGF0ZS5zb21lKCh0aW1lc3RhbXApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NrZWQgPSBtb21lbnQudW5peCh0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgIHJldHVybiBsb2NrZWQubW9udGgoKSA9PT0gZm9yZWNhc3RUYWcudmFsdWUgJiYgK2xvY2tlZC55ZWFyKCkgPT09ICt5ZWFyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0TmFtZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMubmFtZSA9ICdGb3JlY2FzdCAoTmV3KSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRGaXNjYWxNb250aEZyb21EYXRlKGRhdGVPYmosIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tKSB7XG4gICAgICAgIGNvbnN0IGFsbF9tb250aHMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gZmlzY2FsX3llYXJfc3RhcnRzX2Zyb207IGkgPCAxMzsgaSsrKSB7XG4gICAgICAgICAgICBhbGxfbW9udGhzLnB1c2goaSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tOyBpKyspIHtcbiAgICAgICAgICAgIGFsbF9tb250aHMucHVzaChpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbGxfbW9udGhzLmluZGV4T2YoZGF0ZU9iai5tb250aCgpICsgMSkgKyAxO1xuICAgIH1cblxuICAgIGdldEZpc2NhbFllYXJGcm9tRGF0ZShkYXRlT2JqLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSwgZmlzY2FsX3llYXJfYmFjaykge1xuICAgICAgICBsZXQgZmlzY2FsX3llYXIgPSBkYXRlT2JqLnllYXIoKTtcblxuICAgICAgICBpZiAoIWZpc2NhbF95ZWFyX2JhY2spIHtcbiAgICAgICAgICAgIGlmIChkYXRlT2JqLm1vbnRoKCkgKyAxID49IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICYmIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgZmlzY2FsX3llYXIgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChkYXRlT2JqLm1vbnRoKCkgKyAxIDwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gJiYgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gIT09IDEpIHtcbiAgICAgICAgICAgICAgICBmaXNjYWxfeWVhciAtPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpc2NhbF95ZWFyO1xuICAgIH1cblxuICAgIGNoYW5nZVRhZ0lucHV0SGFuZGxlcihldmVudDogTWF0U2VsZWN0Q2hhbmdlIHwgTWF0QnV0dG9uVG9nZ2xlQ2hhbmdlKSB7XG4gICAgICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcigpO1xuICAgIH1cblxuICAgIGNoYW5nZVllYXJJbnB1dEhhbmRsZXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMudXBkYXRlTG9ja2VkRGF0ZSgpO1xuICAgICAgICB0aGlzLmNob3NlblRhZ0hhbmRsZXIoKTtcbiAgICB9XG5cbiAgICBjaG9zZW5UYWdIYW5kbGVyKCkge1xuICAgICAgICBpZiAodGhpcy5pc0RhdGVFdmVudEhhcHBlbmVkKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgbW9udGggPSB0aGlzLmZvcmVjYXN0VmFsdWU7XG4gICAgICAgIGNvbnN0IHllYXIgPSBtb21lbnQudW5peCh0aGlzLmRhdGVPYmouZGF0ZSkueWVhcigpO1xuXG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG1vbnRoKSAmJiAhTnVtYmVyLmlzTmFOKHllYXIpKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEsIDEyLCAwLCAwLCAwKTtcbiAgICAgICAgICAgIGNvbnN0IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tID0gdGhpcy5maXNjYWxZZWFyU3RhcnRzRnJvbSB8fCAxO1xuICAgICAgICAgICAgY29uc3QgZmlzY2FsX3llYXJfYmFjayA9IHRoaXMuZmlzY2FsWWVhckJhY2sgfHwgZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGlmICghZmlzY2FsX3llYXJfYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSAtIDEzICsgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpIC0gMSArIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1vbWVudERhdGUgPSBtb21lbnQudW5peChkYXRlLmdldFRpbWUoKSAvIDEwMDApO1xuICAgICAgICAgICAgY29uc3QgZmlzY2FsX3llYXIgPSB0aGlzLmdldEZpc2NhbFllYXJGcm9tRGF0ZShtb21lbnREYXRlLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSwgZmlzY2FsX3llYXJfYmFjayk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVllYXIoZmlzY2FsX3llYXIsIGRhdGUuZ2V0TW9udGgoKSk7XG5cbiAgICAgICAgICAgIHRoaXMuaXNEYXRlRXZlbnRIYXBwZW5lZCA9IHRydWU7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGF0ZUV2ZW50SGFwcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0VGFnOiBJRGF0ZVRhZyA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmRhdGVPYmouZGF0ZSxcbiAgICAgICAgICAgIGxhYmVsOiBfZmluZCh0aGlzLmZvcmVjYXN0VGFncywgeyB2YWx1ZTogdGhpcy5mb3JlY2FzdFZhbHVlIH0pPy5sYWJlbCxcbiAgICAgICAgICAgIGxvY2tlZDogIXRoaXMuZGF0ZUZpbHRlcihtb21lbnQudW5peCh0aGlzLmRhdGVPYmouZGF0ZSkpXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQocmVzdWx0VGFnKTtcbiAgICB9XG5cbiAgICBkYXRlRmlsdGVyKGRhdGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbW9udGggPSB0aGlzLmZvcmVjYXN0VmFsdWU7XG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLnllYXIoKTtcblxuICAgICAgICByZXR1cm4gIXRoaXMubG9ja2VkRGF0ZS5zb21lKCh0aW1lc3RhbXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2tEYXRlID0gbW9tZW50LnVuaXgodGltZXN0YW1wKTtcbiAgICAgICAgICAgIHJldHVybiBsb2NrRGF0ZS5tb250aCgpID09PSBtb250aCAmJiBsb2NrRGF0ZS55ZWFyKCkgPT09IHllYXI7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9yZWNhc3QtdGFnX19jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9yZWNhc3QtdGFnX19mb3JlY2FzdFwiPlxuICAgICAgICA8cCBjbGFzcz1cInRhZ19fbGFiZWxcIj5Gb3JlY2FzdDwvcD5cbiAgICAgICAgPGRyLXNlbGVjdCBwbGFjZWhvbGRlcj1cIlNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JlY2FzdFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImZvcmVjYXN0VGFnc1wiXG4gICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlVGFnSW5wdXRIYW5kbGVyKCRldmVudClcIj48L2RyLXNlbGVjdD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9yZWNhc3QtdGFnX195ZWFyXCI+XG4gICAgICAgIDxwIGNsYXNzPVwidGFnX19sYWJlbFwiPlllYXI8L3A+XG4gICAgICAgIDxkci1kYXRlLXBpY2tlciBmb3JtYXQ9XCJ5ZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGF0ZU9iai5kYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRlcGlja2VyRmlsdGVyXT1cImRhdGVGaWx0ZXIuYmluZCh0aGlzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlWWVhcklucHV0SGFuZGxlcigkZXZlbnQpXCI+PC9kci1kYXRlLXBpY2tlcj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import { AnyTagComponent } from '../any-tag.component';
|
|
3
|
+
import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
|
|
4
|
+
import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from '@angular/material-moment-adapter';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
import * as i2 from "../../dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component";
|
|
8
|
+
// @ts-ignore
|
|
9
|
+
const moment = require('moment');
|
|
10
|
+
const MONTH_FORMATS = {
|
|
11
|
+
parse: {
|
|
12
|
+
dateInput: 'DD-MM-YYYY',
|
|
13
|
+
},
|
|
14
|
+
display: {
|
|
15
|
+
dateInput: 'MMMM YYYY',
|
|
16
|
+
monthYearLabel: 'MMMM YYYY',
|
|
17
|
+
dateA11yLabel: 'LL',
|
|
18
|
+
monthYearA11yLabel: 'MMMM YYYY'
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
export class MonthTagComponent extends AnyTagComponent {
|
|
22
|
+
get isLocked() {
|
|
23
|
+
return this.date ? !this.dateFilter(moment.unix(this.date)) : false;
|
|
24
|
+
}
|
|
25
|
+
lockedDate = [];
|
|
26
|
+
date;
|
|
27
|
+
constructor() {
|
|
28
|
+
super();
|
|
29
|
+
}
|
|
30
|
+
initDate() {
|
|
31
|
+
this.date = this.defaultValue || moment().unix();
|
|
32
|
+
this.dateObj.date = this.date;
|
|
33
|
+
}
|
|
34
|
+
initName() {
|
|
35
|
+
if (!this.name) {
|
|
36
|
+
this.name = 'Month';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
chosenTagHandler(value) {
|
|
40
|
+
const resultDate = moment.unix(value);
|
|
41
|
+
resultDate.hour(12);
|
|
42
|
+
const resultTag = {
|
|
43
|
+
name: this.name,
|
|
44
|
+
value: resultDate.unix(),
|
|
45
|
+
label: resultDate.format('MMMM YYYY'),
|
|
46
|
+
locked: !this.dateFilter(resultDate)
|
|
47
|
+
};
|
|
48
|
+
console.log(resultTag, value);
|
|
49
|
+
this.dateChange.emit(resultTag);
|
|
50
|
+
}
|
|
51
|
+
// Should be as arrow function to avoid lose scope
|
|
52
|
+
dateFilter(date) {
|
|
53
|
+
const month = date.month();
|
|
54
|
+
const year = date.year();
|
|
55
|
+
return !this.lockedDate.some((timestamp) => {
|
|
56
|
+
const lockDate = moment.unix(timestamp);
|
|
57
|
+
return lockDate.year() === year && lockDate.month() === month;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
;
|
|
61
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: MonthTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: MonthTagComponent, selector: "month-tag", inputs: { lockedDate: "lockedDate" }, host: { properties: { "class.locked": "this.isLocked" } }, providers: [
|
|
63
|
+
{
|
|
64
|
+
provide: DateAdapter,
|
|
65
|
+
useClass: MomentDateAdapter,
|
|
66
|
+
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
67
|
+
},
|
|
68
|
+
{ provide: MAT_DATE_FORMATS, useValue: MONTH_FORMATS },
|
|
69
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"tag-wrapper\">\n <p class=\"tag__label\">{{ name }}</p>\n <dr-date-picker format=\"month\"\n [(ngModel)]=\"date\"\n [disabled]=\"disabled\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n (ngModelChange)=\"chosenTagHandler($event)\"></dr-date-picker>\n</div>\n", styles: [":host.locked>.tag-wrapper>dr-date-picker{opacity:.4}.tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.DrDatePickerComponent, selector: "dr-date-picker", inputs: ["format", "min", "max", "periodPosition", "placeholder", "disabled", "fiscalYearMonthsModifier", "datepickerFilter"] }] });
|
|
70
|
+
}
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: MonthTagComponent, decorators: [{
|
|
72
|
+
type: Component,
|
|
73
|
+
args: [{ selector: 'month-tag', providers: [
|
|
74
|
+
{
|
|
75
|
+
provide: DateAdapter,
|
|
76
|
+
useClass: MomentDateAdapter,
|
|
77
|
+
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
78
|
+
},
|
|
79
|
+
{ provide: MAT_DATE_FORMATS, useValue: MONTH_FORMATS },
|
|
80
|
+
], template: "<div class=\"tag-wrapper\">\n <p class=\"tag__label\">{{ name }}</p>\n <dr-date-picker format=\"month\"\n [(ngModel)]=\"date\"\n [disabled]=\"disabled\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n (ngModelChange)=\"chosenTagHandler($event)\"></dr-date-picker>\n</div>\n", styles: [":host.locked>.tag-wrapper>dr-date-picker{opacity:.4}.tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}\n"] }]
|
|
81
|
+
}], ctorParameters: function () { return []; }, propDecorators: { isLocked: [{
|
|
82
|
+
type: HostBinding,
|
|
83
|
+
args: ['class.locked']
|
|
84
|
+
}], lockedDate: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}] } });
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9tb250aC10YWcvbW9udGgtdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9tb250aC10YWcvbW9udGgtdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQUN0RyxhQUFhO0FBQ2IsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRWpDLE1BQU0sYUFBYSxHQUFHO0lBQ2xCLEtBQUssRUFBRTtRQUNILFNBQVMsRUFBRSxZQUFZO0tBQzFCO0lBQ0QsT0FBTyxFQUFFO1FBQ0wsU0FBUyxFQUFFLFdBQVc7UUFDdEIsY0FBYyxFQUFFLFdBQVc7UUFDM0IsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsV0FBVztLQUNsQztDQUNKLENBQUM7QUFnQkYsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGVBQWU7SUFDbEQsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3hFLENBQUM7SUFFUSxVQUFVLEdBQVUsRUFBRSxDQUFDO0lBRWhDLElBQUksQ0FBQztJQUVMO1FBQ0ksS0FBSyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztTQUN2QjtJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzFCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQixNQUFNLFNBQVMsR0FBYTtZQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRTtZQUN4QixLQUFLLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFDckMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7U0FDdkMsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsVUFBVSxDQUFDLElBQUk7UUFDWCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXpCLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEMsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxLQUFLLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQUEsQ0FBQzt1R0EvQ08saUJBQWlCOzJGQUFqQixpQkFBaUIscUlBVmY7WUFDUDtnQkFDSSxPQUFPLEVBQUUsV0FBVztnQkFDcEIsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLCtCQUErQixDQUFDO2FBQzNEO1lBQ0QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRTtTQUN6RCxpREMvQkwsc1dBUUE7OzJGRDBCYSxpQkFBaUI7a0JBZDdCLFNBQVM7K0JBR0ksV0FBVyxhQUNWO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxXQUFXOzRCQUNwQixRQUFRLEVBQUUsaUJBQWlCOzRCQUMzQixJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsK0JBQStCLENBQUM7eUJBQzNEO3dCQUNELEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7cUJBQ3pEOzBFQUtHLFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxjQUFjO2dCQUtsQixVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElEYXRlVGFnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZlclRhZ3MnO1xuaW1wb3J0IHsgQW55VGFnQ29tcG9uZW50IH0gZnJvbSAnLi4vYW55LXRhZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMsIE1BVF9EQVRFX0xPQ0FMRSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgTW9tZW50RGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG4vLyBAdHMtaWdub3JlXG5jb25zdCBtb21lbnQgPSByZXF1aXJlKCdtb21lbnQnKTtcblxuY29uc3QgTU9OVEhfRk9STUFUUyA9IHtcbiAgICBwYXJzZToge1xuICAgICAgICBkYXRlSW5wdXQ6ICdERC1NTS1ZWVlZJyxcbiAgICB9LFxuICAgIGRpc3BsYXk6IHtcbiAgICAgICAgZGF0ZUlucHV0OiAnTU1NTSBZWVlZJyxcbiAgICAgICAgbW9udGhZZWFyTGFiZWw6ICdNTU1NIFlZWVknLFxuICAgICAgICBkYXRlQTExeUxhYmVsOiAnTEwnLFxuICAgICAgICBtb250aFllYXJBMTF5TGFiZWw6ICdNTU1NIFlZWVknXG4gICAgfSxcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnbW9udGgtdGFnLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tb250aC10YWcuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzZWxlY3RvcjogJ21vbnRoLXRhZycsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IERhdGVBZGFwdGVyLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IE1vbWVudERhdGVBZGFwdGVyLFxuICAgICAgICAgICAgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU10sXG4gICAgICAgIH0sXG4gICAgICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IE1PTlRIX0ZPUk1BVFMgfSxcbiAgICBdLFxufSlcblxuZXhwb3J0IGNsYXNzIE1vbnRoVGFnQ29tcG9uZW50IGV4dGVuZHMgQW55VGFnQ29tcG9uZW50IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmxvY2tlZCcpXG4gICAgZ2V0IGlzTG9ja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRlID8gIXRoaXMuZGF0ZUZpbHRlcihtb21lbnQudW5peCh0aGlzLmRhdGUpKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGxvY2tlZERhdGU6IGFueVtdID0gW107XG5cbiAgICBkYXRlO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgaW5pdERhdGUoKSB7XG4gICAgICAgIHRoaXMuZGF0ZSA9IHRoaXMuZGVmYXVsdFZhbHVlIHx8IG1vbWVudCgpLnVuaXgoKTtcbiAgICAgICAgdGhpcy5kYXRlT2JqLmRhdGUgPSB0aGlzLmRhdGU7XG4gICAgfVxuXG4gICAgaW5pdE5hbWUoKSB7XG4gICAgICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAnTW9udGgnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hvc2VuVGFnSGFuZGxlcih2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdERhdGUgPSBtb21lbnQudW5peCh2YWx1ZSk7XG4gICAgICAgIHJlc3VsdERhdGUuaG91cigxMik7XG4gICAgICAgIGNvbnN0IHJlc3VsdFRhZzogSURhdGVUYWcgPSB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogcmVzdWx0RGF0ZS51bml4KCksXG4gICAgICAgICAgICBsYWJlbDogcmVzdWx0RGF0ZS5mb3JtYXQoJ01NTU0gWVlZWScpLFxuICAgICAgICAgICAgbG9ja2VkOiAhdGhpcy5kYXRlRmlsdGVyKHJlc3VsdERhdGUpXG4gICAgICAgIH07XG4gICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdFRhZywgdmFsdWUpO1xuICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChyZXN1bHRUYWcpO1xuICAgIH1cblxuICAgIC8vIFNob3VsZCBiZSBhcyBhcnJvdyBmdW5jdGlvbiB0byBhdm9pZCBsb3NlIHNjb3BlXG4gICAgZGF0ZUZpbHRlcihkYXRlKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5tb250aCgpO1xuICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS55ZWFyKCk7XG5cbiAgICAgICAgcmV0dXJuICF0aGlzLmxvY2tlZERhdGUuc29tZSgodGltZXN0YW1wKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb2NrRGF0ZSA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XG4gICAgICAgICAgICByZXR1cm4gbG9ja0RhdGUueWVhcigpID09PSB5ZWFyICYmIGxvY2tEYXRlLm1vbnRoKCkgPT09IG1vbnRoO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cInRhZy13cmFwcGVyXCI+XG4gICAgPHAgY2xhc3M9XCJ0YWdfX2xhYmVsXCI+e3sgbmFtZSB9fTwvcD5cbiAgICA8ZHItZGF0ZS1waWNrZXIgZm9ybWF0PVwibW9udGhcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbZGF0ZXBpY2tlckZpbHRlcl09XCJkYXRlRmlsdGVyLmJpbmQodGhpcylcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaG9zZW5UYWdIYW5kbGVyKCRldmVudClcIj48L2RyLWRhdGUtcGlja2VyPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import { AnyTagComponent } from '../any-tag.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/forms";
|
|
5
|
+
import * as i2 from "../../dr-inputs/dr-select/dr-select.component";
|
|
6
|
+
// @ts-ignore
|
|
7
|
+
const moment = require('moment');
|
|
8
|
+
export class QuarterTagComponent extends AnyTagComponent {
|
|
9
|
+
get isLocked() {
|
|
10
|
+
return this.quarters
|
|
11
|
+
? this.quarters.some((quarter) => !this.dateFilter(moment.unix(quarter.value)))
|
|
12
|
+
: false;
|
|
13
|
+
}
|
|
14
|
+
lockedDate = [];
|
|
15
|
+
selectedValue = 0;
|
|
16
|
+
quarters = [];
|
|
17
|
+
constructor() {
|
|
18
|
+
super();
|
|
19
|
+
}
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
this.initName();
|
|
22
|
+
this.quarters = this.getQuarterOptions();
|
|
23
|
+
for (const quarter of this.quarters) {
|
|
24
|
+
quarter.disabled = false;
|
|
25
|
+
if (quarter.isSelected) {
|
|
26
|
+
this.selectedValue = quarter;
|
|
27
|
+
this.chosenTagHandler(quarter);
|
|
28
|
+
}
|
|
29
|
+
this.dateFilter(quarter);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
initName() {
|
|
33
|
+
if (!this.name) {
|
|
34
|
+
this.name = 'Quarter';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
chosenTagHandler(quarter) {
|
|
38
|
+
const resultDate = moment.unix(quarter.value);
|
|
39
|
+
const resultTag = {
|
|
40
|
+
name: this.name,
|
|
41
|
+
value: resultDate.unix(),
|
|
42
|
+
label: this.getQuarterLabel(resultDate.toString()),
|
|
43
|
+
locked: !this.dateFilter(quarter)
|
|
44
|
+
};
|
|
45
|
+
this.dateChange.emit(resultTag);
|
|
46
|
+
}
|
|
47
|
+
getQuarterOptions() {
|
|
48
|
+
const quartersBeforeToday = 8;
|
|
49
|
+
const quartersAfterToday = 8;
|
|
50
|
+
const dateNow = new Date();
|
|
51
|
+
const dateNowUnix = this.getUTCTimestamp(dateNow);
|
|
52
|
+
let defaultValue = dateNowUnix;
|
|
53
|
+
let tempDate = new Date();
|
|
54
|
+
if (this.defaultValue) {
|
|
55
|
+
defaultValue = this.defaultValue * 1000;
|
|
56
|
+
}
|
|
57
|
+
let afterDefault = Math.round(Math.abs(dateNowUnix - defaultValue) / 7776000000) + quartersAfterToday;
|
|
58
|
+
afterDefault = Math.min(afterDefault, 100);
|
|
59
|
+
let i;
|
|
60
|
+
let tempValue;
|
|
61
|
+
const to_return = [];
|
|
62
|
+
for (i = 0 - quartersBeforeToday; i <= afterDefault; i++) {
|
|
63
|
+
tempDate = new Date(defaultValue);
|
|
64
|
+
tempDate.setDate(15);
|
|
65
|
+
tempDate.setMonth(tempDate.getMonth() + 3 * i);
|
|
66
|
+
tempValue = this.getUTCTimestamp(tempDate);
|
|
67
|
+
to_return.push({
|
|
68
|
+
value: tempValue / 1000,
|
|
69
|
+
label: this.getQuarterLabel(tempValue),
|
|
70
|
+
isSelected: (i === 0),
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return to_return;
|
|
74
|
+
}
|
|
75
|
+
getQuarterLabel(timeValue) {
|
|
76
|
+
const date = new Date(timeValue);
|
|
77
|
+
return 'Q' + Math.floor((date.getMonth() / 3) + 1) + ' ' + date.getFullYear();
|
|
78
|
+
}
|
|
79
|
+
getUTCTimestamp(date) {
|
|
80
|
+
const month = Math.floor(date.getMonth() / 3) * 3;
|
|
81
|
+
return Date.UTC(date.getFullYear(), month, 1, 12, 0, 0, 0);
|
|
82
|
+
}
|
|
83
|
+
dateFilter(quarter) {
|
|
84
|
+
const quarterDate = moment.unix(quarter.value);
|
|
85
|
+
return !this.lockedDate.some((timestamp) => {
|
|
86
|
+
const lockDate = moment.unix(timestamp);
|
|
87
|
+
if (lockDate.year() === quarterDate.year() && lockDate.month() === quarterDate.month()) {
|
|
88
|
+
quarter.disabled = true;
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
return false;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
;
|
|
95
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: QuarterTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
96
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: QuarterTagComponent, selector: "quarter-tag", inputs: { lockedDate: "lockedDate" }, host: { properties: { "class.locked": "this.isLocked" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"tag-wrapper quarter-tag\">\n <p class=\"tag__label\">{{ name }}</p>\n <dr-select class=\"quarter-tag__list\"\n placeholder=\"Select\"\n bindLabel=\"label\"\n [(ngModel)]=\"selectedValue\"\n [disabled]=\"disabled\"\n [items]=\"quarters\"\n dropdownClass=\"quarter-tag__select dr-tag__select\"\n (ngModelChange)=\"chosenTagHandler($event)\"></dr-select>\n</div>\n", styles: [":host.locked>.tag-wrapper>dr-select.quarter-tag__list{opacity:.4}.tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.DrSelectComponent, selector: "dr-select", inputs: ["className", "items", "addTag", "appendTo", "bindLabel", "bindValue", "clearable", "searchable", "searchFn", "multiple", "hideSelected", "placeholder", "loading", "readonly", "disabled", "groupBy", "optionWithDescription", "id", "keyDownFn", "selectedItem", "dropdownClass", "closeOnSelect", "textView", "autofocus", "isOpen"], outputs: ["change", "open"] }] });
|
|
97
|
+
}
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: QuarterTagComponent, decorators: [{
|
|
99
|
+
type: Component,
|
|
100
|
+
args: [{ selector: 'quarter-tag', template: "<div class=\"tag-wrapper quarter-tag\">\n <p class=\"tag__label\">{{ name }}</p>\n <dr-select class=\"quarter-tag__list\"\n placeholder=\"Select\"\n bindLabel=\"label\"\n [(ngModel)]=\"selectedValue\"\n [disabled]=\"disabled\"\n [items]=\"quarters\"\n dropdownClass=\"quarter-tag__select dr-tag__select\"\n (ngModelChange)=\"chosenTagHandler($event)\"></dr-select>\n</div>\n", styles: [":host.locked>.tag-wrapper>dr-select.quarter-tag__list{opacity:.4}.tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}\n"] }]
|
|
101
|
+
}], ctorParameters: function () { return []; }, propDecorators: { isLocked: [{
|
|
102
|
+
type: HostBinding,
|
|
103
|
+
args: ['class.locked']
|
|
104
|
+
}], lockedDate: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}] } });
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhcnRlci10YWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZGF0ZS10YWdzL3F1YXJ0ZXItdGFnL3F1YXJ0ZXItdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9xdWFydGVyLXRhZy9xdWFydGVyLXRhZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBQ3ZELGFBQWE7QUFDYixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFPakMsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGVBQWU7SUFDcEQsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUTtZQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQy9FLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDaEIsQ0FBQztJQUVRLFVBQVUsR0FBVSxFQUFFLENBQUM7SUFDaEMsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUNsQixRQUFRLEdBQVUsRUFBRSxDQUFDO0lBRXJCO1FBQ0ksS0FBSyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLElB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QUFDO3VHQW5HTyxtQkFBbUI7MkZBQW5CLG1CQUFtQiwyS0NYaEMsZ2VBV0E7OzJGREFhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFHSSxhQUFhOzBFQUluQixRQUFRO3NCQURYLFdBQVc7dUJBQUMsY0FBYztnQkFPbEIsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElEYXRlVGFnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZlclRhZ3MnO1xuaW1wb3J0IHsgQW55VGFnQ29tcG9uZW50IH0gZnJvbSAnLi4vYW55LXRhZy5jb21wb25lbnQnO1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50Jyk7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAncXVhcnRlci10YWcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3F1YXJ0ZXItdGFnLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc2VsZWN0b3I6ICdxdWFydGVyLXRhZycsXG59KVxuZXhwb3J0IGNsYXNzIFF1YXJ0ZXJUYWdDb21wb25lbnQgZXh0ZW5kcyBBbnlUYWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MubG9ja2VkJylcbiAgICBnZXQgaXNMb2NrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnF1YXJ0ZXJzXG4gICAgICAgICAgICA/IHRoaXMucXVhcnRlcnMuc29tZSgocXVhcnRlcikgPT4gIXRoaXMuZGF0ZUZpbHRlcihtb21lbnQudW5peChxdWFydGVyLnZhbHVlKSkpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGxvY2tlZERhdGU6IGFueVtdID0gW107XG4gICAgc2VsZWN0ZWRWYWx1ZSA9IDA7XG4gICAgcXVhcnRlcnM6IGFueVtdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0TmFtZSgpO1xuICAgICAgICB0aGlzLnF1YXJ0ZXJzID0gdGhpcy5nZXRRdWFydGVyT3B0aW9ucygpO1xuXG4gICAgICAgIGZvciAoY29uc3QgcXVhcnRlciBvZiB0aGlzLnF1YXJ0ZXJzKSB7XG4gICAgICAgICAgICBxdWFydGVyLmRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChxdWFydGVyLmlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBxdWFydGVyO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcihxdWFydGVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5kYXRlRmlsdGVyKHF1YXJ0ZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdE5hbWUoKSB7XG4gICAgICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAnUXVhcnRlcic7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaG9zZW5UYWdIYW5kbGVyKHF1YXJ0ZXIpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0RGF0ZSA9IG1vbWVudC51bml4KHF1YXJ0ZXIudmFsdWUpO1xuICAgICAgICBjb25zdCByZXN1bHRUYWc6IElEYXRlVGFnID0ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgdmFsdWU6IHJlc3VsdERhdGUudW5peCgpLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0UXVhcnRlckxhYmVsKHJlc3VsdERhdGUudG9TdHJpbmcoKSksXG4gICAgICAgICAgICBsb2NrZWQ6ICF0aGlzLmRhdGVGaWx0ZXIocXVhcnRlcilcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQocmVzdWx0VGFnKTtcbiAgICB9XG5cbiAgICBnZXRRdWFydGVyT3B0aW9ucygpIHtcbiAgICAgICAgY29uc3QgcXVhcnRlcnNCZWZvcmVUb2RheSA9IDg7XG4gICAgICAgIGNvbnN0IHF1YXJ0ZXJzQWZ0ZXJUb2RheSA9IDg7XG4gICAgICAgIGNvbnN0IGRhdGVOb3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBkYXRlTm93VW5peCA9IHRoaXMuZ2V0VVRDVGltZXN0YW1wKGRhdGVOb3cpO1xuICAgICAgICBsZXQgZGVmYXVsdFZhbHVlID0gZGF0ZU5vd1VuaXg7XG4gICAgICAgIGxldCB0ZW1wRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5kZWZhdWx0VmFsdWUgKiAxMDAwO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGFmdGVyRGVmYXVsdCA9IE1hdGgucm91bmQoTWF0aC5hYnMoZGF0ZU5vd1VuaXggLSBkZWZhdWx0VmFsdWUpIC8gNzc3NjAwMDAwMCkgKyBxdWFydGVyc0FmdGVyVG9kYXk7XG4gICAgICAgIGFmdGVyRGVmYXVsdCA9IE1hdGgubWluKGFmdGVyRGVmYXVsdCwgMTAwKTtcbiAgICAgICAgbGV0IGk7IGxldCB0ZW1wVmFsdWU7XG4gICAgICAgIGNvbnN0IHRvX3JldHVybjogYW55W10gPSBbXTtcbiAgICAgICAgZm9yIChpID0gMCAtIHF1YXJ0ZXJzQmVmb3JlVG9kYXk7IGkgPD0gYWZ0ZXJEZWZhdWx0OyBpKyspIHtcbiAgICAgICAgICAgIHRlbXBEYXRlID0gbmV3IERhdGUoZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgIHRlbXBEYXRlLnNldERhdGUoMTUpO1xuICAgICAgICAgICAgdGVtcERhdGUuc2V0TW9udGgodGVtcERhdGUuZ2V0TW9udGgoKSArIDMgKiBpKTtcbiAgICAgICAgICAgIHRlbXBWYWx1ZSA9IHRoaXMuZ2V0VVRDVGltZXN0YW1wKHRlbXBEYXRlKTtcbiAgICAgICAgICAgIHRvX3JldHVybi5wdXNoKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGVtcFZhbHVlIC8gMTAwMCxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRRdWFydGVyTGFiZWwodGVtcFZhbHVlKSxcbiAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiAoaSA9PT0gMCksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9fcmV0dXJuO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UXVhcnRlckxhYmVsKHRpbWVWYWx1ZSkge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGltZVZhbHVlKTtcbiAgICAgICAgcmV0dXJuICdRJyArIE1hdGguZmxvb3IoKGRhdGUuZ2V0TW9udGgoKSAvIDMpICsgMSkgKyAnICcgKyBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVVENUaW1lc3RhbXAoZGF0ZSkge1xuICAgICAgICBjb25zdCBtb250aCA9IE1hdGguZmxvb3IoZGF0ZS5nZXRNb250aCgpIC8gMykgKiAzO1xuICAgICAgICByZXR1cm4gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBtb250aCwgMSwgMTIsIDAsIDAsIDApO1xuICAgIH1cblxuICAgIGRhdGVGaWx0ZXIocXVhcnRlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBxdWFydGVyRGF0ZSA9IG1vbWVudC51bml4KHF1YXJ0ZXIudmFsdWUpO1xuICAgICAgICByZXR1cm4gIXRoaXMubG9ja2VkRGF0ZS5zb21lKCh0aW1lc3RhbXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2tEYXRlID0gbW9tZW50LnVuaXgodGltZXN0YW1wKTtcbiAgICAgICAgICAgIGlmIChsb2NrRGF0ZS55ZWFyKCkgPT09IHF1YXJ0ZXJEYXRlLnllYXIoKSAmJiBsb2NrRGF0ZS5tb250aCgpID09PSBxdWFydGVyRGF0ZS5tb250aCgpKSB7XG4gICAgICAgICAgICAgICAgcXVhcnRlci5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWctd3JhcHBlciBxdWFydGVyLXRhZ1wiPlxuICAgIDxwIGNsYXNzPVwidGFnX19sYWJlbFwiPnt7IG5hbWUgfX08L3A+XG4gICAgPGRyLXNlbGVjdCBjbGFzcz1cInF1YXJ0ZXItdGFnX19saXN0XCJcbiAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0XCJcbiAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgW2l0ZW1zXT1cInF1YXJ0ZXJzXCJcbiAgICAgICAgICAgICAgIGRyb3Bkb3duQ2xhc3M9XCJxdWFydGVyLXRhZ19fc2VsZWN0IGRyLXRhZ19fc2VsZWN0XCJcbiAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNob3NlblRhZ0hhbmRsZXIoJGV2ZW50KVwiPjwvZHItc2VsZWN0PlxuPC9kaXY+XG4iXX0=
|