@tetacom/ng-components 1.0.147 → 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.
Files changed (177) hide show
  1. package/assets/color-icons.svg +49 -521
  2. package/assets/file-icons.svg +0 -1
  3. package/assets/icons.svg +205 -138
  4. package/common/model/view-type.model.d.ts +1 -0
  5. package/component/accordion/accordion-item/accordion-item.component.d.ts +4 -1
  6. package/component/avatar/avatar/avatar.component.d.ts +17 -0
  7. package/component/avatar/avatar.module.d.ts +9 -0
  8. package/component/avatar/model/avatar-color.enum.d.ts +20 -0
  9. package/component/avatar/public-api.d.ts +2 -0
  10. package/component/button/button/button.component.d.ts +4 -1
  11. package/component/checkbox/checkbox/checkbox.component.d.ts +2 -1
  12. package/component/date-picker/base-calendar.d.ts +49 -0
  13. package/component/date-picker/base-picker.d.ts +60 -0
  14. package/component/date-picker/date-picker/date-calendar/date-calendar.component.d.ts +20 -0
  15. package/component/date-picker/date-picker/date-picker.component.d.ts +38 -68
  16. package/component/date-picker/date-picker.module.d.ts +19 -15
  17. package/component/date-picker/date-range/date-range.component.d.ts +46 -0
  18. package/component/date-picker/date-range/range-calendar/range-calendar.component.d.ts +39 -0
  19. package/component/date-picker/day-picker/day-item/day-item.component.d.ts +9 -0
  20. package/component/date-picker/day-picker/day-picker.component.d.ts +30 -0
  21. package/component/date-picker/model/from-to.model.d.ts +4 -0
  22. package/component/date-picker/model/min-max-date.model.d.ts +4 -0
  23. package/component/date-picker/month-picker/month-picker.component.d.ts +16 -50
  24. package/component/date-picker/public-api.d.ts +5 -4
  25. package/component/date-picker/year-picker/scroll-to-selected-year.directive.d.ts +11 -0
  26. package/component/date-picker/year-picker/year-picker.component.d.ts +24 -0
  27. package/component/divider/divider/divider.component.d.ts +10 -0
  28. package/component/divider/divider.module.d.ts +8 -0
  29. package/component/divider/public-api.d.ts +2 -0
  30. package/component/dropdown/dropdown-base.d.ts +3 -1
  31. package/component/icon/icon-file/icon-file.component.d.ts +9 -3
  32. package/component/icon/icon-file/icon-file.module.d.ts +9 -0
  33. package/component/icon/icon.module.d.ts +4 -5
  34. package/component/icon/public-api.d.ts +1 -0
  35. package/component/input/input/input.component.d.ts +3 -1
  36. package/component/message/model/message.d.ts +3 -0
  37. package/component/public-api.d.ts +2 -0
  38. package/component/select/select/select.component.d.ts +4 -1
  39. package/component/switch/switch/switch.component.d.ts +4 -1
  40. package/directive/hint/hint.directive.d.ts +3 -1
  41. package/esm2020/common/model/view-type.model.mjs +2 -0
  42. package/esm2020/component/accordion/accordion/accordion.component.mjs +3 -2
  43. package/esm2020/component/accordion/accordion-head/accordion-head.component.mjs +3 -2
  44. package/esm2020/component/accordion/accordion-item/accordion-item.component.mjs +13 -3
  45. package/esm2020/component/avatar/avatar/avatar.component.mjs +57 -0
  46. package/esm2020/component/avatar/avatar.module.mjs +28 -0
  47. package/esm2020/component/avatar/model/avatar-color.enum.mjs +22 -0
  48. package/esm2020/component/avatar/public-api.mjs +3 -0
  49. package/esm2020/component/button/button/button.component.mjs +18 -3
  50. package/esm2020/component/checkbox/checkbox/checkbox.component.mjs +6 -3
  51. package/esm2020/component/date-picker/base-calendar.mjs +99 -0
  52. package/esm2020/component/date-picker/base-picker.mjs +102 -0
  53. package/esm2020/component/date-picker/date-picker/date-calendar/date-calendar.component.mjs +49 -0
  54. package/esm2020/component/date-picker/date-picker/date-picker.component.mjs +141 -234
  55. package/esm2020/component/date-picker/date-picker.module.mjs +41 -41
  56. package/esm2020/component/date-picker/date-range/date-range.component.mjs +211 -0
  57. package/esm2020/component/date-picker/date-range/range-calendar/range-calendar.component.mjs +108 -0
  58. package/esm2020/component/date-picker/day-picker/day-item/day-item.component.mjs +15 -0
  59. package/esm2020/component/date-picker/day-picker/day-picker.component.mjs +113 -0
  60. package/esm2020/component/date-picker/model/from-to.model.mjs +2 -0
  61. package/esm2020/component/date-picker/model/min-max-date.model.mjs +2 -0
  62. package/esm2020/component/date-picker/month-picker/month-picker.component.mjs +33 -236
  63. package/esm2020/component/date-picker/public-api.mjs +6 -5
  64. package/esm2020/component/date-picker/year-picker/scroll-to-selected-year.directive.mjs +26 -0
  65. package/esm2020/component/date-picker/year-picker/year-picker.component.mjs +48 -0
  66. package/esm2020/component/divider/divider/divider.component.mjs +18 -0
  67. package/esm2020/component/divider/divider.module.mjs +20 -0
  68. package/esm2020/component/divider/public-api.mjs +3 -0
  69. package/esm2020/component/dropdown/dropdown/dropdown.component.mjs +3 -2
  70. package/esm2020/component/dropdown/dropdown-base.mjs +6 -2
  71. package/esm2020/component/dropdown/dropdown.directive.mjs +1 -1
  72. package/esm2020/component/expand-card/expand-card/expand-card.component.mjs +1 -1
  73. package/esm2020/component/expand-card/expand-item/expand-item.component.mjs +1 -1
  74. package/esm2020/component/expand-panel/expand-panel/expand-panel.component.mjs +1 -1
  75. package/esm2020/component/file-upload/file-upload-area/file-upload-area.component.mjs +1 -1
  76. package/esm2020/component/filter/date-filter/date-filter.component.mjs +1 -1
  77. package/esm2020/component/filter/list-filter/list-filter.component.mjs +1 -1
  78. package/esm2020/component/filter/numeric-filter/numeric-filter.component.mjs +1 -1
  79. package/esm2020/component/filter/string-filter/string-filter.component.mjs +1 -1
  80. package/esm2020/component/icon/icon-file/icon-file.component.mjs +20 -6
  81. package/esm2020/component/icon/icon-file/icon-file.module.mjs +28 -0
  82. package/esm2020/component/icon/icon.module.mjs +1 -6
  83. package/esm2020/component/icon/public-api.mjs +2 -1
  84. package/esm2020/component/input/input/input.component.mjs +6 -3
  85. package/esm2020/component/input/input.module.mjs +1 -1
  86. package/esm2020/component/input/text-field/text-field.component.mjs +3 -3
  87. package/esm2020/component/message/message/message.component.mjs +4 -3
  88. package/esm2020/component/message/message-host/message-host.component.mjs +1 -1
  89. package/esm2020/component/message/model/message.mjs +2 -1
  90. package/esm2020/component/modal/dialog/dialog.component.mjs +1 -1
  91. package/esm2020/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +2 -2
  92. package/esm2020/component/public-api.mjs +4 -1
  93. package/esm2020/component/select/select/select.component.mjs +9 -4
  94. package/esm2020/component/switch/switch/switch.component.mjs +19 -7
  95. package/esm2020/component/table/default/boolean-cell/boolean-cell.component.mjs +1 -1
  96. package/esm2020/component/table/default/date-cell/date-cell.component.mjs +1 -1
  97. package/esm2020/component/table/default/date-time-cell/date-time-cell.component.mjs +1 -1
  98. package/esm2020/component/table/default/default-head-cell/default-head-cell.component.mjs +1 -1
  99. package/esm2020/component/table/default/list-cell/list-cell.component.mjs +1 -1
  100. package/esm2020/component/table/default/string-cell/string-cell.component.mjs +1 -1
  101. package/esm2020/component/table/selection-cell/selection-cell.component.mjs +1 -1
  102. package/esm2020/component/table/selection-head-cell/selection-head-cell.component.mjs +1 -1
  103. package/esm2020/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.mjs +1 -1
  104. package/esm2020/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.mjs +1 -1
  105. package/esm2020/component/table/util/table-util.mjs +4 -4
  106. package/esm2020/component/theme-switch/theme-switch/theme-switch.component.mjs +1 -1
  107. package/esm2020/directive/hint/hint.directive.mjs +6 -3
  108. package/esm2020/locale/en.mjs +3 -1
  109. package/esm2020/locale/ru.mjs +3 -1
  110. package/esm2020/locale/teta-localisation.mjs +1 -1
  111. package/fesm2015/tetacom-ng-components.mjs +2902 -3018
  112. package/fesm2015/tetacom-ng-components.mjs.map +1 -1
  113. package/fesm2020/tetacom-ng-components.mjs +5443 -5568
  114. package/fesm2020/tetacom-ng-components.mjs.map +1 -1
  115. package/locale/teta-localisation.d.ts +2 -0
  116. package/package.json +3 -2
  117. package/style/accordion.scss +28 -6
  118. package/style/assembly-library.scss +4 -1
  119. package/style/badge.scss +28 -0
  120. package/style/bottombar.scss +5 -0
  121. package/style/button.scss +16 -12
  122. package/style/checkbox.scss +26 -13
  123. package/style/chips.scss +10 -10
  124. package/style/color.scss +1 -36
  125. package/style/datepicker.scss +139 -24
  126. package/style/divider.scss +15 -0
  127. package/style/drag.scss +1 -1
  128. package/style/dropdown.scss +6 -4
  129. package/style/hint.scss +5 -5
  130. package/style/icon.scss +2 -1
  131. package/style/input.scss +32 -23
  132. package/style/layout.scss +6 -2
  133. package/style/list.scss +11 -8
  134. package/style/loader.scss +2 -2
  135. package/style/message.scss +15 -7
  136. package/style/modal.scss +3 -2
  137. package/style/navigation.scss +4 -1
  138. package/style/presets/color-presets.scss +9 -160
  139. package/style/presets/font-presets.scss +26 -25
  140. package/style/presets/view-types.scss +15 -0
  141. package/style/progress.scss +3 -3
  142. package/style/radio.scss +21 -7
  143. package/style/resize-panel.scss +2 -2
  144. package/style/scroll.scss +3 -3
  145. package/style/select.scss +26 -21
  146. package/style/shadow.scss +0 -20
  147. package/style/sidebar.scss +1 -1
  148. package/style/switch.scss +15 -10
  149. package/style/table.scss +15 -15
  150. package/style/tabs.scss +11 -11
  151. package/style/tag.scss +37 -0
  152. package/style/toggle.scss +20 -18
  153. package/style/toolbar.scss +1 -1
  154. package/style/tooltip.scss +8 -6
  155. package/style/tree.scss +4 -4
  156. package/component/date-picker/day-select/day-select.component.d.ts +0 -51
  157. package/component/date-picker/model/date-picker-mode.enum.d.ts +0 -5
  158. package/component/date-picker/month-select/month-select.component.d.ts +0 -40
  159. package/component/date-picker/service/picker-touch.service.d.ts +0 -12
  160. package/component/date-picker/time-part-control/time-part-control.component.d.ts +0 -26
  161. package/component/date-picker/util/date-picker-util.d.ts +0 -15
  162. package/component/date-picker/year-select/year-select.component.d.ts +0 -45
  163. package/esm2020/component/date-picker/day-select/day-select.component.mjs +0 -184
  164. package/esm2020/component/date-picker/model/date-picker-mode.enum.mjs +0 -7
  165. package/esm2020/component/date-picker/month-select/month-select.component.mjs +0 -148
  166. package/esm2020/component/date-picker/service/picker-touch.service.mjs +0 -34
  167. package/esm2020/component/date-picker/time-part-control/time-part-control.component.mjs +0 -73
  168. package/esm2020/component/date-picker/util/date-picker-util.mjs +0 -142
  169. package/esm2020/component/date-picker/year-select/year-select.component.mjs +0 -189
  170. package/esm2020/pipe/prepend-zero/prepend-zero.module.mjs +0 -18
  171. package/esm2020/pipe/prepend-zero/prepend-zero.pipe.mjs +0 -21
  172. package/pipe/prepend-zero/prepend-zero.module.d.ts +0 -8
  173. package/pipe/prepend-zero/prepend-zero.pipe.d.ts +0 -7
  174. package/style/tokens/basedark.tokens.css +0 -77
  175. package/style/tokens/baselight.tokens.css +0 -61
  176. package/style/tokens/global.tokens.css +0 -235
  177. package/style/tokens/utility.tokens.css +0 -1119
@@ -0,0 +1,113 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import dayjs from "dayjs";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "./day-item/day-item.component";
6
+ export class DayPickerComponent {
7
+ constructor() {
8
+ this.date = new Date();
9
+ this.hoveredDateChange = new EventEmitter();
10
+ this.selectDate = new EventEmitter();
11
+ this.daysOfWeek = new Map().set('ru', ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс']).set('en', ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']);
12
+ }
13
+ isInRange(day, from, to) {
14
+ const matchesMinDate = dayjs(new Date(from)).startOf('date').toDate() <= day.date;
15
+ const matchesMaxDate = day.date < dayjs(new Date(to)).endOf('date').toDate();
16
+ return matchesMinDate && matchesMaxDate;
17
+ }
18
+ isHoveredRange(day) {
19
+ if (!this.range?.to && this.range?.from) {
20
+ return this.isInRange(day, this.range.from, this.hoveredDate) || this.isInRange(day, this.hoveredDate, this.range.from);
21
+ }
22
+ return false;
23
+ }
24
+ isActiveRange(day) {
25
+ if (this.range?.from && this.range?.to) {
26
+ return this.isInRange(day, this.range.from, this.range.to);
27
+ }
28
+ return false;
29
+ }
30
+ pickDate(day) {
31
+ if (!day.disabled) {
32
+ this.selectDate.emit(day.date);
33
+ }
34
+ }
35
+ getRangeActiveClass(d) {
36
+ if (this.range && new Date(this.range?.from).getTime() !== new Date(this.range?.to).getTime()) {
37
+ if (this.range.to) {
38
+ return this.getClassStaticItem(d);
39
+ }
40
+ else {
41
+ if (this.hoveredDate.getTime() === d.date.getTime()) {
42
+ return this.getClassHoveredItem();
43
+ }
44
+ else {
45
+ return this.getClassSelectedItem(d);
46
+ }
47
+ }
48
+ }
49
+ return '';
50
+ }
51
+ hover(date) {
52
+ if (date?.getTime() !== this.hoveredDate?.getTime()) {
53
+ this.hoveredDate = date;
54
+ this.hoveredDateChange.emit(date);
55
+ }
56
+ }
57
+ getClassStaticItem(d) {
58
+ const from = dayjs(new Date(this.range.from)).startOf("day").toDate();
59
+ const to = dayjs(new Date(this.range.to)).startOf("day").toDate();
60
+ const itemDate = dayjs(new Date(d.date)).startOf("day").toDate();
61
+ if (from.getTime() === itemDate.getTime()) {
62
+ return 'datepicker-date_active-first';
63
+ }
64
+ if (to.getTime() === itemDate.getTime()) {
65
+ return 'datepicker-date_active-second';
66
+ }
67
+ return '';
68
+ }
69
+ getClassHoveredItem() {
70
+ if (new Date(this.range.from) > this.hoveredDate) {
71
+ return 'datepicker-date_active-first';
72
+ }
73
+ if (new Date(this.range.from) < this.hoveredDate) {
74
+ return 'datepicker-date_active-second';
75
+ }
76
+ }
77
+ getClassSelectedItem(d) {
78
+ if (d.selected && d.date < this.hoveredDate) {
79
+ return 'datepicker-date_active-first';
80
+ }
81
+ if (d.selected && d.date > this.hoveredDate) {
82
+ return 'datepicker-date_active-second';
83
+ }
84
+ return '';
85
+ }
86
+ }
87
+ DayPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DayPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
88
+ DayPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: DayPickerComponent, selector: "teta-day-picker", inputs: { date: "date", calendar: "calendar", viewType: "viewType", range: "range", min: "min", max: "max", locale: "locale", hoveredDate: "hoveredDate" }, outputs: { hoveredDateChange: "hoveredDateChange", selectDate: "selectDate" }, ngImport: i0, template: "<div class=\"datepicker-week font-caption\">\n <p class=\"datepicker-day\" *ngFor=\"let day of daysOfWeek.get(locale)\">\n {{day}}\n </p>\n</div>\n<div class=\"datepicker-picker color-text-90 font-body-3\">\n <ng-container *ngFor=\"let day of calendar\">\n <div [class]=\"getRangeActiveClass(day)+' datepicker-date font-body-3 datepicker_'+viewType\"\n (mouseenter)=\"hover(day.date)\"\n (click)=\"pickDate(day)\"\n [ngClass]=\"{'datepicker-date_active':day.selected||(day.date===hoveredDate&&range&&!range.to),'datepicker-date-range_hover':range&&isHoveredRange(day),\n 'datepicker-date_disabled':day.disabled,'color-text-30':day.disabled||(!range&&!day.isCurrentMonth),'datepicker-date-range_disabled':!day.isCurrentMonth&&range,'datepicker-date-range_active':isActiveRange(day)}\">\n <teta-day-item [day]=\"day\"></teta-day-item>\n </div>\n </ng-container>\n</div>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.DayItemComponent, selector: "teta-day-item", inputs: ["day"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DayPickerComponent, decorators: [{
90
+ type: Component,
91
+ args: [{ selector: 'teta-day-picker', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"datepicker-week font-caption\">\n <p class=\"datepicker-day\" *ngFor=\"let day of daysOfWeek.get(locale)\">\n {{day}}\n </p>\n</div>\n<div class=\"datepicker-picker color-text-90 font-body-3\">\n <ng-container *ngFor=\"let day of calendar\">\n <div [class]=\"getRangeActiveClass(day)+' datepicker-date font-body-3 datepicker_'+viewType\"\n (mouseenter)=\"hover(day.date)\"\n (click)=\"pickDate(day)\"\n [ngClass]=\"{'datepicker-date_active':day.selected||(day.date===hoveredDate&&range&&!range.to),'datepicker-date-range_hover':range&&isHoveredRange(day),\n 'datepicker-date_disabled':day.disabled,'color-text-30':day.disabled||(!range&&!day.isCurrentMonth),'datepicker-date-range_disabled':!day.isCurrentMonth&&range,'datepicker-date-range_active':isActiveRange(day)}\">\n <teta-day-item [day]=\"day\"></teta-day-item>\n </div>\n </ng-container>\n</div>\n\n" }]
92
+ }], ctorParameters: function () { return []; }, propDecorators: { date: [{
93
+ type: Input
94
+ }], calendar: [{
95
+ type: Input
96
+ }], viewType: [{
97
+ type: Input
98
+ }], range: [{
99
+ type: Input
100
+ }], min: [{
101
+ type: Input
102
+ }], max: [{
103
+ type: Input
104
+ }], locale: [{
105
+ type: Input
106
+ }], hoveredDate: [{
107
+ type: Input
108
+ }], hoveredDateChange: [{
109
+ type: Output
110
+ }], selectDate: [{
111
+ type: Output
112
+ }] } });
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RheS1waWNrZXIvZGF5LXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL2RheS1waWNrZXIvZGF5LXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBSTlGLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7OztBQVExQixNQUFNLE9BQU8sa0JBQWtCO0lBYzdCO1FBYlMsU0FBSSxHQUEyQixJQUFJLElBQUksRUFBRSxDQUFDO1FBUXpDLHNCQUFpQixHQUF3QixJQUFJLFlBQVksRUFBUSxDQUFBO1FBQ2pFLGVBQVUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUM1RCxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUloSixDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQWEsRUFBRSxJQUE0QixFQUFFLEVBQTBCO1FBQy9FLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FB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QUFsQixrQkFBa0Isa1NDWi9CLDI1QkFpQkE7MkZETGEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNOzBFQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt2aWV3VHlwZX0gZnJvbSAncHJvamVjdHMvY29tcG9uZW50cy9zcmMvY29tbW9uL21vZGVsL3ZpZXctdHlwZS5tb2RlbCc7XG5pbXBvcnQge0RheU1vZGVsfSBmcm9tIFwiLi4vbW9kZWwvZGF5LW1vZGVsXCI7XG5pbXBvcnQge0RhdGVGcm9tVG9Nb2RlbH0gZnJvbSBcIi4uL21vZGVsL2Zyb20tdG8ubW9kZWxcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1kYXktcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RheS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXktcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERheVBpY2tlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGRhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgPSBuZXcgRGF0ZSgpO1xuICBASW5wdXQoKSBjYWxlbmRhcjogRGF5TW9kZWxbXTtcbiAgQElucHV0KCkgdmlld1R5cGU6IHZpZXdUeXBlO1xuICBASW5wdXQoKSByYW5nZT86IERhdGVGcm9tVG9Nb2RlbDtcbiAgQElucHV0KCkgbWluOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyO1xuICBASW5wdXQoKSBtYXg6IERhdGUgfCBzdHJpbmcgfCBudW1iZXI7XG4gIEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nO1xuICBASW5wdXQoKSBob3ZlcmVkRGF0ZT86IERhdGU7XG4gIEBPdXRwdXQoKSBob3ZlcmVkRGF0ZUNoYW5nZT86IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKVxuICBAT3V0cHV0KCkgc2VsZWN0RGF0ZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpXG4gIHB1YmxpYyBkYXlzT2ZXZWVrID0gbmV3IE1hcCgpLnNldCgncnUnLCBbJ9Cf0L0nLCAn0JLRgicsICfQodGAJywgJ9Cn0YInLCAn0J/RgicsICfQodCxJywgJ9CS0YEnXSkuc2V0KCdlbicsIFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J10pXG5cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxuXG4gIGlzSW5SYW5nZShkYXk6IERheU1vZGVsLCBmcm9tOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nLCB0bzogRGF0ZSB8IG51bWJlciB8IHN0cmluZykge1xuICAgIGNvbnN0IG1hdGNoZXNNaW5EYXRlID0gZGF5anMobmV3IERhdGUoZnJvbSkpLnN0YXJ0T2YoJ2RhdGUnKS50b0RhdGUoKSA8PSBkYXkuZGF0ZVxuICAgIGNvbnN0IG1hdGNoZXNNYXhEYXRlID0gZGF5LmRhdGUgPCBkYXlqcyhuZXcgRGF0ZSh0bykpLmVuZE9mKCdkYXRlJykudG9EYXRlKClcbiAgICByZXR1cm4gbWF0Y2hlc01pbkRhdGUgJiYgbWF0Y2hlc01heERhdGVcblxuICB9XG5cbiAgaXNIb3ZlcmVkUmFuZ2UoZGF5OiBEYXlNb2RlbCkge1xuICAgIGlmICghdGhpcy5yYW5nZT8udG8gJiYgdGhpcy5yYW5nZT8uZnJvbSkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNJblJhbmdlKGRheSwgdGhpcy5yYW5nZS5mcm9tLCB0aGlzLmhvdmVyZWREYXRlKSB8fCB0aGlzLmlzSW5SYW5nZShkYXksIHRoaXMuaG92ZXJlZERhdGUsIHRoaXMucmFuZ2UuZnJvbSlcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpc0FjdGl2ZVJhbmdlKGRheTogRGF5TW9kZWwpIHtcbiAgICBpZiAodGhpcy5yYW5nZT8uZnJvbSAmJiB0aGlzLnJhbmdlPy50bykge1xuICAgICAgcmV0dXJuIHRoaXMuaXNJblJhbmdlKGRheSwgdGhpcy5yYW5nZS5mcm9tLCB0aGlzLnJhbmdlLnRvKVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHBpY2tEYXRlKGRheTogRGF5TW9kZWwpIHtcbiAgICBpZiAoIWRheS5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZWxlY3REYXRlLmVtaXQoZGF5LmRhdGUpXG4gICAgfVxuICB9XG5cbiAgZ2V0UmFuZ2VBY3RpdmVDbGFzcyhkOiBEYXlNb2RlbCkge1xuICAgIGlmICh0aGlzLnJhbmdlICYmIG5ldyBEYXRlKHRoaXMucmFuZ2U/LmZyb20pLmdldFRpbWUoKSAhPT0gbmV3IERhdGUodGhpcy5yYW5nZT8udG8pLmdldFRpbWUoKSkge1xuICAgICAgaWYgKHRoaXMucmFuZ2UudG8pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3NTdGF0aWNJdGVtKGQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5ob3ZlcmVkRGF0ZS5nZXRUaW1lKCkgPT09IGQuZGF0ZS5nZXRUaW1lKCkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDbGFzc0hvdmVyZWRJdGVtKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDbGFzc1NlbGVjdGVkSXRlbShkKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaG92ZXIoZGF0ZTogRGF0ZSkge1xuICAgIGlmIChkYXRlPy5nZXRUaW1lKCkgIT09IHRoaXMuaG92ZXJlZERhdGU/LmdldFRpbWUoKSkge1xuICAgICAgdGhpcy5ob3ZlcmVkRGF0ZSA9IGRhdGVcbiAgICAgIHRoaXMuaG92ZXJlZERhdGVDaGFuZ2UuZW1pdChkYXRlKVxuICAgIH1cbiAgfVxuXG4gIGdldENsYXNzU3RhdGljSXRlbShkOiBEYXlNb2RlbCkge1xuICAgIGNvbnN0IGZyb20gPSBkYXlqcyhuZXcgRGF0ZSh0aGlzLnJhbmdlLmZyb20pKS5zdGFydE9mKFwiZGF5XCIpLnRvRGF0ZSgpO1xuICAgIGNvbnN0IHRvID0gZGF5anMobmV3IERhdGUodGhpcy5yYW5nZS50bykpLnN0YXJ0T2YoXCJkYXlcIikudG9EYXRlKCk7XG4gICAgY29uc3QgaXRlbURhdGUgPSBkYXlqcyhuZXcgRGF0ZShkLmRhdGUpKS5zdGFydE9mKFwiZGF5XCIpLnRvRGF0ZSgpO1xuICAgIGlmIChmcm9tLmdldFRpbWUoKSA9PT0gaXRlbURhdGUuZ2V0VGltZSgpKSB7XG4gICAgICByZXR1cm4gJ2RhdGVwaWNrZXItZGF0ZV9hY3RpdmUtZmlyc3QnXG4gICAgfVxuICAgIGlmICh0by5nZXRUaW1lKCkgPT09IGl0ZW1EYXRlLmdldFRpbWUoKSkge1xuICAgICAgcmV0dXJuICdkYXRlcGlja2VyLWRhdGVfYWN0aXZlLXNlY29uZCdcbiAgICB9XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBnZXRDbGFzc0hvdmVyZWRJdGVtKCkge1xuICAgIGlmIChuZXcgRGF0ZSh0aGlzLnJhbmdlLmZyb20pID4gdGhpcy5ob3ZlcmVkRGF0ZSkge1xuICAgICAgcmV0dXJuICdkYXRlcGlja2VyLWRhdGVfYWN0aXZlLWZpcnN0J1xuICAgIH1cbiAgICBpZiAobmV3IERhdGUodGhpcy5yYW5nZS5mcm9tKSA8IHRoaXMuaG92ZXJlZERhdGUpIHtcbiAgICAgIHJldHVybiAnZGF0ZXBpY2tlci1kYXRlX2FjdGl2ZS1zZWNvbmQnXG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xhc3NTZWxlY3RlZEl0ZW0oZDogRGF5TW9kZWwpIHtcbiAgICBpZiAoZC5zZWxlY3RlZCAmJiBkLmRhdGUgPCB0aGlzLmhvdmVyZWREYXRlKSB7XG4gICAgICByZXR1cm4gJ2RhdGVwaWNrZXItZGF0ZV9hY3RpdmUtZmlyc3QnXG4gICAgfVxuICAgIGlmIChkLnNlbGVjdGVkICYmIGQuZGF0ZSA+IHRoaXMuaG92ZXJlZERhdGUpIHtcbiAgICAgIHJldHVybiAnZGF0ZXBpY2tlci1kYXRlX2FjdGl2ZS1zZWNvbmQnXG4gICAgfVxuICAgIHJldHVybiAnJ1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci13ZWVrIGZvbnQtY2FwdGlvblwiPlxuICA8cCBjbGFzcz1cImRhdGVwaWNrZXItZGF5XCIgKm5nRm9yPVwibGV0IGRheSBvZiBkYXlzT2ZXZWVrLmdldChsb2NhbGUpXCI+XG4gICAge3tkYXl9fVxuICA8L3A+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLXBpY2tlciBjb2xvci10ZXh0LTkwIGZvbnQtYm9keS0zXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRheSBvZiBjYWxlbmRhclwiPlxuICAgIDxkaXYgW2NsYXNzXT1cImdldFJhbmdlQWN0aXZlQ2xhc3MoZGF5KSsnIGRhdGVwaWNrZXItZGF0ZSBmb250LWJvZHktMyBkYXRlcGlja2VyXycrdmlld1R5cGVcIlxuICAgICAgICAgKG1vdXNlZW50ZXIpPVwiaG92ZXIoZGF5LmRhdGUpXCJcbiAgICAgICAgIChjbGljayk9XCJwaWNrRGF0ZShkYXkpXCJcbiAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGF0ZXBpY2tlci1kYXRlX2FjdGl2ZSc6ZGF5LnNlbGVjdGVkfHwoZGF5LmRhdGU9PT1ob3ZlcmVkRGF0ZSYmcmFuZ2UmJiFyYW5nZS50byksJ2RhdGVwaWNrZXItZGF0ZS1yYW5nZV9ob3Zlcic6cmFuZ2UmJmlzSG92ZXJlZFJhbmdlKGRheSksXG4gICAgICAgICAnZGF0ZXBpY2tlci1kYXRlX2Rpc2FibGVkJzpkYXkuZGlzYWJsZWQsJ2NvbG9yLXRleHQtMzAnOmRheS5kaXNhYmxlZHx8KCFyYW5nZSYmIWRheS5pc0N1cnJlbnRNb250aCksJ2RhdGVwaWNrZXItZGF0ZS1yYW5nZV9kaXNhYmxlZCc6IWRheS5pc0N1cnJlbnRNb250aCYmcmFuZ2UsJ2RhdGVwaWNrZXItZGF0ZS1yYW5nZV9hY3RpdmUnOmlzQWN0aXZlUmFuZ2UoZGF5KX1cIj5cbiAgICAgIDx0ZXRhLWRheS1pdGVtIFtkYXldPVwiZGF5XCI+PC90ZXRhLWRheS1pdGVtPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbS10by5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvZGF0ZS1waWNrZXIvbW9kZWwvZnJvbS10by5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEYXRlRnJvbVRvTW9kZWwge1xuICBmcm9tOkRhdGV8c3RyaW5nfG51bWJlcixcbiAgdG86RGF0ZXxzdHJpbmd8bnVtYmVyXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluLW1heC1kYXRlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9kYXRlLXBpY2tlci9tb2RlbC9taW4tbWF4LWRhdGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTWluTWF4RGF0ZU1vZGVsIHtcbiAgbWluOkRhdGV8c3RyaW5nfG51bWJlcixcbiAgbWF4OkRhdGV8c3RyaW5nfG51bWJlclxufVxuIl19
@@ -1,252 +1,49 @@
1
- import { ChangeDetectionStrategy, Component, forwardRef, HostBinding, Input, } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { takeWhile } from 'rxjs/operators';
4
- import { DatePickerMode } from '../model/date-picker-mode.enum';
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
5
2
  import * as i0 from "@angular/core";
6
- import * as i1 from "../../../locale/teta-config.service";
7
- import * as i2 from "@angular/common";
8
- import * as i3 from "../../dropdown/dropdown/dropdown.component";
9
- import * as i4 from "../../dropdown/dropdown-head.directive";
10
- import * as i5 from "../../dropdown/dropdown-content.directive";
11
- import * as i6 from "../../icon/icon/icon.component";
12
- import * as i7 from "../../button/button/button.component";
13
- import * as i8 from "../year-select/year-select.component";
14
- import * as i9 from "../month-select/month-select.component";
15
- export const MONTH_PICKER_CONTROL_VALUE_ACCESSOR = {
16
- provide: NG_VALUE_ACCESSOR,
17
- useExisting: forwardRef(() => MonthPickerComponent),
18
- multi: true,
19
- };
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "../../button/button/button.component";
5
+ import * as i3 from "../../icon/icon/icon.component";
20
6
  export class MonthPickerComponent {
21
- constructor(localeService, _cdr) {
22
- this.localeService = localeService;
23
- this._cdr = _cdr;
24
- this.showToday = true;
25
- this.appendToBody = true;
26
- this.classDatepicker = true;
27
- this.tabindex = 0;
28
- this.datePickerModeEnum = DatePickerMode;
29
- this.displayMode = DatePickerMode.month;
30
- this._value = null;
31
- this._alive = true;
32
- this.onChange = (_) => {
33
- };
34
- this.onTouched = () => {
35
- };
36
- this.isMinInvalid = (dat) => {
37
- if (!this.minDate || !(this.minDate instanceof Date) || !dat) {
38
- return false;
39
- }
40
- const min = new Date(this.minDate.getFullYear(), this.minDate.getMonth(), 1);
41
- return min.getTime() > dat.getTime();
42
- };
43
- this.isMaxInvalid = (dat) => {
44
- if (!this.maxDate || !(this.maxDate instanceof Date) || !dat) {
45
- return false;
46
- }
47
- const max = new Date(this.maxDate.getFullYear(), this.maxDate.getMonth(), 1);
48
- return max.getTime() < dat.getTime();
49
- };
50
- this.scrollMonth = (e) => {
51
- if (this.showPicker) {
52
- return;
53
- }
54
- e.preventDefault();
55
- e.stopPropagation();
56
- if (!this._value) {
57
- return;
58
- }
59
- if (this.currentYear === null || this.currentYear === undefined) {
60
- this.currentYear = this.today.getFullYear();
61
- }
62
- if (this.currentMonth === null || this.currentMonth === undefined) {
63
- this.currentMonth = this.today.getMonth();
64
- }
65
- if (e.deltaY > 0) {
66
- if (this.currentMonth === 11) {
67
- this.currentMonth = 0;
68
- this.currentYear++;
69
- }
70
- else {
71
- this.currentMonth++;
72
- }
73
- }
74
- else {
75
- if (this.currentMonth === 0) {
76
- this.currentMonth = 11;
77
- this.currentYear--;
78
- }
79
- else {
80
- this.currentMonth--;
81
- }
82
- }
83
- const newDate = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);
84
- if (!this.isMinInvalid(newDate) && !this.isMaxInvalid(newDate)) {
85
- this.value = newDate;
86
- }
87
- };
88
- this.scrollYear = (e) => {
89
- if (this.showPicker) {
90
- return;
91
- }
92
- e.preventDefault();
93
- e.stopPropagation();
94
- if (!this._value) {
95
- return;
96
- }
97
- if (!this.currentYear) {
98
- this.currentYear = this.today.getFullYear();
99
- }
100
- if (!this.currentMonth) {
101
- this.currentMonth = this.today.getMonth();
102
- }
103
- if (e.deltaY > 0) {
104
- this.currentYear++;
105
- }
106
- else {
107
- this.currentYear--;
108
- }
109
- const newDate = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);
110
- if (!this.isMinInvalid(newDate) && !this.isMaxInvalid(newDate)) {
111
- this.value = newDate;
112
- }
113
- };
114
- this.setMonth = (month) => {
115
- this.currentMonth = month;
116
- if (!this.currentYear) {
117
- this.currentYear = this.today.getFullYear();
118
- }
119
- const newDate = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);
120
- if (!this.isMinInvalid(newDate) && !this.isMaxInvalid(newDate)) {
121
- this.value = newDate;
122
- }
123
- };
124
- this.setYear = (year) => {
125
- this.currentYear = year;
126
- if (!this.currentMonth) {
127
- this.currentMonth = this.today.getMonth();
128
- }
129
- const newDate = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);
130
- if (!this.isMinInvalid(newDate) && !this.isMaxInvalid(newDate)) {
131
- this.value = newDate;
132
- }
133
- };
134
- this.setToday = () => {
135
- const today = new Date();
136
- this.currentYear = today.getFullYear();
137
- this.currentMonth = today.getMonth();
138
- this.value = new Date(this.currentYear, this.currentMonth, 1, 0, 0, 0);
139
- this.showPicker = false;
140
- };
141
- localeService.locale
142
- .pipe(takeWhile((_) => this._alive))
143
- .subscribe((locale) => {
144
- this.locale = locale;
145
- });
146
- this.setDefaults();
147
- }
148
- get value() {
149
- return this._value;
150
- }
151
- set value(v) {
152
- if (v !== this._value) {
153
- this._value = v;
154
- this.onChange(v);
155
- }
156
- }
157
- get currentMonth() {
158
- return this._currentMonth;
159
- }
160
- set currentMonth(v) {
161
- if (v === null || v === undefined || v < 0 || v > 11) {
162
- return;
163
- }
164
- if (v !== this._currentMonth) {
165
- this._currentMonth = v;
166
- }
167
- }
168
- get currentYear() {
169
- return this._currentYear;
170
- }
171
- set currentYear(v) {
172
- if (v !== this._currentYear) {
173
- this._currentYear = v;
174
- }
7
+ constructor() {
8
+ this.selectedMonth = 1;
9
+ this.selectMonth = new EventEmitter();
10
+ this.changeYear = new EventEmitter();
11
+ this.months = [];
175
12
  }
176
- writeValue(value) {
177
- this._value = value;
178
- this.initPicker(value);
13
+ pickMonth(monthId) {
14
+ this.selectMonth.emit(monthId);
179
15
  }
180
- initPicker(date) {
181
- if (!date || !(date instanceof Date)) {
182
- this.setDefaults();
183
- }
184
- else {
185
- this.currentMonth = date.getMonth();
186
- this.currentYear = date.getFullYear();
187
- }
188
- this._cdr.markForCheck();
189
- }
190
- setDefaults() {
191
- this.today = new Date();
192
- this.currentMonth = null;
193
- this.currentYear = null;
194
- }
195
- clearPicker() {
196
- this.value = null;
197
- }
198
- registerOnChange(fn) {
199
- this.onChange = fn;
200
- }
201
- registerOnTouched(fn) {
202
- this.onTouched = fn;
16
+ pickYear(year) {
17
+ this.changeYear.emit(year);
203
18
  }
204
19
  ngOnInit() {
205
- if (!this.minDate || !(this.minDate instanceof Date)) {
206
- this.minDate = new Date('1900-01-01T00:00:00Z');
207
- }
208
- if (!this.maxDate || !(this.maxDate instanceof Date)) {
209
- this.maxDate = new Date('2100-12-31T00:00:00Z');
210
- }
211
- this.initPicker(this.value);
212
- }
213
- ngOnDestroy() {
214
- this._alive = false;
215
- }
216
- setMode(mode) {
217
- let result;
218
- if (mode === this.displayMode || mode === DatePickerMode.month) {
219
- result = DatePickerMode.month;
220
- }
221
- else {
222
- result = mode;
223
- }
224
- this.displayMode = result;
20
+ this.months = this.localeMoths.get(this.locale).map((m, i) => {
21
+ return {
22
+ id: i,
23
+ name: m,
24
+ isSelected: this.selectedMonth === i
25
+ };
26
+ });
225
27
  }
226
28
  }
227
- MonthPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: MonthPickerComponent, deps: [{ token: i1.TetaConfigService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
228
- MonthPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: MonthPickerComponent, selector: "teta-month-picker", inputs: { disabled: "disabled", minDate: "minDate", maxDate: "maxDate", showToday: "showToday", appendToBody: "appendToBody" }, host: { properties: { "class.datepicker_open": "this.showPicker", "class.datepicker": "this.classDatepicker", "tabindex": "this.tabindex" } }, providers: [MONTH_PICKER_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: "<teta-dropdown\n class=\"row row_auto\"\n [appendToBody]=\"appendToBody\"\n [autoCloseIgnore]=\"['esc', 'inside']\"\n [(open)]=\"showPicker\"\n [disabled]=\"disabled\">\n <div tetaDropdownHead\n (wheel)=\"scrollMonth($event)\"\n class=\"datepicker-head font-body-3\">\n <teta-icon [name]=\"'calendar'\" class=\"margin-right-2\"></teta-icon>\n <div class=\"row_auto\">\n <ng-container *ngIf=\"_value !==null && _value!==undefined\">\n {{locale.months[_value.getMonth()]}} {{_value.getFullYear()}}\n </ng-container>\n </div>\n <teta-icon [name]=\"'closeBig'\" (click)=\"clearPicker()\" class=\"margin-left-2\"></teta-icon>\n </div>\n <div tetaDropdownContent class=\"scrollable padding-3\">\n <div class=\"row align-center justify-content-between\">\n <div>\n <button teta-button\n type=\"button\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.month ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.month)\"\n (wheel)=\"scrollMonth($event);\">\n {{locale.months[_currentMonth || today.getMonth()]}}\n </button>\n <button teta-button\n type=\"button\"\n class=\"margin-left-2\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.year ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.year)\"\n (wheel)=\"scrollYear($event);\">\n {{_currentYear || today.getFullYear()}}\n </button>\n </div>\n <button teta-button\n type=\"button\"\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"setToday()\">\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </button>\n </div>\n <div class=\"datepicker-content\">\n <teta-year-select\n *ngIf=\"displayMode === datePickerModeEnum.year\"\n [currentYear]=\"_currentYear\"\n [today]=\"today\"\n [size]=\"8\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (yearSelected)=\"setYear($event)\">\n </teta-year-select>\n <teta-month-select\n *ngIf=\"displayMode === datePickerModeEnum.month\"\n [currentMonth]=\"_currentMonth\"\n [locale]=\"locale\"\n [currentYear]=\"_currentYear\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (monthSelected)=\"setMonth($event)\">\n </teta-month-select>\n </div>\n </div>\n</teta-dropdown>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DropdownComponent, selector: "teta-dropdown", exportAs: ["dropdown"] }, { kind: "directive", type: i4.DropdownHeadDirective, selector: "[tetaDropdownHead]" }, { kind: "directive", type: i5.DropdownContentDirective, selector: "[tetaDropdownContent]" }, { kind: "component", type: i6.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: i7.ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { kind: "component", type: i8.YearSelectComponent, selector: "teta-year-select", inputs: ["currentYear", "today", "size", "minDate", "maxDate", "allowableRange"], outputs: ["yearSelected", "yearApplied"] }, { kind: "component", type: i9.MonthSelectComponent, selector: "teta-month-select", inputs: ["locale", "minDate", "maxDate", "size", "currentMonth", "currentYear"], outputs: ["monthSelected", "monthApplied"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
29
+ MonthPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: MonthPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ MonthPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: MonthPickerComponent, selector: "teta-month-picker", inputs: { locale: "locale", selectedMonth: "selectedMonth", viewType: "viewType", currentYear: "currentYear", localeMoths: "localeMoths" }, outputs: { selectMonth: "selectMonth", changeYear: "changeYear" }, ngImport: i0, template: "<div class=\"padding-h-3 padding-v-2 gap-8 column datepicker-month-wrapper\">\n <div class=\"row align-center justify-content-between font-button-2\">\n <teta-button [class]=\"'change-month-button datepicker_'+viewType\" [square]=\"true\"\n (click)=\"pickYear(currentYear-1)\"\n palette=\"text\"\n view=\"ghost\">\n <teta-icon name=\"arrowLeftKey\"></teta-icon>\n </teta-button>\n <p>{{currentYear}}</p>\n <teta-button [square]=\"true\" [class]=\"'change-month-button datepicker_'+viewType\"\n (click)=\"pickYear(currentYear+1)\"\n palette=\"text\"\n view=\"ghost\">\n <teta-icon name=\"arrowRightKey\"></teta-icon>\n </teta-button>\n </div>\n <div class=\"datepicker-month font-body-3 color-text-90\"\n style=\"width: 100%\">\n <div *ngFor=\"let month of months\" (click)=\"pickMonth(month.id)\">\n <div [ngClass]=\"{'datepicker-month_item_active':month.isSelected}\"\n [class]=\"'datepicker-month_item column align-center justify-content-center datepicker_'+viewType\">\n <p>\n {{month.name}}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
229
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: MonthPickerComponent, decorators: [{
230
32
  type: Component,
231
- args: [{ selector: 'teta-month-picker', providers: [MONTH_PICKER_CONTROL_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<teta-dropdown\n class=\"row row_auto\"\n [appendToBody]=\"appendToBody\"\n [autoCloseIgnore]=\"['esc', 'inside']\"\n [(open)]=\"showPicker\"\n [disabled]=\"disabled\">\n <div tetaDropdownHead\n (wheel)=\"scrollMonth($event)\"\n class=\"datepicker-head font-body-3\">\n <teta-icon [name]=\"'calendar'\" class=\"margin-right-2\"></teta-icon>\n <div class=\"row_auto\">\n <ng-container *ngIf=\"_value !==null && _value!==undefined\">\n {{locale.months[_value.getMonth()]}} {{_value.getFullYear()}}\n </ng-container>\n </div>\n <teta-icon [name]=\"'closeBig'\" (click)=\"clearPicker()\" class=\"margin-left-2\"></teta-icon>\n </div>\n <div tetaDropdownContent class=\"scrollable padding-3\">\n <div class=\"row align-center justify-content-between\">\n <div>\n <button teta-button\n type=\"button\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.month ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.month)\"\n (wheel)=\"scrollMonth($event);\">\n {{locale.months[_currentMonth || today.getMonth()]}}\n </button>\n <button teta-button\n type=\"button\"\n class=\"margin-left-2\"\n [palette]=\"'text'\"\n [view]=\"displayMode===datePickerModeEnum.year ? 'primary' : 'ghost'\"\n (click)=\"setMode(datePickerModeEnum.year)\"\n (wheel)=\"scrollYear($event);\">\n {{_currentYear || today.getFullYear()}}\n </button>\n </div>\n <button teta-button\n type=\"button\"\n [palette]=\"'text'\"\n [view]=\"'ghost'\"\n (click)=\"setToday()\">\n <teta-icon [name]=\"'calendar'\"></teta-icon>\n </button>\n </div>\n <div class=\"datepicker-content\">\n <teta-year-select\n *ngIf=\"displayMode === datePickerModeEnum.year\"\n [currentYear]=\"_currentYear\"\n [today]=\"today\"\n [size]=\"8\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (yearSelected)=\"setYear($event)\">\n </teta-year-select>\n <teta-month-select\n *ngIf=\"displayMode === datePickerModeEnum.month\"\n [currentMonth]=\"_currentMonth\"\n [locale]=\"locale\"\n [currentYear]=\"_currentYear\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (monthSelected)=\"setMonth($event)\">\n </teta-month-select>\n </div>\n </div>\n</teta-dropdown>\n" }]
232
- }], ctorParameters: function () { return [{ type: i1.TetaConfigService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
33
+ args: [{ selector: 'teta-month-picker', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"padding-h-3 padding-v-2 gap-8 column datepicker-month-wrapper\">\n <div class=\"row align-center justify-content-between font-button-2\">\n <teta-button [class]=\"'change-month-button datepicker_'+viewType\" [square]=\"true\"\n (click)=\"pickYear(currentYear-1)\"\n palette=\"text\"\n view=\"ghost\">\n <teta-icon name=\"arrowLeftKey\"></teta-icon>\n </teta-button>\n <p>{{currentYear}}</p>\n <teta-button [square]=\"true\" [class]=\"'change-month-button datepicker_'+viewType\"\n (click)=\"pickYear(currentYear+1)\"\n palette=\"text\"\n view=\"ghost\">\n <teta-icon name=\"arrowRightKey\"></teta-icon>\n </teta-button>\n </div>\n <div class=\"datepicker-month font-body-3 color-text-90\"\n style=\"width: 100%\">\n <div *ngFor=\"let month of months\" (click)=\"pickMonth(month.id)\">\n <div [ngClass]=\"{'datepicker-month_item_active':month.isSelected}\"\n [class]=\"'datepicker-month_item column align-center justify-content-center datepicker_'+viewType\">\n <p>\n {{month.name}}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n\n" }]
34
+ }], ctorParameters: function () { return []; }, propDecorators: { locale: [{
233
35
  type: Input
234
- }], minDate: [{
36
+ }], selectedMonth: [{
235
37
  type: Input
236
- }], maxDate: [{
38
+ }], viewType: [{
237
39
  type: Input
238
- }], showToday: [{
40
+ }], currentYear: [{
239
41
  type: Input
240
- }], appendToBody: [{
42
+ }], localeMoths: [{
241
43
  type: Input
242
- }], showPicker: [{
243
- type: HostBinding,
244
- args: ['class.datepicker_open']
245
- }], classDatepicker: [{
246
- type: HostBinding,
247
- args: ['class.datepicker']
248
- }], tabindex: [{
249
- type: HostBinding,
250
- args: ['tabindex']
44
+ }], selectMonth: [{
45
+ type: Output
46
+ }], changeYear: [{
47
+ type: Output
251
48
  }] } });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvZGF0ZS1waWNrZXIvbW9udGgtcGlja2VyL21vbnRoLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL21vbnRoLXBpY2tlci9tb250aC1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF1QixpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7O0FBSTlELE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFRO0lBQ3RELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztJQUNuRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFTRixNQUFNLE9BQU8sb0JBQW9CO0lBMkQvQixZQUNTLGFBQWdDLEVBQy9CLElBQXVCO1FBRHhCLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQXhEeEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUdxQixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUMvQixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBRXZELHVCQUFrQixHQUFHLGNBQWMsQ0FBQztRQUtwQyxnQkFBVyxHQUFtQixjQUFjLENBQUMs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Qzs7aUhBeFBVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLDJUQUhwQixDQUFDLG1DQUFtQyxDQUFDLDBCQzFCbEQsdWlGQW9FQTsyRkR2Q2Esb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLG1CQUFtQixhQUdsQixDQUFDLG1DQUFtQyxDQUFDLG1CQUMvQix1QkFBdUIsQ0FBQyxNQUFNO3dJQUl0QyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVnQyxVQUFVO3NCQUEvQyxXQUFXO3VCQUFDLHVCQUF1QjtnQkFDYyxlQUFlO3NCQUFoRSxXQUFXO3VCQUFDLGtCQUFrQjtnQkFDVyxRQUFRO3NCQUFqRCxXQUFXO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHt0YWtlV2hpbGV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RGF0ZVBpY2tlck1vZGV9IGZyb20gJy4uL21vZGVsL2RhdGUtcGlja2VyLW1vZGUuZW51bSc7XG5pbXBvcnQge1RldGFMb2NhbGlzYXRpb259IGZyb20gJy4uLy4uLy4uL2xvY2FsZS90ZXRhLWxvY2FsaXNhdGlvbic7XG5pbXBvcnQge1RldGFDb25maWdTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9sb2NhbGUvdGV0YS1jb25maWcuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBNT05USF9QSUNLRVJfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTW9udGhQaWNrZXJDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtbW9udGgtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vbnRoLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vbnRoLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtNT05USF9QSUNLRVJfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNb250aFBpY2tlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlO1xuICBASW5wdXQoKSBtYXhEYXRlOiBEYXRlO1xuICBASW5wdXQoKSBzaG93VG9kYXkgPSB0cnVlO1xuICBASW5wdXQoKSBhcHBlbmRUb0JvZHkgPSB0cnVlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGF0ZXBpY2tlcl9vcGVuJykgc2hvd1BpY2tlcjogYm9vbGVhbjtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kYXRlcGlja2VyJykgcHJpdmF0ZSByZWFkb25seSBjbGFzc0RhdGVwaWNrZXIgPSB0cnVlO1xuICBASG9zdEJpbmRpbmcoJ3RhYmluZGV4JykgcHJpdmF0ZSByZWFkb25seSB0YWJpbmRleCA9IDA7XG5cbiAgZGF0ZVBpY2tlck1vZGVFbnVtID0gRGF0ZVBpY2tlck1vZGU7XG5cbiAgbG9jYWxlOiBUZXRhTG9jYWxpc2F0aW9uO1xuICB0b2RheTogRGF0ZTtcblxuICBkaXNwbGF5TW9kZTogRGF0ZVBpY2tlck1vZGUgPSBEYXRlUGlja2VyTW9kZS5tb250aDtcblxuICBfdmFsdWU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgX2N1cnJlbnRNb250aDogbnVtYmVyIHwgbnVsbDtcbiAgX2N1cnJlbnRZZWFyOiBudW1iZXIgfCBudWxsO1xuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICAgIHRoaXMub25DaGFuZ2Uodik7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGN1cnJlbnRNb250aCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudE1vbnRoO1xuICB9XG5cbiAgc2V0IGN1cnJlbnRNb250aCh2OiBudW1iZXIgfCBudWxsKSB7XG4gICAgaWYgKHYgPT09IG51bGwgfHwgdiA9PT0gdW5kZWZpbmVkIHx8IHYgPCAwIHx8IHYgPiAxMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodiAhPT0gdGhpcy5fY3VycmVudE1vbnRoKSB7XG4gICAgICB0aGlzLl9jdXJyZW50TW9udGggPSB2O1xuICAgIH1cbiAgfVxuXG4gIGdldCBjdXJyZW50WWVhcigpOiBudW1iZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFllYXI7XG4gIH1cblxuICBzZXQgY3VycmVudFllYXIodjogbnVtYmVyIHwgbnVsbCkge1xuICAgIGlmICh2ICE9PSB0aGlzLl9jdXJyZW50WWVhcikge1xuICAgICAgdGhpcy5fY3VycmVudFllYXIgPSB2O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FsaXZlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbG9jYWxlU2VydmljZTogVGV0YUNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBsb2NhbGVTZXJ2aWNlLmxvY2FsZVxuICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKChsb2NhbGU6IFRldGFMb2NhbGlzYXRpb24pID0+IHtcbiAgICAgICAgdGhpcy5sb2NhbGUgPSBsb2NhbGU7XG4gICAgICB9KTtcbiAgICB0aGlzLnNldERlZmF1bHRzKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuaW5pdFBpY2tlcih2YWx1ZSk7XG4gIH1cblxuICBpbml0UGlja2VyKGRhdGU6IERhdGUpIHtcbiAgICBpZiAoIWRhdGUgfHwgIShkYXRlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgIHRoaXMuc2V0RGVmYXVsdHMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJyZW50TW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gICAgICB0aGlzLmN1cnJlbnRZZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIH1cbiAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBzZXREZWZhdWx0cygpIHtcbiAgICB0aGlzLnRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50WWVhciA9IG51bGw7XG4gIH1cblxuICBjbGVhclBpY2tlcigpIHtcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9O1xuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHtcbiAgfTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLm1pbkRhdGUgfHwgISh0aGlzLm1pbkRhdGUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgdGhpcy5taW5EYXRlID0gbmV3IERhdGUoJzE5MDAtMDEtMDFUMDA6MDA6MDBaJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5tYXhEYXRlIHx8ICEodGhpcy5tYXhEYXRlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgIHRoaXMubWF4RGF0ZSA9IG5ldyBEYXRlKCcyMTAwLTEyLTMxVDAwOjAwOjAwWicpO1xuICAgIH1cbiAgICB0aGlzLmluaXRQaWNrZXIodGhpcy52YWx1ZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgaXNNaW5JbnZhbGlkID0gKGRhdDogRGF0ZSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICghdGhpcy5taW5EYXRlIHx8ICEodGhpcy5taW5EYXRlIGluc3RhbmNlb2YgRGF0ZSkgfHwgIWRhdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBtaW4gPSBuZXcgRGF0ZShcbiAgICAgIHRoaXMubWluRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgdGhpcy5taW5EYXRlLmdldE1vbnRoKCksXG4gICAgICAxXG4gICAgKTtcbiAgICByZXR1cm4gbWluLmdldFRpbWUoKSA+IGRhdC5nZXRUaW1lKCk7XG4gIH07XG5cbiAgaXNNYXhJbnZhbGlkID0gKGRhdDogRGF0ZSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICghdGhpcy5tYXhEYXRlIHx8ICEodGhpcy5tYXhEYXRlIGluc3RhbmNlb2YgRGF0ZSkgfHwgIWRhdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBtYXggPSBuZXcgRGF0ZShcbiAgICAgIHRoaXMubWF4RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgdGhpcy5tYXhEYXRlLmdldE1vbnRoKCksXG4gICAgICAxXG4gICAgKTtcbiAgICByZXR1cm4gbWF4LmdldFRpbWUoKSA8IGRhdC5nZXRUaW1lKCk7XG4gIH07XG5cbiAgc2Nyb2xsTW9udGggPSAoZTogYW55KSA9PiB7XG4gICAgaWYgKHRoaXMuc2hvd1BpY2tlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXRoaXMuX3ZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmN1cnJlbnRZZWFyID09PSBudWxsIHx8IHRoaXMuY3VycmVudFllYXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jdXJyZW50WWVhciA9IHRoaXMudG9kYXkuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY3VycmVudE1vbnRoID09PSBudWxsIHx8IHRoaXMuY3VycmVudE1vbnRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gdGhpcy50b2RheS5nZXRNb250aCgpO1xuICAgIH1cbiAgICBpZiAoZS5kZWx0YVkgPiAwKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50TW9udGggPT09IDExKSB7XG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gMDtcbiAgICAgICAgdGhpcy5jdXJyZW50WWVhcisrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9udGgrKztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuY3VycmVudE1vbnRoID09PSAwKSB7XG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gMTE7XG4gICAgICAgIHRoaXMuY3VycmVudFllYXItLTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3VycmVudE1vbnRoLS07XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCwgMSwgMCwgMCwgMCk7XG4gICAgaWYgKCF0aGlzLmlzTWluSW52YWxpZChuZXdEYXRlKSAmJiAhdGhpcy5pc01heEludmFsaWQobmV3RGF0ZSkpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBuZXdEYXRlO1xuICAgIH1cbiAgfTtcblxuICBzY3JvbGxZZWFyID0gKGU6IGFueSkgPT4ge1xuICAgIGlmICh0aGlzLnNob3dQaWNrZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKCF0aGlzLl92YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuY3VycmVudFllYXIpIHtcbiAgICAgIHRoaXMuY3VycmVudFllYXIgPSB0aGlzLnRvZGF5LmdldEZ1bGxZZWFyKCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5jdXJyZW50TW9udGgpIHtcbiAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gdGhpcy50b2RheS5nZXRNb250aCgpO1xuICAgIH1cbiAgICBpZiAoZS5kZWx0YVkgPiAwKSB7XG4gICAgICB0aGlzLmN1cnJlbnRZZWFyKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudFllYXItLTtcbiAgICB9XG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoLCAxLCAwLCAwLCAwKTtcbiAgICBpZiAoIXRoaXMuaXNNaW5JbnZhbGlkKG5ld0RhdGUpICYmICF0aGlzLmlzTWF4SW52YWxpZChuZXdEYXRlKSkge1xuICAgICAgdGhpcy52YWx1ZSA9IG5ld0RhdGU7XG4gICAgfVxuICB9O1xuXG4gIHNldE1vbnRoID0gKG1vbnRoOiBudW1iZXIpID0+IHtcbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IG1vbnRoO1xuICAgIGlmICghdGhpcy5jdXJyZW50WWVhcikge1xuICAgICAgdGhpcy5jdXJyZW50WWVhciA9IHRoaXMudG9kYXkuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VycmVudFllYXIsIHRoaXMuY3VycmVudE1vbnRoLCAxLCAwLCAwLCAwKTtcbiAgICBpZiAoIXRoaXMuaXNNaW5JbnZhbGlkKG5ld0RhdGUpICYmICF0aGlzLmlzTWF4SW52YWxpZChuZXdEYXRlKSkge1xuICAgICAgdGhpcy52YWx1ZSA9IG5ld0RhdGU7XG4gICAgfVxuICB9O1xuXG4gIHNldFllYXIgPSAoeWVhcjogbnVtYmVyKSA9PiB7XG4gICAgdGhpcy5jdXJyZW50WWVhciA9IHllYXI7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRNb250aCkge1xuICAgICAgdGhpcy5jdXJyZW50TW9udGggPSB0aGlzLnRvZGF5LmdldE1vbnRoKCk7XG4gICAgfVxuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCwgMSwgMCwgMCwgMCk7XG4gICAgaWYgKCF0aGlzLmlzTWluSW52YWxpZChuZXdEYXRlKSAmJiAhdGhpcy5pc01heEludmFsaWQobmV3RGF0ZSkpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBuZXdEYXRlO1xuICAgIH1cbiAgfTtcblxuICBzZXRUb2RheSA9ICgpID0+IHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5jdXJyZW50WWVhciA9IHRvZGF5LmdldEZ1bGxZZWFyKCk7XG4gICAgdGhpcy5jdXJyZW50TW9udGggPSB0b2RheS5nZXRNb250aCgpO1xuICAgIHRoaXMudmFsdWUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCwgMSwgMCwgMCwgMCk7XG4gICAgdGhpcy5zaG93UGlja2VyID0gZmFsc2U7XG4gIH07XG5cbiAgc2V0TW9kZShtb2RlOiBEYXRlUGlja2VyTW9kZSkge1xuICAgIGxldCByZXN1bHQ6IERhdGVQaWNrZXJNb2RlO1xuICAgIGlmIChtb2RlID09PSB0aGlzLmRpc3BsYXlNb2RlIHx8IG1vZGUgPT09IERhdGVQaWNrZXJNb2RlLm1vbnRoKSB7XG4gICAgICByZXN1bHQgPSBEYXRlUGlja2VyTW9kZS5tb250aDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gbW9kZTtcbiAgICB9XG4gICAgdGhpcy5kaXNwbGF5TW9kZSA9IHJlc3VsdDtcbiAgfVxufVxuIiwiPHRldGEtZHJvcGRvd25cbiAgY2xhc3M9XCJyb3cgcm93X2F1dG9cIlxuICBbYXBwZW5kVG9Cb2R5XT1cImFwcGVuZFRvQm9keVwiXG4gIFthdXRvQ2xvc2VJZ25vcmVdPVwiWydlc2MnLCAnaW5zaWRlJ11cIlxuICBbKG9wZW4pXT1cInNob3dQaWNrZXJcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgPGRpdiB0ZXRhRHJvcGRvd25IZWFkXG4gICAgICAgKHdoZWVsKT1cInNjcm9sbE1vbnRoKCRldmVudClcIlxuICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlci1oZWFkIGZvbnQtYm9keS0zXCI+XG4gICAgPHRldGEtaWNvbiBbbmFtZV09XCInY2FsZW5kYXInXCIgY2xhc3M9XCJtYXJnaW4tcmlnaHQtMlwiPjwvdGV0YS1pY29uPlxuICAgIDxkaXYgY2xhc3M9XCJyb3dfYXV0b1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl92YWx1ZSAhPT1udWxsICYmIF92YWx1ZSE9PXVuZGVmaW5lZFwiPlxuICAgICAgICB7e2xvY2FsZS5tb250aHNbX3ZhbHVlLmdldE1vbnRoKCldfX0ge3tfdmFsdWUuZ2V0RnVsbFllYXIoKX19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8dGV0YS1pY29uIFtuYW1lXT1cIidjbG9zZUJpZydcIiAoY2xpY2spPVwiY2xlYXJQaWNrZXIoKVwiIGNsYXNzPVwibWFyZ2luLWxlZnQtMlwiPjwvdGV0YS1pY29uPlxuICA8L2Rpdj5cbiAgPGRpdiB0ZXRhRHJvcGRvd25Db250ZW50IGNsYXNzPVwic2Nyb2xsYWJsZSBwYWRkaW5nLTNcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGJ1dHRvbiB0ZXRhLWJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtwYWxldHRlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgICAgW3ZpZXddPVwiZGlzcGxheU1vZGU9PT1kYXRlUGlja2VyTW9kZUVudW0ubW9udGggPyAncHJpbWFyeScgOiAnZ2hvc3QnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0TW9kZShkYXRlUGlja2VyTW9kZUVudW0ubW9udGgpXCJcbiAgICAgICAgICAgICAgICAod2hlZWwpPVwic2Nyb2xsTW9udGgoJGV2ZW50KTtcIj5cbiAgICAgICAgICB7e2xvY2FsZS5tb250aHNbX2N1cnJlbnRNb250aCB8fCB0b2RheS5nZXRNb250aCgpXX19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHRldGEtYnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXJnaW4tbGVmdC0yXCJcbiAgICAgICAgICAgICAgICBbcGFsZXR0ZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgIFt2aWV3XT1cImRpc3BsYXlNb2RlPT09ZGF0ZVBpY2tlck1vZGVFbnVtLnllYXIgPyAncHJpbWFyeScgOiAnZ2hvc3QnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0TW9kZShkYXRlUGlja2VyTW9kZUVudW0ueWVhcilcIlxuICAgICAgICAgICAgICAgICh3aGVlbCk9XCJzY3JvbGxZZWFyKCRldmVudCk7XCI+XG4gICAgICAgICAge3tfY3VycmVudFllYXIgfHwgdG9kYXkuZ2V0RnVsbFllYXIoKX19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uIHRldGEtYnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbcGFsZXR0ZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbdmlld109XCInZ2hvc3QnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFRvZGF5KClcIj5cbiAgICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCInY2FsZW5kYXInXCI+PC90ZXRhLWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1jb250ZW50XCI+XG4gICAgICA8dGV0YS15ZWFyLXNlbGVjdFxuICAgICAgICAqbmdJZj1cImRpc3BsYXlNb2RlID09PSBkYXRlUGlja2VyTW9kZUVudW0ueWVhclwiXG4gICAgICAgIFtjdXJyZW50WWVhcl09XCJfY3VycmVudFllYXJcIlxuICAgICAgICBbdG9kYXldPVwidG9kYXlcIlxuICAgICAgICBbc2l6ZV09XCI4XCJcbiAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICAoeWVhclNlbGVjdGVkKT1cInNldFllYXIoJGV2ZW50KVwiPlxuICAgICAgPC90ZXRhLXllYXItc2VsZWN0PlxuICAgICAgPHRldGEtbW9udGgtc2VsZWN0XG4gICAgICAgICpuZ0lmPVwiZGlzcGxheU1vZGUgPT09IGRhdGVQaWNrZXJNb2RlRW51bS5tb250aFwiXG4gICAgICAgIFtjdXJyZW50TW9udGhdPVwiX2N1cnJlbnRNb250aFwiXG4gICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgW2N1cnJlbnRZZWFyXT1cIl9jdXJyZW50WWVhclwiXG4gICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgICAgKG1vbnRoU2VsZWN0ZWQpPVwic2V0TW9udGgoJGV2ZW50KVwiPlxuICAgICAgPC90ZXRhLW1vbnRoLXNlbGVjdD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RldGEtZHJvcGRvd24+XG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvZGF0ZS1waWNrZXIvbW9udGgtcGlja2VyL21vbnRoLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL21vbnRoLXBpY2tlci9tb250aC1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFVdEcsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQjtRQVJTLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBSXpCLGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUE7UUFDOUQsZUFBVSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFBO1FBQ2hFLFdBQU0sR0FBbUIsRUFBRSxDQUFDO0lBR25DLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBZTtRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDMUQsT0FBTztnQkFDTCxFQUFFLEVBQUUsQ0FBQztnQkFDTCxJQUFJLEVBQUUsQ0FBQztnQkFDUCxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsS0FBSyxDQUFDO2FBQ3JDLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7O2lIQTdCVSxvQkFBb0I7cUdBQXBCLG9CQUFvQix3UUNWakMsNnNDQThCQTsyRkRwQmEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNOzBFQUd0QyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SUlkTmFtZX0gZnJvbSBcIi4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWlkLW5hbWVcIjtcbmltcG9ydCB7dmlld1R5cGV9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vbW9kZWwvdmlldy10eXBlLm1vZGVsXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtbW9udGgtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vbnRoLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vbnRoLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNb250aFBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzZWxlY3RlZE1vbnRoOiBudW1iZXIgPSAxO1xuICBASW5wdXQoKSB2aWV3VHlwZTogdmlld1R5cGU7XG4gIEBJbnB1dCgpIGN1cnJlbnRZZWFyOiBudW1iZXI7XG4gIEBJbnB1dCgpIGxvY2FsZU1vdGhzOk1hcDxzdHJpbmcsc3RyaW5nW10+XG4gIEBPdXRwdXQoKSBzZWxlY3RNb250aDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKVxuICBAT3V0cHV0KCkgY2hhbmdlWWVhcjogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKVxuICBwdWJsaWMgbW9udGhzOiBJSWROYW1lPGFueT5bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgcGlja01vbnRoKG1vbnRoSWQ6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0TW9udGguZW1pdChtb250aElkKVxuICB9XG5cbiAgcGlja1llYXIoeWVhcjogbnVtYmVyKSB7XG4gICAgdGhpcy5jaGFuZ2VZZWFyLmVtaXQoeWVhcilcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubW9udGhzID0gdGhpcy5sb2NhbGVNb3Rocy5nZXQodGhpcy5sb2NhbGUpLm1hcCgobSxpKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogaSxcbiAgICAgICAgbmFtZTogbSxcbiAgICAgICAgaXNTZWxlY3RlZDogdGhpcy5zZWxlY3RlZE1vbnRoID09PSBpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicGFkZGluZy1oLTMgcGFkZGluZy12LTIgZ2FwLTggY29sdW1uIGRhdGVwaWNrZXItbW9udGgtd3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBmb250LWJ1dHRvbi0yXCI+XG4gICAgPHRldGEtYnV0dG9uIFtjbGFzc109XCInY2hhbmdlLW1vbnRoLWJ1dHRvbiBkYXRlcGlja2VyXycrdmlld1R5cGVcIiBbc3F1YXJlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGlja1llYXIoY3VycmVudFllYXItMSlcIlxuICAgICAgICAgICAgICAgICBwYWxldHRlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgIHZpZXc9XCJnaG9zdFwiPlxuICAgICAgPHRldGEtaWNvbiBuYW1lPVwiYXJyb3dMZWZ0S2V5XCI+PC90ZXRhLWljb24+XG4gICAgPC90ZXRhLWJ1dHRvbj5cbiAgICA8cD57e2N1cnJlbnRZZWFyfX08L3A+XG4gICAgPHRldGEtYnV0dG9uIFtzcXVhcmVdPVwidHJ1ZVwiIFtjbGFzc109XCInY2hhbmdlLW1vbnRoLWJ1dHRvbiBkYXRlcGlja2VyXycrdmlld1R5cGVcIlxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGlja1llYXIoY3VycmVudFllYXIrMSlcIlxuICAgICAgICAgICAgICAgICBwYWxldHRlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgIHZpZXc9XCJnaG9zdFwiPlxuICAgICAgPHRldGEtaWNvbiBuYW1lPVwiYXJyb3dSaWdodEtleVwiPjwvdGV0YS1pY29uPlxuICAgIDwvdGV0YS1idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlci1tb250aCBmb250LWJvZHktMyBjb2xvci10ZXh0LTkwXCJcbiAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgbW9udGggb2YgbW9udGhzXCIgKGNsaWNrKT1cInBpY2tNb250aChtb250aC5pZClcIj5cbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydkYXRlcGlja2VyLW1vbnRoX2l0ZW1fYWN0aXZlJzptb250aC5pc1NlbGVjdGVkfVwiXG4gICAgICAgICAgIFtjbGFzc109XCInZGF0ZXBpY2tlci1tb250aF9pdGVtIGNvbHVtbiBhbGlnbi1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBkYXRlcGlja2VyXycrdmlld1R5cGVcIj5cbiAgICAgICAgIDxwPlxuICAgICAgICAgICAge3ttb250aC5uYW1lfX1cbiAgICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuXG4iXX0=
@@ -1,6 +1,7 @@
1
- export * from './date-picker.module';
2
- export * from './date-picker/date-picker.component';
3
- export * from './month-picker/month-picker.component';
4
- export * from './day-select/day-select.component';
1
+ export * from "./date-picker.module";
2
+ export * from "./date-picker/date-picker.component";
3
+ export * from './date-picker/date-calendar/date-calendar.component';
4
+ export * from "./date-range/date-range.component";
5
+ export * from './date-range/range-calendar/range-calendar.component';
5
6
  export * from './model/date-period';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvZGF0ZS1waWNrZXIvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RhdGUtcGlja2VyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21vbnRoLXBpY2tlci9tb250aC1waWNrZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGF5LXNlbGVjdC9kYXktc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVsL2RhdGUtcGVyaW9kJztcbiJdfQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvZGF0ZS1waWNrZXIvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBZSxxREFBcUQsQ0FBQTtBQUNwRSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsc0RBQXNELENBQUE7QUFDcEUsY0FBYyxxQkFBcUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2RhdGUtcGlja2VyLm1vZHVsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tICAnLi9kYXRlLXBpY2tlci9kYXRlLWNhbGVuZGFyL2RhdGUtY2FsZW5kYXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlLXJhbmdlL3JhbmdlLWNhbGVuZGFyL3JhbmdlLWNhbGVuZGFyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwvZGF0ZS1wZXJpb2QnXG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { Directive, ElementRef, Inject } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ScrollToSelectedYearDirective {
4
+ constructor(el) {
5
+ this.el = el;
6
+ this.alive = true;
7
+ }
8
+ ngOnDestroy() {
9
+ this.alive = false;
10
+ }
11
+ ngAfterViewInit() {
12
+ this.el.nativeElement.scrollIntoView({ inline: "center", block: "center" });
13
+ }
14
+ }
15
+ ScrollToSelectedYearDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ScrollToSelectedYearDirective, deps: [{ token: ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
16
+ ScrollToSelectedYearDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.2", type: ScrollToSelectedYearDirective, selector: "[tetaScrollToSelectedYear]", ngImport: i0 });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ScrollToSelectedYearDirective, decorators: [{
18
+ type: Directive,
19
+ args: [{
20
+ selector: '[tetaScrollToSelectedYear]'
21
+ }]
22
+ }], ctorParameters: function () { return [{ type: i0.ElementRef, decorators: [{
23
+ type: Inject,
24
+ args: [ElementRef]
25
+ }] }]; } });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXRvLXNlbGVjdGVkLXllYXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9kYXRlLXBpY2tlci95ZWFyLXBpY2tlci9zY3JvbGwtdG8tc2VsZWN0ZWQteWVhci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFZLE1BQU0sZUFBZSxDQUFDOztBQUt2RSxNQUFNLE9BQU8sNkJBQTZCO0lBR3hDLFlBQWlELEVBQXVCO1FBQXZCLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBRmpFLFVBQUssR0FBRyxJQUFJLENBQUM7SUFJcEIsQ0FBQztJQUdELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNwQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQzs7MEhBZFUsNkJBQTZCLGtCQUdwQixVQUFVOzhHQUhuQiw2QkFBNkI7MkZBQTdCLDZCQUE2QjtrQkFIekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO2lCQUN2Qzs7MEJBSWMsTUFBTTsyQkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEluamVjdCwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3RldGFTY3JvbGxUb1NlbGVjdGVkWWVhcl0nXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFRvU2VsZWN0ZWRZZWFyRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIGFsaXZlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWw6IEVsZW1lbnRSZWY8RWxlbWVudD4sKSB7XG5cbiAgfVxuXG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hbGl2ZSA9IGZhbHNlXG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHtpbmxpbmU6IFwiY2VudGVyXCIsIGJsb2NrOiBcImNlbnRlclwifSk7XG4gIH1cblxuXG59XG4iXX0=