@tetacom/ng-components 1.0.148 → 1.0.149
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 +49 -521
- package/assets/file-icons.svg +0 -1
- package/assets/icons.svg +205 -138
- package/common/model/view-type.model.d.ts +1 -0
- package/component/accordion/accordion-item/accordion-item.component.d.ts +4 -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 +4 -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 -15
- 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/month-picker/month-picker.component.d.ts +16 -50
- package/component/date-picker/public-api.d.ts +5 -4
- 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/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-base.d.ts +3 -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.module.d.ts +4 -5
- package/component/icon/public-api.d.ts +1 -0
- package/component/input/input/input.component.d.ts +3 -1
- package/component/message/model/message.d.ts +3 -0
- package/component/public-api.d.ts +2 -0
- package/component/select/select/select.component.d.ts +4 -1
- package/component/switch/switch/switch.component.d.ts +4 -1
- package/directive/hint/hint.directive.d.ts +3 -1
- package/esm2020/common/model/view-type.model.mjs +2 -0
- package/esm2020/component/accordion/accordion/accordion.component.mjs +3 -2
- package/esm2020/component/accordion/accordion-head/accordion-head.component.mjs +3 -2
- package/esm2020/component/accordion/accordion-item/accordion-item.component.mjs +13 -3
- package/esm2020/component/avatar/avatar/avatar.component.mjs +57 -0
- package/esm2020/component/avatar/avatar.module.mjs +28 -0
- package/esm2020/component/avatar/model/avatar-color.enum.mjs +22 -0
- package/esm2020/component/avatar/public-api.mjs +3 -0
- package/esm2020/component/button/button/button.component.mjs +18 -3
- package/esm2020/component/checkbox/checkbox/checkbox.component.mjs +6 -3
- package/esm2020/component/date-picker/base-calendar.mjs +99 -0
- package/esm2020/component/date-picker/base-picker.mjs +102 -0
- package/esm2020/component/date-picker/date-picker/date-calendar/date-calendar.component.mjs +49 -0
- package/esm2020/component/date-picker/date-picker/date-picker.component.mjs +141 -234
- package/esm2020/component/date-picker/date-picker.module.mjs +41 -41
- package/esm2020/component/date-picker/date-range/date-range.component.mjs +211 -0
- package/esm2020/component/date-picker/date-range/range-calendar/range-calendar.component.mjs +108 -0
- package/esm2020/component/date-picker/day-picker/day-item/day-item.component.mjs +15 -0
- package/esm2020/component/date-picker/day-picker/day-picker.component.mjs +113 -0
- package/esm2020/component/date-picker/model/from-to.model.mjs +2 -0
- package/esm2020/component/date-picker/model/min-max-date.model.mjs +2 -0
- package/esm2020/component/date-picker/month-picker/month-picker.component.mjs +33 -236
- package/esm2020/component/date-picker/public-api.mjs +6 -5
- package/esm2020/component/date-picker/year-picker/scroll-to-selected-year.directive.mjs +26 -0
- package/esm2020/component/date-picker/year-picker/year-picker.component.mjs +48 -0
- package/esm2020/component/divider/divider/divider.component.mjs +18 -0
- package/esm2020/component/divider/divider.module.mjs +20 -0
- package/esm2020/component/divider/public-api.mjs +3 -0
- package/esm2020/component/dropdown/dropdown/dropdown.component.mjs +3 -2
- package/esm2020/component/dropdown/dropdown-base.mjs +6 -2
- package/esm2020/component/dropdown/dropdown.directive.mjs +1 -1
- package/esm2020/component/expand-card/expand-card/expand-card.component.mjs +1 -1
- package/esm2020/component/expand-card/expand-item/expand-item.component.mjs +1 -1
- package/esm2020/component/expand-panel/expand-panel/expand-panel.component.mjs +1 -1
- package/esm2020/component/file-upload/file-upload-area/file-upload-area.component.mjs +1 -1
- package/esm2020/component/filter/date-filter/date-filter.component.mjs +1 -1
- package/esm2020/component/filter/list-filter/list-filter.component.mjs +1 -1
- package/esm2020/component/filter/numeric-filter/numeric-filter.component.mjs +1 -1
- package/esm2020/component/filter/string-filter/string-filter.component.mjs +1 -1
- package/esm2020/component/icon/icon-file/icon-file.component.mjs +20 -6
- package/esm2020/component/icon/icon-file/icon-file.module.mjs +28 -0
- package/esm2020/component/icon/icon.module.mjs +1 -6
- package/esm2020/component/icon/public-api.mjs +2 -1
- package/esm2020/component/input/input/input.component.mjs +6 -3
- package/esm2020/component/input/input.module.mjs +1 -1
- package/esm2020/component/input/text-field/text-field.component.mjs +3 -3
- package/esm2020/component/message/message/message.component.mjs +4 -3
- package/esm2020/component/message/message-host/message-host.component.mjs +1 -1
- package/esm2020/component/message/model/message.mjs +2 -1
- package/esm2020/component/modal/dialog/dialog.component.mjs +1 -1
- package/esm2020/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +2 -2
- package/esm2020/component/public-api.mjs +4 -1
- package/esm2020/component/select/select/select.component.mjs +9 -4
- package/esm2020/component/switch/switch/switch.component.mjs +19 -7
- package/esm2020/component/table/default/boolean-cell/boolean-cell.component.mjs +1 -1
- package/esm2020/component/table/default/date-cell/date-cell.component.mjs +1 -1
- package/esm2020/component/table/default/date-time-cell/date-time-cell.component.mjs +1 -1
- package/esm2020/component/table/default/default-head-cell/default-head-cell.component.mjs +1 -1
- package/esm2020/component/table/default/list-cell/list-cell.component.mjs +1 -1
- package/esm2020/component/table/default/string-cell/string-cell.component.mjs +1 -1
- package/esm2020/component/table/selection-cell/selection-cell.component.mjs +1 -1
- package/esm2020/component/table/selection-head-cell/selection-head-cell.component.mjs +1 -1
- package/esm2020/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.mjs +1 -1
- package/esm2020/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.mjs +1 -1
- package/esm2020/component/theme-switch/theme-switch/theme-switch.component.mjs +1 -1
- package/esm2020/directive/hint/hint.directive.mjs +6 -3
- package/esm2020/locale/en.mjs +3 -1
- package/esm2020/locale/ru.mjs +3 -1
- package/esm2020/locale/teta-localisation.mjs +1 -1
- package/fesm2015/tetacom-ng-components.mjs +2898 -3015
- package/fesm2015/tetacom-ng-components.mjs.map +1 -1
- package/fesm2020/tetacom-ng-components.mjs +5440 -5565
- package/fesm2020/tetacom-ng-components.mjs.map +1 -1
- package/locale/teta-localisation.d.ts +2 -0
- package/package.json +3 -2
- package/style/accordion.scss +28 -6
- package/style/assembly-library.scss +4 -1
- package/style/badge.scss +28 -0
- package/style/bottombar.scss +5 -0
- package/style/button.scss +16 -12
- 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 +9 -160
- package/style/presets/font-presets.scss +26 -25
- package/style/presets/view-types.scss +15 -0
- package/style/progress.scss +3 -3
- package/style/radio.scss +21 -7
- 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/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/component/date-picker/day-select/day-select.component.d.ts +0 -51
- package/component/date-picker/model/date-picker-mode.enum.d.ts +0 -5
- 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/component/date-picker/day-select/day-select.component.mjs +0 -184
- package/esm2020/component/date-picker/model/date-picker-mode.enum.mjs +0 -7
- package/esm2020/component/date-picker/month-select/month-select.component.mjs +0 -148
- 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/pipe/prepend-zero/prepend-zero.module.mjs +0 -18
- package/esm2020/pipe/prepend-zero/prepend-zero.pipe.mjs +0 -21
- package/pipe/prepend-zero/prepend-zero.module.d.ts +0 -8
- package/pipe/prepend-zero/prepend-zero.pipe.d.ts +0 -7
- 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
|
@@ -13,6 +13,7 @@ export class CheckboxComponent {
|
|
|
13
13
|
this.cdr = cdr;
|
|
14
14
|
this.tabindex = 0;
|
|
15
15
|
this.palette = 'primary';
|
|
16
|
+
this.labelPosition = "right";
|
|
16
17
|
/**
|
|
17
18
|
* Значение
|
|
18
19
|
*/
|
|
@@ -100,10 +101,10 @@ export class CheckboxComponent {
|
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
103
|
CheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: CheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
103
|
-
CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: CheckboxComponent, selector: "teta-checkbox", inputs: { class: "class", palette: "palette", noLabel: "noLabel", disabled: "disabled", value: "value", binary: "binary", allowNull: "allowNull" }, host: { listeners: { "click": "changeValue()" }, properties: { "attr.tabindex": "this.tabindex", "class": "this.getClass", "class.checkbox_disabled": "this.disabled" } }, providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: "<div class=\"checkbox__tick\" [class.checkbox__tick_active]=\"checked != false\">\n
|
|
104
|
+
CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: CheckboxComponent, selector: "teta-checkbox", inputs: { class: "class", palette: "palette", noLabel: "noLabel", disabled: "disabled", value: "value", binary: "binary", labelPosition: "labelPosition", allowNull: "allowNull" }, host: { listeners: { "click": "changeValue()" }, properties: { "attr.tabindex": "this.tabindex", "class": "this.getClass", "class.checkbox_disabled": "this.disabled" } }, providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: "<ng-container *ngIf=\"labelPosition==='right'\">\n <div class=\"checkbox__tick\" [class.checkbox__tick_active]=\"checked != false\">\n <teta-icon [name]=\"checked ? 'tick' : checked === false ? '' : 'dash'\"></teta-icon>\n </div>\n <span class=\"font-body-3\" *ngIf=\"!noLabel\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n</ng-container>\n<ng-container *ngIf=\"labelPosition==='left'\">\n <span class=\"font-body-3\" *ngIf=\"!noLabel\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n <div class=\"checkbox__tick\" [class.checkbox__tick_active]=\"checked != false\">\n <teta-icon [name]=\"checked ? 'tick' : checked === false ? '' : 'dash'\"></teta-icon>\n </div>\n</ng-container>\n<ng-template #content><ng-content></ng-content></ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
104
105
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
105
106
|
type: Component,
|
|
106
|
-
args: [{ selector: 'teta-checkbox', providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"checkbox__tick\" [class.checkbox__tick_active]=\"checked != false\">\n
|
|
107
|
+
args: [{ selector: 'teta-checkbox', providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"labelPosition==='right'\">\n <div class=\"checkbox__tick\" [class.checkbox__tick_active]=\"checked != false\">\n <teta-icon [name]=\"checked ? 'tick' : checked === false ? '' : 'dash'\"></teta-icon>\n </div>\n <span class=\"font-body-3\" *ngIf=\"!noLabel\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n</ng-container>\n<ng-container *ngIf=\"labelPosition==='left'\">\n <span class=\"font-body-3\" *ngIf=\"!noLabel\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n <div class=\"checkbox__tick\" [class.checkbox__tick_active]=\"checked != false\">\n <teta-icon [name]=\"checked ? 'tick' : checked === false ? '' : 'dash'\"></teta-icon>\n </div>\n</ng-container>\n<ng-template #content><ng-content></ng-content></ng-template>\n" }]
|
|
107
108
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { tabindex: [{
|
|
108
109
|
type: HostBinding,
|
|
109
110
|
args: ['attr.tabindex']
|
|
@@ -125,10 +126,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
125
126
|
type: Input
|
|
126
127
|
}], binary: [{
|
|
127
128
|
type: Input
|
|
129
|
+
}], labelPosition: [{
|
|
130
|
+
type: Input
|
|
128
131
|
}], allowNull: [{
|
|
129
132
|
type: Input
|
|
130
133
|
}], changeValue: [{
|
|
131
134
|
type: HostListener,
|
|
132
135
|
args: ['click']
|
|
133
136
|
}] } });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9jaGVja2JveC9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2NoZWNrYm94L2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFekUsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQVE7SUFDbEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQVNGLE1BQU0sT0FBTyxpQkFBaUI7SUFvRDVCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbkRaLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFhbEMsWUFBTyxHQUFHLFNBQVMsQ0FBQztRQWlCbkIsa0JBQWEsR0FBZ0IsT0FBTyxDQUFBO1FBSzlDOztXQUVHO1FBQ0ssV0FBTSxHQUFRLElBQUksQ0FBQztJQWFrQixDQUFDO0lBL0M5QyxJQUNZLFFBQVE7UUFDbEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDekM7UUFDRCxP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QUM7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDOzs4R0ExSFUsaUJBQWlCO2tHQUFqQixpQkFBaUIsdVlBSGpCLENBQUMsK0JBQStCLENBQUMsMEJDdEI5Qyx3ekJBaUJBOzJGRFFhLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxlQUFlLGFBR2QsQ0FBQywrQkFBK0IsQ0FBQyxtQkFDM0IsdUJBQXVCLENBQUMsTUFBTTt3R0FHakIsUUFBUTtzQkFBckMsV0FBVzt1QkFBQyxlQUFlO2dCQUVuQixLQUFLO3NCQUFiLEtBQUs7Z0JBR00sUUFBUTtzQkFEbkIsV0FBVzt1QkFBQyxPQUFPO2dCQVNYLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBT04sUUFBUTtzQkFGUCxXQUFXO3VCQUFDLHlCQUF5Qjs7c0JBQ3JDLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUlHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBdUJOLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgY29uc3QgQ0hFQ0tCT1hfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2hlY2tib3hDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtY2hlY2tib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtDSEVDS0JPWF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrYm94Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpIHRhYmluZGV4ID0gMDtcblxuICBASW5wdXQoKSBjbGFzcztcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHJpdmF0ZSBnZXQgZ2V0Q2xhc3MoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW3RoaXMuY2xhc3MsICdjaGVja2JveCddO1xuICAgIGlmICh0aGlzLnBhbGV0dGUpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGBjaGVja2JveC0ke3RoaXMucGFsZXR0ZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdC5qb2luKCcgJyk7XG4gIH1cblxuICBASW5wdXQoKSBwYWxldHRlID0gJ3ByaW1hcnknO1xuICBASW5wdXQoKSBub0xhYmVsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiDQutC+0LzQv9C+0L3QtdC90YIg0L3QtdCw0LrRgtC40LLQtdC9XG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNoZWNrYm94X2Rpc2FibGVkJylcbiAgQElucHV0KClcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiB0cnVlL2ZhbHNlINC40LvQuCBsaXN0XG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZTogYW55O1xuICAvKipcbiAgICogdHJ1ZS9mYWxzZSDQuNC70LggbGlzdFxuICAgKi9cbiAgQElucHV0KCkgYmluYXJ5OiBib29sZWFuO1xuICBASW5wdXQgKCkgbGFiZWxQb3NpdGlvbjonbGVmdCd8J3JpZ2h0Jz1cInJpZ2h0XCJcbiAgQElucHV0KCkgYWxsb3dOdWxsOiBib29sZWFuO1xuXG4gIGNoZWNrZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqINCX0L3QsNGH0LXQvdC40LVcbiAgICovXG4gIHByaXZhdGUgbW9kZWwkOiBhbnkgPSBudWxsO1xuXG4gIGdldCBtb2RlbCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm1vZGVsJDtcbiAgfVxuXG4gIHNldCBtb2RlbCh2OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdGhpcy5tb2RlbCQpIHtcbiAgICAgIHRoaXMubW9kZWwkID0gdjtcbiAgICAgIHRoaXMub25DaGFuZ2Uodik7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgY2hhbmdlVmFsdWUoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuYmluYXJ5KSB7XG4gICAgICB0aGlzLm1vZGVsID0gIXRoaXMubW9kZWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5pc0NoZWNrZWQoKSkge1xuICAgICAgICB0aGlzLmFkZFZhbHVlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZVZhbHVlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2hlY2tlZCA9IHRoaXMuaXNDaGVja2VkKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKG1vZGVsOiBhbnkpIHtcbiAgICBpZiAodGhpcy5iaW5hcnkpIHtcbiAgICAgIHRoaXMubW9kZWwkID0gbW9kZWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChtb2RlbCAmJiBtb2RlbCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIHRoaXMubW9kZWwkID0gbW9kZWw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1vZGVsJCA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNoZWNrZWQgPSB0aGlzLmlzQ2hlY2tlZCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGlzQ2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5iaW5hcnkpIHtcbiAgICAgIHJldHVybiB0aGlzLmFsbG93TnVsbCA/IHRoaXMubW9kZWwgOiAhIXRoaXMubW9kZWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1vZGVsICYmIHRoaXMubW9kZWwuaW5kZXhPZih0aGlzLnZhbHVlKSA+PSAwO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVZhbHVlKCkge1xuICAgIHRoaXMubW9kZWwgPSB0aGlzLm1vZGVsLmZpbHRlcigodmFsOiBhbnkpID0+IHZhbCAhPT0gdGhpcy52YWx1ZSk7XG4gIH1cblxuICBhZGRWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgdGhpcy5tb2RlbCA9IFsuLi50aGlzLm1vZGVsLCB0aGlzLnZhbHVlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tb2RlbCA9IFt0aGlzLnZhbHVlXTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgb25DaGFuZ2UoXzogYW55KSB7fVxuXG4gIG9uVG91Y2hlZCgpIHt9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJsYWJlbFBvc2l0aW9uPT09J3JpZ2h0J1wiPlxuICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hfX3RpY2tcIiBbY2xhc3MuY2hlY2tib3hfX3RpY2tfYWN0aXZlXT1cImNoZWNrZWQgIT0gZmFsc2VcIj5cbiAgICA8dGV0YS1pY29uIFtuYW1lXT1cImNoZWNrZWQgPyAndGljaycgOiBjaGVja2VkID09PSBmYWxzZSA/ICcnIDogJ2Rhc2gnXCI+PC90ZXRhLWljb24+XG4gIDwvZGl2PlxuICA8c3BhbiBjbGFzcz1cImZvbnQtYm9keS0zXCIgKm5nSWY9XCIhbm9MYWJlbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gIDwvc3Bhbj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsUG9zaXRpb249PT0nbGVmdCdcIj5cbiAgPHNwYW4gY2xhc3M9XCJmb250LWJvZHktM1wiICpuZ0lmPVwiIW5vTGFiZWxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICA8L3NwYW4+XG4gIDxkaXYgY2xhc3M9XCJjaGVja2JveF9fdGlja1wiIFtjbGFzcy5jaGVja2JveF9fdGlja19hY3RpdmVdPVwiY2hlY2tlZCAhPSBmYWxzZVwiPlxuICAgIDx0ZXRhLWljb24gW25hbWVdPVwiY2hlY2tlZCA/ICd0aWNrJyA6IGNoZWNrZWQgPT09IGZhbHNlID8gJycgOiAnZGFzaCdcIj48L3RldGEtaWNvbj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -0,0 +1,99 @@
|
|
|
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
|
+
constructor(_cdr) {
|
|
8
|
+
this._cdr = _cdr;
|
|
9
|
+
this.currentMonth = new ReplaySubject(1);
|
|
10
|
+
this.minMax = new ReplaySubject(1);
|
|
11
|
+
this.currentYear = new ReplaySubject(1);
|
|
12
|
+
this.selectedPicker = new BehaviorSubject('day');
|
|
13
|
+
this.localeMonths = new Map().set('ru', ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'])
|
|
14
|
+
.set('en', ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']);
|
|
15
|
+
this.alive = true;
|
|
16
|
+
}
|
|
17
|
+
generateCalendar(selectedDate, year, month, minMax) {
|
|
18
|
+
const calendarStartDay = selectedDate.set("year", year).set("month", month).set("date", 1).startOf('week');
|
|
19
|
+
const calendar = new Array(42).fill(1).map((v, i) => {
|
|
20
|
+
return calendarStartDay.add(i, 'day');
|
|
21
|
+
});
|
|
22
|
+
return calendar.map((d) => {
|
|
23
|
+
return new DayModel({
|
|
24
|
+
date: new Date(d.toDate()),
|
|
25
|
+
isCurrentMonth: month === d.month(),
|
|
26
|
+
disabled: !this.isSuitableMinDate(d.toDate(), minMax.min) || !this.isSuitableMaxDate(d.toDate(), minMax.max),
|
|
27
|
+
selected: this.isSelected(d.toDate(), selectedDate.toDate())
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
isSuitableMinDate(d, minDate) {
|
|
32
|
+
return dayjs(new Date(minDate)).startOf('date').toDate() <= new Date(d) || minDate === null;
|
|
33
|
+
}
|
|
34
|
+
isSuitableMaxDate(d, maxDate) {
|
|
35
|
+
return new Date(d) < dayjs(new Date(maxDate)).endOf('date').toDate() || maxDate === null;
|
|
36
|
+
}
|
|
37
|
+
isSelected(date, selectedDate) {
|
|
38
|
+
const isSelectedDate = date.getDate() === selectedDate?.getDate();
|
|
39
|
+
const isSelectedYear = date.getFullYear() === selectedDate?.getFullYear();
|
|
40
|
+
const isSelectedMonth = date.getMonth() === selectedDate?.getMonth();
|
|
41
|
+
return isSelectedDate && isSelectedMonth && isSelectedYear && !this.isDateNull;
|
|
42
|
+
}
|
|
43
|
+
ngOnDestroy() {
|
|
44
|
+
this.alive = false;
|
|
45
|
+
}
|
|
46
|
+
selectPicker(entity) {
|
|
47
|
+
this.selectedPicker.next(entity);
|
|
48
|
+
}
|
|
49
|
+
selectMonth(month) {
|
|
50
|
+
this.currentMonth.next(month);
|
|
51
|
+
this.selectPicker("day");
|
|
52
|
+
}
|
|
53
|
+
selectYear(year) {
|
|
54
|
+
this.setYear(year);
|
|
55
|
+
this.selectPicker("day");
|
|
56
|
+
}
|
|
57
|
+
ngOnChanges(changes) {
|
|
58
|
+
this.changeCalendarData(this.selectedDate);
|
|
59
|
+
}
|
|
60
|
+
changeCalendarData(selectedDate) {
|
|
61
|
+
let date = new Date(selectedDate || new Date());
|
|
62
|
+
this.currentMonth.next(new Date(date).getMonth());
|
|
63
|
+
this.currentYear.next(new Date(date).getFullYear());
|
|
64
|
+
this.minMax.next({ min: this.min, max: this.max });
|
|
65
|
+
}
|
|
66
|
+
setYear(year) {
|
|
67
|
+
this.currentYear.next(year);
|
|
68
|
+
}
|
|
69
|
+
changeMonth(month, year) {
|
|
70
|
+
const { availableYear, availableMonth } = this.getAvailableMonthYear(month, year);
|
|
71
|
+
this.currentMonth.next(availableMonth);
|
|
72
|
+
this.currentYear.next(availableYear);
|
|
73
|
+
}
|
|
74
|
+
getAvailableMonthYear(month, year) {
|
|
75
|
+
if (month > 11) {
|
|
76
|
+
return { availableMonth: month - 12, availableYear: year + 1 };
|
|
77
|
+
}
|
|
78
|
+
if (month < 0) {
|
|
79
|
+
return { availableMonth: 12 + month, availableYear: year - 1 };
|
|
80
|
+
}
|
|
81
|
+
return { availableMonth: month, availableYear: year };
|
|
82
|
+
}
|
|
83
|
+
getMothName(month) {
|
|
84
|
+
return this.localeMonths.get(this.locale)[month];
|
|
85
|
+
}
|
|
86
|
+
selectDate(date) {
|
|
87
|
+
this.setDate.emit(date);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
BaseCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: BaseCalendar, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
91
|
+
BaseCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: BaseCalendar, selector: "ng-component", usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: BaseCalendar, decorators: [{
|
|
93
|
+
type: Component,
|
|
94
|
+
args: [{
|
|
95
|
+
template: '',
|
|
96
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
97
|
+
}]
|
|
98
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jYWxlbmRhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvZGF0ZS1waWNrZXIvYmFzZS1jYWxlbmRhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFLVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEtBQWMsTUFBTSxPQUFPLENBQUM7QUFHbkMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG1CQUFtQixDQUFDOztBQU0zQyxNQUFNLE9BQWdCLFlBQVk7SUFtQmhDLFlBQWdDLElBQXVCO1FBQXZCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBVmhELGlCQUFZLEdBQTBCLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFBO1FBQ2xFLFdBQU0sR0FBbUMsSUFBSSxhQUFhLENBQWtCLENBQUMsQ0FBQyxDQUFBO1FBQzlFLGdCQUFXLEdBQTBCLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFBO1FBQ2pFLG1CQUFjLEdBQThDLElBQUksZUFBZSxDQUEyQixLQUFLLENBQUMsQ0FBQTtRQUVoSCxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDNUosR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMs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SSxDQUFDLENBQUE7UUFDL0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQWEsRUFBRSxJQUFZO1FBQy9DLElBQUksS0FBSyxHQUFHLEVBQUUsRUFBRTtZQUNkLE9BQU8sRUFBQyxjQUFjLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBQyxDQUFBO1NBQzdEO1FBQ0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ2IsT0FBTyxFQUFDLGNBQWMsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFDLENBQUE7U0FDN0Q7UUFDRCxPQUFPLEVBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFDLENBQUE7SUFDckQsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFRCxVQUFVLENBQUMsSUFBVTtRQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDOzt5R0E3R21CLFlBQVk7NkZBQVosWUFBWSx5RUFIdEIsRUFBRTsyRkFHUSxZQUFZO2tCQUpqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCBkYXlqcywge0RheWpzfSBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7dmlld1R5cGV9IGZyb20gXCIuLi8uLi9jb21tb24vbW9kZWwvdmlldy10eXBlLm1vZGVsXCI7XG5pbXBvcnQge01pbk1heERhdGVNb2RlbH0gZnJvbSBcIi4vbW9kZWwvbWluLW1heC1kYXRlLm1vZGVsXCI7XG5pbXBvcnQge0RheU1vZGVsfSBmcm9tIFwiLi9tb2RlbC9kYXktbW9kZWxcIjtcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNhbGVuZGFyIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBhYnN0cmFjdCBzZWxlY3RlZERhdGU7XG4gIGFic3RyYWN0IGxvY2FsZTogc3RyaW5nO1xuICBhYnN0cmFjdCBvcGVuOiBib29sZWFuO1xuICBhYnN0cmFjdCB2aWV3VHlwZTogdmlld1R5cGU7XG4gIGFic3RyYWN0IG1pbjogRGF0ZSB8IHN0cmluZyB8IG51bWJlcjtcbiAgYWJzdHJhY3QgaXNEYXRlTnVsbDogYm9vbGVhbjtcbiAgYWJzdHJhY3QgbWF4OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyO1xuICBhYnN0cmFjdCBzZXREYXRlOiBFdmVudEVtaXR0ZXI8RGF0ZT47XG4gIHB1YmxpYyBjdXJyZW50TW9udGg6IFJlcGxheVN1YmplY3Q8bnVtYmVyPiA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSlcbiAgcHVibGljIG1pbk1heDogUmVwbGF5U3ViamVjdDxNaW5NYXhEYXRlTW9kZWw+ID0gbmV3IFJlcGxheVN1YmplY3Q8TWluTWF4RGF0ZU1vZGVsPigxKVxuICBwdWJsaWMgY3VycmVudFllYXI6IFJlcGxheVN1YmplY3Q8bnVtYmVyPiA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSlcbiAgcHVibGljIHNlbGVjdGVkUGlja2VyOiBCZWhhdmlvclN1YmplY3Q8J2RheScgfCAnbW9udGgnIHwgJ3llYXInPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XCJkYXlcIiB8IFwibW9udGhcIiB8IFwieWVhclwiPignZGF5JylcbiAgYWJzdHJhY3QgY2FsZW5kYXI6IERheU1vZGVsW10gfCB7IGN1cnJlbnRNb250aDogRGF5TW9kZWxbXSwgbmV4dE1vbnRoOiBEYXlNb2RlbFtdIH07XG4gIHB1YmxpYyBsb2NhbGVNb250aHMgPSBuZXcgTWFwKCkuc2V0KCdydScsIFsn0K/QvdCy0LDRgNGMJywgJ9Ck0LXQstGA0LDQu9GMJywgJ9Cc0LDRgNGCJywgJ9CQ0L/RgNC10LvRjCcsICfQnNCw0LknLCAn0JjRjtC90YwnLCAn0JjRjtC70YwnLCAn0JDQstCz0YPRgdGCJywgJ9Ch0LXQvdGC0Y/QsdGA0YwnLCAn0J7QutGC0Y/QsdGA0YwnLCAn0J3QvtGP0LHRgNGMJywgJ9CU0LXQutCw0LHRgNGMJ10pXG4gICAgLnNldCgnZW4nLCBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXSlcblxuICBwdWJsaWMgYWxpdmUgPSB0cnVlO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG4gIGdlbmVyYXRlQ2FsZW5kYXIoc2VsZWN0ZWREYXRlOiBEYXlqcywgeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBtaW5NYXg6IE1pbk1heERhdGVNb2RlbCk6IERheU1vZGVsW10ge1xuICAgIGNvbnN0IGNhbGVuZGFyU3RhcnREYXkgPSBzZWxlY3RlZERhdGUuc2V0KFwieWVhclwiLCB5ZWFyKS5zZXQoXCJtb250aFwiLCBtb250aCkuc2V0KFwiZGF0ZVwiLCAxKS5zdGFydE9mKCd3ZWVrJyk7XG4gICAgY29uc3QgY2FsZW5kYXIgPSBuZXcgQXJyYXkoNDIpLmZpbGwoMSkubWFwKCh2LCBpKSA9PiB7XG4gICAgICByZXR1cm4gY2FsZW5kYXJTdGFydERheS5hZGQoaSwgJ2RheScpXG4gICAgfSk7XG4gICAgcmV0dXJuIGNhbGVuZGFyLm1hcCgoZCkgPT4ge1xuXG4gICAgICByZXR1cm4gbmV3IERheU1vZGVsKHtcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoZC50b0RhdGUoKSksXG4gICAgICAgIGlzQ3VycmVudE1vbnRoOiBtb250aCA9PT0gZC5tb250aCgpLFxuICAgICAgICBkaXNhYmxlZDogIXRoaXMuaXNTdWl0YWJsZU1pbkRhdGUoZC50b0RhdGUoKSwgbWluTWF4Lm1pbikgfHwgIXRoaXMuaXNTdWl0YWJsZU1heERhdGUoZC50b0RhdGUoKSwgbWluTWF4Lm1heCksXG4gICAgICAgIHNlbGVjdGVkOiB0aGlzLmlzU2VsZWN0ZWQoZC50b0RhdGUoKSwgc2VsZWN0ZWREYXRlLnRvRGF0ZSgpKVxuICAgICAgfSlcbiAgICB9KVxuXG4gIH1cblxuICBpc1N1aXRhYmxlTWluRGF0ZShkOiBEYXRlLCBtaW5EYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgcmV0dXJuIGRheWpzKG5ldyBEYXRlKG1pbkRhdGUpKS5zdGFydE9mKCdkYXRlJykudG9EYXRlKCkgPD0gbmV3IERhdGUoZCkgfHwgbWluRGF0ZSA9PT0gbnVsbFxuICB9XG5cbiAgaXNTdWl0YWJsZU1heERhdGUoZDogRGF0ZSwgbWF4RGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgRGF0ZShkKSA8IGRheWpzKG5ldyBEYXRlKG1heERhdGUpKS5lbmRPZignZGF0ZScpLnRvRGF0ZSgpIHx8IG1heERhdGUgPT09IG51bGw7XG4gIH1cblxuICBpc1NlbGVjdGVkKGRhdGU6IERhdGUsIHNlbGVjdGVkRGF0ZTogRGF0ZSkge1xuICAgIGNvbnN0IGlzU2VsZWN0ZWREYXRlID0gZGF0ZS5nZXREYXRlKCkgPT09IHNlbGVjdGVkRGF0ZT8uZ2V0RGF0ZSgpXG4gICAgY29uc3QgaXNTZWxlY3RlZFllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCkgPT09IHNlbGVjdGVkRGF0ZT8uZ2V0RnVsbFllYXIoKVxuICAgIGNvbnN0IGlzU2VsZWN0ZWRNb250aCA9IGRhdGUuZ2V0TW9udGgoKSA9PT0gc2VsZWN0ZWREYXRlPy5nZXRNb250aCgpXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWREYXRlICYmIGlzU2VsZWN0ZWRNb250aCAmJiBpc1NlbGVjdGVkWWVhciAmJiAhdGhpcy5pc0RhdGVOdWxsXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmFsaXZlID0gZmFsc2U7XG4gIH1cblxuICBzZWxlY3RQaWNrZXIoZW50aXR5OiBcImRheVwiIHwgXCJtb250aFwiIHwgXCJ5ZWFyXCIpIHtcbiAgICB0aGlzLnNlbGVjdGVkUGlja2VyLm5leHQoZW50aXR5KVxuICB9XG5cbiAgc2VsZWN0TW9udGgobW9udGg6IG51bWJlcikge1xuICAgIHRoaXMuY3VycmVudE1vbnRoLm5leHQobW9udGgpXG4gICAgdGhpcy5zZWxlY3RQaWNrZXIoXCJkYXlcIilcbiAgfVxuXG4gIHNlbGVjdFllYXIoeWVhcjogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRZZWFyKHllYXIpXG4gICAgdGhpcy5zZWxlY3RQaWNrZXIoXCJkYXlcIilcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZUNhbGVuZGFyRGF0YSh0aGlzLnNlbGVjdGVkRGF0ZSlcbiAgfVxuXG4gIGNoYW5nZUNhbGVuZGFyRGF0YShzZWxlY3RlZERhdGU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHNlbGVjdGVkRGF0ZSB8fCBuZXcgRGF0ZSgpKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aC5uZXh0KG5ldyBEYXRlKGRhdGUpLmdldE1vbnRoKCkpXG4gICAgdGhpcy5jdXJyZW50WWVhci5uZXh0KG5ldyBEYXRlKGRhdGUpLmdldEZ1bGxZZWFyKCkpXG4gICAgdGhpcy5taW5NYXgubmV4dCh7bWluOiB0aGlzLm1pbiwgbWF4OiB0aGlzLm1heH0pXG4gIH1cblxuICBzZXRZZWFyKHllYXI6IG51bWJlcikge1xuICAgIHRoaXMuY3VycmVudFllYXIubmV4dCh5ZWFyKVxuICB9XG5cbiAgY2hhbmdlTW9udGgobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKSB7XG4gICAgY29uc3Qge2F2YWlsYWJsZVllYXIsIGF2YWlsYWJsZU1vbnRofSA9IHRoaXMuZ2V0QXZhaWxhYmxlTW9udGhZZWFyKG1vbnRoLCB5ZWFyKVxuICAgIHRoaXMuY3VycmVudE1vbnRoLm5leHQoYXZhaWxhYmxlTW9udGgpXG4gICAgdGhpcy5jdXJyZW50WWVhci5uZXh0KGF2YWlsYWJsZVllYXIpXG4gIH1cblxuICBnZXRBdmFpbGFibGVNb250aFllYXIobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKSB7XG4gICAgaWYgKG1vbnRoID4gMTEpIHtcbiAgICAgIHJldHVybiB7YXZhaWxhYmxlTW9udGg6IG1vbnRoIC0gMTIsIGF2YWlsYWJsZVllYXI6IHllYXIgKyAxfVxuICAgIH1cbiAgICBpZiAobW9udGggPCAwKSB7XG4gICAgICByZXR1cm4ge2F2YWlsYWJsZU1vbnRoOiAxMiArIG1vbnRoLCBhdmFpbGFibGVZZWFyOiB5ZWFyIC0gMX1cbiAgICB9XG4gICAgcmV0dXJuIHthdmFpbGFibGVNb250aDogbW9udGgsIGF2YWlsYWJsZVllYXI6IHllYXJ9XG4gIH1cblxuICBnZXRNb3RoTmFtZShtb250aDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMubG9jYWxlTW9udGhzLmdldCh0aGlzLmxvY2FsZSlbbW9udGhdXG4gIH1cblxuICBzZWxlY3REYXRlKGRhdGU6IERhdGUpIHtcbiAgICB0aGlzLnNldERhdGUuZW1pdChkYXRlKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import dayjs from "dayjs";
|
|
2
|
+
export class BasePicker {
|
|
3
|
+
constructor(_elementRef, _cdr, datePipe) {
|
|
4
|
+
this._elementRef = _elementRef;
|
|
5
|
+
this._cdr = _cdr;
|
|
6
|
+
this.datePipe = datePipe;
|
|
7
|
+
this.open = false;
|
|
8
|
+
this.placeholder = '';
|
|
9
|
+
this.inputText = this.checkNull();
|
|
10
|
+
this.openPicker = (show) => {
|
|
11
|
+
if (this.disabled) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
this.open = show;
|
|
15
|
+
this._cdr.markForCheck();
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
changeInput(v) {
|
|
19
|
+
this.changePlaceholder(v);
|
|
20
|
+
}
|
|
21
|
+
changePlaceholder(value) {
|
|
22
|
+
let val = this.mask.split('');
|
|
23
|
+
for (let i = 0; value.length > i; i++) {
|
|
24
|
+
val.splice(i, 1, value[i]);
|
|
25
|
+
}
|
|
26
|
+
this.placeholder = val.join('');
|
|
27
|
+
this._cdr.detectChanges();
|
|
28
|
+
}
|
|
29
|
+
openChange(e) {
|
|
30
|
+
this.onBlur();
|
|
31
|
+
this.open = e;
|
|
32
|
+
}
|
|
33
|
+
checkNull() {
|
|
34
|
+
if (!this.date && this.allowNull) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
return this.datePipe.transform(new Date(), 'dd.MM.yyyy, HH:mm');
|
|
38
|
+
}
|
|
39
|
+
changeSelectedDate(date, selectedDate) {
|
|
40
|
+
this.setDate(date);
|
|
41
|
+
this.emitValue(date);
|
|
42
|
+
this.open = false;
|
|
43
|
+
}
|
|
44
|
+
emitValue(value) {
|
|
45
|
+
this.date = value;
|
|
46
|
+
this.selectDate.emit(value);
|
|
47
|
+
this.onChange(value);
|
|
48
|
+
}
|
|
49
|
+
checkEnter(e) {
|
|
50
|
+
if (e.key === "Enter") {
|
|
51
|
+
this.inputText = e.target.value;
|
|
52
|
+
this.onBlur();
|
|
53
|
+
}
|
|
54
|
+
if (e.key === '-') {
|
|
55
|
+
e.preventDefault();
|
|
56
|
+
}
|
|
57
|
+
this.open = true;
|
|
58
|
+
}
|
|
59
|
+
isAvailableLength(val, length) {
|
|
60
|
+
if (val?.length) {
|
|
61
|
+
return val.length === length;
|
|
62
|
+
}
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
getDateFromStr(str, separator = '.') {
|
|
66
|
+
const date = str?.split(separator);
|
|
67
|
+
const day = this.isAvailableLength((date?.[0]), 2) ? Number(date[0]) : null;
|
|
68
|
+
const month = this.isAvailableLength((date?.[1]), 2) ? Number(date[1]) : null;
|
|
69
|
+
const year = this.isAvailableLength((date?.[2]), 4) ? Number(date[2]) : null;
|
|
70
|
+
return { day, month, year };
|
|
71
|
+
}
|
|
72
|
+
getTimeFromStr(str, separator = ':') {
|
|
73
|
+
const time = str?.trim().split(separator);
|
|
74
|
+
const hours = this.isAvailableLength((time?.[0]), 2) ? Number(time[0]) : null;
|
|
75
|
+
const mins = this.isAvailableLength((time?.[1]), 2) ? Number(time[1]) : null;
|
|
76
|
+
return { hours, mins };
|
|
77
|
+
}
|
|
78
|
+
focus() {
|
|
79
|
+
this._elementRef.nativeElement.focus();
|
|
80
|
+
}
|
|
81
|
+
getLocaleString(date) {
|
|
82
|
+
return new Date(date).toLocaleString([], {
|
|
83
|
+
year: 'numeric',
|
|
84
|
+
month: '2-digit',
|
|
85
|
+
day: '2-digit',
|
|
86
|
+
hour: this.showTime ? '2-digit' : undefined,
|
|
87
|
+
minute: this.showTime ? '2-digit' : undefined,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
getAvailableDate(min, max, date) {
|
|
91
|
+
let minDate = dayjs(new Date(min)).startOf("day").toDate();
|
|
92
|
+
let maxDate = dayjs(new Date(max)).endOf("day").toDate();
|
|
93
|
+
if (min && minDate.getTime() >= new Date(date).getTime()) {
|
|
94
|
+
return new Date();
|
|
95
|
+
}
|
|
96
|
+
if (max && maxDate.getTime() <= new Date(date).getTime()) {
|
|
97
|
+
return maxDate;
|
|
98
|
+
}
|
|
99
|
+
return new Date(date);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1waWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2Jhc2UtcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQVUxQixNQUFNLE9BQWdCLFVBQVU7SUF1QjlCLFlBQWdDLFdBQXVCLEVBQVcsSUFBc0IsRUFBVyxRQUFrQjtRQUFyRixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFXLFNBQUksR0FBSixJQUFJLENBQWtCO1FBQVcsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQU45RyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBRWIsZ0JBQVcsR0FBRyxFQUFFLENBQUE7UUFDaEIsY0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQXVDcEMsZUFBVSxHQUFHLENBQUMsSUFBYSxFQUFFLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQztJQXpDRixDQUFDO0lBVUQsV0FBVyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDM0IsQ0FBQztJQUNELGlCQUFpQixDQUFDLEtBQWE7UUFDN0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDckMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENB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LEdBQTJCLEVBQUUsSUFBNEI7UUFDckcsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQzFELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUN4RCxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDeEQsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFBO1NBQ2xCO1FBQ0QsSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3hELE9BQU8sT0FBTyxDQUFBO1NBQ2Y7UUFDRCxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3ZCLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlcn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7QWxpZ259IGZyb20gXCIuLi8uLi9jb21tb24vZW51bS9hbGlnbi5lbnVtXCI7XG5pbXBvcnQge1ZlcnRpY2FsQWxpZ259IGZyb20gXCIuLi8uLi9jb21tb24vZW51bS92ZXJ0aWNhbC1hbGlnbi5lbnVtXCI7XG5pbXBvcnQge1JlcGxheVN1YmplY3R9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge01hc2tpdG9PcHRpb25zfSBmcm9tIFwiQG1hc2tpdG8vY29yZVwiO1xuaW1wb3J0IHsgdmlld1R5cGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL21vZGVsL3ZpZXctdHlwZS5tb2RlbFwiO1xuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtEYXRlRnJvbVRvTW9kZWx9IGZyb20gXCIuL21vZGVsL2Zyb20tdG8ubW9kZWxcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VQaWNrZXIge1xuICBhYnN0cmFjdCBtYXNrOnN0cmluZztcbiAgYWJzdHJhY3QgZGF0ZTtcbiAgYWJzdHJhY3QgbG9jYWxlOiBzdHJpbmdcbiAgYWJzdHJhY3Qgc2hvd1RpbWU6IGJvb2xlYW5cbiAgYWJzdHJhY3QgbWluRGF0ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlclxuICBhYnN0cmFjdCBtYXhEYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyXG4gIGFic3RyYWN0IGludmFsaWQ6IGJvb2xlYW5cbiAgYWJzdHJhY3QgZGlzYWJsZWQ6IGJvb2xlYW5cbiAgYWJzdHJhY3QgYWxpZ246IEFsaWduXG4gIGFic3RyYWN0IHZlcnRpY2FsQWxpZ246IFZlcnRpY2FsQWxpZ25cbiAgYWJzdHJhY3Qgdmlld1R5cGU6IHZpZXdUeXBlXG4gIGFic3RyYWN0IGFwcGVuZFRvQm9keTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgYmFja2Ryb3A6IGJvb2xlYW47XG4gIGFic3RyYWN0IGFsbG93TnVsbDogYm9vbGVhblxuICBhYnN0cmFjdCBpbnB1dDogRWxlbWVudFJlZjtcbiAgYWJzdHJhY3Qgc2VsZWN0RGF0ZTogRXZlbnRFbWl0dGVyPERhdGV8RGF0ZUZyb21Ub01vZGVsPlxuICBwdWJsaWMgb3BlbiA9IGZhbHNlO1xuICBhYnN0cmFjdCBzZWxlY3RlZERhdGU6UmVwbGF5U3ViamVjdDxhbnk+O1xuICBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnJ1xuICBwdWJsaWMgaW5wdXRUZXh0ID0gdGhpcy5jaGVja051bGwoKTtcbiAgcHVibGljIG1hc2tpdG9PcHRpb25zOiBNYXNraXRvT3B0aW9ucztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLHByb3RlY3RlZCBfY2RyOkNoYW5nZURldGVjdG9yUmVmLHByb3RlY3RlZCBkYXRlUGlwZTogRGF0ZVBpcGUpIHtcbiAgfVxuXG4gIGFic3RyYWN0IG9uQ2hhbmdlKGRhdGU6IERhdGUpO1xuXG4gIGFic3RyYWN0IHByZXBhcmVJbnB1dCgpO1xuXG4gIGFic3RyYWN0IG9uQmx1cigpO1xuXG4gIGFic3RyYWN0IHNldERhdGUoZGF0ZSk7XG5cbiAgY2hhbmdlSW5wdXQodikge1xuICAgIHRoaXMuY2hhbmdlUGxhY2Vob2xkZXIodilcbiAgfVxuICBjaGFuZ2VQbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbCA9IHRoaXMubWFzay5zcGxpdCgnJyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IHZhbHVlLmxlbmd0aCA+IGk7IGkrKykge1xuICAgICAgdmFsLnNwbGljZShpLCAxLCB2YWx1ZVtpXSk7XG4gICAgfVxuXG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHZhbC5qb2luKCcnKTtcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cblxuICBvcGVuQ2hhbmdlKGU6Ym9vbGVhbikge1xuICAgIHRoaXMub25CbHVyKCk7XG4gICAgdGhpcy5vcGVuPWVcbiAgfVxuXG4gIGNoZWNrTnVsbCgpIHtcbiAgICBpZiAoIXRoaXMuZGF0ZSAmJiB0aGlzLmFsbG93TnVsbCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5ldyBEYXRlKCksICdkZC5NTS55eXl5LCBISDptbScpXG4gIH1cblxuICBvcGVuUGlja2VyID0gKHNob3c6IGJvb2xlYW4pID0+IHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wZW4gPSBzaG93O1xuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgfTtcblxuICBjaGFuZ2VTZWxlY3RlZERhdGUoZGF0ZSxzZWxlY3RlZERhdGU/KSB7XG4gICAgdGhpcy5zZXREYXRlKGRhdGUpXG4gICAgdGhpcy5lbWl0VmFsdWUoZGF0ZSlcbiAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIGVtaXRWYWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMuZGF0ZSA9IHZhbHVlXG4gICAgdGhpcy5zZWxlY3REYXRlLmVtaXQodmFsdWUpXG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSlcbiAgfVxuXG5cblxuICBjaGVja0VudGVyKGUpIHtcbiAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgdGhpcy5pbnB1dFRleHQ9ZS50YXJnZXQudmFsdWU7XG4gICAgICB0aGlzLm9uQmx1cigpXG4gICAgfVxuICAgIGlmKGUua2V5PT09Jy0nKXtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIH1cbiAgICB0aGlzLm9wZW4gPSB0cnVlO1xuICB9XG5cbiAgaXNBdmFpbGFibGVMZW5ndGgodmFsOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKSB7XG4gICAgaWYgKHZhbD8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdmFsLmxlbmd0aCA9PT0gbGVuZ3RoXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgZ2V0RGF0ZUZyb21TdHIoc3RyOiBzdHJpbmcsIHNlcGFyYXRvcjogc3RyaW5nID0gJy4nKSB7XG4gICAgY29uc3QgZGF0ZSA9IHN0cj8uc3BsaXQoc2VwYXJhdG9yKVxuICAgIGNvbnN0IGRheSA9IHRoaXMuaXNBdmFpbGFibGVMZW5ndGgoKGRhdGU/LlswXSksIDIpID8gTnVtYmVyKGRhdGVbMF0pIDogbnVsbFxuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5pc0F2YWlsYWJsZUxlbmd0aCgoZGF0ZT8uWzFdKSwgMikgPyBOdW1iZXIoZGF0ZVsxXSkgOiBudWxsXG4gICAgY29uc3QgeWVhciA9IHRoaXMuaXNBdmFpbGFibGVMZW5ndGgoKGRhdGU/LlsyXSksIDQpID8gTnVtYmVyKGRhdGVbMl0pIDogbnVsbFxuICAgIHJldHVybiB7ZGF5LCBtb250aCwgeWVhcn1cbiAgfVxuXG4gIGdldFRpbWVGcm9tU3RyKHN0cjogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZyA9ICc6Jykge1xuICAgIGNvbnN0IHRpbWUgPSBzdHI/LnRyaW0oKS5zcGxpdChzZXBhcmF0b3IpXG4gICAgY29uc3QgaG91cnMgPSB0aGlzLmlzQXZhaWxhYmxlTGVuZ3RoKCh0aW1lPy5bMF0pLCAyKSA/IE51bWJlcih0aW1lWzBdKSA6IG51bGxcbiAgICBjb25zdCBtaW5zID0gdGhpcy5pc0F2YWlsYWJsZUxlbmd0aCgodGltZT8uWzFdKSwgMikgPyBOdW1iZXIodGltZVsxXSkgOiBudWxsXG4gICAgcmV0dXJuIHtob3VycywgbWluc31cbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgZ2V0TG9jYWxlU3RyaW5nKGRhdGU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSkudG9Mb2NhbGVTdHJpbmcoW10sIHtcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXG4gICAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICAgIGhvdXI6IHRoaXMuc2hvd1RpbWUgPyAnMi1kaWdpdCcgOiB1bmRlZmluZWQsXG4gICAgICBtaW51dGU6IHRoaXMuc2hvd1RpbWUgPyAnMi1kaWdpdCcgOiB1bmRlZmluZWQsXG4gICAgfSlcbiAgfVxuXG4gIGdldEF2YWlsYWJsZURhdGUobWluOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nLCBtYXg6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcsIGRhdGU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICBsZXQgbWluRGF0ZSA9IGRheWpzKG5ldyBEYXRlKG1pbikpLnN0YXJ0T2YoXCJkYXlcIikudG9EYXRlKClcbiAgICBsZXQgbWF4RGF0ZSA9IGRheWpzKG5ldyBEYXRlKG1heCkpLmVuZE9mKFwiZGF5XCIpLnRvRGF0ZSgpXG4gICAgaWYgKG1pbiAmJiBtaW5EYXRlLmdldFRpbWUoKSA+PSBuZXcgRGF0ZShkYXRlKS5nZXRUaW1lKCkpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpXG4gICAgfVxuICAgIGlmIChtYXggJiYgbWF4RGF0ZS5nZXRUaW1lKCkgPD0gbmV3IERhdGUoZGF0ZSkuZ2V0VGltZSgpKSB7XG4gICAgICByZXR1cm4gbWF4RGF0ZVxuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSlcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
constructor(_cdr) {
|
|
14
|
+
super(_cdr);
|
|
15
|
+
this._cdr = _cdr;
|
|
16
|
+
this.selectedDate = new Date();
|
|
17
|
+
this.setDate = new EventEmitter();
|
|
18
|
+
this.calendar = [];
|
|
19
|
+
dayjs().locale('ru', { weekStart: 1 });
|
|
20
|
+
combineLatest([this.currentYear, this.currentMonth, this.minMax]).pipe(takeWhile(() => this.alive), filter(([currentYear, currentMonth]) => currentMonth !== null && currentYear !== null), map(([year, month, minMax]) => {
|
|
21
|
+
return this.generateCalendar(dayjs(new Date(this.selectedDate)).locale(this.locale), year, month, minMax);
|
|
22
|
+
})).subscribe((_) => {
|
|
23
|
+
this.calendar = _;
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
DateCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DateCalendarComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
DateCalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", 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 });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DateCalendarComponent, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
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"] }]
|
|
32
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { selectedDate: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}], locale: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], open: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], viewType: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}], min: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], isDateNull: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], max: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], setDate: [{
|
|
47
|
+
type: Output
|
|
48
|
+
}] } });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RhdGUtcGlja2VyL2RhdGUtY2FsZW5kYXIvZGF0ZS1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RhdGUtcGlja2VyL2RhdGUtY2FsZW5kYXIvZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFakQsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBUzNELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxZQUFZO0lBVXJELFlBQXFCLElBQXVCO1FBQzFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQURRLFNBQUksR0FBSixJQUFJLENBQW1CO1FBVG5DLGlCQUFZLEdBQTJCLElBQUksSUFBSSxFQUFFLENBQUM7UUFPakQsWUFBTyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzFELGFBQVEsR0FBZSxFQUFFLENBQUE7UUFHOUIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ3JDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3BFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQzNCLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUMsRUFDdEYsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUMzRyxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7a0hBdEJVLHFCQUFxQjtzR0FBckIscUJBQXFCLG9RQ3hCbEMsK3pFQTBDQTsyRkRsQmEscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNO3dHQUd0QyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dmlld1R5cGV9IGZyb20gXCIuLi8uLi8uLi8uLi9jb21tb24vbW9kZWwvdmlldy10eXBlLm1vZGVsXCI7XG5cbmltcG9ydCB7QmFzZUNhbGVuZGFyfSBmcm9tIFwiLi4vLi4vYmFzZS1jYWxlbmRhclwiO1xuaW1wb3J0IHtEYXlNb2RlbH0gZnJvbSBcIi4uLy4uL21vZGVsL2RheS1tb2RlbFwiO1xuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgdGFrZVdoaWxlfSBmcm9tIFwicnhqc1wiO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtZGF0ZS1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1jYWxlbmRhci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlQ2FsZW5kYXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ2FsZW5kYXIgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveXtcbiAgQElucHV0KCkgc2VsZWN0ZWREYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyID0gbmV3IERhdGUoKTtcbiAgQElucHV0KCkgbG9jYWxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9wZW46IGJvb2xlYW47XG4gIEBJbnB1dCgpIHZpZXdUeXBlOiB2aWV3VHlwZTtcbiAgQElucHV0KCkgbWluOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyO1xuICBASW5wdXQoKSBpc0RhdGVOdWxsOiBib29sZWFuO1xuICBASW5wdXQoKSBtYXg6IERhdGUgfCBzdHJpbmcgfCBudW1iZXI7XG4gIEBPdXRwdXQoKSBzZXREYXRlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG4gIHB1YmxpYyBjYWxlbmRhcjogRGF5TW9kZWxbXSA9IFtdXG4gIGNvbnN0cnVjdG9yKG92ZXJyaWRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoX2NkcilcbiAgICBkYXlqcygpLmxvY2FsZSgncnUnLCB7d2Vla1N0YXJ0OiAxfSk7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5jdXJyZW50WWVhciwgdGhpcy5jdXJyZW50TW9udGgsIHRoaXMubWluTWF4XSkucGlwZShcbiAgICAgIHRha2VXaGlsZSgoKSA9PiB0aGlzLmFsaXZlKSxcbiAgICAgIGZpbHRlcigoW2N1cnJlbnRZZWFyLCBjdXJyZW50TW9udGhdKSA9PiBjdXJyZW50TW9udGggIT09IG51bGwgJiYgY3VycmVudFllYXIgIT09IG51bGwpLFxuICAgICAgbWFwKChbeWVhciwgbW9udGgsIG1pbk1heF0pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcihkYXlqcyhuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZSkpLmxvY2FsZSh0aGlzLmxvY2FsZSksIHllYXIsIG1vbnRoLCBtaW5NYXgpXG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICB0aGlzLmNhbGVuZGFyID0gXztcbiAgICB9KVxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwie2N1cnJlbnRNb250aDpjdXJyZW50TW9udGh8YXN5bmMsY3VycmVudFllYXI6Y3VycmVudFllYXJ8YXN5bmMsc2VsZWN0ZWRQaWNrZXI6c2VsZWN0ZWRQaWNrZXJ8YXN5bmN9IGFzIGRhdGFcIlxuICAgICBjbGFzcz1cImRhdGVwaWNrZXItY29udGVudCBvdmVyZmxvdy15LWF1dG9cIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5zZWxlY3RlZFBpY2tlcj09PSdkYXknXCI+XG4gICAgPGRpdiBjbGFzcz1cInBhZGRpbmctaC0zIHBhZGRpbmctdi0yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICA8dGV0YS1idXR0b24gW2NsYXNzXT1cIidjaGFuZ2UtbW9udGgtYnV0dG9uIGRhdGVwaWNrZXJfJyt2aWV3VHlwZVwiIFtzcXVhcmVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlTW9udGgoZGF0YS5jdXJyZW50TW9udGgtMSxkYXRhLmN1cnJlbnRZZWFyKVwiXG4gICAgICAgICAgICAgICAgICAgICBwYWxldHRlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICB2aWV3PVwiZ2hvc3RcIj5cbiAgICAgICAgICA8dGV0YS1pY29uIG5hbWU9XCJhcnJvd0xlZnRLZXlcIj48L3RldGEtaWNvbj5cbiAgICAgICAgPC90ZXRhLWJ1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBnYXAtNCBmb250LWJ1dHRvbi0yIFwiPlxuICAgICAgICAgIDxidXR0b24gW2NsYXNzXT1cIidkYXRlcGlja2VyXycrdmlld1R5cGUgXCIgdGV0YS1idXR0b24gdmlldz1cImdob3N0XCIgcGFsZXR0ZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFBpY2tlcignbW9udGgnKVwiPiB7e2dldE1vdGhOYW1lKGRhdGEuY3VycmVudE1vbnRoKX19PC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBbY2xhc3NdPVwiJ2RhdGVwaWNrZXJfJyt2aWV3VHlwZVwiIHRldGEtYnV0dG9uIHZpZXc9XCJnaG9zdFwiIHBhbGV0dGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQaWNrZXIoJ3llYXInKVwiPnt7ZGF0YS5jdXJyZW50WWVhcn19PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8dGV0YS1idXR0b24gW3NxdWFyZV09XCJ0cnVlXCIgW2NsYXNzXT1cIidjaGFuZ2UtbW9udGgtYnV0dG9uIGRhdGVwaWNrZXJfJyt2aWV3VHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlTW9udGgoZGF0YS5jdXJyZW50TW9udGgrMSxkYXRhLmN1cnJlbnRZZWFyKVwiXG4gICAgICAgICAgICAgICAgICAgICBwYWxldHRlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICB2aWV3PVwiZ2hvc3RcIj5cbiAgICAgICAgICA8dGV0YS1pY29uIG5hbWU9XCJhcnJvd1JpZ2h0S2V5XCI+PC90ZXRhLWljb24+XG4gICAgICAgIDwvdGV0YS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDx0ZXRhLWRheS1waWNrZXIgW3ZpZXdUeXBlXT1cInZpZXdUeXBlXCIgKHNlbGVjdERhdGUpPVwic2VsZWN0RGF0ZSgkZXZlbnQpXCIgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtjYWxlbmRhcl09XCJjYWxlbmRhclwiPjwvdGV0YS1kYXktcGlja2VyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5zZWxlY3RlZFBpY2tlcj09PSdtb250aCdcIj5cbiAgICA8dGV0YS1tb250aC1waWNrZXIgW2xvY2FsZU1vdGhzXT1cImxvY2FsZU1vbnRoc1wiIFtjdXJyZW50WWVhcl09XCJkYXRhLmN1cnJlbnRZZWFyXCIgKGNoYW5nZVllYXIpPVwic2V0WWVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkTW9udGhdPVwiZGF0YS5jdXJyZW50TW9udGhcIiBbdmlld1R5cGVdPVwidmlld1R5cGVcIiBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RNb250aCk9XCJzZWxlY3RNb250aCgkZXZlbnQpXCI+PC90ZXRhLW1vbnRoLXBpY2tlcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLnNlbGVjdGVkUGlja2VyPT09J3llYXInXCI+XG4gICAgPHRldGEteWVhci1waWNrZXIgW2xvY2FsZV09XCJsb2NhbGVcIiBbdmlld1R5cGVdPVwidmlld1R5cGVcIiAoc2VsZWN0WWVhcik9XCJzZWxlY3RZZWFyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFllYXJdPVwiZGF0YS5jdXJyZW50WWVhclwiPjwvdGV0YS15ZWFyLXBpY2tlcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuIl19
|