@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
@@ -1,34 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import { bufferCount, tap, throttleTime } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- export class PickerTouchService {
6
- constructor() {
7
- this.touchMove$ = new Subject();
8
- this.step$ = new Subject();
9
- this.touchMove = this.touchMove$.asObservable();
10
- this.step = this.step$.asObservable();
11
- this.touchMove
12
- .pipe(throttleTime(25), bufferCount(2), tap((touches) => {
13
- const [start, end] = touches.map((_) => _.changedTouches?.item(0));
14
- const deltaY = start?.clientY - end?.clientY;
15
- if (deltaY !== 0) {
16
- const step = deltaY > 0 ? 1 : -1;
17
- this.step$.next(step);
18
- }
19
- }))
20
- .subscribe();
21
- }
22
- onTouchMove(event) {
23
- this.touchMove$.next(event);
24
- }
25
- }
26
- PickerTouchService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PickerTouchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
27
- PickerTouchService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PickerTouchService, providedIn: 'root' });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PickerTouchService, decorators: [{
29
- type: Injectable,
30
- args: [{
31
- providedIn: 'root',
32
- }]
33
- }], ctorParameters: function () { return []; } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLXRvdWNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL3NlcnZpY2UvcGlja2VyLXRvdWNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUtoRSxNQUFNLE9BQU8sa0JBQWtCO0lBTzdCO1FBSFEsZUFBVSxHQUF3QixJQUFJLE9BQU8sRUFBYyxDQUFDO1FBQzVELFVBQUssR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUdyRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXRDLElBQUksQ0FBQyxTQUFTO2FBQ1gsSUFBSSxDQUNILFlBQVksQ0FBQyxFQUFFLENBQUMsRUFDaEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLEdBQUcsQ0FBQyxDQUFDLE9BQWlDLEVBQUUsRUFBRTtZQUN4QyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkUsTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLE9BQU8sR0FBRyxHQUFHLEVBQUUsT0FBTyxDQUFDO1lBQzdDLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDaEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkI7UUFDSCxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUI7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7K0dBN0JVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGJ1ZmZlckNvdW50LCB0YXAsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFBpY2tlclRvdWNoU2VydmljZSB7XG4gIHN0ZXA6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICBwcml2YXRlIHRvdWNoTW92ZTogT2JzZXJ2YWJsZTxUb3VjaEV2ZW50PjtcbiAgcHJpdmF0ZSB0b3VjaE1vdmUkOiBTdWJqZWN0PFRvdWNoRXZlbnQ+ID0gbmV3IFN1YmplY3Q8VG91Y2hFdmVudD4oKTtcbiAgcHJpdmF0ZSBzdGVwJDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMudG91Y2hNb3ZlID0gdGhpcy50b3VjaE1vdmUkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuc3RlcCA9IHRoaXMuc3RlcCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICB0aGlzLnRvdWNoTW92ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRocm90dGxlVGltZSgyNSksXG4gICAgICAgIGJ1ZmZlckNvdW50KDIpLFxuICAgICAgICB0YXAoKHRvdWNoZXM6IFtUb3VjaEV2ZW50LCBUb3VjaEV2ZW50XSkgPT4ge1xuICAgICAgICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRvdWNoZXMubWFwKChfKSA9PiBfLmNoYW5nZWRUb3VjaGVzPy5pdGVtKDApKTtcbiAgICAgICAgICBjb25zdCBkZWx0YVkgPSBzdGFydD8uY2xpZW50WSAtIGVuZD8uY2xpZW50WTtcbiAgICAgICAgICBpZiAoZGVsdGFZICE9PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBzdGVwID0gZGVsdGFZID4gMCA/IDEgOiAtMTtcbiAgICAgICAgICAgIHRoaXMuc3RlcCQubmV4dChzdGVwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvblRvdWNoTW92ZShldmVudDogVG91Y2hFdmVudCkge1xuICAgIHRoaXMudG91Y2hNb3ZlJC5uZXh0KGV2ZW50KTtcbiAgfVxufVxuIl19
@@ -1,73 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, forwardRef, Input, } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../icon/icon/icon.component";
5
- import * as i2 from "../../button/button/button.component";
6
- import * as i3 from "../../../pipe/prepend-zero/prepend-zero.pipe";
7
- export const TIME_PART_CONTROL_VALUE_ACCESSOR = {
8
- provide: NG_VALUE_ACCESSOR,
9
- useExisting: forwardRef(() => TimePartControlComponent),
10
- multi: true,
11
- };
12
- export class TimePartControlComponent {
13
- constructor(_cdr) {
14
- this._cdr = _cdr;
15
- this.min = 0;
16
- this.max = 59;
17
- this.scroll = (e) => {
18
- const delta = e?.deltaY ?? e;
19
- if (e instanceof WheelEvent) {
20
- e.preventDefault();
21
- }
22
- if (delta > 0) {
23
- this.down();
24
- }
25
- else {
26
- this.up();
27
- }
28
- };
29
- }
30
- set value(value) {
31
- this._value = value;
32
- this.onChange(this._value);
33
- }
34
- get value() {
35
- return this._value;
36
- }
37
- up() {
38
- this.value = this.value < this.max ? this.value + 1 : this.min;
39
- }
40
- down() {
41
- this.value = this.value > this.min ? this.value - 1 : this.max;
42
- }
43
- ngOnInit() { }
44
- writeValue(model) {
45
- this._value = model;
46
- this._cdr.markForCheck();
47
- }
48
- onChange(_) { }
49
- onTouched() { }
50
- registerOnChange(fn) {
51
- this.onChange = fn;
52
- }
53
- registerOnTouched(fn) {
54
- this.onTouched = fn;
55
- }
56
- setDisabledState(isDisabled) {
57
- this.disabled = isDisabled;
58
- this._cdr.markForCheck();
59
- }
60
- }
61
- TimePartControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TimePartControlComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
62
- TimePartControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TimePartControlComponent, selector: "teta-time-part-control", inputs: { min: "min", max: "max", disabled: "disabled" }, providers: [TIME_PART_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: "<button type=\"button\" teta-button [square]=\"true\" (click)=\"up()\" [palette]=\"'text'\" [view]=\"'ghost'\">\n <teta-icon [name]=\"'arrowUpKey'\"></teta-icon>\n</button>\n<div (wheel)=\"scroll($event);\" class=\"row row_auto font-body-3 height-6 width-6 align-center justify-content-center\">\n {{value | tetaPrependZero: 2}}\n</div>\n<button type=\"button\" teta-button [square]=\"true\" (click)=\"down()\" [palette]=\"'text'\" [view]=\"'ghost'\">\n <teta-icon [name]=\"'arrowDownKey'\"></teta-icon>\n</button>\n", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "component", type: i1.IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[teta-button], teta-button", inputs: ["palette", "class", "view", "square"] }, { kind: "pipe", type: i3.PrependZeroPipe, name: "tetaPrependZero" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TimePartControlComponent, decorators: [{
64
- type: Component,
65
- args: [{ selector: 'teta-time-part-control', providers: [TIME_PART_CONTROL_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button type=\"button\" teta-button [square]=\"true\" (click)=\"up()\" [palette]=\"'text'\" [view]=\"'ghost'\">\n <teta-icon [name]=\"'arrowUpKey'\"></teta-icon>\n</button>\n<div (wheel)=\"scroll($event);\" class=\"row row_auto font-body-3 height-6 width-6 align-center justify-content-center\">\n {{value | tetaPrependZero: 2}}\n</div>\n<button type=\"button\" teta-button [square]=\"true\" (click)=\"down()\" [palette]=\"'text'\" [view]=\"'ghost'\">\n <teta-icon [name]=\"'arrowDownKey'\"></teta-icon>\n</button>\n", styles: [":host{display:flex;flex-direction:column}\n"] }]
66
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { min: [{
67
- type: Input
68
- }], max: [{
69
- type: Input
70
- }], disabled: [{
71
- type: Input
72
- }] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1wYXJ0LWNvbnRyb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9kYXRlLXBpY2tlci90aW1lLXBhcnQtY29udHJvbC90aW1lLXBhcnQtY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL3RpbWUtcGFydC1jb250cm9sL3RpbWUtcGFydC1jb250cm9sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQUV6RSxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBUTtJQUNuRCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7SUFDdkQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBU0YsTUFBTSxPQUFPLHdCQUF3QjtJQWdCbkMsWUFBb0IsSUFBdUI7UUFBdkIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFmbEMsUUFBRyxHQUFHLENBQUMsQ0FBQztRQUNSLFFBQUcsR0FBRyxFQUFFLENBQUM7UUF3QmxCLFdBQU0sR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQ2xCLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO1lBRTdCLElBQUksQ0FBQyxZQUFZLFVBQVUsRUFBRTtnQkFDM0IsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3BCO1lBQ0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO2dCQUNiLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNiO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUNYO1FBQ0gsQ0FBQyxDQUFDO0lBckI0QyxDQUFDO0lBVC9DLElBQUksS0FBSyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBSUQsRUFBRTtRQUNBLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNqRSxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNqRSxDQUFDO0lBZUQsUUFBUSxLQUFJLENBQUM7SUFFYixVQUFVLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQUMsQ0FBTSxJQUFHLENBQUM7SUFFbkIsU0FBUyxLQUFJLENBQUM7SUFFZCxnQkFBZ0IsQ0FBQyxFQUFvQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQixDQUFDOztxSEE3RFUsd0JBQXdCO3lHQUF4Qix3QkFBd0IsMkdBSHhCLENBQUMsZ0NBQWdDLENBQUMsMEJDcEIvQyx5Z0JBU0E7MkZEY2Esd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLHdCQUF3QixhQUd2QixDQUFDLGdDQUFnQyxDQUFDLG1CQUM1Qix1QkFBdUIsQ0FBQyxNQUFNO3dHQUd0QyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjb25zdCBUSU1FX1BBUlRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZVBhcnRDb250cm9sQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLXRpbWUtcGFydC1jb250cm9sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcGFydC1jb250cm9sLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZS1wYXJ0LWNvbnRyb2wuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbVElNRV9QQVJUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1JdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVGltZVBhcnRDb250cm9sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIG1pbiA9IDA7XG4gIEBJbnB1dCgpIG1heCA9IDU5O1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICBwcml2YXRlIF92YWx1ZTogbnVtYmVyO1xuXG4gIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIHVwKCkge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlIDwgdGhpcy5tYXggPyB0aGlzLnZhbHVlICsgMSA6IHRoaXMubWluO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZSA+IHRoaXMubWluID8gdGhpcy52YWx1ZSAtIDEgOiB0aGlzLm1heDtcbiAgfVxuXG4gIHNjcm9sbCA9IChlOiBhbnkpID0+IHtcbiAgICBjb25zdCBkZWx0YSA9IGU/LmRlbHRhWSA/PyBlO1xuXG4gICAgaWYgKGUgaW5zdGFuY2VvZiBXaGVlbEV2ZW50KSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChkZWx0YSA+IDApIHtcbiAgICAgIHRoaXMuZG93bigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwKCk7XG4gICAgfVxuICB9O1xuXG4gIG5nT25Jbml0KCkge31cblxuICB3cml0ZVZhbHVlKG1vZGVsOiBudW1iZXIpIHtcbiAgICB0aGlzLl92YWx1ZSA9IG1vZGVsO1xuICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uQ2hhbmdlKF86IGFueSkge31cblxuICBvblRvdWNoZWQoKSB7fVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0ZXRhLWJ1dHRvbiBbc3F1YXJlXT1cInRydWVcIiAoY2xpY2spPVwidXAoKVwiIFtwYWxldHRlXT1cIid0ZXh0J1wiIFt2aWV3XT1cIidnaG9zdCdcIj5cbiAgPHRldGEtaWNvbiBbbmFtZV09XCInYXJyb3dVcEtleSdcIj48L3RldGEtaWNvbj5cbjwvYnV0dG9uPlxuPGRpdiAod2hlZWwpPVwic2Nyb2xsKCRldmVudCk7XCIgY2xhc3M9XCJyb3cgcm93X2F1dG8gZm9udC1ib2R5LTMgaGVpZ2h0LTYgd2lkdGgtNiBhbGlnbi1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICB7e3ZhbHVlIHwgdGV0YVByZXBlbmRaZXJvOiAyfX1cbjwvZGl2PlxuPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGV0YS1idXR0b24gW3NxdWFyZV09XCJ0cnVlXCIgKGNsaWNrKT1cImRvd24oKVwiIFtwYWxldHRlXT1cIid0ZXh0J1wiIFt2aWV3XT1cIidnaG9zdCdcIj5cbiAgPHRldGEtaWNvbiBbbmFtZV09XCInYXJyb3dEb3duS2V5J1wiPjwvdGV0YS1pY29uPlxuPC9idXR0b24+XG4iXX0=
@@ -1,142 +0,0 @@
1
- import { DayModel } from '../model/day-model';
2
- export class DatePickerUtil {
3
- static getFirstDay(month, year, firstDayOfWeek) {
4
- const lastDay = new Date(year, month, 0);
5
- const lastDayIndex = lastDay.getDay() >= firstDayOfWeek
6
- ? lastDay.getDay() - firstDayOfWeek
7
- : lastDay.getDay() + 7 - firstDayOfWeek;
8
- return new Date(year, month - 1, lastDay.getDate() - lastDayIndex);
9
- }
10
- static getPickerDays(date, firstDayOfWeek, minDate, maxDate, disabledDates, disabledDays, disabledPeriods) {
11
- const days = [];
12
- const firstDay = DatePickerUtil.getFirstDay(date.getMonth(), date.getFullYear(), firstDayOfWeek);
13
- for (let i = 0; i < 6 * 7; i++) {
14
- const dat = new Date(firstDay);
15
- dat.setDate(dat.getDate() + i);
16
- days.push(new DayModel({
17
- date: dat,
18
- disabled: DatePickerUtil.isDateInvalid(dat, minDate, maxDate, disabledDates, disabledDays, disabledPeriods),
19
- today: DatePickerUtil.isToday(dat),
20
- isCurrentMonth: dat.getMonth() === date.getMonth(),
21
- selected: dat.getFullYear() === date.getFullYear() &&
22
- dat.getMonth() === date.getMonth() &&
23
- dat.getDate() === date.getDate(),
24
- weekend: dat.getDay() === 0 || dat.getDay() === 6,
25
- }));
26
- }
27
- return days;
28
- }
29
- static isDateInvalid(dat, minDate, maxDate, disabledDates, disabledDays, disabledPeriods) {
30
- return (DatePickerUtil.isDayDisabled(dat, disabledDays) ||
31
- DatePickerUtil.isDateDisabled(dat, disabledDates) ||
32
- DatePickerUtil.isDateInDisabledPeriod(dat, disabledPeriods) ||
33
- DatePickerUtil.isMaxInvalid(dat, maxDate) ||
34
- DatePickerUtil.isMinInvalid(dat, minDate));
35
- }
36
- static isDayDisabled(dat, disabledDays) {
37
- if (dat === null ||
38
- dat === undefined ||
39
- disabledDays === null ||
40
- disabledDays === undefined ||
41
- disabledDays.length < 1) {
42
- return false;
43
- }
44
- return disabledDays.indexOf(dat.getDay()) >= 0;
45
- }
46
- static isMinInvalid(dat, minDate) {
47
- if (dat === null ||
48
- dat === undefined ||
49
- minDate === null ||
50
- minDate === undefined) {
51
- return false;
52
- }
53
- return minDate.getTime() > dat.getTime();
54
- }
55
- static isMaxInvalid(dat, maxDate) {
56
- if (dat === null ||
57
- dat === undefined ||
58
- maxDate === null ||
59
- maxDate === undefined) {
60
- return false;
61
- }
62
- return maxDate.getTime() < dat.getTime();
63
- }
64
- static isDateInDisabledPeriod(dat, disabledPeriods) {
65
- if (dat === null ||
66
- dat === undefined ||
67
- disabledPeriods === null ||
68
- disabledPeriods === undefined ||
69
- disabledPeriods.length < 1) {
70
- return false;
71
- }
72
- return disabledPeriods.some((d) => d !== null &&
73
- d !== undefined &&
74
- d.start !== null &&
75
- d.start !== undefined &&
76
- d.end !== null &&
77
- d.end !== undefined &&
78
- d.start.getTime() <= dat.getTime() &&
79
- d.end.getTime() >= dat.getTime());
80
- }
81
- static isDateDisabled(dat, disabledDates) {
82
- if (disabledDates === null ||
83
- disabledDates === undefined ||
84
- disabledDates.length < 1 ||
85
- dat === null ||
86
- dat === undefined) {
87
- return false;
88
- }
89
- return disabledDates.some((d) => d !== null &&
90
- d !== undefined &&
91
- d.getFullYear() === dat.getFullYear() &&
92
- d.getMonth() === dat.getMonth() &&
93
- d.getDate() === dat.getDate());
94
- }
95
- static isToday(dat) {
96
- if (dat === null || dat === undefined) {
97
- return false;
98
- }
99
- const today = new Date();
100
- return (dat.getFullYear() === today.getFullYear() &&
101
- dat.getMonth() === today.getMonth() &&
102
- dat.getDate() === today.getDate());
103
- }
104
- static scrollMonth(delta, date) {
105
- const res = new Date(date);
106
- let month = date.getMonth();
107
- let year = date.getFullYear();
108
- if (delta > 0) {
109
- if (month === 11) {
110
- month = 0;
111
- year++;
112
- }
113
- else {
114
- month++;
115
- }
116
- }
117
- else {
118
- if (month === 0) {
119
- month = 11;
120
- year--;
121
- }
122
- else {
123
- month--;
124
- }
125
- }
126
- res.setFullYear(year, month);
127
- return res;
128
- }
129
- static scrollYear(delta, date) {
130
- const res = new Date(date);
131
- let year = date.getFullYear();
132
- if (delta > 0) {
133
- year++;
134
- }
135
- else {
136
- year--;
137
- }
138
- res.setFullYear(year);
139
- return res;
140
- }
141
- }
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXItdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvZGF0ZS1waWNrZXIvdXRpbC9kYXRlLXBpY2tlci11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxNQUFNLE9BQU8sY0FBYztJQUN6QixNQUFNLENBQUMsV0FBVyxDQUNoQixLQUFhLEVBQ2IsSUFBWSxFQUNaLGNBQXNCO1FBRXRCLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekMsTUFBTSxZQUFZLEdBQ2hCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxjQUFjO1lBQ2hDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsY0FBYztZQUNuQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUM7UUFDNUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQ2xCLElBQVUsRUFDVixjQUFzQixFQUN0QixPQUFhLEVBQ2IsT0FBYSxFQUNiLGFBQXFCLEVBQ3JCLFlBQXNCLEVBQ3RCLGVBQTZCO1FBRTdCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsV0FBVyxDQUN6QyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUNsQixjQUFjLENBQ2YsQ0FBQztRQUNGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFD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LEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBYSxFQUFFLElBQVU7UUFDekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlCLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNiLElBQUksRUFBRSxDQUFDO1NBQ1I7YUFBTTtZQUNMLElBQUksRUFBRSxDQUFDO1NBQ1I7UUFDRCxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQXNCRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQZXJpb2QgfSBmcm9tICcuLi9tb2RlbC9kYXRlLXBlcmlvZCc7XG5pbXBvcnQgeyBEYXlNb2RlbCB9IGZyb20gJy4uL21vZGVsL2RheS1tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyVXRpbCB7XG4gIHN0YXRpYyBnZXRGaXJzdERheShcbiAgICBtb250aDogbnVtYmVyLFxuICAgIHllYXI6IG51bWJlcixcbiAgICBmaXJzdERheU9mV2VlazogbnVtYmVyXG4gICk6IERhdGUge1xuICAgIGNvbnN0IGxhc3REYXkgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMCk7XG4gICAgY29uc3QgbGFzdERheUluZGV4ID1cbiAgICAgIGxhc3REYXkuZ2V0RGF5KCkgPj0gZmlyc3REYXlPZldlZWtcbiAgICAgICAgPyBsYXN0RGF5LmdldERheSgpIC0gZmlyc3REYXlPZldlZWtcbiAgICAgICAgOiBsYXN0RGF5LmdldERheSgpICsgNyAtIGZpcnN0RGF5T2ZXZWVrO1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGxhc3REYXkuZ2V0RGF0ZSgpIC0gbGFzdERheUluZGV4KTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQaWNrZXJEYXlzKFxuICAgIGRhdGU6IERhdGUsXG4gICAgZmlyc3REYXlPZldlZWs6IG51bWJlcixcbiAgICBtaW5EYXRlOiBEYXRlLFxuICAgIG1heERhdGU6IERhdGUsXG4gICAgZGlzYWJsZWREYXRlczogRGF0ZVtdLFxuICAgIGRpc2FibGVkRGF5czogbnVtYmVyW10sXG4gICAgZGlzYWJsZWRQZXJpb2RzOiBEYXRlUGVyaW9kW11cbiAgKTogRGF5TW9kZWxbXSB7XG4gICAgY29uc3QgZGF5cyA9IFtdO1xuICAgIGNvbnN0IGZpcnN0RGF5ID0gRGF0ZVBpY2tlclV0aWwuZ2V0Rmlyc3REYXkoXG4gICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBmaXJzdERheU9mV2Vla1xuICAgICk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2ICogNzsgaSsrKSB7XG4gICAgICBjb25zdCBkYXQgPSBuZXcgRGF0ZShmaXJzdERheSk7XG4gICAgICBkYXQuc2V0RGF0ZShkYXQuZ2V0RGF0ZSgpICsgaSk7XG4gICAgICBkYXlzLnB1c2goXG4gICAgICAgIG5ldyBEYXlNb2RlbCh7XG4gICAgICAgICAgZGF0ZTogZGF0LFxuICAgICAgICAgIGRpc2FibGVkOiBEYXRlUGlja2VyVXRpbC5pc0RhdGVJbnZhbGlkKFxuICAgICAgICAgICAgZGF0LFxuICAgICAgICAgICAgbWluRGF0ZSxcbiAgICAgICAgICAgIG1heERhdGUsXG4gICAgICAgICAgICBkaXNhYmxlZERhdGVzLFxuICAgICAgICAgICAgZGlzYWJsZWREYXlzLFxuICAgICAgICAgICAgZGlzYWJsZWRQZXJpb2RzXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0b2RheTogRGF0ZVBpY2tlclV0aWwuaXNUb2RheShkYXQpLFxuICAgICAgICAgIGlzQ3VycmVudE1vbnRoOiBkYXQuZ2V0TW9udGgoKSA9PT0gZGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgIHNlbGVjdGVkOlxuICAgICAgICAgICAgZGF0LmdldEZ1bGxZZWFyKCkgPT09IGRhdGUuZ2V0RnVsbFllYXIoKSAmJlxuICAgICAgICAgICAgZGF0LmdldE1vbnRoKCkgPT09IGRhdGUuZ2V0TW9udGgoKSAmJlxuICAgICAgICAgICAgZGF0LmdldERhdGUoKSA9PT0gZGF0ZS5nZXREYXRlKCksXG4gICAgICAgICAgd2Vla2VuZDogZGF0LmdldERheSgpID09PSAwIHx8IGRhdC5nZXREYXkoKSA9PT0gNixcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkYXlzO1xuICB9XG5cbiAgc3RhdGljIGlzRGF0ZUludmFsaWQoXG4gICAgZGF0OiBEYXRlLFxuICAgIG1pbkRhdGU6IERhdGUsXG4gICAgbWF4RGF0ZTogRGF0ZSxcbiAgICBkaXNhYmxlZERhdGVzOiBEYXRlW10sXG4gICAgZGlzYWJsZWREYXlzOiBudW1iZXJbXSxcbiAgICBkaXNhYmxlZFBlcmlvZHM6IERhdGVQZXJpb2RbXVxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgRGF0ZVBpY2tlclV0aWwuaXNEYXlEaXNhYmxlZChkYXQsIGRpc2FibGVkRGF5cykgfHxcbiAgICAgIERhdGVQaWNrZXJVdGlsLmlzRGF0ZURpc2FibGVkKGRhdCwgZGlzYWJsZWREYXRlcykgfHxcbiAgICAgIERhdGVQaWNrZXJVdGlsLmlzRGF0ZUluRGlzYWJsZWRQZXJpb2QoZGF0LCBkaXNhYmxlZFBlcmlvZHMpIHx8XG4gICAgICBEYXRlUGlja2VyVXRpbC5pc01heEludmFsaWQoZGF0LCBtYXhEYXRlKSB8fFxuICAgICAgRGF0ZVBpY2tlclV0aWwuaXNNaW5JbnZhbGlkKGRhdCwgbWluRGF0ZSlcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGlzRGF5RGlzYWJsZWQoZGF0OiBEYXRlLCBkaXNhYmxlZERheXM6IG51bWJlcltdKTogYm9vbGVhbiB7XG4gICAgaWYgKFxuICAgICAgZGF0ID09PSBudWxsIHx8XG4gICAgICBkYXQgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgZGlzYWJsZWREYXlzID09PSBudWxsIHx8XG4gICAgICBkaXNhYmxlZERheXMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgZGlzYWJsZWREYXlzLmxlbmd0aCA8IDFcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGRpc2FibGVkRGF5cy5pbmRleE9mKGRhdC5nZXREYXkoKSkgPj0gMDtcbiAgfVxuXG4gIHN0YXRpYyBpc01pbkludmFsaWQoZGF0OiBEYXRlLCBtaW5EYXRlOiBEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKFxuICAgICAgZGF0ID09PSBudWxsIHx8XG4gICAgICBkYXQgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgbWluRGF0ZSA9PT0gbnVsbCB8fFxuICAgICAgbWluRGF0ZSA9PT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBtaW5EYXRlLmdldFRpbWUoKSA+IGRhdC5nZXRUaW1lKCk7XG4gIH1cblxuICBzdGF0aWMgaXNNYXhJbnZhbGlkKGRhdDogRGF0ZSwgbWF4RGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIGRhdCA9PT0gbnVsbCB8fFxuICAgICAgZGF0ID09PSB1bmRlZmluZWQgfHxcbiAgICAgIG1heERhdGUgPT09IG51bGwgfHxcbiAgICAgIG1heERhdGUgPT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gbWF4RGF0ZS5nZXRUaW1lKCkgPCBkYXQuZ2V0VGltZSgpO1xuICB9XG5cbiAgc3RhdGljIGlzRGF0ZUluRGlzYWJsZWRQZXJpb2QoXG4gICAgZGF0OiBEYXRlLFxuICAgIGRpc2FibGVkUGVyaW9kczogRGF0ZVBlcmlvZFtdXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIGRhdCA9PT0gbnVsbCB8fFxuICAgICAgZGF0ID09PSB1bmRlZmluZWQgfHxcbiAgICAgIGRpc2FibGVkUGVyaW9kcyA9PT0gbnVsbCB8fFxuICAgICAgZGlzYWJsZWRQZXJpb2RzID09PSB1bmRlZmluZWQgfHxcbiAgICAgIGRpc2FibGVkUGVyaW9kcy5sZW5ndGggPCAxXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBkaXNhYmxlZFBlcmlvZHMuc29tZShcbiAgICAgIChkOiBEYXRlUGVyaW9kKSA9PlxuICAgICAgICBkICE9PSBudWxsICYmXG4gICAgICAgIGQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBkLnN0YXJ0ICE9PSBudWxsICYmXG4gICAgICAgIGQuc3RhcnQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBkLmVuZCAhPT0gbnVsbCAmJlxuICAgICAgICBkLmVuZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGQuc3RhcnQuZ2V0VGltZSgpIDw9IGRhdC5nZXRUaW1lKCkgJiZcbiAgICAgICAgZC5lbmQuZ2V0VGltZSgpID49IGRhdC5nZXRUaW1lKClcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGlzRGF0ZURpc2FibGVkKGRhdDogRGF0ZSwgZGlzYWJsZWREYXRlczogRGF0ZVtdKTogYm9vbGVhbiB7XG4gICAgaWYgKFxuICAgICAgZGlzYWJsZWREYXRlcyA9PT0gbnVsbCB8fFxuICAgICAgZGlzYWJsZWREYXRlcyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICBkaXNhYmxlZERhdGVzLmxlbmd0aCA8IDEgfHxcbiAgICAgIGRhdCA9PT0gbnVsbCB8fFxuICAgICAgZGF0ID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGRpc2FibGVkRGF0ZXMuc29tZShcbiAgICAgIChkOiBEYXRlKSA9PlxuICAgICAgICBkICE9PSBudWxsICYmXG4gICAgICAgIGQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBkLmdldEZ1bGxZZWFyKCkgPT09IGRhdC5nZXRGdWxsWWVhcigpICYmXG4gICAgICAgIGQuZ2V0TW9udGgoKSA9PT0gZGF0LmdldE1vbnRoKCkgJiZcbiAgICAgICAgZC5nZXREYXRlKCkgPT09IGRhdC5nZXREYXRlKClcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGlzVG9kYXkoZGF0OiBEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKGRhdCA9PT0gbnVsbCB8fCBkYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIGRhdC5nZXRGdWxsWWVhcigpID09PSB0b2RheS5nZXRGdWxsWWVhcigpICYmXG4gICAgICBkYXQuZ2V0TW9udGgoKSA9PT0gdG9kYXkuZ2V0TW9udGgoKSAmJlxuICAgICAgZGF0LmdldERhdGUoKSA9PT0gdG9kYXkuZ2V0RGF0ZSgpXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBzY3JvbGxNb250aChkZWx0YTogbnVtYmVyLCBkYXRlOiBEYXRlKSB7XG4gICAgY29uc3QgcmVzID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgbGV0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICAgIGxldCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGlmIChkZWx0YSA+IDApIHtcbiAgICAgIGlmIChtb250aCA9PT0gMTEpIHtcbiAgICAgICAgbW9udGggPSAwO1xuICAgICAgICB5ZWFyKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aCsrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobW9udGggPT09IDApIHtcbiAgICAgICAgbW9udGggPSAxMTtcbiAgICAgICAgeWVhci0tO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW9udGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzLnNldEZ1bGxZZWFyKHllYXIsIG1vbnRoKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgc3RhdGljIHNjcm9sbFllYXIoZGVsdGE6IG51bWJlciwgZGF0ZTogRGF0ZSkge1xuICAgIGNvbnN0IHJlcyA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIGxldCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGlmIChkZWx0YSA+IDApIHtcbiAgICAgIHllYXIrKztcbiAgICB9IGVsc2Uge1xuICAgICAgeWVhci0tO1xuICAgIH1cbiAgICByZXMuc2V0RnVsbFllYXIoeWVhcik7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8vIHN0YXRpYyBpc1NlbGVjdGVkKGRhdGU6IERhdGUsIHNlbGVjdGVkRGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAvLyAgIGlmIChkYXRlID09PSBudWxsIHx8IGRhdGUgPT09IHVuZGVmaW5lZCB8fCBzZWxlY3RlZERhdGUgPT09IG51bGwgfHwgc2VsZWN0ZWREYXRlID09PSB1bmRlZmluZWQpIHtcbiAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKClcbiAgLy8gICAgICYmIGRhdGUuZ2V0TW9udGgoKSA9PT0gc2VsZWN0ZWREYXRlLmdldE1vbnRoKClcbiAgLy8gICAgICYmIGRhdGUuZ2V0RGF0ZSgpID09PSBzZWxlY3RlZERhdGUuZ2V0RGF0ZSgpO1xuICAvLyB9XG5cbiAgLy8gc3RhdGljIG5leHRNb250aChkYXRlOiBEYXRlKTogRGF0ZSB7XG4gIC8vICAgY29uc3QgZHQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgLy8gICBkdC5zZXRNb250aChkdC5nZXRNb250aCgpICsgMSk7XG4gIC8vICAgcmV0dXJuIGR0O1xuICAvLyB9XG5cbiAgLy8gc3RhdGljIHByZXZNb250aChkYXRlOiBEYXRlKTogRGF0ZSB7XG4gIC8vICAgY29uc3QgZHQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgLy8gICBkdC5zZXRNb250aChkdC5nZXRNb250aCgpIC0gMSk7XG4gIC8vICAgcmV0dXJuIGR0O1xuICAvLyB9XG59XG4iXX0=
@@ -1,189 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
- import { fromEvent } from 'rxjs';
3
- import { takeWhile, tap } from 'rxjs/operators';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../service/picker-touch.service";
6
- import * as i2 from "@angular/common";
7
- export class YearSelectComponent {
8
- constructor(_cdr, _pickerTouchService, _elementRef) {
9
- this._cdr = _cdr;
10
- this._pickerTouchService = _pickerTouchService;
11
- this._elementRef = _elementRef;
12
- this.size = 8;
13
- this.allowableRange = [1900, 2100];
14
- this.yearSelected = new EventEmitter();
15
- this.yearApplied = new EventEmitter();
16
- this._alive = true;
17
- this.scrollYearSelector = (e) => {
18
- e.preventDefault();
19
- e.stopPropagation();
20
- const step = e.deltaY > 0 ? 1 : -1;
21
- this.shiftYearSelector(step);
22
- };
23
- this.setYear = (e, year) => {
24
- e.preventDefault();
25
- e.stopPropagation();
26
- if (!this.isYearDisabled(year)) {
27
- this.yearSelected.emit(year);
28
- }
29
- };
30
- this.applyYear = (e, year) => {
31
- e.preventDefault();
32
- e.stopPropagation();
33
- if (!this.isYearDisabled(year)) {
34
- this.yearApplied.emit(year);
35
- }
36
- };
37
- this.initYearSelector = (year) => {
38
- if (!year) {
39
- year = this.today.getFullYear();
40
- }
41
- this.years = [year];
42
- let direction = false;
43
- for (let i = 1; i < this.size; i++) {
44
- if (direction) {
45
- this.years.unshift(this.years[0] - 1);
46
- }
47
- else {
48
- this.years.push(this.years[this.years.length - 1] + 1);
49
- }
50
- direction = !direction;
51
- }
52
- this.checkRanges();
53
- };
54
- this.initMinYearList = () => {
55
- this.minYearList = [this.minYearDate.getFullYear()];
56
- for (let i = 1; i < this.size; i++) {
57
- this.minYearList.push(this.minYearList[this.minYearList.length - 1] + 1);
58
- }
59
- };
60
- this.initMaxYearList = () => {
61
- this.maxYearList = [this.maxYearDate.getFullYear()];
62
- for (let i = 1; i < this.size; i++) {
63
- this.maxYearList.unshift(this.maxYearList[0] - 1);
64
- }
65
- };
66
- this.checkRanges = () => {
67
- if (this.years.some((year) => {
68
- const dat = new Date(year, 0, 1);
69
- return this.isMinYear(dat);
70
- })) {
71
- this.years = this.minYearList;
72
- }
73
- if (this.years.some((year) => {
74
- const dat = new Date(year, 0, 1);
75
- return this.isMaxYear(dat);
76
- })) {
77
- this.years = this.maxYearList;
78
- }
79
- };
80
- this.shiftYearSelector = (step = 0) => {
81
- this.years = this.years.map((year) => year + step);
82
- this.checkRanges();
83
- };
84
- this.decreaseYearSelector = (step = 3) => {
85
- const dat = new Date(this.years[0] - step, 0, 1);
86
- if (this.isMinYear(dat)) {
87
- this.years = this.minYearList;
88
- return;
89
- }
90
- this.years = this.years.map((year) => year - step);
91
- };
92
- this.increaseYearSelector = (step = 3) => {
93
- const dat = new Date(this.years[this.years.length - 1] + step, 0, 1);
94
- if (this.isMaxYear(dat)) {
95
- this.years = this.maxYearList;
96
- return;
97
- }
98
- this.years = this.years.map((year) => year + step);
99
- };
100
- // stopLongDecrease = () => {
101
- // window.clearInterval(this.decreaseInterval);
102
- // };
103
- //
104
- // stopLongIncrease = () => {
105
- // window.clearInterval(this.increaseInterval);
106
- // };
107
- this.isMinYear = (dat) => {
108
- if (!this.minYearDate || !(this.minYearDate instanceof Date) || !dat) {
109
- return false;
110
- }
111
- return this.minYearDate.getFullYear() > dat.getFullYear();
112
- };
113
- this.isMaxYear = (dat) => {
114
- if (!this.maxYearDate || !(this.maxYearDate instanceof Date) || !dat) {
115
- return false;
116
- }
117
- return this.maxYearDate.getFullYear() < dat.getFullYear();
118
- };
119
- this.isYearDisabled = (year) => {
120
- if (year) {
121
- const dat = new Date(year, 0, 1);
122
- return this.isMaxInvalid(dat) || this.isMinInvalid(dat);
123
- }
124
- return false;
125
- };
126
- this.isMinInvalid = (dat) => {
127
- if (!this.minDate || !(this.minDate instanceof Date) || !dat) {
128
- return false;
129
- }
130
- return this.minDate.getFullYear() > dat.getFullYear();
131
- };
132
- this.isMaxInvalid = (dat) => {
133
- if (!this.maxDate || !(this.maxDate instanceof Date) || !dat) {
134
- return false;
135
- }
136
- return this.maxDate.getFullYear() < dat.getFullYear();
137
- };
138
- }
139
- ngOnInit() {
140
- const [minRange, maxRange] = this.allowableRange;
141
- this.minYearDate = new Date(minRange, 0, 1);
142
- this.maxYearDate = new Date(maxRange, 11, 31);
143
- this.initMinYearList();
144
- this.initMaxYearList();
145
- this.initYearSelector(this.currentYear);
146
- }
147
- ngAfterViewInit() {
148
- const touchMove$ = fromEvent(this._elementRef.nativeElement.parentElement, 'touchmove');
149
- touchMove$
150
- .pipe(takeWhile((_) => this._alive), tap((e) => {
151
- this._pickerTouchService.onTouchMove(e);
152
- }))
153
- .subscribe();
154
- this._pickerTouchService.step
155
- .pipe(takeWhile((_) => this._alive), tap((_) => {
156
- this.shiftYearSelector(_);
157
- this._cdr.detectChanges();
158
- }))
159
- .subscribe();
160
- }
161
- ngOnDestroy() {
162
- window.clearInterval(this.decreaseInterval);
163
- window.clearInterval(this.increaseInterval);
164
- this._alive = false;
165
- }
166
- }
167
- YearSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: YearSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PickerTouchService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
168
- YearSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: YearSelectComponent, selector: "teta-year-select", inputs: { currentYear: "currentYear", today: "today", size: "size", minDate: "minDate", maxDate: "maxDate", allowableRange: "allowableRange" }, outputs: { yearSelected: "yearSelected", yearApplied: "yearApplied" }, ngImport: i0, template: "<div class=\"list row_auto margin-top-2\"\n (wheel)=\"scrollYearSelector($event);\">\n <div class=\"list-item list-item_interactive\"\n [class.list-item_active]=\"year === currentYear\"\n [class.list-item_disabled]=\"isYearDisabled(year)\"\n (click)=\"setYear($event, year)\"\n (dblclick)=\"applyYear($event, year)\"\n *ngFor=\"let year of years\">\n {{year}}\n </div>\n</div>\n", styles: [":host{display:flex}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: YearSelectComponent, decorators: [{
170
- type: Component,
171
- args: [{ selector: 'teta-year-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"list row_auto margin-top-2\"\n (wheel)=\"scrollYearSelector($event);\">\n <div class=\"list-item list-item_interactive\"\n [class.list-item_active]=\"year === currentYear\"\n [class.list-item_disabled]=\"isYearDisabled(year)\"\n (click)=\"setYear($event, year)\"\n (dblclick)=\"applyYear($event, year)\"\n *ngFor=\"let year of years\">\n {{year}}\n </div>\n</div>\n", styles: [":host{display:flex}\n"] }]
172
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.PickerTouchService }, { type: i0.ElementRef }]; }, propDecorators: { currentYear: [{
173
- type: Input
174
- }], today: [{
175
- type: Input
176
- }], size: [{
177
- type: Input
178
- }], minDate: [{
179
- type: Input
180
- }], maxDate: [{
181
- type: Input
182
- }], allowableRange: [{
183
- type: Input
184
- }], yearSelected: [{
185
- type: Output
186
- }], yearApplied: [{
187
- type: Output
188
- }] } });
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9kYXRlLXBpY2tlci95ZWFyLXNlbGVjdC95ZWFyLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L2RhdGUtcGlja2VyL3llYXItc2VsZWN0L3llYXItc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQVNoRCxNQUFNLE9BQU8sbUJBQW1CO0lBbUI5QixZQUNVLElBQXVCLEVBQ3ZCLG1CQUF1QyxFQUN2QyxXQUF1QjtRQUZ2QixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUN2Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBbkJ4QixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBR1QsbUJBQWMsR0FBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBUzNDLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFpRHRCLHVCQUFrQixHQUFHLENBQUMsQ0FBYSxFQUFFLEVBQUU7WUFDckMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsTUFB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QzdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDOztnSEFoRVUsbUJBQW1CO29HQUFuQixtQkFBbUIsK1FDdEJoQyxtYUFXQTsyRkRXYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07a0tBR3RDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlV2hpbGUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBpY2tlclRvdWNoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvcGlja2VyLXRvdWNoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLXllYXItc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3llYXItc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4veWVhci1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFllYXJTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGN1cnJlbnRZZWFyOiBudW1iZXI7XG4gIEBJbnB1dCgpIHRvZGF5OiBEYXRlO1xuICBASW5wdXQoKSBzaXplID0gODtcbiAgQElucHV0KCkgbWluRGF0ZTogRGF0ZTtcbiAgQElucHV0KCkgbWF4RGF0ZTogRGF0ZTtcbiAgQElucHV0KCkgYWxsb3dhYmxlUmFuZ2U6IG51bWJlcltdID0gWzE5MDAsIDIxMDBdO1xuICBAT3V0cHV0KCkgeWVhclNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSB5ZWFyQXBwbGllZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIG1pblllYXJEYXRlOiBEYXRlO1xuICBtYXhZZWFyRGF0ZTogRGF0ZTtcbiAgeWVhcnM6IG51bWJlcltdO1xuICBtaW5ZZWFyTGlzdDogbnVtYmVyW107XG4gIG1heFllYXJMaXN0OiBudW1iZXJbXTtcbiAgZGVjcmVhc2VJbnRlcnZhbDogbnVtYmVyO1xuICBpbmNyZWFzZUludGVydmFsOiBudW1iZXI7XG4gIHByaXZhdGUgX2FsaXZlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX3BpY2tlclRvdWNoU2VydmljZTogUGlja2VyVG91Y2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IFttaW5SYW5nZSwgbWF4UmFuZ2VdID0gdGhpcy5hbGxvd2FibGVSYW5nZTtcbiAgICB0aGlzLm1pblllYXJEYXRlID0gbmV3IERhdGUobWluUmFuZ2UsIDAsIDEpO1xuICAgIHRoaXMubWF4WWVhckRhdGUgPSBuZXcgRGF0ZShtYXhSYW5nZSwgMTEsIDMxKTtcbiAgICB0aGlzLmluaXRNaW5ZZWFyTGlzdCgpO1xuICAgIHRoaXMuaW5pdE1heFllYXJMaXN0KCk7XG4gICAgdGhpcy5pbml0WWVhclNlbGVjdG9yKHRoaXMuY3VycmVudFllYXIpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IHRvdWNoTW92ZSQgPSBmcm9tRXZlbnQoXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCxcbiAgICAgICd0b3VjaG1vdmUnXG4gICAgKTtcblxuICAgIHRvdWNoTW92ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSxcbiAgICAgICAgdGFwKChlOiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5fcGlja2VyVG91Y2hTZXJ2aWNlLm9uVG91Y2hNb3ZlKGUpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fcGlja2VyVG91Y2hTZXJ2aWNlLnN0ZXBcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSxcbiAgICAgICAgdGFwKChfKSA9PiB7XG4gICAgICAgICAgdGhpcy5zaGlmdFllYXJTZWxlY3RvcihfKTtcbiAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgd2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5kZWNyZWFzZUludGVydmFsKTtcbiAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLmluY3JlYXNlSW50ZXJ2YWwpO1xuICAgIHRoaXMuX2FsaXZlID0gZmFsc2U7XG4gIH1cblxuICBzY3JvbGxZZWFyU2VsZWN0b3IgPSAoZTogV2hlZWxFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IHN0ZXAgPSBlLmRlbHRhWSA+IDAgPyAxIDogLTE7XG4gICAgdGhpcy5zaGlmdFllYXJTZWxlY3RvcihzdGVwKTtcbiAgfTtcblxuICBzZXRZZWFyID0gKGU6IGFueSwgeWVhcjogbnVtYmVyKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKCF0aGlzLmlzWWVhckRpc2FibGVkKHllYXIpKSB7XG4gICAgICB0aGlzLnllYXJTZWxlY3RlZC5lbWl0KHllYXIpO1xuICAgIH1cbiAgfTtcblxuICBhcHBseVllYXIgPSAoZTogYW55LCB5ZWFyOiBudW1iZXIpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXRoaXMuaXNZZWFyRGlzYWJsZWQoeWVhcikpIHtcbiAgICAgIHRoaXMueWVhckFwcGxpZWQuZW1pdCh5ZWFyKTtcbiAgICB9XG4gIH07XG5cbiAgaW5pdFllYXJTZWxlY3RvciA9ICh5ZWFyOiBudW1iZXIpID0+IHtcbiAgICBpZiAoIXllYXIpIHtcbiAgICAgIHllYXIgPSB0aGlzLnRvZGF5LmdldEZ1bGxZZWFyKCk7XG4gICAgfVxuICAgIHRoaXMueWVhcnMgPSBbeWVhcl07XG4gICAgbGV0IGRpcmVjdGlvbiA9IGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5zaXplOyBpKyspIHtcbiAgICAgIGlmIChkaXJlY3Rpb24pIHtcbiAgICAgICAgdGhpcy55ZWFycy51bnNoaWZ0KHRoaXMueWVhcnNbMF0gLSAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMueWVhcnMucHVzaCh0aGlzLnllYXJzW3RoaXMueWVhcnMubGVuZ3RoIC0gMV0gKyAxKTtcbiAgICAgIH1cbiAgICAgIGRpcmVjdGlvbiA9ICFkaXJlY3Rpb247XG4gICAgfVxuICAgIHRoaXMuY2hlY2tSYW5nZXMoKTtcbiAgfTtcblxuICBpbml0TWluWWVhckxpc3QgPSAoKSA9PiB7XG4gICAgdGhpcy5taW5ZZWFyTGlzdCA9IFt0aGlzLm1pblllYXJEYXRlLmdldEZ1bGxZZWFyKCldO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5zaXplOyBpKyspIHtcbiAgICAgIHRoaXMubWluWWVhckxpc3QucHVzaCh0aGlzLm1pblllYXJMaXN0W3RoaXMubWluWWVhckxpc3QubGVuZ3RoIC0gMV0gKyAxKTtcbiAgICB9XG4gIH07XG5cbiAgaW5pdE1heFllYXJMaXN0ID0gKCkgPT4ge1xuICAgIHRoaXMubWF4WWVhckxpc3QgPSBbdGhpcy5tYXhZZWFyRGF0ZS5nZXRGdWxsWWVhcigpXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMuc2l6ZTsgaSsrKSB7XG4gICAgICB0aGlzLm1heFllYXJMaXN0LnVuc2hpZnQodGhpcy5tYXhZZWFyTGlzdFswXSAtIDEpO1xuICAgIH1cbiAgfTtcblxuICBjaGVja1JhbmdlcyA9ICgpID0+IHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnllYXJzLnNvbWUoKHllYXIpID0+IHtcbiAgICAgICAgY29uc3QgZGF0ID0gbmV3IERhdGUoeWVhciwgMCwgMSk7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTWluWWVhcihkYXQpO1xuICAgICAgfSlcbiAgICApIHtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLm1pblllYXJMaXN0O1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLnllYXJzLnNvbWUoKHllYXIpID0+IHtcbiAgICAgICAgY29uc3QgZGF0ID0gbmV3IERhdGUoeWVhciwgMCwgMSk7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTWF4WWVhcihkYXQpO1xuICAgICAgfSlcbiAgICApIHtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLm1heFllYXJMaXN0O1xuICAgIH1cbiAgfTtcblxuICBzaGlmdFllYXJTZWxlY3RvciA9IChzdGVwOiBudW1iZXIgPSAwKSA9PiB7XG4gICAgdGhpcy55ZWFycyA9IHRoaXMueWVhcnMubWFwKCh5ZWFyKSA9PiB5ZWFyICsgc3RlcCk7XG4gICAgdGhpcy5jaGVja1JhbmdlcygpO1xuICB9O1xuXG4gIGRlY3JlYXNlWWVhclNlbGVjdG9yID0gKHN0ZXA6IG51bWJlciA9IDMpID0+IHtcbiAgICBjb25zdCBkYXQgPSBuZXcgRGF0ZSh0aGlzLnllYXJzWzBdIC0gc3RlcCwgMCwgMSk7XG4gICAgaWYgKHRoaXMuaXNNaW5ZZWFyKGRhdCkpIHtcbiAgICAgIHRoaXMueWVhcnMgPSB0aGlzLm1pblllYXJMaXN0O1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMueWVhcnMgPSB0aGlzLnllYXJzLm1hcCgoeWVhcikgPT4geWVhciAtIHN0ZXApO1xuICB9O1xuXG4gIGluY3JlYXNlWWVhclNlbGVjdG9yID0gKHN0ZXA6IG51bWJlciA9IDMpID0+IHtcbiAgICBjb25zdCBkYXQgPSBuZXcgRGF0ZSh0aGlzLnllYXJzW3RoaXMueWVhcnMubGVuZ3RoIC0gMV0gKyBzdGVwLCAwLCAxKTtcbiAgICBpZiAodGhpcy5pc01heFllYXIoZGF0KSkge1xuICAgICAgdGhpcy55ZWFycyA9IHRoaXMubWF4WWVhckxpc3Q7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMueWVhcnMgPSB0aGlzLnllYXJzLm1hcCgoeWVhcikgPT4geWVhciArIHN0ZXApO1xuICB9O1xuXG4gIC8vIHN0b3BMb25nRGVjcmVhc2UgPSAoKSA9PiB7XG4gIC8vICAgd2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5kZWNyZWFzZUludGVydmFsKTtcbiAgLy8gfTtcbiAgLy9cbiAgLy8gc3RvcExvbmdJbmNyZWFzZSA9ICgpID0+IHtcbiAgLy8gICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLmluY3JlYXNlSW50ZXJ2YWwpO1xuICAvLyB9O1xuXG4gIGlzTWluWWVhciA9IChkYXQ6IERhdGUpOiBib29sZWFuID0+IHtcbiAgICBpZiAoIXRoaXMubWluWWVhckRhdGUgfHwgISh0aGlzLm1pblllYXJEYXRlIGluc3RhbmNlb2YgRGF0ZSkgfHwgIWRhdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5taW5ZZWFyRGF0ZS5nZXRGdWxsWWVhcigpID4gZGF0LmdldEZ1bGxZZWFyKCk7XG4gIH07XG5cbiAgaXNNYXhZZWFyID0gKGRhdDogRGF0ZSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICghdGhpcy5tYXhZZWFyRGF0ZSB8fCAhKHRoaXMubWF4WWVhckRhdGUgaW5zdGFuY2VvZiBEYXRlKSB8fCAhZGF0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1heFllYXJEYXRlLmdldEZ1bGxZZWFyKCkgPCBkYXQuZ2V0RnVsbFllYXIoKTtcbiAgfTtcblxuICBpc1llYXJEaXNhYmxlZCA9ICh5ZWFyOiBudW1iZXIpID0+IHtcbiAgICBpZiAoeWVhcikge1xuICAgICAgY29uc3QgZGF0ID0gbmV3IERhdGUoeWVhciwgMCwgMSk7XG4gICAgICByZXR1cm4gdGhpcy5pc01heEludmFsaWQoZGF0KSB8fCB0aGlzLmlzTWluSW52YWxpZChkYXQpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgaXNNaW5JbnZhbGlkID0gKGRhdDogRGF0ZSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICghdGhpcy5taW5EYXRlIHx8ICEodGhpcy5taW5EYXRlIGluc3RhbmNlb2YgRGF0ZSkgfHwgIWRhdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5taW5EYXRlLmdldEZ1bGxZZWFyKCkgPiBkYXQuZ2V0RnVsbFllYXIoKTtcbiAgfTtcblxuICBpc01heEludmFsaWQgPSAoZGF0OiBEYXRlKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKCF0aGlzLm1heERhdGUgfHwgISh0aGlzLm1heERhdGUgaW5zdGFuY2VvZiBEYXRlKSB8fCAhZGF0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1heERhdGUuZ2V0RnVsbFllYXIoKSA8IGRhdC5nZXRGdWxsWWVhcigpO1xuICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cImxpc3Qgcm93X2F1dG8gbWFyZ2luLXRvcC0yXCJcbiAgICAgKHdoZWVsKT1cInNjcm9sbFllYXJTZWxlY3RvcigkZXZlbnQpO1wiPlxuICA8ZGl2IGNsYXNzPVwibGlzdC1pdGVtIGxpc3QtaXRlbV9pbnRlcmFjdGl2ZVwiXG4gICAgICAgW2NsYXNzLmxpc3QtaXRlbV9hY3RpdmVdPVwieWVhciA9PT0gY3VycmVudFllYXJcIlxuICAgICAgIFtjbGFzcy5saXN0LWl0ZW1fZGlzYWJsZWRdPVwiaXNZZWFyRGlzYWJsZWQoeWVhcilcIlxuICAgICAgIChjbGljayk9XCJzZXRZZWFyKCRldmVudCwgeWVhcilcIlxuICAgICAgIChkYmxjbGljayk9XCJhcHBseVllYXIoJGV2ZW50LCB5ZWFyKVwiXG4gICAgICAgKm5nRm9yPVwibGV0IHllYXIgb2YgeWVhcnNcIj5cbiAgICB7e3llYXJ9fVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,18 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { PrependZeroPipe } from './prepend-zero.pipe';
4
- import * as i0 from "@angular/core";
5
- export class PrependZeroModule {
6
- }
7
- PrependZeroModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PrependZeroModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- PrependZeroModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: PrependZeroModule, declarations: [PrependZeroPipe], imports: [CommonModule], exports: [PrependZeroPipe] });
9
- PrependZeroModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PrependZeroModule, imports: [CommonModule] });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PrependZeroModule, decorators: [{
11
- type: NgModule,
12
- args: [{
13
- declarations: [PrependZeroPipe],
14
- exports: [PrependZeroPipe],
15
- imports: [CommonModule],
16
- }]
17
- }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGVuZC16ZXJvLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9waXBlL3ByZXBlbmQtemVyby9wcmVwZW5kLXplcm8ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFPdEQsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQUpiLGVBQWUsYUFFcEIsWUFBWSxhQURaLGVBQWU7K0dBR2QsaUJBQWlCLFlBRmxCLFlBQVk7MkZBRVgsaUJBQWlCO2tCQUw3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDL0IsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUMxQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBQcmVwZW5kWmVyb1BpcGUgfSBmcm9tICcuL3ByZXBlbmQtemVyby5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbUHJlcGVuZFplcm9QaXBlXSxcbiAgZXhwb3J0czogW1ByZXBlbmRaZXJvUGlwZV0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBQcmVwZW5kWmVyb01vZHVsZSB7fVxuIl19
@@ -1,21 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import { prependZero } from '../util/number-helper';
3
- import * as i0 from "@angular/core";
4
- export class PrependZeroPipe {
5
- transform(value, length) {
6
- if (value === null || value === undefined) {
7
- return '';
8
- }
9
- value /= 1;
10
- return prependZero(value, length);
11
- }
12
- }
13
- PrependZeroPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PrependZeroPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
14
- PrependZeroPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: PrependZeroPipe, name: "tetaPrependZero" });
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PrependZeroPipe, decorators: [{
16
- type: Pipe,
17
- args: [{
18
- name: 'tetaPrependZero'
19
- }]
20
- }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGVuZC16ZXJvLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGlwZS9wcmVwZW5kLXplcm8vcHJlcGVuZC16ZXJvLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDOztBQUtsRCxNQUFNLE9BQU8sZUFBZTtJQUMxQixTQUFTLENBQUMsS0FBYSxFQUFFLE1BQWM7UUFDckMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDekMsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELEtBQUssSUFBSSxDQUFDLENBQUM7UUFDWCxPQUFPLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7NEdBUFUsZUFBZTswR0FBZixlQUFlOzJGQUFmLGVBQWU7a0JBSDNCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGlCQUFpQjtpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtwcmVwZW5kWmVyb30gZnJvbSAnLi4vdXRpbC9udW1iZXItaGVscGVyJztcblxuQFBpcGUoe1xuICBuYW1lOiAndGV0YVByZXBlbmRaZXJvJ1xufSlcbmV4cG9ydCBjbGFzcyBQcmVwZW5kWmVyb1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICB2YWx1ZSAvPSAxO1xuICAgIHJldHVybiBwcmVwZW5kWmVybyh2YWx1ZSwgbGVuZ3RoKTtcbiAgfVxufVxuIl19
@@ -1,8 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- import * as i1 from "./prepend-zero.pipe";
3
- import * as i2 from "@angular/common";
4
- export declare class PrependZeroModule {
5
- static ɵfac: i0.ɵɵFactoryDeclaration<PrependZeroModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<PrependZeroModule, [typeof i1.PrependZeroPipe], [typeof i2.CommonModule], [typeof i1.PrependZeroPipe]>;
7
- static ɵinj: i0.ɵɵInjectorDeclaration<PrependZeroModule>;
8
- }
@@ -1,7 +0,0 @@
1
- import { PipeTransform } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare class PrependZeroPipe implements PipeTransform {
4
- transform(value: number, length: number): string;
5
- static ɵfac: i0.ɵɵFactoryDeclaration<PrependZeroPipe, never>;
6
- static ɵpipe: i0.ɵɵPipeDeclaration<PrependZeroPipe, "tetaPrependZero", false>;
7
- }