@tetacom/ng-components 1.1.1 → 1.1.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/color-icons.svg +374 -687
- package/assets/file-icons.svg +0 -1
- package/assets/icons.svg +205 -138
- package/common/contract/auto-close-ignore-case.d.ts +1 -1
- package/common/contract/constructor-type.d.ts +1 -1
- package/common/model/public-api.d.ts +1 -0
- package/common/model/view-type.model.d.ts +1 -0
- package/common/public-api.d.ts +1 -0
- package/component/accordion/accordion/accordion.component.d.ts +1 -1
- package/component/accordion/accordion-content.directive.d.ts +1 -1
- package/component/accordion/accordion-head/accordion-head.component.d.ts +1 -1
- package/component/accordion/accordion-item/accordion-item.component.d.ts +4 -1
- package/component/autocomplete/autocomplete/autocomplete.component.d.ts +1 -1
- package/component/avatar/avatar/avatar.component.d.ts +17 -0
- package/component/avatar/avatar.module.d.ts +9 -0
- package/component/avatar/model/avatar-color.enum.d.ts +20 -0
- package/component/avatar/public-api.d.ts +2 -0
- package/component/button/button/button.component.d.ts +5 -2
- package/component/chart-3d/chart3d/chart3d.component.d.ts +1 -1
- package/component/checkbox/checkbox/checkbox.component.d.ts +2 -1
- package/component/date-picker/base-calendar.d.ts +49 -0
- package/component/date-picker/base-picker.d.ts +60 -0
- package/component/date-picker/date-picker/date-calendar/date-calendar.component.d.ts +20 -0
- package/component/date-picker/date-picker/date-picker.component.d.ts +38 -68
- package/component/date-picker/date-picker.module.d.ts +19 -16
- package/component/date-picker/date-range/date-range.component.d.ts +46 -0
- package/component/date-picker/date-range/range-calendar/range-calendar.component.d.ts +39 -0
- package/component/date-picker/day-picker/day-item/day-item.component.d.ts +9 -0
- package/component/date-picker/day-picker/day-picker.component.d.ts +30 -0
- package/component/date-picker/model/from-to.model.d.ts +4 -0
- package/component/date-picker/model/min-max-date.model.d.ts +4 -0
- package/component/date-picker/model/public-api.d.ts +5 -0
- package/component/date-picker/month-picker/month-picker.component.d.ts +16 -50
- package/component/date-picker/public-api.d.ts +6 -5
- package/component/date-picker/year-picker/scroll-to-selected-year.directive.d.ts +11 -0
- package/component/date-picker/year-picker/year-picker.component.d.ts +24 -0
- package/component/delimiter/delimiter/delimiter.component.d.ts +1 -1
- package/component/divider/divider/divider.component.d.ts +10 -0
- package/component/divider/divider.module.d.ts +8 -0
- package/component/divider/public-api.d.ts +2 -0
- package/component/dropdown/dropdown/dropdown.component.d.ts +1 -1
- package/component/dropdown/dropdown-base.d.ts +3 -1
- package/component/dropdown/dropdown-content.directive.d.ts +1 -1
- package/component/dropdown/dropdown-head.directive.d.ts +1 -1
- package/component/dropdown/dropdown.directive.d.ts +1 -1
- package/component/dynamic-component/popup-content/popup-content.component.d.ts +1 -1
- package/component/expand-card/expand-card/expand-card.component.d.ts +1 -1
- package/component/expand-card/expand-item/expand-item.component.d.ts +1 -1
- package/component/expand-panel/expand-panel/expand-panel.component.d.ts +1 -1
- package/component/expand-panel/expand-panel-content.directive.d.ts +1 -1
- package/component/expand-panel/expand-panel-head.directive.d.ts +1 -1
- package/component/file-upload/file-item/file-item.component.d.ts +1 -1
- package/component/file-upload/file-upload-area/file-upload-area.component.d.ts +1 -1
- package/component/filter/base/filter-base.d.ts +2 -2
- package/component/filter/base/filter-component-base.d.ts +1 -1
- package/component/filter/boolean-filter/boolean-filter.component.d.ts +2 -2
- package/component/filter/contarct/boolean-filter.d.ts +1 -2
- package/component/filter/contarct/date-filter.d.ts +1 -2
- package/component/filter/contarct/i-filter.d.ts +2 -2
- package/component/filter/contarct/list-filter.d.ts +1 -2
- package/component/filter/contarct/numeric-filter.d.ts +1 -2
- package/component/filter/contarct/string-filter.d.ts +1 -2
- package/component/filter/date-filter/date-filter.component.d.ts +3 -2
- package/component/filter/filter-host/filter-host.component.d.ts +2 -2
- package/component/filter/list-filter/list-filter.component.d.ts +2 -2
- package/component/filter/numeric-filter/numeric-filter.component.d.ts +3 -2
- package/component/filter/string-filter/string-filter.component.d.ts +2 -2
- package/component/icon/icon/icon.component.d.ts +1 -1
- package/component/icon/icon-file/icon-file.component.d.ts +9 -3
- package/component/icon/icon-file/icon-file.module.d.ts +9 -0
- package/component/icon/icon-sprite.directive.d.ts +1 -1
- package/component/icon/icon.module.d.ts +4 -5
- package/component/icon/public-api.d.ts +1 -0
- package/component/input/color-input/color-input.component.d.ts +1 -1
- package/component/input/form-group-title/form-group-title.component.d.ts +1 -1
- package/component/input/input/input.component.d.ts +3 -1
- package/component/input/text-field/text-field.component.d.ts +1 -1
- package/component/message/message/message.component.d.ts +1 -1
- package/component/message/message-host/message-host.component.d.ts +1 -1
- package/component/message/model/message.d.ts +3 -0
- package/component/modal/dialog/dialog.component.d.ts +1 -1
- package/component/modal/modal-container/modal-container.component.d.ts +1 -1
- package/component/pager/pager/pager.component.d.ts +1 -1
- package/component/panel/panel/panel.component.d.ts +1 -1
- package/component/progress-bar/progress-bar/progress-bar.component.d.ts +1 -1
- package/component/property-grid/property-grid/property-grid-group/property-grid-group.component.d.ts +1 -1
- package/component/property-grid/property-grid/property-grid-item/property-grid-item.component.d.ts +1 -1
- package/component/property-grid/property-grid/property-grid-item-description.directive.d.ts +1 -1
- package/component/property-grid/property-grid/property-grid.component.d.ts +1 -1
- package/component/public-api.d.ts +2 -0
- package/component/radio/radio/radio.component.d.ts +1 -1
- package/component/radio/radio-button/radio-button.component.d.ts +1 -1
- package/component/resize-panel/resize-panel/resize-panel.component.d.ts +1 -1
- package/component/select/select/select.component.d.ts +4 -1
- package/component/select/select-option.directive.d.ts +1 -1
- package/component/select/select-value.directive.d.ts +1 -1
- package/component/sidebar/sidebar/sidebar.component.d.ts +1 -1
- package/component/switch/switch/switch.component.d.ts +4 -1
- package/component/switch/switch-button/switch-button.component.d.ts +1 -1
- package/component/table/base/cell-component-base.d.ts +1 -1
- package/component/table/base/head-cell-component-base.d.ts +1 -1
- package/component/table/cell/cell.component.d.ts +1 -1
- package/component/table/cell-host/cell-host.component.d.ts +1 -1
- package/component/table/contract/table-column.d.ts +0 -2
- package/component/table/default/boolean-cell/boolean-cell.component.d.ts +1 -4
- package/component/table/default/date-cell/date-cell.component.d.ts +1 -4
- package/component/table/default/date-time-cell/date-time-cell.component.d.ts +1 -4
- package/component/table/default/default-head-cell/default-head-cell.component.d.ts +1 -1
- package/component/table/default/list-cell/list-cell.component.d.ts +1 -5
- package/component/table/default/numeric-cell/numeric-cell.component.d.ts +1 -4
- package/component/table/default/string-cell/string-cell.component.d.ts +1 -4
- package/component/table/head-cell/head-cell.component.d.ts +1 -1
- package/component/table/head-cell-dropdown/head-cell-dropdown.component.d.ts +1 -1
- package/component/table/head-cell-host/head-cell-host.component.d.ts +1 -1
- package/component/table/selection-cell/selection-cell.component.d.ts +1 -1
- package/component/table/selection-head-cell/selection-head-cell.component.d.ts +1 -1
- package/component/table/table/table.component.d.ts +1 -1
- package/component/table/table-body/table-body.component.d.ts +1 -1
- package/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.d.ts +1 -1
- package/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.d.ts +1 -1
- package/component/table/table-head/table-head.component.d.ts +1 -1
- package/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.d.ts +1 -1
- package/component/table/table-head-group/table-head-group.component.d.ts +1 -1
- package/component/tabs/tab/tab.component.d.ts +1 -1
- package/component/tabs/tab-content.directive.d.ts +1 -1
- package/component/tabs/tab-title.directive.d.ts +1 -1
- package/component/tabs/tabs/tabs.component.d.ts +1 -1
- package/component/theme-switch/theme-switch/theme-switch.component.d.ts +1 -1
- package/component/toggle/toggle/toggle.component.d.ts +1 -1
- package/component/toolbar/toolbar/toolbar.component.d.ts +1 -1
- package/component/tree/tree/tree.component.d.ts +1 -1
- package/component/tree/tree-item/tree-item.component.d.ts +1 -1
- package/component/tree/tree-item-toggle/tree-item-toggle.component.d.ts +1 -1
- package/directive/auto-position/auto-position.directive.d.ts +1 -1
- package/directive/click-outside/click-outside.directive.d.ts +1 -1
- package/directive/context-menu/context-menu.directive.d.ts +1 -1
- package/directive/disable-control/disable-control.directive.d.ts +1 -1
- package/directive/drag-drop/drag-container.directive.d.ts +1 -1
- package/directive/drag-drop/drag-placeholder.directive.d.ts +1 -1
- package/directive/drag-drop/drag-preview.directive.d.ts +1 -1
- package/directive/drag-drop/drag.directive.d.ts +1 -1
- package/directive/drag-drop/model/drop-target.d.ts +1 -1
- package/directive/drag-sort/drag-sort-container.directive.d.ts +1 -1
- package/directive/drag-sort/drag-sort-item.directive.d.ts +1 -1
- package/directive/dynamic-content-base.directive.d.ts +1 -1
- package/directive/highlight/highlight.directive.d.ts +1 -1
- package/directive/hint/hint.directive.d.ts +3 -1
- package/directive/let/let.directive.d.ts +1 -1
- package/directive/loader/loader.directive.d.ts +1 -1
- package/directive/no-autofill/no-autofill.directive.d.ts +1 -1
- package/directive/only-number/only-number.directive.d.ts +1 -1
- package/directive/resize-drag/resize-drag.directive.d.ts +1 -1
- package/directive/scroll-into-view/scroll-into-view.directive.d.ts +1 -1
- package/directive/scrollable/scrollable/scrollable.component.d.ts +1 -1
- package/directive/scrollable/scrollable.directive.d.ts +1 -1
- package/directive/teta-template/teta-template.directive.d.ts +1 -1
- package/directive/tooltip/tooltip.directive.d.ts +1 -1
- package/esm2022/common/contract/teta-content-ref.mjs +11 -0
- package/esm2022/common/model/public-api.mjs +2 -0
- package/esm2022/common/model/view-type.model.mjs +2 -0
- package/esm2022/common/public-api.mjs +6 -0
- package/esm2022/common/service/click.service.mjs +26 -0
- package/esm2022/common/service/dynamic-component.service.mjs +97 -0
- package/esm2022/common/service/overlay-container.service.mjs +43 -0
- package/esm2022/component/accordion/accordion/accordion.component.mjs +19 -0
- package/esm2022/component/accordion/accordion-content.directive.mjs +17 -0
- package/esm2022/component/accordion/accordion-head/accordion-head.component.mjs +54 -0
- package/esm2022/component/accordion/accordion-item/accordion-item.component.mjs +58 -0
- package/{esm2020 → esm2022}/component/accordion/accordion.module.mjs +7 -7
- package/{esm2020 → esm2022}/component/autocomplete/autocomplete/autocomplete.component.mjs +4 -4
- package/{esm2020 → esm2022}/component/autocomplete/autocomplete.module.mjs +5 -5
- package/esm2022/component/avatar/avatar/avatar.component.mjs +60 -0
- package/esm2022/component/avatar/avatar.module.mjs +28 -0
- package/esm2022/component/avatar/model/avatar-color.enum.mjs +22 -0
- package/esm2022/component/avatar/public-api.mjs +3 -0
- package/esm2022/component/button/button/button.component.mjs +57 -0
- package/{esm2020 → esm2022}/component/button/button.module.mjs +5 -5
- package/{esm2020 → esm2022}/component/chart-3d/chart-3d.module.mjs +5 -5
- package/esm2022/component/chart-3d/chart3d/chart3d.component.mjs +255 -0
- package/esm2022/component/chart-3d/model/chart-3d-options.mjs +9 -0
- package/esm2022/component/chart-3d/model/series-3d.mjs +9 -0
- package/esm2022/component/checkbox/checkbox/checkbox.component.mjs +154 -0
- package/{esm2020 → esm2022}/component/checkbox/checkbox.module.mjs +7 -7
- package/esm2022/component/date-picker/base-calendar.mjs +100 -0
- package/esm2022/component/date-picker/base-picker.mjs +107 -0
- package/esm2022/component/date-picker/date-picker/date-calendar/date-calendar.component.mjs +56 -0
- package/esm2022/component/date-picker/date-picker/date-picker.component.mjs +206 -0
- package/esm2022/component/date-picker/date-picker.module.mjs +65 -0
- package/esm2022/component/date-picker/date-range/date-range.component.mjs +218 -0
- package/esm2022/component/date-picker/date-range/range-calendar/range-calendar.component.mjs +119 -0
- package/esm2022/component/date-picker/day-picker/day-item/day-item.component.mjs +16 -0
- package/esm2022/component/date-picker/day-picker/day-picker.component.mjs +120 -0
- package/esm2022/component/date-picker/model/date-period.mjs +9 -0
- package/esm2022/component/date-picker/model/day-model.mjs +19 -0
- package/esm2022/component/date-picker/model/from-to.model.mjs +2 -0
- package/esm2022/component/date-picker/model/min-max-date.model.mjs +2 -0
- package/esm2022/component/date-picker/model/public-api.mjs +6 -0
- package/esm2022/component/date-picker/month-picker/month-picker.component.mjs +53 -0
- package/esm2022/component/date-picker/public-api.mjs +7 -0
- package/esm2022/component/date-picker/year-picker/scroll-to-selected-year.directive.mjs +27 -0
- package/esm2022/component/date-picker/year-picker/year-picker.component.mjs +53 -0
- package/esm2022/component/delimiter/delimiter/delimiter.component.mjs +63 -0
- package/{esm2020 → esm2022}/component/delimiter/delimiter.module.mjs +5 -5
- package/esm2022/component/divider/divider/divider.component.mjs +20 -0
- package/esm2022/component/divider/divider.module.mjs +20 -0
- package/esm2022/component/divider/public-api.mjs +3 -0
- package/esm2022/component/dropdown/dropdown/dropdown.component.mjs +36 -0
- package/esm2022/component/dropdown/dropdown-base.mjs +238 -0
- package/esm2022/component/dropdown/dropdown-content.directive.mjs +19 -0
- package/esm2022/component/dropdown/dropdown-head.directive.mjs +19 -0
- package/esm2022/component/dropdown/dropdown.directive.mjs +43 -0
- package/{esm2020 → esm2022}/component/dropdown/dropdown.module.mjs +11 -11
- package/{esm2020 → esm2022}/component/dynamic-component/dynamic-component.module.mjs +5 -5
- package/esm2022/component/dynamic-component/popup-content/popup-content.component.mjs +59 -0
- package/{esm2020 → esm2022}/component/expand-card/expand-card/expand-card.component.mjs +8 -8
- package/{esm2020 → esm2022}/component/expand-card/expand-card.module.mjs +15 -15
- package/{esm2020 → esm2022}/component/expand-card/expand-item/expand-item.component.mjs +6 -6
- package/esm2022/component/expand-panel/expand-panel/expand-panel.component.mjs +68 -0
- package/esm2022/component/expand-panel/expand-panel-content.directive.mjs +17 -0
- package/esm2022/component/expand-panel/expand-panel-head.directive.mjs +17 -0
- package/{esm2020 → esm2022}/component/expand-panel/expand-panel.module.mjs +17 -17
- package/{esm2020 → esm2022}/component/file-upload/file-item/file-item.component.mjs +4 -4
- package/esm2022/component/file-upload/file-upload-area/file-upload-area.component.mjs +87 -0
- package/{esm2020 → esm2022}/component/file-upload/file-upload.module.mjs +5 -5
- package/esm2022/component/filter/base/filter-base.mjs +13 -0
- package/{esm2020 → esm2022}/component/filter/base/filter-component-base.mjs +1 -1
- package/esm2022/component/filter/boolean-filter/boolean-filter.component.mjs +67 -0
- package/esm2022/component/filter/contarct/boolean-filter.mjs +8 -0
- package/esm2022/component/filter/contarct/date-filter-value.mjs +17 -0
- package/esm2022/component/filter/contarct/date-filter.mjs +11 -0
- package/esm2022/component/filter/contarct/filter-item.mjs +78 -0
- package/esm2022/component/filter/contarct/filter-state.mjs +145 -0
- package/{esm2020 → esm2022}/component/filter/contarct/i-filter.mjs +1 -1
- package/esm2022/component/filter/contarct/list-filter.mjs +13 -0
- package/esm2022/component/filter/contarct/numeric-filter-value.mjs +22 -0
- package/esm2022/component/filter/contarct/numeric-filter.mjs +10 -0
- package/esm2022/component/filter/contarct/sort-param.mjs +26 -0
- package/esm2022/component/filter/contarct/string-filter.mjs +13 -0
- package/esm2022/component/filter/date-filter/date-filter.component.mjs +67 -0
- package/esm2022/component/filter/filter-host/filter-host.component.mjs +85 -0
- package/{esm2020 → esm2022}/component/filter/filter.module.mjs +31 -31
- package/esm2022/component/filter/list-filter/list-filter.component.mjs +103 -0
- package/esm2022/component/filter/numeric-filter/numeric-filter.component.mjs +67 -0
- package/esm2022/component/filter/string-filter/string-filter.component.mjs +68 -0
- package/esm2022/component/icon/icon/icon.component.mjs +39 -0
- package/esm2022/component/icon/icon-file/icon-file.component.mjs +30 -0
- package/esm2022/component/icon/icon-file/icon-file.module.mjs +28 -0
- package/esm2022/component/icon/icon-sprite.directive.mjs +34 -0
- package/esm2022/component/icon/icon.module.mjs +33 -0
- package/esm2022/component/icon/icon.service.mjs +64 -0
- package/{esm2020 → esm2022}/component/icon/public-api.mjs +2 -1
- package/esm2022/component/input/color-input/color-input.component.mjs +75 -0
- package/{esm2020 → esm2022}/component/input/form-group-title/form-group-title.component.mjs +6 -7
- package/esm2022/component/input/input/input.component.mjs +41 -0
- package/esm2022/component/input/input.module.mjs +26 -0
- package/esm2022/component/input/text-field/text-field.component.mjs +102 -0
- package/esm2022/component/message/message/message.component.mjs +79 -0
- package/esm2022/component/message/message-host/message-host.component.mjs +91 -0
- package/{esm2020 → esm2022}/component/message/message.module.mjs +9 -9
- package/esm2022/component/message/message.service.mjs +37 -0
- package/esm2022/component/message/model/message.mjs +29 -0
- package/esm2022/component/modal/dialog/dialog.component.mjs +51 -0
- package/esm2022/component/modal/dialog.service.mjs +40 -0
- package/esm2022/component/modal/modal-container/modal-container.component.mjs +86 -0
- package/esm2022/component/modal/modal.module.mjs +50 -0
- package/esm2022/component/modal/modal.service.mjs +125 -0
- package/{esm2020 → esm2022}/component/modal/model/current-modal.mjs +2 -1
- package/esm2022/component/modal/model/modal-instance.mjs +37 -0
- package/esm2022/component/pager/model/pager-state.mjs +70 -0
- package/{esm2020 → esm2022}/component/pager/pager/pager.component.mjs +4 -4
- package/{esm2020 → esm2022}/component/pager/pager.module.mjs +7 -7
- package/esm2022/component/panel/panel/panel.component.mjs +50 -0
- package/{esm2020 → esm2022}/component/panel/panel.module.mjs +5 -5
- package/esm2022/component/progress-bar/progress-bar/progress-bar.component.mjs +139 -0
- package/{esm2020 → esm2022}/component/progress-bar/progress-bar.module.mjs +5 -5
- package/esm2022/component/property-grid/property-grid/property-grid-group/property-grid-group.component.mjs +45 -0
- package/esm2022/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +141 -0
- package/esm2022/component/property-grid/property-grid/property-grid-item-description.directive.mjs +21 -0
- package/esm2022/component/property-grid/property-grid/property-grid.component.mjs +105 -0
- package/esm2022/component/property-grid/property-grid.module.mjs +87 -0
- package/esm2022/component/public-api.mjs +68 -0
- package/esm2022/component/radio/radio/radio.component.mjs +250 -0
- package/esm2022/component/radio/radio-button/radio-button.component.mjs +69 -0
- package/{esm2020 → esm2022}/component/radio/radio.module.mjs +5 -5
- package/esm2022/component/resize-panel/resize-panel/resize-panel.component.mjs +176 -0
- package/{esm2020 → esm2022}/component/resize-panel/resize-panel.module.mjs +5 -5
- package/esm2022/component/select/select/select.component.mjs +284 -0
- package/esm2022/component/select/select-option.directive.mjs +17 -0
- package/esm2022/component/select/select-value.directive.mjs +17 -0
- package/{esm2020 → esm2022}/component/select/select.module.mjs +21 -21
- package/esm2022/component/sidebar/sidebar/sidebar.component.mjs +56 -0
- package/{esm2020 → esm2022}/component/sidebar/sidebar.module.mjs +9 -9
- package/esm2022/component/switch/switch/switch.component.mjs +67 -0
- package/esm2022/component/switch/switch-button/switch-button.component.mjs +52 -0
- package/{esm2020 → esm2022}/component/switch/switch.module.mjs +5 -5
- package/esm2022/component/switch/switch.service.mjs +22 -0
- package/esm2022/component/table/base/cell-component-base.mjs +108 -0
- package/{esm2020 → esm2022}/component/table/base/head-cell-component-base.mjs +4 -4
- package/esm2022/component/table/cell/cell.component.mjs +38 -0
- package/esm2022/component/table/cell-host/cell-host.component.mjs +56 -0
- package/esm2022/component/table/contract/column-reorder-event.mjs +9 -0
- package/esm2022/component/table/contract/column-resize-event.mjs +9 -0
- package/esm2022/component/table/contract/sort-event.mjs +9 -0
- package/esm2022/component/table/contract/table-column-store.mjs +17 -0
- package/esm2022/component/table/contract/table-column.mjs +112 -0
- package/esm2022/component/table/default/boolean-cell/boolean-cell.component.mjs +44 -0
- package/esm2022/component/table/default/date-cell/date-cell.component.mjs +46 -0
- package/esm2022/component/table/default/date-time-cell/date-time-cell.component.mjs +45 -0
- package/esm2022/component/table/default/default-head-cell/default-head-cell.component.mjs +51 -0
- package/esm2022/component/table/default/list-cell/list-cell.component.mjs +71 -0
- package/esm2022/component/table/default/numeric-cell/numeric-cell.component.mjs +53 -0
- package/esm2022/component/table/default/string-cell/string-cell.component.mjs +53 -0
- package/esm2022/component/table/head-cell/head-cell.component.mjs +207 -0
- package/esm2022/component/table/head-cell-dropdown/head-cell-dropdown.component.mjs +59 -0
- package/esm2022/component/table/head-cell-host/head-cell-host.component.mjs +66 -0
- package/esm2022/component/table/selection-cell/selection-cell.component.mjs +49 -0
- package/esm2022/component/table/selection-head-cell/selection-head-cell.component.mjs +47 -0
- package/esm2022/component/table/service/table.service.mjs +672 -0
- package/esm2022/component/table/table/table.component.mjs +491 -0
- package/esm2022/component/table/table-body/table-body.component.mjs +224 -0
- package/esm2022/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.mjs +66 -0
- package/esm2022/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.mjs +97 -0
- package/esm2022/component/table/table-head/table-head.component.mjs +85 -0
- package/esm2022/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.mjs +153 -0
- package/esm2022/component/table/table-head-group/table-head-group.component.mjs +82 -0
- package/{esm2020 → esm2022}/component/table/table.module.mjs +74 -74
- package/esm2022/component/tabs/tab/tab.component.mjs +46 -0
- package/esm2022/component/tabs/tab-content.directive.mjs +17 -0
- package/esm2022/component/tabs/tab-title.directive.mjs +17 -0
- package/esm2022/component/tabs/tabs/tabs.component.mjs +74 -0
- package/{esm2020 → esm2022}/component/tabs/tabs.module.mjs +11 -11
- package/esm2022/component/theme-switch/theme-switch/theme-switch.component.mjs +30 -0
- package/{esm2020 → esm2022}/component/theme-switch/theme-switch.module.mjs +9 -9
- package/esm2022/component/theme-switch/theme-switch.service.mjs +36 -0
- package/esm2022/component/toggle/toggle/toggle.component.mjs +89 -0
- package/{esm2020 → esm2022}/component/toggle/toggle.module.mjs +5 -5
- package/esm2022/component/toolbar/toolbar/toolbar.component.mjs +28 -0
- package/{esm2020 → esm2022}/component/toolbar/toolbar.module.mjs +5 -5
- package/esm2022/component/tree/tree/tree.component.mjs +150 -0
- package/esm2022/component/tree/tree-item/tree-item.component.mjs +90 -0
- package/esm2022/component/tree/tree-item-toggle/tree-item-toggle.component.mjs +32 -0
- package/{esm2020 → esm2022}/component/tree/tree.module.mjs +5 -5
- package/esm2022/component/tree/tree.service.mjs +42 -0
- package/esm2022/directive/auto-position/auto-position.directive.mjs +72 -0
- package/{esm2020 → esm2022}/directive/auto-position/auto-position.module.mjs +5 -5
- package/esm2022/directive/click-outside/click-outside.directive.mjs +67 -0
- package/{esm2020 → esm2022}/directive/click-outside/click-outside.module.mjs +5 -5
- package/esm2022/directive/context-menu/context-menu.directive.mjs +132 -0
- package/{esm2020 → esm2022}/directive/context-menu/context-menu.module.mjs +7 -7
- package/esm2022/directive/disable-control/disable-control.directive.mjs +30 -0
- package/{esm2020 → esm2022}/directive/disable-control/disable-control.module.mjs +5 -5
- package/esm2022/directive/drag-drop/drag-container.directive.mjs +101 -0
- package/{esm2020 → esm2022}/directive/drag-drop/drag-drop.module.mjs +11 -11
- package/esm2022/directive/drag-drop/drag-drop.service.mjs +152 -0
- package/{esm2020 → esm2022}/directive/drag-drop/drag-placeholder.directive.mjs +4 -4
- package/esm2022/directive/drag-drop/drag-preview.directive.mjs +17 -0
- package/esm2022/directive/drag-drop/drag.directive.mjs +143 -0
- package/esm2022/directive/drag-drop/model/drag-container-instance.mjs +11 -0
- package/esm2022/directive/drag-drop/model/drag-instance.mjs +9 -0
- package/esm2022/directive/drag-sort/drag-sort-container.directive.mjs +68 -0
- package/esm2022/directive/drag-sort/drag-sort-item.directive.mjs +121 -0
- package/{esm2020 → esm2022}/directive/drag-sort/drag-sort.module.mjs +5 -5
- package/esm2022/directive/dynamic-content-base.directive.mjs +91 -0
- package/esm2022/directive/highlight/highlight.directive.mjs +73 -0
- package/{esm2020 → esm2022}/directive/highlight/highlight.module.mjs +5 -5
- package/esm2022/directive/hint/hint.directive.mjs +118 -0
- package/{esm2020 → esm2022}/directive/hint/hint.module.mjs +7 -7
- package/esm2022/directive/let/let.directive.mjs +40 -0
- package/{esm2020 → esm2022}/directive/let/let.module.mjs +5 -5
- package/esm2022/directive/loader/loader.directive.mjs +93 -0
- package/{esm2020 → esm2022}/directive/loader/loader.module.mjs +5 -5
- package/esm2022/directive/no-autofill/no-autofill.directive.mjs +32 -0
- package/{esm2020 → esm2022}/directive/no-autofill/no-autofill.module.mjs +5 -5
- package/esm2022/directive/only-number/only-number.directive.mjs +200 -0
- package/{esm2020 → esm2022}/directive/only-number/only-number.module.mjs +5 -5
- package/esm2022/directive/resize-drag/resize-drag.directive.mjs +73 -0
- package/{esm2020 → esm2022}/directive/resize-drag/resize-drag.module.mjs +5 -5
- package/esm2022/directive/scroll-into-view/scroll-into-view.directive.mjs +43 -0
- package/{esm2020 → esm2022}/directive/scroll-into-view/scroll-into-view.module.mjs +5 -5
- package/esm2022/directive/scrollable/scrollable/scrollable.component.mjs +107 -0
- package/esm2022/directive/scrollable/scrollable.directive.mjs +17 -0
- package/{esm2020 → esm2022}/directive/scrollable/scrollable.module.mjs +9 -9
- package/esm2022/directive/teta-template/teta-template.directive.mjs +24 -0
- package/{esm2020 → esm2022}/directive/teta-template/teta-template.module.mjs +5 -5
- package/esm2022/directive/tooltip/tooltip.directive.mjs +88 -0
- package/{esm2020 → esm2022}/directive/tooltip/tooltip.module.mjs +5 -5
- package/esm2022/locale/en.mjs +62 -0
- package/esm2022/locale/ru.mjs +62 -0
- package/esm2022/locale/teta-config.service.mjs +28 -0
- package/{esm2020 → esm2022}/locale/teta-localisation.mjs +1 -1
- package/{esm2020 → esm2022}/pipe/date-pipe/teta-date-pipe.module.mjs +5 -5
- package/esm2022/pipe/date-pipe/teta-date.pipe.mjs +35 -0
- package/{esm2020 → esm2022}/pipe/number-pipe/number-pipe.module.mjs +5 -5
- package/{esm2020 → esm2022}/pipe/number-pipe/number.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/util/forms-util.mjs +9 -9
- package/{fesm2020 → fesm2022}/tetacom-ng-components.mjs +7289 -6544
- package/fesm2022/tetacom-ng-components.mjs.map +1 -0
- package/locale/teta-localisation.d.ts +2 -0
- package/package.json +13 -14
- package/style/accordion.scss +28 -6
- package/style/assembly-library.scss +4 -1
- package/style/assembly-presets.scss +0 -1
- package/style/badge.scss +28 -0
- package/style/border.scss +2 -1
- package/style/bottombar.scss +5 -0
- package/style/button.scss +16 -13
- package/style/checkbox.scss +26 -13
- package/style/chips.scss +10 -10
- package/style/color.scss +1 -36
- package/style/datepicker.scss +139 -24
- package/style/divider.scss +15 -0
- package/style/drag.scss +1 -1
- package/style/dropdown.scss +6 -4
- package/style/hint.scss +5 -5
- package/style/icon.scss +2 -1
- package/style/input.scss +32 -23
- package/style/layout.scss +6 -2
- package/style/list.scss +11 -8
- package/style/loader.scss +2 -2
- package/style/message.scss +15 -7
- package/style/modal.scss +3 -2
- package/style/navigation.scss +4 -1
- package/style/presets/color-presets.scss +8 -160
- package/style/presets/font-presets.scss +26 -25
- package/style/presets/view-types.scss +17 -0
- package/style/progress.scss +3 -3
- package/style/radio.scss +21 -7
- package/style/reset.scss +1 -0
- package/style/resize-panel.scss +2 -2
- package/style/scroll.scss +3 -3
- package/style/select.scss +26 -21
- package/style/shadow.scss +0 -20
- package/style/sidebar.scss +1 -1
- package/style/skeleton.scss +1 -1
- package/style/switch.scss +15 -10
- package/style/table.scss +15 -15
- package/style/tabs.scss +11 -11
- package/style/tag.scss +37 -0
- package/style/toggle.scss +20 -18
- package/style/toolbar.scss +1 -1
- package/style/tooltip.scss +8 -6
- package/style/tree.scss +4 -4
- package/util/export-dom-image.d.ts +1 -1
- package/component/date-picker/day-select/day-select.component.d.ts +0 -51
- package/component/date-picker/month-select/month-select.component.d.ts +0 -40
- package/component/date-picker/service/picker-touch.service.d.ts +0 -12
- package/component/date-picker/time-part-control/time-part-control.component.d.ts +0 -26
- package/component/date-picker/util/date-picker-util.d.ts +0 -15
- package/component/date-picker/year-select/year-select.component.d.ts +0 -45
- package/esm2020/common/contract/teta-content-ref.mjs +0 -8
- package/esm2020/common/public-api.mjs +0 -5
- package/esm2020/common/service/click.service.mjs +0 -23
- package/esm2020/common/service/dynamic-component.service.mjs +0 -93
- package/esm2020/common/service/overlay-container.service.mjs +0 -41
- package/esm2020/component/accordion/accordion/accordion.component.mjs +0 -18
- package/esm2020/component/accordion/accordion-content.directive.mjs +0 -16
- package/esm2020/component/accordion/accordion-head/accordion-head.component.mjs +0 -52
- package/esm2020/component/accordion/accordion-item/accordion-item.component.mjs +0 -43
- package/esm2020/component/button/button/button.component.mjs +0 -40
- package/esm2020/component/chart-3d/chart3d/chart3d.component.mjs +0 -244
- package/esm2020/component/chart-3d/model/chart-3d-options.mjs +0 -7
- package/esm2020/component/chart-3d/model/series-3d.mjs +0 -7
- package/esm2020/component/checkbox/checkbox/checkbox.component.mjs +0 -134
- package/esm2020/component/date-picker/date-picker/date-picker.component.mjs +0 -289
- package/esm2020/component/date-picker/date-picker.module.mjs +0 -69
- package/esm2020/component/date-picker/day-select/day-select.component.mjs +0 -184
- package/esm2020/component/date-picker/model/date-period.mjs +0 -7
- package/esm2020/component/date-picker/model/day-model.mjs +0 -13
- package/esm2020/component/date-picker/month-picker/month-picker.component.mjs +0 -253
- package/esm2020/component/date-picker/month-select/month-select.component.mjs +0 -148
- package/esm2020/component/date-picker/public-api.mjs +0 -6
- package/esm2020/component/date-picker/service/picker-touch.service.mjs +0 -34
- package/esm2020/component/date-picker/time-part-control/time-part-control.component.mjs +0 -73
- package/esm2020/component/date-picker/util/date-picker-util.mjs +0 -142
- package/esm2020/component/date-picker/year-select/year-select.component.mjs +0 -189
- package/esm2020/component/delimiter/delimiter/delimiter.component.mjs +0 -63
- package/esm2020/component/dropdown/dropdown/dropdown.component.mjs +0 -30
- package/esm2020/component/dropdown/dropdown-base.mjs +0 -225
- package/esm2020/component/dropdown/dropdown-content.directive.mjs +0 -17
- package/esm2020/component/dropdown/dropdown-head.directive.mjs +0 -18
- package/esm2020/component/dropdown/dropdown.directive.mjs +0 -38
- package/esm2020/component/dynamic-component/popup-content/popup-content.component.mjs +0 -59
- package/esm2020/component/expand-panel/expand-panel/expand-panel.component.mjs +0 -65
- package/esm2020/component/expand-panel/expand-panel-content.directive.mjs +0 -16
- package/esm2020/component/expand-panel/expand-panel-head.directive.mjs +0 -16
- package/esm2020/component/file-upload/file-upload-area/file-upload-area.component.mjs +0 -82
- package/esm2020/component/filter/base/filter-base.mjs +0 -10
- package/esm2020/component/filter/boolean-filter/boolean-filter.component.mjs +0 -60
- package/esm2020/component/filter/contarct/boolean-filter.mjs +0 -10
- package/esm2020/component/filter/contarct/date-filter-value.mjs +0 -9
- package/esm2020/component/filter/contarct/date-filter.mjs +0 -11
- package/esm2020/component/filter/contarct/filter-item.mjs +0 -34
- package/esm2020/component/filter/contarct/filter-state.mjs +0 -145
- package/esm2020/component/filter/contarct/list-filter.mjs +0 -12
- package/esm2020/component/filter/contarct/numeric-filter-value.mjs +0 -10
- package/esm2020/component/filter/contarct/numeric-filter.mjs +0 -11
- package/esm2020/component/filter/contarct/sort-param.mjs +0 -14
- package/esm2020/component/filter/contarct/string-filter.mjs +0 -12
- package/esm2020/component/filter/date-filter/date-filter.component.mjs +0 -60
- package/esm2020/component/filter/filter-host/filter-host.component.mjs +0 -78
- package/esm2020/component/filter/list-filter/list-filter.component.mjs +0 -95
- package/esm2020/component/filter/numeric-filter/numeric-filter.component.mjs +0 -60
- package/esm2020/component/filter/string-filter/string-filter.component.mjs +0 -61
- package/esm2020/component/icon/icon/icon.component.mjs +0 -37
- package/esm2020/component/icon/icon-file/icon-file.component.mjs +0 -14
- package/esm2020/component/icon/icon-sprite.directive.mjs +0 -32
- package/esm2020/component/icon/icon.module.mjs +0 -38
- package/esm2020/component/icon/icon.service.mjs +0 -59
- package/esm2020/component/input/color-input/color-input.component.mjs +0 -73
- package/esm2020/component/input/input/input.component.mjs +0 -36
- package/esm2020/component/input/input.module.mjs +0 -26
- package/esm2020/component/input/text-field/text-field.component.mjs +0 -96
- package/esm2020/component/message/message/message.component.mjs +0 -74
- package/esm2020/component/message/message-host/message-host.component.mjs +0 -88
- package/esm2020/component/message/message.service.mjs +0 -35
- package/esm2020/component/message/model/message.mjs +0 -21
- package/esm2020/component/modal/dialog/dialog.component.mjs +0 -44
- package/esm2020/component/modal/dialog.service.mjs +0 -39
- package/esm2020/component/modal/modal-container/modal-container.component.mjs +0 -84
- package/esm2020/component/modal/modal.module.mjs +0 -50
- package/esm2020/component/modal/modal.service.mjs +0 -121
- package/esm2020/component/modal/model/modal-instance.mjs +0 -34
- package/esm2020/component/pager/model/pager-state.mjs +0 -50
- package/esm2020/component/panel/panel/panel.component.mjs +0 -51
- package/esm2020/component/progress-bar/progress-bar/progress-bar.component.mjs +0 -131
- package/esm2020/component/property-grid/property-grid/property-grid-group/property-grid-group.component.mjs +0 -38
- package/esm2020/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +0 -130
- package/esm2020/component/property-grid/property-grid/property-grid-item-description.directive.mjs +0 -19
- package/esm2020/component/property-grid/property-grid/property-grid.component.mjs +0 -97
- package/esm2020/component/property-grid/property-grid.module.mjs +0 -87
- package/esm2020/component/public-api.mjs +0 -65
- package/esm2020/component/radio/radio/radio.component.mjs +0 -245
- package/esm2020/component/radio/radio-button/radio-button.component.mjs +0 -63
- package/esm2020/component/resize-panel/resize-panel/resize-panel.component.mjs +0 -168
- package/esm2020/component/select/select/select.component.mjs +0 -260
- package/esm2020/component/select/select-option.directive.mjs +0 -16
- package/esm2020/component/select/select-value.directive.mjs +0 -16
- package/esm2020/component/sidebar/sidebar/sidebar.component.mjs +0 -54
- package/esm2020/component/switch/switch/switch.component.mjs +0 -52
- package/esm2020/component/switch/switch-button/switch-button.component.mjs +0 -47
- package/esm2020/component/switch/switch.service.mjs +0 -21
- package/esm2020/component/table/base/cell-component-base.mjs +0 -97
- package/esm2020/component/table/cell/cell.component.mjs +0 -33
- package/esm2020/component/table/cell-host/cell-host.component.mjs +0 -50
- package/esm2020/component/table/contract/column-reorder-event.mjs +0 -7
- package/esm2020/component/table/contract/column-resize-event.mjs +0 -7
- package/esm2020/component/table/contract/sort-event.mjs +0 -7
- package/esm2020/component/table/contract/table-column-store.mjs +0 -12
- package/esm2020/component/table/contract/table-column.mjs +0 -38
- package/esm2020/component/table/default/boolean-cell/boolean-cell.component.mjs +0 -45
- package/esm2020/component/table/default/date-cell/date-cell.component.mjs +0 -47
- package/esm2020/component/table/default/date-time-cell/date-time-cell.component.mjs +0 -46
- package/esm2020/component/table/default/default-head-cell/default-head-cell.component.mjs +0 -47
- package/esm2020/component/table/default/list-cell/list-cell.component.mjs +0 -76
- package/esm2020/component/table/default/numeric-cell/numeric-cell.component.mjs +0 -55
- package/esm2020/component/table/default/string-cell/string-cell.component.mjs +0 -54
- package/esm2020/component/table/head-cell/head-cell.component.mjs +0 -189
- package/esm2020/component/table/head-cell-dropdown/head-cell-dropdown.component.mjs +0 -50
- package/esm2020/component/table/head-cell-host/head-cell-host.component.mjs +0 -60
- package/esm2020/component/table/selection-cell/selection-cell.component.mjs +0 -46
- package/esm2020/component/table/selection-head-cell/selection-head-cell.component.mjs +0 -45
- package/esm2020/component/table/service/table.service.mjs +0 -648
- package/esm2020/component/table/table/table.component.mjs +0 -472
- package/esm2020/component/table/table-body/table-body.component.mjs +0 -203
- package/esm2020/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.mjs +0 -55
- package/esm2020/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.mjs +0 -86
- package/esm2020/component/table/table-head/table-head.component.mjs +0 -77
- package/esm2020/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.mjs +0 -141
- package/esm2020/component/table/table-head-group/table-head-group.component.mjs +0 -76
- package/esm2020/component/tabs/tab/tab.component.mjs +0 -42
- package/esm2020/component/tabs/tab-content.directive.mjs +0 -16
- package/esm2020/component/tabs/tab-title.directive.mjs +0 -16
- package/esm2020/component/tabs/tabs/tabs.component.mjs +0 -70
- package/esm2020/component/theme-switch/theme-switch/theme-switch.component.mjs +0 -28
- package/esm2020/component/theme-switch/theme-switch.service.mjs +0 -34
- package/esm2020/component/toggle/toggle/toggle.component.mjs +0 -79
- package/esm2020/component/toolbar/toolbar/toolbar.component.mjs +0 -26
- package/esm2020/component/tree/tree/tree.component.mjs +0 -138
- package/esm2020/component/tree/tree-item/tree-item.component.mjs +0 -85
- package/esm2020/component/tree/tree-item-toggle/tree-item-toggle.component.mjs +0 -28
- package/esm2020/component/tree/tree.service.mjs +0 -40
- package/esm2020/directive/auto-position/auto-position.directive.mjs +0 -69
- package/esm2020/directive/click-outside/click-outside.directive.mjs +0 -65
- package/esm2020/directive/context-menu/context-menu.directive.mjs +0 -120
- package/esm2020/directive/disable-control/disable-control.directive.mjs +0 -29
- package/esm2020/directive/drag-drop/drag-container.directive.mjs +0 -92
- package/esm2020/directive/drag-drop/drag-drop.service.mjs +0 -142
- package/esm2020/directive/drag-drop/drag-preview.directive.mjs +0 -16
- package/esm2020/directive/drag-drop/drag.directive.mjs +0 -135
- package/esm2020/directive/drag-drop/model/drag-container-instance.mjs +0 -8
- package/esm2020/directive/drag-drop/model/drag-instance.mjs +0 -7
- package/esm2020/directive/drag-sort/drag-sort-container.directive.mjs +0 -64
- package/esm2020/directive/drag-sort/drag-sort-item.directive.mjs +0 -115
- package/esm2020/directive/dynamic-content-base.directive.mjs +0 -80
- package/esm2020/directive/highlight/highlight.directive.mjs +0 -72
- package/esm2020/directive/hint/hint.directive.mjs +0 -103
- package/esm2020/directive/let/let.directive.mjs +0 -38
- package/esm2020/directive/loader/loader.directive.mjs +0 -85
- package/esm2020/directive/no-autofill/no-autofill.directive.mjs +0 -30
- package/esm2020/directive/only-number/only-number.directive.mjs +0 -198
- package/esm2020/directive/resize-drag/resize-drag.directive.mjs +0 -71
- package/esm2020/directive/scroll-into-view/scroll-into-view.directive.mjs +0 -40
- package/esm2020/directive/scrollable/scrollable/scrollable.component.mjs +0 -96
- package/esm2020/directive/scrollable/scrollable.directive.mjs +0 -19
- package/esm2020/directive/teta-template/teta-template.directive.mjs +0 -22
- package/esm2020/directive/tooltip/tooltip.directive.mjs +0 -76
- package/esm2020/locale/en.mjs +0 -60
- package/esm2020/locale/ru.mjs +0 -60
- package/esm2020/locale/teta-config.service.mjs +0 -28
- package/esm2020/pipe/date-pipe/teta-date.pipe.mjs +0 -34
- package/esm2020/pipe/prepend-zero/prepend-zero.module.mjs +0 -18
- package/esm2020/pipe/prepend-zero/prepend-zero.pipe.mjs +0 -21
- package/fesm2015/tetacom-ng-components.mjs +0 -13042
- package/fesm2015/tetacom-ng-components.mjs.map +0 -1
- package/fesm2020/tetacom-ng-components.mjs.map +0 -1
- package/pipe/prepend-zero/prepend-zero.module.d.ts +0 -8
- package/pipe/prepend-zero/prepend-zero.pipe.d.ts +0 -7
- package/style/presets/shadow-presets.scss +0 -16
- package/style/tokens/basedark.tokens.css +0 -77
- package/style/tokens/baselight.tokens.css +0 -61
- package/style/tokens/global.tokens.css +0 -235
- package/style/tokens/utility.tokens.css +0 -1119
- package/style/util/button-util.scss +0 -58
- /package/{esm2020 → esm2022}/common/contract/auto-close-ignore-case.mjs +0 -0
- /package/{esm2020 → esm2022}/common/contract/constructor-type.mjs +0 -0
- /package/{esm2020 → esm2022}/common/contract/dynamic-data.mjs +0 -0
- /package/{esm2020 → esm2022}/common/contract/i-dictionary.mjs +0 -0
- /package/{esm2020 → esm2022}/common/contract/i-id-name.mjs +0 -0
- /package/{esm2020 → esm2022}/common/contract/i-id.mjs +0 -0
- /package/{esm2020 → esm2022}/common/contract/i-rect.mjs +0 -0
- /package/{esm2020 → esm2022}/common/contract/i-tree-data.mjs +0 -0
- /package/{esm2020 → esm2022}/common/contract/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/common/enum/align.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/common/enum/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/common/enum/teta-size.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/common/enum/vertical-align.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/common/service/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/common/util/array-util.mjs +0 -0
- /package/{esm2020 → esm2022}/common/util/dom-util.mjs +0 -0
- /package/{esm2020 → esm2022}/common/util/position-util.mjs +0 -0
- /package/{esm2020 → esm2022}/common/util/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/accordion/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/autocomplete/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/button/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/chart-3d/model/base-3d-point.mjs +0 -0
- /package/{esm2020 → esm2022}/component/chart-3d/model/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/chart-3d/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/checkbox/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/date-picker/model/date-picker-mode.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/component/delimiter/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/dropdown/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/dynamic-component/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/expand-card/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/expand-panel/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/file-upload/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/filter/contarct/filter-component-map.mjs +0 -0
- /package/{esm2020 → esm2022}/component/filter/enum/filter-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/component/filter/enum/list-filter-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/component/filter/enum/string-filter-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/component/filter/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/input/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/message/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/modal/model/i-modal-config.mjs +0 -0
- /package/{esm2020 → esm2022}/component/modal/model/i-modal-result.mjs +0 -0
- /package/{esm2020 → esm2022}/component/modal/model/modal-close-reason.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/component/modal/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/pager/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/pager/util/pager-util.mjs +0 -0
- /package/{esm2020 → esm2022}/component/panel/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/progress-bar/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/property-grid/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/radio/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/resize-panel/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/select/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/sidebar/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/sidebar/sidebar-position.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/component/switch/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/base/detail-component-base.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/contract/cell-components-map.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/contract/head-dropdown-tab.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/contract/i-cell-coordinates.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/contract/i-cell-event.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/contract/i-cell-instance.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/contract/i-cell-value.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/contract/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/enum/aggregation-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/enum/edit-event.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/enum/edit-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/enum/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/enum/select-type.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/util/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/util/state-util.mjs +0 -0
- /package/{esm2020 → esm2022}/component/table/util/table-util.mjs +0 -0
- /package/{esm2020 → esm2022}/component/tabs/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/theme-switch/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/toggle/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/toolbar/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/component/tree/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/auto-position/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/click-outside/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/context-menu/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/disable-control/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/drag-drop/model/drag-process.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/drag-drop/model/drag-selection.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/drag-drop/model/drop-event.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/drag-drop/model/drop-target.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/drag-drop/model/point.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/drag-drop/model/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/drag-drop/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/drag-sort/drag-sort-event.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/drag-sort/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/highlight/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/hint/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/let/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/loader/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/no-autofill/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/only-number/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/resize-drag/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/scroll-into-view/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/scrollable/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/teta-template/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/directive/tooltip/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/locale/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/observable/animation-frame.mjs +0 -0
- /package/{esm2020 → esm2022}/observable/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/observable/zoneObservable.mjs +0 -0
- /package/{esm2020 → esm2022}/pipe/date-pipe/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/pipe/number-pipe/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/pipe/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/pipe/util/number-helper.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/tetacom-ng-components.mjs +0 -0
- /package/{esm2020 → esm2022}/util/date-util.mjs +0 -0
- /package/{esm2020 → esm2022}/util/export-dom-image.mjs +0 -0
- /package/{esm2020 → esm2022}/util/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/util/string-util.mjs +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component } from "@angular/core";
|
|
2
|
+
import { BehaviorSubject, ReplaySubject } from "rxjs";
|
|
3
|
+
import dayjs from "dayjs";
|
|
4
|
+
import { DayModel } from "./model/day-model";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class BaseCalendar {
|
|
7
|
+
_cdr;
|
|
8
|
+
currentMonth = new ReplaySubject(1);
|
|
9
|
+
minMax = new ReplaySubject(1);
|
|
10
|
+
currentYear = new ReplaySubject(1);
|
|
11
|
+
selectedPicker = new BehaviorSubject('day');
|
|
12
|
+
localeMonths = new Map().set('ru', ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'])
|
|
13
|
+
.set('en', ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']);
|
|
14
|
+
alive = true;
|
|
15
|
+
constructor(_cdr) {
|
|
16
|
+
this._cdr = _cdr;
|
|
17
|
+
}
|
|
18
|
+
generateCalendar(selectedDate, year, month, minMax) {
|
|
19
|
+
const calendarStartDay = selectedDate.set("year", year).set("month", month).set("date", 1).startOf('week');
|
|
20
|
+
const calendar = new Array(42).fill(1).map((v, i) => {
|
|
21
|
+
return calendarStartDay.add(i, 'day');
|
|
22
|
+
});
|
|
23
|
+
return calendar.map((d) => {
|
|
24
|
+
return new DayModel({
|
|
25
|
+
date: new Date(d.toDate()),
|
|
26
|
+
isCurrentMonth: month === d.month(),
|
|
27
|
+
disabled: !this.isSuitableMinDate(d.toDate(), minMax.min) || !this.isSuitableMaxDate(d.toDate(), minMax.max),
|
|
28
|
+
selected: this.isSelected(d.toDate(), selectedDate.toDate())
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
isSuitableMinDate(d, minDate) {
|
|
33
|
+
return dayjs(new Date(minDate)).startOf('date').toDate() <= new Date(d) || minDate === null;
|
|
34
|
+
}
|
|
35
|
+
isSuitableMaxDate(d, maxDate) {
|
|
36
|
+
return new Date(d) < dayjs(new Date(maxDate)).endOf('date').toDate() || maxDate === null;
|
|
37
|
+
}
|
|
38
|
+
isSelected(date, selectedDate) {
|
|
39
|
+
const isSelectedDate = date.getDate() === selectedDate?.getDate();
|
|
40
|
+
const isSelectedYear = date.getFullYear() === selectedDate?.getFullYear();
|
|
41
|
+
const isSelectedMonth = date.getMonth() === selectedDate?.getMonth();
|
|
42
|
+
return isSelectedDate && isSelectedMonth && isSelectedYear && !this.isDateNull;
|
|
43
|
+
}
|
|
44
|
+
ngOnDestroy() {
|
|
45
|
+
this.alive = false;
|
|
46
|
+
}
|
|
47
|
+
selectPicker(entity) {
|
|
48
|
+
this.selectedPicker.next(entity);
|
|
49
|
+
}
|
|
50
|
+
selectMonth(month) {
|
|
51
|
+
this.currentMonth.next(month);
|
|
52
|
+
this.selectPicker("day");
|
|
53
|
+
}
|
|
54
|
+
selectYear(year) {
|
|
55
|
+
this.setYear(year);
|
|
56
|
+
this.selectPicker("day");
|
|
57
|
+
}
|
|
58
|
+
ngOnChanges(changes) {
|
|
59
|
+
this.changeCalendarData(this.selectedDate);
|
|
60
|
+
}
|
|
61
|
+
changeCalendarData(selectedDate) {
|
|
62
|
+
let date = new Date(selectedDate || new Date());
|
|
63
|
+
this.currentMonth.next(new Date(date).getMonth());
|
|
64
|
+
this.currentYear.next(new Date(date).getFullYear());
|
|
65
|
+
this.minMax.next({ min: this.min, max: this.max });
|
|
66
|
+
}
|
|
67
|
+
setYear(year) {
|
|
68
|
+
this.currentYear.next(year);
|
|
69
|
+
}
|
|
70
|
+
changeMonth(month, year) {
|
|
71
|
+
const { availableYear, availableMonth } = this.getAvailableMonthYear(month, year);
|
|
72
|
+
this.currentMonth.next(availableMonth);
|
|
73
|
+
this.currentYear.next(availableYear);
|
|
74
|
+
}
|
|
75
|
+
getAvailableMonthYear(month, year) {
|
|
76
|
+
if (month > 11) {
|
|
77
|
+
return { availableMonth: month - 12, availableYear: year + 1 };
|
|
78
|
+
}
|
|
79
|
+
if (month < 0) {
|
|
80
|
+
return { availableMonth: 12 + month, availableYear: year - 1 };
|
|
81
|
+
}
|
|
82
|
+
return { availableMonth: month, availableYear: year };
|
|
83
|
+
}
|
|
84
|
+
getMothName(month) {
|
|
85
|
+
return this.localeMonths.get(this.locale)[month];
|
|
86
|
+
}
|
|
87
|
+
selectDate(date) {
|
|
88
|
+
this.setDate.emit(date);
|
|
89
|
+
}
|
|
90
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: BaseCalendar, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
91
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: BaseCalendar, selector: "ng-component", usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
92
|
+
}
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: BaseCalendar, decorators: [{
|
|
94
|
+
type: Component,
|
|
95
|
+
args: [{
|
|
96
|
+
template: '',
|
|
97
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
98
|
+
}]
|
|
99
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jYWxlbmRhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvZGF0ZS1waWNrZXIvYmFzZS1jYWxlbmRhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFLVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEtBQWMsTUFBTSxPQUFPLENBQUM7QUFHbkMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG1CQUFtQixDQUFDOztBQU0zQyxNQUFNLE9BQWdCLFlBQVk7SUFtQkE7SUFWekIsWUFBWSxHQUEwQixJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQTtJQUNsRSxNQUFNLEdBQW1DLElBQUksYUFBYSxDQUFrQixDQUFDLENBQUMsQ0FBQTtJQUM5RSxXQUFXLEdBQTBCLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFBO0lBQ2pFLGNBQWMsR0FBOEMsSUFBSSxlQUFlLENBQTJCLEtBQUssQ0FBQyxDQUFBO0lBRWhILFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQzVKLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUE7SUFFakksS0FB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QUksQ0FBQyxDQUFBO1FBQy9FLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFhLEVBQUUsSUFBWTtRQUMvQyxJQUFJLEtBQUssR0FBRyxFQUFFLEVBQUU7WUFDZCxPQUFPLEVBQUMsY0FBYyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUMsQ0FBQTtTQUM3RDtRQUNELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNiLE9BQU8sRUFBQyxjQUFjLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBQyxDQUFBO1NBQzdEO1FBQ0QsT0FBTyxFQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBQyxDQUFBO0lBQ3JELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVU7UUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQzt1R0E3R21CLFlBQVk7MkZBQVosWUFBWSx5RUFIdEIsRUFBRTs7MkZBR1EsWUFBWTtrQkFKakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3R9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgZGF5anMsIHtEYXlqc30gZnJvbSBcImRheWpzXCI7XG5pbXBvcnQge3ZpZXdUeXBlfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVsL3ZpZXctdHlwZS5tb2RlbFwiO1xuaW1wb3J0IHtNaW5NYXhEYXRlTW9kZWx9IGZyb20gXCIuL21vZGVsL21pbi1tYXgtZGF0ZS5tb2RlbFwiO1xuaW1wb3J0IHtEYXlNb2RlbH0gZnJvbSBcIi4vbW9kZWwvZGF5LW1vZGVsXCI7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDYWxlbmRhciBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgYWJzdHJhY3Qgc2VsZWN0ZWREYXRlO1xuICBhYnN0cmFjdCBsb2NhbGU6IHN0cmluZztcbiAgYWJzdHJhY3Qgb3BlbjogYm9vbGVhbjtcbiAgYWJzdHJhY3Qgdmlld1R5cGU6IHZpZXdUeXBlO1xuICBhYnN0cmFjdCBtaW46IERhdGUgfCBzdHJpbmcgfCBudW1iZXI7XG4gIGFic3RyYWN0IGlzRGF0ZU51bGw6IGJvb2xlYW47XG4gIGFic3RyYWN0IG1heDogRGF0ZSB8IHN0cmluZyB8IG51bWJlcjtcbiAgYWJzdHJhY3Qgc2V0RGF0ZTogRXZlbnRFbWl0dGVyPERhdGU+O1xuICBwdWJsaWMgY3VycmVudE1vbnRoOiBSZXBsYXlTdWJqZWN0PG51bWJlcj4gPSBuZXcgUmVwbGF5U3ViamVjdDxudW1iZXI+KDEpXG4gIHB1YmxpYyBtaW5NYXg6IFJlcGxheVN1YmplY3Q8TWluTWF4RGF0ZU1vZGVsPiA9IG5ldyBSZXBsYXlTdWJqZWN0PE1pbk1heERhdGVNb2RlbD4oMSlcbiAgcHVibGljIGN1cnJlbnRZZWFyOiBSZXBsYXlTdWJqZWN0PG51bWJlcj4gPSBuZXcgUmVwbGF5U3ViamVjdDxudW1iZXI+KDEpXG4gIHB1YmxpYyBzZWxlY3RlZFBpY2tlcjogQmVoYXZpb3JTdWJqZWN0PCdkYXknIHwgJ21vbnRoJyB8ICd5ZWFyJz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFwiZGF5XCIgfCBcIm1vbnRoXCIgfCBcInllYXJcIj4oJ2RheScpXG4gIGFic3RyYWN0IGNhbGVuZGFyOiBEYXlNb2RlbFtdIHwgeyBjdXJyZW50TW9udGg6IERheU1vZGVsW10sIG5leHRNb250aDogRGF5TW9kZWxbXSB9O1xuICBwdWJsaWMgbG9jYWxlTW9udGhzID0gbmV3IE1hcCgpLnNldCgncnUnLCBbJ9Cv0L3QstCw0YDRjCcsICfQpNC10LLRgNCw0LvRjCcsICfQnNCw0YDRgicsICfQkNC/0YDQtdC70YwnLCAn0JzQsNC5JywgJ9CY0Y7QvdGMJywgJ9CY0Y7Qu9GMJywgJ9CQ0LLQs9GD0YHRgicsICfQodC10L3RgtGP0LHRgNGMJywgJ9Ce0LrRgtGP0LHRgNGMJywgJ9Cd0L7Rj9Cx0YDRjCcsICfQlNC10LrQsNCx0YDRjCddKVxuICAgIC5zZXQoJ2VuJywgWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10pXG5cbiAgcHVibGljIGFsaXZlID0gdHJ1ZTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIF9jZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuICBnZW5lcmF0ZUNhbGVuZGFyKHNlbGVjdGVkRGF0ZTogRGF5anMsIHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgbWluTWF4OiBNaW5NYXhEYXRlTW9kZWwpOiBEYXlNb2RlbFtdIHtcbiAgICBjb25zdCBjYWxlbmRhclN0YXJ0RGF5ID0gc2VsZWN0ZWREYXRlLnNldChcInllYXJcIiwgeWVhcikuc2V0KFwibW9udGhcIiwgbW9udGgpLnNldChcImRhdGVcIiwgMSkuc3RhcnRPZignd2VlaycpO1xuICAgIGNvbnN0IGNhbGVuZGFyID0gbmV3IEFycmF5KDQyKS5maWxsKDEpLm1hcCgodiwgaSkgPT4ge1xuICAgICAgcmV0dXJuIGNhbGVuZGFyU3RhcnREYXkuYWRkKGksICdkYXknKVxuICAgIH0pO1xuICAgIHJldHVybiBjYWxlbmRhci5tYXAoKGQpID0+IHtcblxuICAgICAgcmV0dXJuIG5ldyBEYXlNb2RlbCh7XG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKGQudG9EYXRlKCkpLFxuICAgICAgICBpc0N1cnJlbnRNb250aDogbW9udGggPT09IGQubW9udGgoKSxcbiAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLmlzU3VpdGFibGVNaW5EYXRlKGQudG9EYXRlKCksIG1pbk1heC5taW4pIHx8ICF0aGlzLmlzU3VpdGFibGVNYXhEYXRlKGQudG9EYXRlKCksIG1pbk1heC5tYXgpLFxuICAgICAgICBzZWxlY3RlZDogdGhpcy5pc1NlbGVjdGVkKGQudG9EYXRlKCksIHNlbGVjdGVkRGF0ZS50b0RhdGUoKSlcbiAgICAgIH0pXG4gICAgfSlcblxuICB9XG5cbiAgaXNTdWl0YWJsZU1pbkRhdGUoZDogRGF0ZSwgbWluRGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlcikge1xuICAgIHJldHVybiBkYXlqcyhuZXcgRGF0ZShtaW5EYXRlKSkuc3RhcnRPZignZGF0ZScpLnRvRGF0ZSgpIDw9IG5ldyBEYXRlKGQpIHx8IG1pbkRhdGUgPT09IG51bGxcbiAgfVxuXG4gIGlzU3VpdGFibGVNYXhEYXRlKGQ6IERhdGUsIG1heERhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZCkgPCBkYXlqcyhuZXcgRGF0ZShtYXhEYXRlKSkuZW5kT2YoJ2RhdGUnKS50b0RhdGUoKSB8fCBtYXhEYXRlID09PSBudWxsO1xuICB9XG5cbiAgaXNTZWxlY3RlZChkYXRlOiBEYXRlLCBzZWxlY3RlZERhdGU6IERhdGUpIHtcbiAgICBjb25zdCBpc1NlbGVjdGVkRGF0ZSA9IGRhdGUuZ2V0RGF0ZSgpID09PSBzZWxlY3RlZERhdGU/LmdldERhdGUoKVxuICAgIGNvbnN0IGlzU2VsZWN0ZWRZZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpID09PSBzZWxlY3RlZERhdGU/LmdldEZ1bGxZZWFyKClcbiAgICBjb25zdCBpc1NlbGVjdGVkTW9udGggPSBkYXRlLmdldE1vbnRoKCkgPT09IHNlbGVjdGVkRGF0ZT8uZ2V0TW9udGgoKVxuICAgIHJldHVybiBpc1NlbGVjdGVkRGF0ZSAmJiBpc1NlbGVjdGVkTW9udGggJiYgaXNTZWxlY3RlZFllYXIgJiYgIXRoaXMuaXNEYXRlTnVsbFxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hbGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgc2VsZWN0UGlja2VyKGVudGl0eTogXCJkYXlcIiB8IFwibW9udGhcIiB8IFwieWVhclwiKSB7XG4gICAgdGhpcy5zZWxlY3RlZFBpY2tlci5uZXh0KGVudGl0eSlcbiAgfVxuXG4gIHNlbGVjdE1vbnRoKG1vbnRoOiBudW1iZXIpIHtcbiAgICB0aGlzLmN1cnJlbnRNb250aC5uZXh0KG1vbnRoKVxuICAgIHRoaXMuc2VsZWN0UGlja2VyKFwiZGF5XCIpXG4gIH1cblxuICBzZWxlY3RZZWFyKHllYXI6IG51bWJlcikge1xuICAgIHRoaXMuc2V0WWVhcih5ZWFyKVxuICAgIHRoaXMuc2VsZWN0UGlja2VyKFwiZGF5XCIpXG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5jaGFuZ2VDYWxlbmRhckRhdGEodGhpcy5zZWxlY3RlZERhdGUpXG4gIH1cblxuICBjaGFuZ2VDYWxlbmRhckRhdGEoc2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nKSB7XG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShzZWxlY3RlZERhdGUgfHwgbmV3IERhdGUoKSk7XG4gICAgdGhpcy5jdXJyZW50TW9udGgubmV4dChuZXcgRGF0ZShkYXRlKS5nZXRNb250aCgpKVxuICAgIHRoaXMuY3VycmVudFllYXIubmV4dChuZXcgRGF0ZShkYXRlKS5nZXRGdWxsWWVhcigpKVxuICAgIHRoaXMubWluTWF4Lm5leHQoe21pbjogdGhpcy5taW4sIG1heDogdGhpcy5tYXh9KVxuICB9XG5cbiAgc2V0WWVhcih5ZWFyOiBudW1iZXIpIHtcbiAgICB0aGlzLmN1cnJlbnRZZWFyLm5leHQoeWVhcilcbiAgfVxuXG4gIGNoYW5nZU1vbnRoKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcikge1xuICAgIGNvbnN0IHthdmFpbGFibGVZZWFyLCBhdmFpbGFibGVNb250aH0gPSB0aGlzLmdldEF2YWlsYWJsZU1vbnRoWWVhcihtb250aCwgeWVhcilcbiAgICB0aGlzLmN1cnJlbnRNb250aC5uZXh0KGF2YWlsYWJsZU1vbnRoKVxuICAgIHRoaXMuY3VycmVudFllYXIubmV4dChhdmFpbGFibGVZZWFyKVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlTW9udGhZZWFyKG1vbnRoOiBudW1iZXIsIHllYXI6IG51bWJlcikge1xuICAgIGlmIChtb250aCA+IDExKSB7XG4gICAgICByZXR1cm4ge2F2YWlsYWJsZU1vbnRoOiBtb250aCAtIDEyLCBhdmFpbGFibGVZZWFyOiB5ZWFyICsgMX1cbiAgICB9XG4gICAgaWYgKG1vbnRoIDwgMCkge1xuICAgICAgcmV0dXJuIHthdmFpbGFibGVNb250aDogMTIgKyBtb250aCwgYXZhaWxhYmxlWWVhcjogeWVhciAtIDF9XG4gICAgfVxuICAgIHJldHVybiB7YXZhaWxhYmxlTW9udGg6IG1vbnRoLCBhdmFpbGFibGVZZWFyOiB5ZWFyfVxuICB9XG5cbiAgZ2V0TW90aE5hbWUobW9udGg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmxvY2FsZU1vbnRocy5nZXQodGhpcy5sb2NhbGUpW21vbnRoXVxuICB9XG5cbiAgc2VsZWN0RGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgdGhpcy5zZXREYXRlLmVtaXQoZGF0ZSk7XG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import dayjs from "dayjs";
|
|
2
|
+
export class BasePicker {
|
|
3
|
+
_elementRef;
|
|
4
|
+
_cdr;
|
|
5
|
+
datePipe;
|
|
6
|
+
open = false;
|
|
7
|
+
placeholder = '';
|
|
8
|
+
inputText;
|
|
9
|
+
maskitoOptions;
|
|
10
|
+
constructor(_elementRef, _cdr, datePipe) {
|
|
11
|
+
this._elementRef = _elementRef;
|
|
12
|
+
this._cdr = _cdr;
|
|
13
|
+
this.datePipe = datePipe;
|
|
14
|
+
this.inputText = this.checkNull();
|
|
15
|
+
}
|
|
16
|
+
changeInput(v) {
|
|
17
|
+
this.changePlaceholder(v);
|
|
18
|
+
}
|
|
19
|
+
changePlaceholder(value) {
|
|
20
|
+
let val = this.mask.split('');
|
|
21
|
+
for (let i = 0; value.length > i; i++) {
|
|
22
|
+
val.splice(i, 1, value[i]);
|
|
23
|
+
}
|
|
24
|
+
this.placeholder = val.join('');
|
|
25
|
+
this._cdr.detectChanges();
|
|
26
|
+
}
|
|
27
|
+
openChange(e) {
|
|
28
|
+
this.onBlur();
|
|
29
|
+
this.open = e;
|
|
30
|
+
}
|
|
31
|
+
checkNull() {
|
|
32
|
+
if (!this.date && this.allowNull) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return this.datePipe.transform(new Date(), 'dd.MM.yyyy, HH:mm');
|
|
36
|
+
}
|
|
37
|
+
openPicker = (show) => {
|
|
38
|
+
if (this.disabled) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
this.open = show;
|
|
42
|
+
this._cdr.markForCheck();
|
|
43
|
+
};
|
|
44
|
+
changeSelectedDate(date, selectedDate) {
|
|
45
|
+
this.setDate(date);
|
|
46
|
+
this.emitValue(date);
|
|
47
|
+
this.open = false;
|
|
48
|
+
}
|
|
49
|
+
emitValue(value) {
|
|
50
|
+
this.date = value;
|
|
51
|
+
this.selectDate.emit(value);
|
|
52
|
+
this.onChange(value);
|
|
53
|
+
}
|
|
54
|
+
checkEnter(e) {
|
|
55
|
+
if (e.key === "Enter") {
|
|
56
|
+
this.inputText = e.target.value;
|
|
57
|
+
this.onBlur();
|
|
58
|
+
}
|
|
59
|
+
if (e.key === '-') {
|
|
60
|
+
e.preventDefault();
|
|
61
|
+
}
|
|
62
|
+
this.open = true;
|
|
63
|
+
}
|
|
64
|
+
isAvailableLength(val, length) {
|
|
65
|
+
if (val?.length) {
|
|
66
|
+
return val.length === length;
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
getDateFromStr(str, separator = '.') {
|
|
71
|
+
const date = str?.split(separator);
|
|
72
|
+
const day = this.isAvailableLength((date?.[0]), 2) ? Number(date[0]) : null;
|
|
73
|
+
const month = this.isAvailableLength((date?.[1]), 2) ? Number(date[1]) : null;
|
|
74
|
+
const year = this.isAvailableLength((date?.[2]), 4) ? Number(date[2]) : null;
|
|
75
|
+
return { day, month, year };
|
|
76
|
+
}
|
|
77
|
+
getTimeFromStr(str, separator = ':') {
|
|
78
|
+
const time = str?.trim().split(separator);
|
|
79
|
+
const hours = this.isAvailableLength((time?.[0]), 2) ? Number(time[0]) : null;
|
|
80
|
+
const mins = this.isAvailableLength((time?.[1]), 2) ? Number(time[1]) : null;
|
|
81
|
+
return { hours, mins };
|
|
82
|
+
}
|
|
83
|
+
focus() {
|
|
84
|
+
this._elementRef.nativeElement.focus();
|
|
85
|
+
}
|
|
86
|
+
getLocaleString(date) {
|
|
87
|
+
return new Date(date).toLocaleString([], {
|
|
88
|
+
year: 'numeric',
|
|
89
|
+
month: '2-digit',
|
|
90
|
+
day: '2-digit',
|
|
91
|
+
hour: this.showTime ? '2-digit' : undefined,
|
|
92
|
+
minute: this.showTime ? '2-digit' : undefined,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
getAvailableDate(min, max, date) {
|
|
96
|
+
let minDate = dayjs(new Date(min)).startOf("day").toDate();
|
|
97
|
+
let maxDate = dayjs(new Date(max)).endOf("day").toDate();
|
|
98
|
+
if (min && minDate.getTime() >= new Date(date).getTime()) {
|
|
99
|
+
return new Date();
|
|
100
|
+
}
|
|
101
|
+
if (max && maxDate.getTime() <= new Date(date).getTime()) {
|
|
102
|
+
return maxDate;
|
|
103
|
+
}
|
|
104
|
+
return new Date(date);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1waWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2Jhc2UtcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQVUxQixNQUFNLE9BQWdCLFVBQVU7SUF1QkU7SUFDQTtJQUNBO0lBUnpCLElBQUksR0FBRyxLQUFLLENBQUM7SUFFYixXQUFXLEdBQUcsRUFBRSxDQUFBO0lBQ2hCLFNBQVMsQ0FBUztJQUNsQixjQUFjLENBQWlCO0lBRXRDLFlBQWdDLFdBQXVCLEVBQ3ZCLElBQXVCLEVBQ3ZCLFFBQWtCO1FBRmxCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBQ3ZCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQVVELFdBQVcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzNCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFhO1FBQzdCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM1QjtRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQzNCLENBQUM7SUFFRCxVQUFVLENBQUMsQ0FBVTtRQUNuQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQTtJQUNmLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQyxPQUFPLElBQUksQ0FBQTtTQUNaO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUE7SUFDakUsQ0FBQztJQUVELFVBQVUsR0FBRyxDQUFDLElBQWEsRUFBRSxFQUFFO1FBQzdCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNCLENBQUMsQ0FBQztJQUVGLGtCQUFrQixDQUFDLElBQUksRUFBRSxZQUFhO1FBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQTtRQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3RCLENBQUM7SUFHRCxVQUFVLENBQUMsQ0FBQztRQUNWLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUU7WUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNoQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7U0FDZDtRQUNELElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUU7WUFDakIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFBO1NBQ25CO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQVcsRUFBRSxNQUFjO1FBQzNDLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRTtZQUNmLE9BQU8sR0FBRyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUE7U0FDN0I7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBVyxFQUFFLFlBQW9CLEdBQUc7UUFDakQsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUMzRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUM3RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUM1RSxPQUFPLEVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQTtJQUMzQixDQUFDO0lBRUQsY0FBYyxDQUFDLEdBQVcsRUFBRSxZQUFvQixHQUFHO1FBQ2pELE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDN0UsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDNUUsT0FBTyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQTtJQUN0QixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBNEI7UUFDMUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFO1lBQ3ZDLElBQUksRUFBRSxTQUFTO1lBQ2YsS0FBSyxFQUFFLFNBQVM7WUFDaEIsR0FBRyxFQUFFLFNBQVM7WUFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQzNDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDOUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQTJCLEVBQUUsR0FBMkIsRUFBRSxJQUE0QjtRQUNyRyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDMUQsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQ3hELElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN4RCxPQUFPLElBQUksSUFBSSxFQUFFLENBQUE7U0FDbEI7UUFDRCxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDeEQsT0FBTyxPQUFPLENBQUE7U0FDZjtRQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDdkIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtBbGlnbn0gZnJvbSBcIi4uLy4uL2NvbW1vbi9lbnVtL2FsaWduLmVudW1cIjtcbmltcG9ydCB7VmVydGljYWxBbGlnbn0gZnJvbSBcIi4uLy4uL2NvbW1vbi9lbnVtL3ZlcnRpY2FsLWFsaWduLmVudW1cIjtcbmltcG9ydCB7UmVwbGF5U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7TWFza2l0b09wdGlvbnN9IGZyb20gXCJAbWFza2l0by9jb3JlXCI7XG5pbXBvcnQge3ZpZXdUeXBlfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVsL3ZpZXctdHlwZS5tb2RlbFwiO1xuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtEYXRlRnJvbVRvTW9kZWx9IGZyb20gXCIuL21vZGVsL2Zyb20tdG8ubW9kZWxcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VQaWNrZXIge1xuICBhYnN0cmFjdCBtYXNrOiBzdHJpbmc7XG4gIGFic3RyYWN0IGRhdGU7XG4gIGFic3RyYWN0IGxvY2FsZTogc3RyaW5nXG4gIGFic3RyYWN0IHNob3dUaW1lOiBib29sZWFuXG4gIGFic3RyYWN0IG1pbkRhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXJcbiAgYWJzdHJhY3QgbWF4RGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlclxuICBhYnN0cmFjdCBpbnZhbGlkOiBib29sZWFuXG4gIGFic3RyYWN0IGRpc2FibGVkOiBib29sZWFuXG4gIGFic3RyYWN0IGFsaWduOiBBbGlnblxuICBhYnN0cmFjdCB2ZXJ0aWNhbEFsaWduOiBWZXJ0aWNhbEFsaWduXG4gIGFic3RyYWN0IHZpZXdUeXBlOiB2aWV3VHlwZVxuICBhYnN0cmFjdCBhcHBlbmRUb0JvZHk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGJhY2tkcm9wOiBib29sZWFuO1xuICBhYnN0cmFjdCBhbGxvd051bGw6IGJvb2xlYW5cbiAgYWJzdHJhY3QgaW5wdXQ6IEVsZW1lbnRSZWY7XG4gIGFic3RyYWN0IHNlbGVjdERhdGU6IEV2ZW50RW1pdHRlcjxEYXRlIHwgRGF0ZUZyb21Ub01vZGVsPlxuICBwdWJsaWMgb3BlbiA9IGZhbHNlO1xuICBhYnN0cmFjdCBzZWxlY3RlZERhdGU6IFJlcGxheVN1YmplY3Q8YW55PjtcbiAgcHVibGljIHBsYWNlaG9sZGVyID0gJydcbiAgcHVibGljIGlucHV0VGV4dDogc3RyaW5nO1xuICBwdWJsaWMgbWFza2l0b09wdGlvbnM6IE1hc2tpdG9PcHRpb25zO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgZGF0ZVBpcGU6IERhdGVQaXBlKSB7XG4gICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLmNoZWNrTnVsbCgpO1xuICB9XG5cbiAgYWJzdHJhY3Qgb25DaGFuZ2UoZGF0ZTogRGF0ZSk7XG5cbiAgYWJzdHJhY3QgcHJlcGFyZUlucHV0KCk7XG5cbiAgYWJzdHJhY3Qgb25CbHVyKCk7XG5cbiAgYWJzdHJhY3Qgc2V0RGF0ZShkYXRlKTtcblxuICBjaGFuZ2VJbnB1dCh2KSB7XG4gICAgdGhpcy5jaGFuZ2VQbGFjZWhvbGRlcih2KVxuICB9XG5cbiAgY2hhbmdlUGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIGxldCB2YWwgPSB0aGlzLm1hc2suc3BsaXQoJycpO1xuICAgIGZvciAobGV0IGkgPSAwOyB2YWx1ZS5sZW5ndGggPiBpOyBpKyspIHtcbiAgICAgIHZhbC5zcGxpY2UoaSwgMSwgdmFsdWVbaV0pO1xuICAgIH1cblxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB2YWwuam9pbignJyk7XG4gICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKVxuICB9XG5cbiAgb3BlbkNoYW5nZShlOiBib29sZWFuKSB7XG4gICAgdGhpcy5vbkJsdXIoKTtcbiAgICB0aGlzLm9wZW4gPSBlXG4gIH1cblxuICBjaGVja051bGwoKSB7XG4gICAgaWYgKCF0aGlzLmRhdGUgJiYgdGhpcy5hbGxvd051bGwpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShuZXcgRGF0ZSgpLCAnZGQuTU0ueXl5eSwgSEg6bW0nKVxuICB9XG5cbiAgb3BlblBpY2tlciA9IChzaG93OiBib29sZWFuKSA9PiB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vcGVuID0gc2hvdztcbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gIH07XG5cbiAgY2hhbmdlU2VsZWN0ZWREYXRlKGRhdGUsIHNlbGVjdGVkRGF0ZT8pIHtcbiAgICB0aGlzLnNldERhdGUoZGF0ZSlcbiAgICB0aGlzLmVtaXRWYWx1ZShkYXRlKVxuICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgZW1pdFZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5kYXRlID0gdmFsdWVcbiAgICB0aGlzLnNlbGVjdERhdGUuZW1pdCh2YWx1ZSlcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKVxuICB9XG5cblxuICBjaGVja0VudGVyKGUpIHtcbiAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgdGhpcy5pbnB1dFRleHQgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgIHRoaXMub25CbHVyKClcbiAgICB9XG4gICAgaWYgKGUua2V5ID09PSAnLScpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIH1cbiAgICB0aGlzLm9wZW4gPSB0cnVlO1xuICB9XG5cbiAgaXNBdmFpbGFibGVMZW5ndGgodmFsOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKSB7XG4gICAgaWYgKHZhbD8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdmFsLmxlbmd0aCA9PT0gbGVuZ3RoXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgZ2V0RGF0ZUZyb21TdHIoc3RyOiBzdHJpbmcsIHNlcGFyYXRvcjogc3RyaW5nID0gJy4nKSB7XG4gICAgY29uc3QgZGF0ZSA9IHN0cj8uc3BsaXQoc2VwYXJhdG9yKVxuICAgIGNvbnN0IGRheSA9IHRoaXMuaXNBdmFpbGFibGVMZW5ndGgoKGRhdGU/LlswXSksIDIpID8gTnVtYmVyKGRhdGVbMF0pIDogbnVsbFxuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5pc0F2YWlsYWJsZUxlbmd0aCgoZGF0ZT8uWzFdKSwgMikgPyBOdW1iZXIoZGF0ZVsxXSkgOiBudWxsXG4gICAgY29uc3QgeWVhciA9IHRoaXMuaXNBdmFpbGFibGVMZW5ndGgoKGRhdGU/LlsyXSksIDQpID8gTnVtYmVyKGRhdGVbMl0pIDogbnVsbFxuICAgIHJldHVybiB7ZGF5LCBtb250aCwgeWVhcn1cbiAgfVxuXG4gIGdldFRpbWVGcm9tU3RyKHN0cjogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZyA9ICc6Jykge1xuICAgIGNvbnN0IHRpbWUgPSBzdHI/LnRyaW0oKS5zcGxpdChzZXBhcmF0b3IpXG4gICAgY29uc3QgaG91cnMgPSB0aGlzLmlzQXZhaWxhYmxlTGVuZ3RoKCh0aW1lPy5bMF0pLCAyKSA/IE51bWJlcih0aW1lWzBdKSA6IG51bGxcbiAgICBjb25zdCBtaW5zID0gdGhpcy5pc0F2YWlsYWJsZUxlbmd0aCgodGltZT8uWzFdKSwgMikgPyBOdW1iZXIodGltZVsxXSkgOiBudWxsXG4gICAgcmV0dXJuIHtob3VycywgbWluc31cbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgZ2V0TG9jYWxlU3RyaW5nKGRhdGU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSkudG9Mb2NhbGVTdHJpbmcoW10sIHtcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXG4gICAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICAgIGhvdXI6IHRoaXMuc2hvd1RpbWUgPyAnMi1kaWdpdCcgOiB1bmRlZmluZWQsXG4gICAgICBtaW51dGU6IHRoaXMuc2hvd1RpbWUgPyAnMi1kaWdpdCcgOiB1bmRlZmluZWQsXG4gICAgfSlcbiAgfVxuXG4gIGdldEF2YWlsYWJsZURhdGUobWluOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nLCBtYXg6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcsIGRhdGU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICBsZXQgbWluRGF0ZSA9IGRheWpzKG5ldyBEYXRlKG1pbikpLnN0YXJ0T2YoXCJkYXlcIikudG9EYXRlKClcbiAgICBsZXQgbWF4RGF0ZSA9IGRheWpzKG5ldyBEYXRlKG1heCkpLmVuZE9mKFwiZGF5XCIpLnRvRGF0ZSgpXG4gICAgaWYgKG1pbiAmJiBtaW5EYXRlLmdldFRpbWUoKSA+PSBuZXcgRGF0ZShkYXRlKS5nZXRUaW1lKCkpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpXG4gICAgfVxuICAgIGlmIChtYXggJiYgbWF4RGF0ZS5nZXRUaW1lKCkgPD0gbmV3IERhdGUoZGF0ZSkuZ2V0VGltZSgpKSB7XG4gICAgICByZXR1cm4gbWF4RGF0ZVxuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSlcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { BaseCalendar } from "../../base-calendar";
|
|
3
|
+
import dayjs from "dayjs";
|
|
4
|
+
import { combineLatest, filter, map, takeWhile } from "rxjs";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "../../../button/button/button.component";
|
|
8
|
+
import * as i3 from "../../../icon/icon/icon.component";
|
|
9
|
+
import * as i4 from "../../day-picker/day-picker.component";
|
|
10
|
+
import * as i5 from "../../month-picker/month-picker.component";
|
|
11
|
+
import * as i6 from "../../year-picker/year-picker.component";
|
|
12
|
+
export class DateCalendarComponent extends BaseCalendar {
|
|
13
|
+
_cdr;
|
|
14
|
+
selectedDate = new Date();
|
|
15
|
+
locale;
|
|
16
|
+
open;
|
|
17
|
+
viewType;
|
|
18
|
+
min;
|
|
19
|
+
isDateNull;
|
|
20
|
+
max;
|
|
21
|
+
setDate = new EventEmitter();
|
|
22
|
+
calendar = [];
|
|
23
|
+
constructor(_cdr) {
|
|
24
|
+
super(_cdr);
|
|
25
|
+
this._cdr = _cdr;
|
|
26
|
+
dayjs().locale('ru', { weekStart: 1 });
|
|
27
|
+
combineLatest([this.currentYear, this.currentMonth, this.minMax]).pipe(takeWhile(() => this.alive), filter(([currentYear, currentMonth]) => currentMonth !== null && currentYear !== null), map(([year, month, minMax]) => {
|
|
28
|
+
return this.generateCalendar(dayjs(new Date(this.selectedDate)).locale(this.locale), year, month, minMax);
|
|
29
|
+
})).subscribe((_) => {
|
|
30
|
+
this.calendar = _;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DateCalendarComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: DateCalendarComponent, selector: "teta-date-calendar", inputs: { selectedDate: "selectedDate", locale: "locale", open: "open", viewType: "viewType", min: "min", isDateNull: "isDateNull", max: "max" }, outputs: { setDate: "setDate" }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"{currentMonth:currentMonth|async,currentYear:currentYear|async,selectedPicker:selectedPicker|async} as data\"\n class=\"datepicker-content overflow-y-auto\"\n>\n <ng-container *ngIf=\"data.selectedPicker==='day'\">\n <div class=\"padding-h-3 padding-v-2\">\n <div class=\"row align-center justify-content-between\">\n <teta-button [class]=\"'change-month-button datepicker_'+viewType\" [square]=\"true\"\n (click)=\"changeMonth(data.currentMonth-1,data.currentYear)\"\n palette=\"text\"\n view=\"ghost\">\n <teta-icon name=\"arrowLeftKey\"></teta-icon>\n </teta-button>\n <div class=\"row gap-4 font-button-2 \">\n <button [class]=\"'datepicker_'+viewType \" teta-button view=\"ghost\" palette=\"text\"\n (click)=\"selectPicker('month')\"> {{getMothName(data.currentMonth)}}</button>\n <button [class]=\"'datepicker_'+viewType\" teta-button view=\"ghost\" palette=\"text\"\n (click)=\"selectPicker('year')\">{{data.currentYear}}</button>\n </div>\n <teta-button [square]=\"true\" [class]=\"'change-month-button datepicker_'+viewType\"\n (click)=\"changeMonth(data.currentMonth+1,data.currentYear)\"\n palette=\"text\"\n view=\"ghost\">\n <teta-icon name=\"arrowRightKey\"></teta-icon>\n </teta-button>\n </div>\n <div>\n <teta-day-picker [viewType]=\"viewType\" (selectDate)=\"selectDate($event)\" [locale]=\"locale\"\n [calendar]=\"calendar\"></teta-day-picker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"data.selectedPicker==='month'\">\n <teta-month-picker [localeMoths]=\"localeMonths\" [currentYear]=\"data.currentYear\" (changeYear)=\"setYear($event)\"\n [selectedMonth]=\"data.currentMonth\" [viewType]=\"viewType\" [locale]=\"locale\"\n (selectMonth)=\"selectMonth($event)\"></teta-month-picker>\n </ng-container>\n <ng-container *ngIf=\"data.selectedPicker==='year'\">\n <teta-year-picker [locale]=\"locale\" [viewType]=\"viewType\" (selectYear)=\"selectYear($event)\"\n [selectedYear]=\"data.currentYear\"></teta-year-picker>\n </ng-container>\n</div>\n\n", styles: [".change-month-button{-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square", "viewType", "size"] }, { kind: "component", type: i3.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: i4.DayPickerComponent, selector: "teta-day-picker", inputs: ["date", "calendar", "viewType", "range", "min", "max", "locale", "hoveredDate"], outputs: ["hoveredDateChange", "selectDate"] }, { kind: "component", type: i5.MonthPickerComponent, selector: "teta-month-picker", inputs: ["locale", "selectedMonth", "viewType", "currentYear", "localeMoths"], outputs: ["selectMonth", "changeYear"] }, { kind: "component", type: i6.YearPickerComponent, selector: "teta-year-picker", inputs: ["selectedYear", "viewType", "minMax", "locale"], outputs: ["selectYear"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DateCalendarComponent, decorators: [{
|
|
37
|
+
type: Component,
|
|
38
|
+
args: [{ selector: 'teta-date-calendar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"{currentMonth:currentMonth|async,currentYear:currentYear|async,selectedPicker:selectedPicker|async} as data\"\n class=\"datepicker-content overflow-y-auto\"\n>\n <ng-container *ngIf=\"data.selectedPicker==='day'\">\n <div class=\"padding-h-3 padding-v-2\">\n <div class=\"row align-center justify-content-between\">\n <teta-button [class]=\"'change-month-button datepicker_'+viewType\" [square]=\"true\"\n (click)=\"changeMonth(data.currentMonth-1,data.currentYear)\"\n palette=\"text\"\n view=\"ghost\">\n <teta-icon name=\"arrowLeftKey\"></teta-icon>\n </teta-button>\n <div class=\"row gap-4 font-button-2 \">\n <button [class]=\"'datepicker_'+viewType \" teta-button view=\"ghost\" palette=\"text\"\n (click)=\"selectPicker('month')\"> {{getMothName(data.currentMonth)}}</button>\n <button [class]=\"'datepicker_'+viewType\" teta-button view=\"ghost\" palette=\"text\"\n (click)=\"selectPicker('year')\">{{data.currentYear}}</button>\n </div>\n <teta-button [square]=\"true\" [class]=\"'change-month-button datepicker_'+viewType\"\n (click)=\"changeMonth(data.currentMonth+1,data.currentYear)\"\n palette=\"text\"\n view=\"ghost\">\n <teta-icon name=\"arrowRightKey\"></teta-icon>\n </teta-button>\n </div>\n <div>\n <teta-day-picker [viewType]=\"viewType\" (selectDate)=\"selectDate($event)\" [locale]=\"locale\"\n [calendar]=\"calendar\"></teta-day-picker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"data.selectedPicker==='month'\">\n <teta-month-picker [localeMoths]=\"localeMonths\" [currentYear]=\"data.currentYear\" (changeYear)=\"setYear($event)\"\n [selectedMonth]=\"data.currentMonth\" [viewType]=\"viewType\" [locale]=\"locale\"\n (selectMonth)=\"selectMonth($event)\"></teta-month-picker>\n </ng-container>\n <ng-container *ngIf=\"data.selectedPicker==='year'\">\n <teta-year-picker [locale]=\"locale\" [viewType]=\"viewType\" (selectYear)=\"selectYear($event)\"\n [selectedYear]=\"data.currentYear\"></teta-year-picker>\n </ng-container>\n</div>\n\n", styles: [".change-month-button{-webkit-user-select:none;user-select:none}\n"] }]
|
|
39
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { selectedDate: [{
|
|
40
|
+
type: Input
|
|
41
|
+
}], locale: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}], open: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}], viewType: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], min: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}], isDateNull: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}], max: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], setDate: [{
|
|
54
|
+
type: Output
|
|
55
|
+
}] } });
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RhdGUtcGlja2VyL2RhdGUtY2FsZW5kYXIvZGF0ZS1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RhdGUtcGlja2VyL2RhdGUtY2FsZW5kYXIvZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBUzNELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxZQUFZO0lBVWhDO0lBVFosWUFBWSxHQUEyQixJQUFJLElBQUksRUFBRSxDQUFDO0lBQ2xELE1BQU0sQ0FBUztJQUNmLElBQUksQ0FBVTtJQUNkLFFBQVEsQ0FBVztJQUNuQixHQUFHLENBQXlCO0lBQzVCLFVBQVUsQ0FBVTtJQUNwQixHQUFHLENBQXlCO0lBQzNCLE9BQU8sR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUMxRCxRQUFRLEdBQWUsRUFBRSxDQUFBO0lBQ2hDLFlBQXFCLElBQXVCO1FBQzFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQURRLFNBQUksR0FBSixJQUFJLENBQW1CO1FBRTFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBQyxTQUFTLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUNyQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNwRSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUMzQixNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxLQUFLLElBQUksSUFBSSxXQUFXLEtBQUssSUFBSSxDQUFDLEVBQ3RGLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDM0csQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7dUdBdEJVLHFCQUFxQjsyRkFBckIscUJBQXFCLG9RQ3hCbEMsK3pFQTBDQTs7MkZEbEJhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTt3R0FHdEMsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNJLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3ZpZXdUeXBlfSBmcm9tIFwiLi4vLi4vLi4vLi4vY29tbW9uL21vZGVsL3ZpZXctdHlwZS5tb2RlbFwiO1xuXG5pbXBvcnQge0Jhc2VDYWxlbmRhcn0gZnJvbSBcIi4uLy4uL2Jhc2UtY2FsZW5kYXJcIjtcbmltcG9ydCB7RGF5TW9kZWx9IGZyb20gXCIuLi8uLi9tb2RlbC9kYXktbW9kZWxcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIHRha2VXaGlsZX0gZnJvbSBcInJ4anNcIjtcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWRhdGUtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZUNhbGVuZGFyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNhbGVuZGFyIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3l7XG4gIEBJbnB1dCgpIHNlbGVjdGVkRGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciA9IG5ldyBEYXRlKCk7XG4gIEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nO1xuICBASW5wdXQoKSBvcGVuOiBib29sZWFuO1xuICBASW5wdXQoKSB2aWV3VHlwZTogdmlld1R5cGU7XG4gIEBJbnB1dCgpIG1pbjogRGF0ZSB8IHN0cmluZyB8IG51bWJlcjtcbiAgQElucHV0KCkgaXNEYXRlTnVsbDogYm9vbGVhbjtcbiAgQElucHV0KCkgbWF4OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyO1xuICBAT3V0cHV0KCkgc2V0RGF0ZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuICBwdWJsaWMgY2FsZW5kYXI6IERheU1vZGVsW10gPSBbXVxuICBjb25zdHJ1Y3RvcihvdmVycmlkZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKF9jZHIpXG4gICAgZGF5anMoKS5sb2NhbGUoJ3J1Jywge3dlZWtTdGFydDogMX0pO1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoLCB0aGlzLm1pbk1heF0pLnBpcGUoXG4gICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5hbGl2ZSksXG4gICAgICBmaWx0ZXIoKFtjdXJyZW50WWVhciwgY3VycmVudE1vbnRoXSkgPT4gY3VycmVudE1vbnRoICE9PSBudWxsICYmIGN1cnJlbnRZZWFyICE9PSBudWxsKSxcbiAgICAgIG1hcCgoW3llYXIsIG1vbnRoLCBtaW5NYXhdKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoZGF5anMobmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUpKS5sb2NhbGUodGhpcy5sb2NhbGUpLCB5ZWFyLCBtb250aCwgbWluTWF4KVxuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgdGhpcy5jYWxlbmRhciA9IF87XG4gICAgfSlcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIntjdXJyZW50TW9udGg6Y3VycmVudE1vbnRofGFzeW5jLGN1cnJlbnRZZWFyOmN1cnJlbnRZZWFyfGFzeW5jLHNlbGVjdGVkUGlja2VyOnNlbGVjdGVkUGlja2VyfGFzeW5jfSBhcyBkYXRhXCJcbiAgICAgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRlbnQgb3ZlcmZsb3cteS1hdXRvXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEuc2VsZWN0ZWRQaWNrZXI9PT0nZGF5J1wiPlxuICAgIDxkaXYgY2xhc3M9XCJwYWRkaW5nLWgtMyBwYWRkaW5nLXYtMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgPHRldGEtYnV0dG9uIFtjbGFzc109XCInY2hhbmdlLW1vbnRoLWJ1dHRvbiBkYXRlcGlja2VyXycrdmlld1R5cGVcIiBbc3F1YXJlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZU1vbnRoKGRhdGEuY3VycmVudE1vbnRoLTEsZGF0YS5jdXJyZW50WWVhcilcIlxuICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgdmlldz1cImdob3N0XCI+XG4gICAgICAgICAgPHRldGEtaWNvbiBuYW1lPVwiYXJyb3dMZWZ0S2V5XCI+PC90ZXRhLWljb24+XG4gICAgICAgIDwvdGV0YS1idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZ2FwLTQgZm9udC1idXR0b24tMiBcIj5cbiAgICAgICAgICA8YnV0dG9uIFtjbGFzc109XCInZGF0ZXBpY2tlcl8nK3ZpZXdUeXBlIFwiIHRldGEtYnV0dG9uIHZpZXc9XCJnaG9zdFwiIHBhbGV0dGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQaWNrZXIoJ21vbnRoJylcIj4ge3tnZXRNb3RoTmFtZShkYXRhLmN1cnJlbnRNb250aCl9fTwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gW2NsYXNzXT1cIidkYXRlcGlja2VyXycrdmlld1R5cGVcIiB0ZXRhLWJ1dHRvbiB2aWV3PVwiZ2hvc3RcIiBwYWxldHRlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UGlja2VyKCd5ZWFyJylcIj57e2RhdGEuY3VycmVudFllYXJ9fTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHRldGEtYnV0dG9uIFtzcXVhcmVdPVwidHJ1ZVwiIFtjbGFzc109XCInY2hhbmdlLW1vbnRoLWJ1dHRvbiBkYXRlcGlja2VyXycrdmlld1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZU1vbnRoKGRhdGEuY3VycmVudE1vbnRoKzEsZGF0YS5jdXJyZW50WWVhcilcIlxuICAgICAgICAgICAgICAgICAgICAgcGFsZXR0ZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgdmlldz1cImdob3N0XCI+XG4gICAgICAgICAgPHRldGEtaWNvbiBuYW1lPVwiYXJyb3dSaWdodEtleVwiPjwvdGV0YS1pY29uPlxuICAgICAgICA8L3RldGEtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8dGV0YS1kYXktcGlja2VyIFt2aWV3VHlwZV09XCJ2aWV3VHlwZVwiIChzZWxlY3REYXRlKT1cInNlbGVjdERhdGUoJGV2ZW50KVwiIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY2FsZW5kYXJdPVwiY2FsZW5kYXJcIj48L3RldGEtZGF5LXBpY2tlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEuc2VsZWN0ZWRQaWNrZXI9PT0nbW9udGgnXCI+XG4gICAgPHRldGEtbW9udGgtcGlja2VyIFtsb2NhbGVNb3Roc109XCJsb2NhbGVNb250aHNcIiBbY3VycmVudFllYXJdPVwiZGF0YS5jdXJyZW50WWVhclwiIChjaGFuZ2VZZWFyKT1cInNldFllYXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZE1vbnRoXT1cImRhdGEuY3VycmVudE1vbnRoXCIgW3ZpZXdUeXBlXT1cInZpZXdUeXBlXCIgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0TW9udGgpPVwic2VsZWN0TW9udGgoJGV2ZW50KVwiPjwvdGV0YS1tb250aC1waWNrZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5zZWxlY3RlZFBpY2tlcj09PSd5ZWFyJ1wiPlxuICAgIDx0ZXRhLXllYXItcGlja2VyIFtsb2NhbGVdPVwibG9jYWxlXCIgW3ZpZXdUeXBlXT1cInZpZXdUeXBlXCIgKHNlbGVjdFllYXIpPVwic2VsZWN0WWVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRZZWFyXT1cImRhdGEuY3VycmVudFllYXJcIj48L3RldGEteWVhci1waWNrZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbiJdfQ==
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
3
|
+
import { Align } from "../../../common/enum/align.enum";
|
|
4
|
+
import { VerticalAlign } from "../../../common/enum/vertical-align.enum";
|
|
5
|
+
import { DatePipe } from "@angular/common";
|
|
6
|
+
import { BasePicker } from "../base-picker";
|
|
7
|
+
import dayjs from "dayjs";
|
|
8
|
+
import { maskitoDateOptionsGenerator, maskitoDateTimeOptionsGenerator } from "@maskito/kit";
|
|
9
|
+
import { ReplaySubject } from 'rxjs';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/common";
|
|
12
|
+
import * as i2 from "../../dropdown/dropdown/dropdown.component";
|
|
13
|
+
import * as i3 from "../../dropdown/dropdown-head.directive";
|
|
14
|
+
import * as i4 from "../../dropdown/dropdown-content.directive";
|
|
15
|
+
import * as i5 from "@angular/forms";
|
|
16
|
+
import * as i6 from "@maskito/angular";
|
|
17
|
+
import * as i7 from "../../icon/icon/icon.component";
|
|
18
|
+
import * as i8 from "../../input/input/input.component";
|
|
19
|
+
import * as i9 from "./date-calendar/date-calendar.component";
|
|
20
|
+
export const DATE_PICKER_CONTROL_VALUE_ACCESSOR = {
|
|
21
|
+
provide: NG_VALUE_ACCESSOR,
|
|
22
|
+
useExisting: forwardRef(() => DatePickerComponent),
|
|
23
|
+
multi: true,
|
|
24
|
+
};
|
|
25
|
+
export class DatePickerComponent extends BasePicker {
|
|
26
|
+
_elementRef;
|
|
27
|
+
_cdr;
|
|
28
|
+
datePipe;
|
|
29
|
+
date = null;
|
|
30
|
+
locale = 'ru';
|
|
31
|
+
showTime = false;
|
|
32
|
+
minDate = null;
|
|
33
|
+
maxDate = null;
|
|
34
|
+
invalid = false;
|
|
35
|
+
disabled = false;
|
|
36
|
+
align = Align.left;
|
|
37
|
+
verticalAlign = VerticalAlign.auto;
|
|
38
|
+
viewType = 'rounded';
|
|
39
|
+
appendToBody;
|
|
40
|
+
backdrop;
|
|
41
|
+
allowNull = false;
|
|
42
|
+
firstDayOfWeek = 1;
|
|
43
|
+
disabledDates;
|
|
44
|
+
disabledPeriods;
|
|
45
|
+
disabledDays;
|
|
46
|
+
minYearDate;
|
|
47
|
+
maxYearDate;
|
|
48
|
+
input;
|
|
49
|
+
selectDate = new EventEmitter();
|
|
50
|
+
selectedDate = new ReplaySubject(1);
|
|
51
|
+
mask = '';
|
|
52
|
+
constructor(_elementRef, _cdr, datePipe) {
|
|
53
|
+
super(_elementRef, _cdr, datePipe);
|
|
54
|
+
this._elementRef = _elementRef;
|
|
55
|
+
this._cdr = _cdr;
|
|
56
|
+
this.datePipe = datePipe;
|
|
57
|
+
}
|
|
58
|
+
ngOnInit() {
|
|
59
|
+
if (!this.date) {
|
|
60
|
+
this.setDate(this.allowNull ? null : new Date());
|
|
61
|
+
this.date = this.allowNull ? null : new Date();
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
this.setDate(new Date(this.date));
|
|
65
|
+
}
|
|
66
|
+
this.prepareInput();
|
|
67
|
+
}
|
|
68
|
+
prepareInput() {
|
|
69
|
+
const str = this.date ? this.getLocaleString(this.date) : '';
|
|
70
|
+
let option;
|
|
71
|
+
const setMinMax = () => {
|
|
72
|
+
if (this.minDate) {
|
|
73
|
+
option.min = dayjs(new Date(this.minDate)).startOf('day');
|
|
74
|
+
}
|
|
75
|
+
if (this.maxDate) {
|
|
76
|
+
option.max = dayjs(new Date(this.maxDate)).endOf('day');
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
if (this.showTime) {
|
|
80
|
+
this.mask = 'dd.mm.yyyy, hh:mm';
|
|
81
|
+
option = {
|
|
82
|
+
dateMode: 'dd/mm/yyyy',
|
|
83
|
+
timeMode: 'HH:MM',
|
|
84
|
+
dateSeparator: '.',
|
|
85
|
+
};
|
|
86
|
+
setMinMax();
|
|
87
|
+
this.maskitoOptions = maskitoDateTimeOptionsGenerator(option);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
this.mask = 'dd.mm.yyyy';
|
|
91
|
+
option = {
|
|
92
|
+
mode: 'dd/mm/yyyy',
|
|
93
|
+
separator: '.',
|
|
94
|
+
};
|
|
95
|
+
setMinMax();
|
|
96
|
+
this.maskitoOptions = maskitoDateOptionsGenerator(option);
|
|
97
|
+
}
|
|
98
|
+
this.changePlaceholder(str);
|
|
99
|
+
}
|
|
100
|
+
onBlur() {
|
|
101
|
+
if (this.allowNull && this.inputText.trim() === '') {
|
|
102
|
+
this.setDate(null);
|
|
103
|
+
this.emitValue(null);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
const val = this.inputText.split(',');
|
|
107
|
+
const { day, year, month } = this.getDateFromStr(val[0]);
|
|
108
|
+
const { mins, hours } = this.getTimeFromStr(val[1]);
|
|
109
|
+
if (day && year && month) {
|
|
110
|
+
let date = new Date(year, month - 1, day);
|
|
111
|
+
if (this.showTime) {
|
|
112
|
+
date = new Date(date.setHours(hours || 0, mins || 0));
|
|
113
|
+
}
|
|
114
|
+
this.changeSelectedDate(this.getAvailableDate(this.minDate, this.maxDate, date));
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
this.setDate(this.date);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
setDate(date) {
|
|
122
|
+
if (!date && this.allowNull) {
|
|
123
|
+
this.inputText = '';
|
|
124
|
+
this.changePlaceholder('');
|
|
125
|
+
this.selectedDate.next(new Date(this.minDate || new Date()));
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
this.inputText = this.getLocaleString(date);
|
|
129
|
+
this.changePlaceholder(this.getLocaleString(date));
|
|
130
|
+
this.selectedDate.next(date);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
onChange(date) {
|
|
134
|
+
}
|
|
135
|
+
registerOnChange(fn) {
|
|
136
|
+
this.onChange = fn;
|
|
137
|
+
}
|
|
138
|
+
registerOnTouched(fn) {
|
|
139
|
+
}
|
|
140
|
+
writeValue(obj) {
|
|
141
|
+
if (obj) {
|
|
142
|
+
this.date = new Date(obj);
|
|
143
|
+
this.setDate(new Date(this.date));
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
if (this.allowNull) {
|
|
147
|
+
this.date = null;
|
|
148
|
+
this.selectedDate.next(null);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
this.date = this.minDate || new Date();
|
|
152
|
+
this.selectedDate.next(this.minDate || new Date());
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
|
|
157
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: DatePickerComponent, selector: "teta-date-picker", inputs: { date: "date", locale: "locale", showTime: "showTime", minDate: "minDate", maxDate: "maxDate", invalid: "invalid", disabled: "disabled", align: "align", verticalAlign: "verticalAlign", viewType: "viewType", appendToBody: "appendToBody", backdrop: "backdrop", allowNull: "allowNull", firstDayOfWeek: "firstDayOfWeek", disabledDates: "disabledDates", disabledPeriods: "disabledPeriods", disabledDays: "disabledDays", minYearDate: "minYearDate", maxYearDate: "maxYearDate" }, outputs: { selectDate: "selectDate" }, providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR, DatePipe], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<teta-dropdown *ngIf=\"{selectedDate:selectedDate|async}as data\" [appendToBody]=\"appendToBody\" [backdrop]=\"backdrop\"\n [open]=\"open\" (openChange)=\"openChange($event)\" [viewType]=\"viewType\"\n [disabled]=\"disabled\" [verticalAlign]=\"verticalAlign\" [align]=\"align\"\n [autoCloseIgnore]=\"['esc', 'inside','enter']\">\n <div tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_'+viewType\"\n [ngClass]=\"{'datepicker-head_invalid':invalid,'datepicker-head_disabled':disabled}\">\n <teta-input class=\"row row_auto flex\">\n <div [class]=\"'row_auto row datepicker_'+viewType\">\n <div class=\"row position-relative font-body-3 align-center\">\n <input [ngClass]=\"{'color-text-90':!disabled}\" [disabled]=\"disabled\" #input style=\"z-index: 1\" class=\"border-0\" (keydown)=\"checkEnter($event)\" [(ngModel)]=\"inputText\" (ngModelChange)=\"changeInput($event)\"\n [maskito]=\"maskitoOptions\">\n <div (click)=\"input.focus()\" *ngIf=\"data.selectedDate||allowNull\" class=\"position-absolute color-text-10\"\n style=\"top:-0.3px;cursor: text;user-select: none\">{{placeholder}}</div>\n </div>\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent class=\"scrollable\" (click)=\"$event.preventDefault()\">\n <ng-container *ngIf=\"open\">\n <teta-date-calendar [isDateNull]=\"date===null\" [open]=\"open\" [max]=\"maxDate\" [min]=\"minDate\"\n (setDate)=\"changeSelectedDate($event)\"\n [selectedDate]=\"data.selectedDate\"\n [viewType]=\"viewType\" [locale]=\"locale\"></teta-date-calendar>\n </ng-container>\n\n </div>\n </teta-dropdown>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: i3.DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: i4.DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: i6.MaskitoCva, selector: "input[maskito], textarea[maskito]", inputs: ["maskito"] }, { kind: "component", type: i7.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: i8.InputComponent, selector: "teta-input", inputs: ["label", "hint", "viewType", "horizontal", "required"] }, { kind: "component", type: i9.DateCalendarComponent, selector: "teta-date-calendar", inputs: ["selectedDate", "locale", "open", "viewType", "min", "isDateNull", "max"], outputs: ["setDate"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
158
|
+
}
|
|
159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
160
|
+
type: Component,
|
|
161
|
+
args: [{ selector: 'teta-date-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [DATE_PICKER_CONTROL_VALUE_ACCESSOR, DatePipe], template: "<teta-dropdown *ngIf=\"{selectedDate:selectedDate|async}as data\" [appendToBody]=\"appendToBody\" [backdrop]=\"backdrop\"\n [open]=\"open\" (openChange)=\"openChange($event)\" [viewType]=\"viewType\"\n [disabled]=\"disabled\" [verticalAlign]=\"verticalAlign\" [align]=\"align\"\n [autoCloseIgnore]=\"['esc', 'inside','enter']\">\n <div tetaDropdownHead\n [class]=\"'datepicker-head font-body-3 gap-8 datepicker_'+viewType\"\n [ngClass]=\"{'datepicker-head_invalid':invalid,'datepicker-head_disabled':disabled}\">\n <teta-input class=\"row row_auto flex\">\n <div [class]=\"'row_auto row datepicker_'+viewType\">\n <div class=\"row position-relative font-body-3 align-center\">\n <input [ngClass]=\"{'color-text-90':!disabled}\" [disabled]=\"disabled\" #input style=\"z-index: 1\" class=\"border-0\" (keydown)=\"checkEnter($event)\" [(ngModel)]=\"inputText\" (ngModelChange)=\"changeInput($event)\"\n [maskito]=\"maskitoOptions\">\n <div (click)=\"input.focus()\" *ngIf=\"data.selectedDate||allowNull\" class=\"position-absolute color-text-10\"\n style=\"top:-0.3px;cursor: text;user-select: none\">{{placeholder}}</div>\n </div>\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </div>\n </teta-input>\n </div>\n <div tetaDropdownContent class=\"scrollable\" (click)=\"$event.preventDefault()\">\n <ng-container *ngIf=\"open\">\n <teta-date-calendar [isDateNull]=\"date===null\" [open]=\"open\" [max]=\"maxDate\" [min]=\"minDate\"\n (setDate)=\"changeSelectedDate($event)\"\n [selectedDate]=\"data.selectedDate\"\n [viewType]=\"viewType\" [locale]=\"locale\"></teta-date-calendar>\n </ng-container>\n\n </div>\n </teta-dropdown>\n" }]
|
|
162
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.DatePipe }]; }, propDecorators: { date: [{
|
|
163
|
+
type: Input
|
|
164
|
+
}], locale: [{
|
|
165
|
+
type: Input
|
|
166
|
+
}], showTime: [{
|
|
167
|
+
type: Input
|
|
168
|
+
}], minDate: [{
|
|
169
|
+
type: Input
|
|
170
|
+
}], maxDate: [{
|
|
171
|
+
type: Input
|
|
172
|
+
}], invalid: [{
|
|
173
|
+
type: Input
|
|
174
|
+
}], disabled: [{
|
|
175
|
+
type: Input
|
|
176
|
+
}], align: [{
|
|
177
|
+
type: Input
|
|
178
|
+
}], verticalAlign: [{
|
|
179
|
+
type: Input
|
|
180
|
+
}], viewType: [{
|
|
181
|
+
type: Input
|
|
182
|
+
}], appendToBody: [{
|
|
183
|
+
type: Input
|
|
184
|
+
}], backdrop: [{
|
|
185
|
+
type: Input
|
|
186
|
+
}], allowNull: [{
|
|
187
|
+
type: Input
|
|
188
|
+
}], firstDayOfWeek: [{
|
|
189
|
+
type: Input
|
|
190
|
+
}], disabledDates: [{
|
|
191
|
+
type: Input
|
|
192
|
+
}], disabledPeriods: [{
|
|
193
|
+
type: Input
|
|
194
|
+
}], disabledDays: [{
|
|
195
|
+
type: Input
|
|
196
|
+
}], minYearDate: [{
|
|
197
|
+
type: Input
|
|
198
|
+
}], maxYearDate: [{
|
|
199
|
+
type: Input
|
|
200
|
+
}], input: [{
|
|
201
|
+
type: ViewChild,
|
|
202
|
+
args: ['input']
|
|
203
|
+
}], selectDate: [{
|
|
204
|
+
type: Output
|
|
205
|
+
}] } });
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFBRSxVQUFVLEVBQ3hCLEtBQUssRUFFTCxNQUFNLEVBQUUsU0FBUyxFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXVCLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUMsMkJBQTJCLEVBQUUsK0JBQStCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDMUYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7QUFHbkMsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQVE7SUFDckQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQVdGLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxVQUFVO0lBNEI1QjtJ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QUFTO3NCQUFqQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVjLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDUixVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LCBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3ZpZXdUeXBlfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL21vZGVsL3ZpZXctdHlwZS5tb2RlbFwiO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHtBbGlnbn0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL2FsaWduLmVudW1cIjtcbmltcG9ydCB7VmVydGljYWxBbGlnbn0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9lbnVtL3ZlcnRpY2FsLWFsaWduLmVudW1cIjtcbmltcG9ydCB7RGF0ZVBpcGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7QmFzZVBpY2tlcn0gZnJvbSBcIi4uL2Jhc2UtcGlja2VyXCI7XG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XG5pbXBvcnQge21hc2tpdG9EYXRlT3B0aW9uc0dlbmVyYXRvciwgbWFza2l0b0RhdGVUaW1lT3B0aW9uc0dlbmVyYXRvcn0gZnJvbSBcIkBtYXNraXRvL2tpdFwiO1xuaW1wb3J0IHtSZXBsYXlTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RGF0ZVBlcmlvZH0gZnJvbSBcIi4uL21vZGVsL2RhdGUtcGVyaW9kXCI7XG5cbmV4cG9ydCBjb25zdCBEQVRFX1BJQ0tFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUGlja2VyQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW0RBVEVfUElDS0VSX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IsIERhdGVQaXBlXVxuXG59KVxuXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIEJhc2VQaWNrZXIgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgZGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciA9IG51bGw7XG4gIEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nID0gJ3J1JztcbiAgQElucHV0KCkgc2hvd1RpbWU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbWluRGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciA9IG51bGw7XG4gIEBJbnB1dCgpIG1heERhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgPSBudWxsO1xuICBASW5wdXQoKSBpbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFsaWduOiBBbGlnbiA9IEFsaWduLmxlZnQ7XG4gIEBJbnB1dCgpIHZlcnRpY2FsQWxpZ246IFZlcnRpY2FsQWxpZ24gPSBWZXJ0aWNhbEFsaWduLmF1dG87XG4gIEBJbnB1dCgpIHZpZXdUeXBlOiB2aWV3VHlwZSA9ICdyb3VuZGVkJ1xuICBASW5wdXQoKSBhcHBlbmRUb0JvZHk6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGJhY2tkcm9wOiBib29sZWFuO1xuICBASW5wdXQoKSBhbGxvd051bGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBmaXJzdERheU9mV2VlayA9IDE7XG4gIEBJbnB1dCgpIGRpc2FibGVkRGF0ZXM6IERhdGVbXTtcbiAgQElucHV0KCkgZGlzYWJsZWRQZXJpb2RzOiBEYXRlUGVyaW9kW107XG4gIEBJbnB1dCgpIGRpc2FibGVkRGF5czogbnVtYmVyW107XG4gIEBJbnB1dCgpIG1pblllYXJEYXRlOiBEYXRlO1xuICBASW5wdXQoKSBtYXhZZWFyRGF0ZTogRGF0ZTtcblxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xuICBAT3V0cHV0KCkgc2VsZWN0RGF0ZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpXG4gIHB1YmxpYyBzZWxlY3RlZERhdGU6IFJlcGxheVN1YmplY3Q8RGF0ZSB8IHN0cmluZyB8IG51bWJlcj4gPSBuZXcgUmVwbGF5U3ViamVjdDxEYXRlIHwgc3RyaW5nIHwgbnVtYmVyPigxKVxuICBwdWJsaWMgbWFzazogc3RyaW5nID0gJyc7XG5cblxuICBjb25zdHJ1Y3RvcihvdmVycmlkZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgb3ZlcnJpZGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIG92ZXJyaWRlIGRhdGVQaXBlOiBEYXRlUGlwZSkge1xuICAgIHN1cGVyKF9lbGVtZW50UmVmLCBfY2RyLCBkYXRlUGlwZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0ZSkge1xuICAgICAgdGhpcy5zZXREYXRlKHRoaXMuYWxsb3dOdWxsID8gbnVsbCA6IG5ldyBEYXRlKCkpXG4gICAgICB0aGlzLmRhdGUgPSB0aGlzLmFsbG93TnVsbCA/IG51bGwgOiBuZXcgRGF0ZSgpXG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXREYXRlKG5ldyBEYXRlKHRoaXMuZGF0ZSkpXG4gICAgfVxuICAgIHRoaXMucHJlcGFyZUlucHV0KClcbiAgfVxuXG4gIHByZXBhcmVJbnB1dCgpIHtcbiAgICBjb25zdCBzdHIgPSB0aGlzLmRhdGUgPyB0aGlzLmdldExvY2FsZVN0cmluZyh0aGlzLmRhdGUpIDogJydcbiAgICBsZXQgb3B0aW9uO1xuICAgIGNvbnN0IHNldE1pbk1heCA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLm1pbkRhdGUpIHtcbiAgICAgICAgb3B0aW9uLm1pbiA9IGRheWpzKG5ldyBEYXRlKHRoaXMubWluRGF0ZSkpLnN0YXJ0T2YoJ2RheScpXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5tYXhEYXRlKSB7XG4gICAgICAgIG9wdGlvbi5tYXggPSBkYXlqcyhuZXcgRGF0ZSh0aGlzLm1heERhdGUpKS5lbmRPZignZGF5JylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd1RpbWUpIHtcbiAgICAgIHRoaXMubWFzayA9ICdkZC5tbS55eXl5LCBoaDptbSc7XG4gICAgICBvcHRpb24gPSB7XG4gICAgICAgIGRhdGVNb2RlOiAnZGQvbW0veXl5eScsXG4gICAgICAgIHRpbWVNb2RlOiAnSEg6TU0nLFxuICAgICAgICBkYXRlU2VwYXJhdG9yOiAnLicsXG4gICAgICB9XG4gICAgICBzZXRNaW5NYXgoKVxuICAgICAgdGhpcy5tYXNraXRvT3B0aW9ucyA9IG1hc2tpdG9EYXRlVGltZU9wdGlvbnNHZW5lcmF0b3Iob3B0aW9uKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hc2sgPSAnZGQubW0ueXl5eSc7XG4gICAgICBvcHRpb24gPSB7XG4gICAgICAgIG1vZGU6ICdkZC9tbS95eXl5JyxcbiAgICAgICAgc2VwYXJhdG9yOiAnLicsXG4gICAgICB9XG4gICAgICBzZXRNaW5NYXgoKVxuICAgICAgdGhpcy5tYXNraXRvT3B0aW9ucyA9IG1hc2tpdG9EYXRlT3B0aW9uc0dlbmVyYXRvcihvcHRpb24pXG4gICAgfVxuICAgIHRoaXMuY2hhbmdlUGxhY2Vob2xkZXIoc3RyKVxuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIGlmICh0aGlzLmFsbG93TnVsbCAmJiB0aGlzLmlucHV0VGV4dC50cmltKCkgPT09ICcnKSB7XG4gICAgICB0aGlzLnNldERhdGUobnVsbClcbiAgICAgIHRoaXMuZW1pdFZhbHVlKG51bGwpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbCA9IHRoaXMuaW5wdXRUZXh0LnNwbGl0KCcsJyk7XG4gICAgICBjb25zdCB7ZGF5LCB5ZWFyLCBtb250aH0gPSB0aGlzLmdldERhdGVGcm9tU3RyKHZhbFswXSk7XG4gICAgICBjb25zdCB7bWlucywgaG91cnN9ID0gdGhpcy5nZXRUaW1lRnJvbVN0cih2YWxbMV0pO1xuICAgICAgaWYgKGRheSAmJiB5ZWFyICYmIG1vbnRoKSB7XG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXkpXG4gICAgICAgIGlmICh0aGlzLnNob3dUaW1lKSB7XG4gICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuc2V0SG91cnMoaG91cnMgfHwgMCwgbWlucyB8fCAwKSlcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5nZVNlbGVjdGVkRGF0ZSh0aGlzLmdldEF2YWlsYWJsZURhdGUodGhpcy5taW5EYXRlLCB0aGlzLm1heERhdGUsIGRhdGUpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXREYXRlKHRoaXMuZGF0ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBzZXREYXRlKGRhdGUpIHtcbiAgICBpZiAoIWRhdGUgJiYgdGhpcy5hbGxvd051bGwpIHtcbiAgICAgIHRoaXMuaW5wdXRUZXh0ID0gJydcbiAgICAgIHRoaXMuY2hhbmdlUGxhY2Vob2xkZXIoJycpXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5uZXh0KG5ldyBEYXRlKHRoaXMubWluRGF0ZSB8fCBuZXcgRGF0ZSgpKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLmdldExvY2FsZVN0cmluZyhkYXRlKVxuICAgICAgdGhpcy5jaGFuZ2VQbGFjZWhvbGRlcih0aGlzLmdldExvY2FsZVN0cmluZyhkYXRlKSlcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLm5leHQoZGF0ZSlcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZShkYXRlOiBEYXRlKSB7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoZGF0ZTogRGF0ZSkgPT4gYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICB9XG5cbiAgd3JpdGVWYWx1ZShvYmo6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAob2JqKSB7XG4gICAgICB0aGlzLmRhdGUgPSBuZXcgRGF0ZShvYmopXG4gICAgICB0aGlzLnNldERhdGUobmV3IERhdGUodGhpcy5kYXRlKSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuYWxsb3dOdWxsKSB7XG4gICAgICAgIHRoaXMuZGF0ZSA9IG51bGxcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUubmV4dChudWxsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kYXRlID0gdGhpcy5taW5EYXRlIHx8IG5ldyBEYXRlKClcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUubmV4dCh0aGlzLm1pbkRhdGUgfHwgbmV3IERhdGUoKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG5cbn1cbiIsIjx0ZXRhLWRyb3Bkb3duICpuZ0lmPVwie3NlbGVjdGVkRGF0ZTpzZWxlY3RlZERhdGV8YXN5bmN9YXMgZGF0YVwiIFthcHBlbmRUb0JvZHldPVwiYXBwZW5kVG9Cb2R5XCIgW2JhY2tkcm9wXT1cImJhY2tkcm9wXCJcbiAgICAgICAgICAgICAgICAgW29wZW5dPVwib3BlblwiIChvcGVuQ2hhbmdlKT1cIm9wZW5DaGFuZ2UoJGV2ZW50KVwiIFt2aWV3VHlwZV09XCJ2aWV3VHlwZVwiXG4gICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFt2ZXJ0aWNhbEFsaWduXT1cInZlcnRpY2FsQWxpZ25cIiBbYWxpZ25dPVwiYWxpZ25cIlxuICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlSWdub3JlXT1cIlsnZXNjJywgJ2luc2lkZScsJ2VudGVyJ11cIj5cbiAgICA8ZGl2IHRldGFEcm9wZG93bkhlYWRcbiAgICAgICAgIFtjbGFzc109XCInZGF0ZXBpY2tlci1oZWFkIGZvbnQtYm9keS0zIGdhcC04ICBkYXRlcGlja2VyXycrdmlld1R5cGVcIlxuICAgICAgICAgW25nQ2xhc3NdPVwieydkYXRlcGlja2VyLWhlYWRfaW52YWxpZCc6aW52YWxpZCwnZGF0ZXBpY2tlci1oZWFkX2Rpc2FibGVkJzpkaXNhYmxlZH1cIj5cbiAgICAgIDx0ZXRhLWlucHV0IGNsYXNzPVwicm93IHJvd19hdXRvIGZsZXhcIj5cbiAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ3Jvd19hdXRvIHJvdyBkYXRlcGlja2VyXycrdmlld1R5cGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHBvc2l0aW9uLXJlbGF0aXZlIGZvbnQtYm9keS0zIGFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGlucHV0IFtuZ0NsYXNzXT1cInsnY29sb3ItdGV4dC05MCc6IWRpc2FibGVkfVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiICNpbnB1dCBzdHlsZT1cInotaW5kZXg6IDFcIiBjbGFzcz1cImJvcmRlci0wXCIgKGtleWRvd24pPVwiY2hlY2tFbnRlcigkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIiAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICBbbWFza2l0b109XCJtYXNraXRvT3B0aW9uc1wiPlxuICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiaW5wdXQuZm9jdXMoKVwiICpuZ0lmPVwiZGF0YS5zZWxlY3RlZERhdGV8fGFsbG93TnVsbFwiIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgY29sb3ItdGV4dC0xMFwiXG4gICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOi0wLjNweDtjdXJzb3I6IHRleHQ7dXNlci1zZWxlY3Q6IG5vbmVcIj57e3BsYWNlaG9sZGVyfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8dGV0YS1pY29uIFtuYW1lXT1cIidjYWxlbmRhcidcIj48L3RldGEtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RldGEtaW5wdXQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiB0ZXRhRHJvcGRvd25Db250ZW50IGNsYXNzPVwic2Nyb2xsYWJsZVwiIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wZW5cIj5cbiAgICAgICAgPHRldGEtZGF0ZS1jYWxlbmRhciBbaXNEYXRlTnVsbF09XCJkYXRlPT09bnVsbFwiIFtvcGVuXT1cIm9wZW5cIiBbbWF4XT1cIm1heERhdGVcIiBbbWluXT1cIm1pbkRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAoc2V0RGF0ZSk9XCJjaGFuZ2VTZWxlY3RlZERhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZERhdGVdPVwiZGF0YS5zZWxlY3RlZERhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbdmlld1R5cGVdPVwidmlld1R5cGVcIiBbbG9jYWxlXT1cImxvY2FsZVwiPjwvdGV0YS1kYXRlLWNhbGVuZGFyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L2Rpdj5cbiAgPC90ZXRhLWRyb3Bkb3duPlxuIl19
|