@tetacom/ng-components 1.0.148 → 1.0.149

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) 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/theme-switch/theme-switch/theme-switch.component.mjs +1 -1
  106. package/esm2020/directive/hint/hint.directive.mjs +6 -3
  107. package/esm2020/locale/en.mjs +3 -1
  108. package/esm2020/locale/ru.mjs +3 -1
  109. package/esm2020/locale/teta-localisation.mjs +1 -1
  110. package/fesm2015/tetacom-ng-components.mjs +2898 -3015
  111. package/fesm2015/tetacom-ng-components.mjs.map +1 -1
  112. package/fesm2020/tetacom-ng-components.mjs +5440 -5565
  113. package/fesm2020/tetacom-ng-components.mjs.map +1 -1
  114. package/locale/teta-localisation.d.ts +2 -0
  115. package/package.json +3 -2
  116. package/style/accordion.scss +28 -6
  117. package/style/assembly-library.scss +4 -1
  118. package/style/badge.scss +28 -0
  119. package/style/bottombar.scss +5 -0
  120. package/style/button.scss +16 -12
  121. package/style/checkbox.scss +26 -13
  122. package/style/chips.scss +10 -10
  123. package/style/color.scss +1 -36
  124. package/style/datepicker.scss +139 -24
  125. package/style/divider.scss +15 -0
  126. package/style/drag.scss +1 -1
  127. package/style/dropdown.scss +6 -4
  128. package/style/hint.scss +5 -5
  129. package/style/icon.scss +2 -1
  130. package/style/input.scss +32 -23
  131. package/style/layout.scss +6 -2
  132. package/style/list.scss +11 -8
  133. package/style/loader.scss +2 -2
  134. package/style/message.scss +15 -7
  135. package/style/modal.scss +3 -2
  136. package/style/navigation.scss +4 -1
  137. package/style/presets/color-presets.scss +9 -160
  138. package/style/presets/font-presets.scss +26 -25
  139. package/style/presets/view-types.scss +15 -0
  140. package/style/progress.scss +3 -3
  141. package/style/radio.scss +21 -7
  142. package/style/resize-panel.scss +2 -2
  143. package/style/scroll.scss +3 -3
  144. package/style/select.scss +26 -21
  145. package/style/shadow.scss +0 -20
  146. package/style/sidebar.scss +1 -1
  147. package/style/switch.scss +15 -10
  148. package/style/table.scss +15 -15
  149. package/style/tabs.scss +11 -11
  150. package/style/tag.scss +37 -0
  151. package/style/toggle.scss +20 -18
  152. package/style/toolbar.scss +1 -1
  153. package/style/tooltip.scss +8 -6
  154. package/style/tree.scss +4 -4
  155. package/component/date-picker/day-select/day-select.component.d.ts +0 -51
  156. package/component/date-picker/model/date-picker-mode.enum.d.ts +0 -5
  157. package/component/date-picker/month-select/month-select.component.d.ts +0 -40
  158. package/component/date-picker/service/picker-touch.service.d.ts +0 -12
  159. package/component/date-picker/time-part-control/time-part-control.component.d.ts +0 -26
  160. package/component/date-picker/util/date-picker-util.d.ts +0 -15
  161. package/component/date-picker/year-select/year-select.component.d.ts +0 -45
  162. package/esm2020/component/date-picker/day-select/day-select.component.mjs +0 -184
  163. package/esm2020/component/date-picker/model/date-picker-mode.enum.mjs +0 -7
  164. package/esm2020/component/date-picker/month-select/month-select.component.mjs +0 -148
  165. package/esm2020/component/date-picker/service/picker-touch.service.mjs +0 -34
  166. package/esm2020/component/date-picker/time-part-control/time-part-control.component.mjs +0 -73
  167. package/esm2020/component/date-picker/util/date-picker-util.mjs +0 -142
  168. package/esm2020/component/date-picker/year-select/year-select.component.mjs +0 -189
  169. package/esm2020/pipe/prepend-zero/prepend-zero.module.mjs +0 -18
  170. package/esm2020/pipe/prepend-zero/prepend-zero.pipe.mjs +0 -21
  171. package/pipe/prepend-zero/prepend-zero.module.d.ts +0 -8
  172. package/pipe/prepend-zero/prepend-zero.pipe.d.ts +0 -7
  173. package/style/tokens/basedark.tokens.css +0 -77
  174. package/style/tokens/baselight.tokens.css +0 -61
  175. package/style/tokens/global.tokens.css +0 -235
  176. package/style/tokens/utility.tokens.css +0 -1119
@@ -0,0 +1 @@
1
+ export declare type viewType = 'brick' | 'rounded' | 'circle';
@@ -1,17 +1,20 @@
1
1
  import { ChangeDetectorRef, OnInit } from '@angular/core';
2
2
  import { AccordionContentDirective } from '../accordion-content.directive';
3
3
  import { AccordionComponent } from '../accordion/accordion.component';
4
+ import { viewType } from "../../../common/model/view-type.model";
4
5
  import * as i0 from "@angular/core";
5
6
  export declare class AccordionItemComponent implements OnInit {
6
7
  private cdr$;
7
8
  content: AccordionContentDirective;
8
9
  open: boolean;
9
10
  disabled: boolean;
11
+ viewType: viewType;
10
12
  private readonly accordionItemClass;
13
+ get class(): string;
11
14
  private readonly accordion$;
12
15
  constructor(accordion: AccordionComponent, cdr$: ChangeDetectorRef);
13
16
  toggle(): void;
14
17
  ngOnInit(): void;
15
18
  static ɵfac: i0.ɵɵFactoryDeclaration<AccordionItemComponent, [{ optional: true; }, null]>;
16
- static ɵcmp: i0.ɵɵComponentDeclaration<AccordionItemComponent, "teta-accordion-item", never, { "open": "open"; "disabled": "disabled"; }, {}, ["content"], ["teta-accordion-head"], false>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<AccordionItemComponent, "teta-accordion-item", never, { "open": "open"; "disabled": "disabled"; "viewType": "viewType"; }, {}, ["content"], ["teta-accordion-head"], false>;
17
20
  }
@@ -0,0 +1,17 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { viewType } from 'projects/components/src/common/model/view-type.model';
3
+ import { AvatarColorEnum } from '../model/avatar-color.enum';
4
+ import * as i0 from "@angular/core";
5
+ export declare class AvatarComponent implements OnInit {
6
+ photo?: string | ArrayBuffer;
7
+ name?: string;
8
+ id?: number;
9
+ viewType?: viewType;
10
+ size?: '24' | '28' | '32' | '44' | '64' | '128' | '200';
11
+ get avatar(): string;
12
+ colorMap: Map<AvatarColorEnum, string>;
13
+ constructor();
14
+ ngOnInit(): void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<AvatarComponent, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<AvatarComponent, "teta-avatar", never, { "photo": "photo"; "name": "name"; "id": "id"; "viewType": "viewType"; "size": "size"; }, {}, never, never, false>;
17
+ }
@@ -0,0 +1,9 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./avatar/avatar.component";
3
+ import * as i2 from "@angular/common";
4
+ import * as i3 from "../icon/icon.module";
5
+ export declare class AvatarModule {
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<AvatarModule, never>;
7
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AvatarModule, [typeof i1.AvatarComponent], [typeof i2.CommonModule, typeof i3.IconModule], [typeof i1.AvatarComponent]>;
8
+ static ɵinj: i0.ɵɵInjectorDeclaration<AvatarModule>;
9
+ }
@@ -0,0 +1,20 @@
1
+ export declare enum AvatarColorEnum {
2
+ vibrant = 0,
3
+ nebula = 1,
4
+ gorgonzola = 2,
5
+ lagoon = 3,
6
+ lime = 4,
7
+ pumpkin = 5,
8
+ vanity = 6,
9
+ navy = 7,
10
+ turquoise = 8,
11
+ greyish = 9,
12
+ heart = 10,
13
+ gloomy = 11,
14
+ rockman = 12,
15
+ hair = 13,
16
+ cerise = 14,
17
+ iris = 15,
18
+ caribbean = 16,
19
+ poisonous = 17
20
+ }
@@ -0,0 +1,2 @@
1
+ export * from './avatar.module';
2
+ export * from './avatar/avatar.component';
@@ -1,4 +1,5 @@
1
1
  import { OnInit } from '@angular/core';
2
+ import { viewType } from "../../../common/model/view-type.model";
2
3
  import * as i0 from "@angular/core";
3
4
  export declare type ButtonViewType = 'primary' | 'outline' | 'ghost';
4
5
  export declare class ButtonComponent implements OnInit {
@@ -6,9 +7,11 @@ export declare class ButtonComponent implements OnInit {
6
7
  class: any;
7
8
  view: ButtonViewType;
8
9
  square: boolean;
10
+ viewType: viewType;
11
+ size: 'm' | 'l';
9
12
  private get getClass();
10
13
  constructor();
11
14
  ngOnInit(): void;
12
15
  static ɵfac: i0.ɵɵFactoryDeclaration<ButtonComponent, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "button[teta-button], teta-button", never, { "palette": "palette"; "class": "class"; "view": "view"; "square": "square"; }, {}, never, ["*"], false>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "button[teta-button], teta-button", never, { "palette": "palette"; "class": "class"; "view": "view"; "square": "square"; "viewType": "viewType"; "size": "size"; }, {}, never, ["*"], false>;
14
17
  }
@@ -21,6 +21,7 @@ export declare class CheckboxComponent implements ControlValueAccessor, OnInit {
21
21
  * true/false или list
22
22
  */
23
23
  binary: boolean;
24
+ labelPosition: 'left' | 'right';
24
25
  allowNull: boolean;
25
26
  checked: boolean;
26
27
  /**
@@ -42,5 +43,5 @@ export declare class CheckboxComponent implements ControlValueAccessor, OnInit {
42
43
  registerOnTouched(fn: () => void): void;
43
44
  setDisabledState?(isDisabled: boolean): void;
44
45
  static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxComponent, never>;
45
- static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "teta-checkbox", never, { "class": "class"; "palette": "palette"; "noLabel": "noLabel"; "disabled": "disabled"; "value": "value"; "binary": "binary"; "allowNull": "allowNull"; }, {}, never, ["*"], false>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "teta-checkbox", never, { "class": "class"; "palette": "palette"; "noLabel": "noLabel"; "disabled": "disabled"; "value": "value"; "binary": "binary"; "labelPosition": "labelPosition"; "allowNull": "allowNull"; }, {}, never, ["*"], false>;
46
47
  }
@@ -0,0 +1,49 @@
1
+ import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, SimpleChanges } from "@angular/core";
2
+ import { BehaviorSubject, ReplaySubject } from "rxjs";
3
+ import { Dayjs } from "dayjs";
4
+ import { viewType } from "../../common/model/view-type.model";
5
+ import { MinMaxDateModel } from "./model/min-max-date.model";
6
+ import { DayModel } from "./model/day-model";
7
+ import * as i0 from "@angular/core";
8
+ export declare abstract class BaseCalendar implements OnChanges, OnDestroy {
9
+ protected _cdr: ChangeDetectorRef;
10
+ abstract selectedDate: any;
11
+ abstract locale: string;
12
+ abstract open: boolean;
13
+ abstract viewType: viewType;
14
+ abstract min: Date | string | number;
15
+ abstract isDateNull: boolean;
16
+ abstract max: Date | string | number;
17
+ abstract setDate: EventEmitter<Date>;
18
+ currentMonth: ReplaySubject<number>;
19
+ minMax: ReplaySubject<MinMaxDateModel>;
20
+ currentYear: ReplaySubject<number>;
21
+ selectedPicker: BehaviorSubject<'day' | 'month' | 'year'>;
22
+ abstract calendar: DayModel[] | {
23
+ currentMonth: DayModel[];
24
+ nextMonth: DayModel[];
25
+ };
26
+ localeMonths: Map<any, any>;
27
+ alive: boolean;
28
+ protected constructor(_cdr: ChangeDetectorRef);
29
+ generateCalendar(selectedDate: Dayjs, year: number, month: number, minMax: MinMaxDateModel): DayModel[];
30
+ isSuitableMinDate(d: Date, minDate: Date | string | number): boolean;
31
+ isSuitableMaxDate(d: Date, maxDate: Date | string | number): boolean;
32
+ isSelected(date: Date, selectedDate: Date): boolean;
33
+ ngOnDestroy(): void;
34
+ selectPicker(entity: "day" | "month" | "year"): void;
35
+ selectMonth(month: number): void;
36
+ selectYear(year: number): void;
37
+ ngOnChanges(changes: SimpleChanges): void;
38
+ changeCalendarData(selectedDate: Date | number | string): void;
39
+ setYear(year: number): void;
40
+ changeMonth(month: number, year: number): void;
41
+ getAvailableMonthYear(month: number, year: number): {
42
+ availableMonth: number;
43
+ availableYear: number;
44
+ };
45
+ getMothName(month: number): any;
46
+ selectDate(date: Date): void;
47
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseCalendar, never>;
48
+ static ɵcmp: i0.ɵɵComponentDeclaration<BaseCalendar, "ng-component", never, {}, {}, never, never, false>;
49
+ }
@@ -0,0 +1,60 @@
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter } from "@angular/core";
2
+ import { Align } from "../../common/enum/align.enum";
3
+ import { VerticalAlign } from "../../common/enum/vertical-align.enum";
4
+ import { ReplaySubject } from "rxjs";
5
+ import { MaskitoOptions } from "@maskito/core";
6
+ import { viewType } from "../../common/model/view-type.model";
7
+ import { DatePipe } from "@angular/common";
8
+ import { DateFromToModel } from "./model/from-to.model";
9
+ export declare abstract class BasePicker {
10
+ protected _elementRef: ElementRef;
11
+ protected _cdr: ChangeDetectorRef;
12
+ protected datePipe: DatePipe;
13
+ abstract mask: string;
14
+ abstract date: any;
15
+ abstract locale: string;
16
+ abstract showTime: boolean;
17
+ abstract minDate: Date | string | number;
18
+ abstract maxDate: Date | string | number;
19
+ abstract invalid: boolean;
20
+ abstract disabled: boolean;
21
+ abstract align: Align;
22
+ abstract verticalAlign: VerticalAlign;
23
+ abstract viewType: viewType;
24
+ abstract appendToBody: boolean;
25
+ abstract backdrop: boolean;
26
+ abstract allowNull: boolean;
27
+ abstract input: ElementRef;
28
+ abstract selectDate: EventEmitter<Date | DateFromToModel>;
29
+ open: boolean;
30
+ abstract selectedDate: ReplaySubject<any>;
31
+ placeholder: string;
32
+ inputText: string;
33
+ maskitoOptions: MaskitoOptions;
34
+ protected constructor(_elementRef: ElementRef, _cdr: ChangeDetectorRef, datePipe: DatePipe);
35
+ abstract onChange(date: Date): any;
36
+ abstract prepareInput(): any;
37
+ abstract onBlur(): any;
38
+ abstract setDate(date: any): any;
39
+ changeInput(v: any): void;
40
+ changePlaceholder(value: string): void;
41
+ openChange(e: boolean): void;
42
+ checkNull(): string;
43
+ openPicker: (show: boolean) => void;
44
+ changeSelectedDate(date: any, selectedDate?: any): void;
45
+ emitValue(value: any): void;
46
+ checkEnter(e: any): void;
47
+ isAvailableLength(val: string, length: number): boolean;
48
+ getDateFromStr(str: string, separator?: string): {
49
+ day: number;
50
+ month: number;
51
+ year: number;
52
+ };
53
+ getTimeFromStr(str: string, separator?: string): {
54
+ hours: number;
55
+ mins: number;
56
+ };
57
+ focus(): void;
58
+ getLocaleString(date: Date | number | string): string;
59
+ getAvailableDate(min: Date | number | string, max: Date | number | string, date: Date | number | string): Date;
60
+ }
@@ -0,0 +1,20 @@
1
+ import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy } from '@angular/core';
2
+ import { viewType } from "../../../../common/model/view-type.model";
3
+ import { BaseCalendar } from "../../base-calendar";
4
+ import { DayModel } from "../../model/day-model";
5
+ import * as i0 from "@angular/core";
6
+ export declare class DateCalendarComponent extends BaseCalendar implements OnChanges, OnDestroy {
7
+ _cdr: ChangeDetectorRef;
8
+ selectedDate: Date | string | number;
9
+ locale: string;
10
+ open: boolean;
11
+ viewType: viewType;
12
+ min: Date | string | number;
13
+ isDateNull: boolean;
14
+ max: Date | string | number;
15
+ setDate: EventEmitter<Date>;
16
+ calendar: DayModel[];
17
+ constructor(_cdr: ChangeDetectorRef);
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateCalendarComponent, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<DateCalendarComponent, "teta-date-calendar", never, { "selectedDate": "selectedDate"; "locale": "locale"; "open": "open"; "viewType": "viewType"; "min": "min"; "isDateNull": "isDateNull"; "max": "max"; }, { "setDate": "setDate"; }, never, never, false>;
20
+ }
@@ -1,80 +1,50 @@
1
- import { ChangeDetectorRef, ElementRef, OnDestroy, OnInit } from '@angular/core';
2
- import { ControlValueAccessor } from '@angular/forms';
3
- import { DatePeriod } from '../model/date-period';
4
- import { DatePickerMode } from '../model/date-picker-mode.enum';
5
- import { Align } from '../../../common/enum/align.enum';
6
- import { VerticalAlign } from '../../../common/enum/vertical-align.enum';
7
- import { TetaLocalisation } from '../../../locale/teta-localisation';
8
- import { TetaConfigService } from '../../../locale/teta-config.service';
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, OnInit } from '@angular/core';
2
+ import { viewType } from "../../../common/model/view-type.model";
3
+ import { ControlValueAccessor } from "@angular/forms";
4
+ import { Align } from "../../../common/enum/align.enum";
5
+ import { VerticalAlign } from "../../../common/enum/vertical-align.enum";
6
+ import { DatePipe } from "@angular/common";
7
+ import { BasePicker } from "../base-picker";
8
+ import { ReplaySubject } from 'rxjs';
9
+ import { DatePeriod } from "../model/date-period";
9
10
  import * as i0 from "@angular/core";
10
11
  export declare const DATE_PICKER_CONTROL_VALUE_ACCESSOR: any;
11
- export declare class DatePickerComponent implements ControlValueAccessor, OnInit, OnDestroy {
12
- localeService: TetaConfigService;
13
- private _cdr;
14
- private _elementRef;
15
- disabled: boolean;
12
+ export declare class DatePickerComponent extends BasePicker implements OnInit, ControlValueAccessor {
13
+ _elementRef: ElementRef;
14
+ _cdr: ChangeDetectorRef;
15
+ datePipe: DatePipe;
16
+ date: Date | string | number;
17
+ locale: string;
18
+ showTime: boolean;
19
+ minDate: Date | string | number;
20
+ maxDate: Date | string | number;
16
21
  invalid: boolean;
22
+ disabled: boolean;
23
+ align: Align;
24
+ verticalAlign: VerticalAlign;
25
+ viewType: viewType;
26
+ appendToBody: boolean;
27
+ backdrop: boolean;
28
+ allowNull: boolean;
17
29
  firstDayOfWeek: number;
18
30
  disabledDates: Date[];
19
31
  disabledPeriods: DatePeriod[];
20
32
  disabledDays: number[];
21
- minDate: Date;
22
- maxDate: Date;
23
33
  minYearDate: Date;
24
34
  maxYearDate: Date;
25
- align: Align;
26
- verticalAlign: VerticalAlign;
27
- appendToBody: boolean;
28
- allowNull: boolean;
29
- backdrop: boolean;
30
- showTime: boolean;
31
- set format(val: string);
32
- get format(): string;
33
- open: boolean;
34
- private readonly classDatepicker;
35
- private readonly tabindex;
36
- locale: TetaLocalisation;
37
- today: Date;
38
- datePickerModeEnum: typeof DatePickerMode;
39
- displayMode: DatePickerMode;
40
- _format: string;
41
- _value: Date | null;
42
- _currentValue: Date;
43
- private _alive;
44
- get value(): Date | null;
45
- set value(v: Date | null);
46
- get currentValue(): Date;
47
- set currentValue(date: Date);
48
- get internalValue(): Date;
49
- constructor(localeService: TetaConfigService, _cdr: ChangeDetectorRef, _elementRef: ElementRef);
50
- keyUp(event: KeyboardEvent): void;
51
- writeValue(value: any): void;
52
- onChange: (_: any) => void;
53
- onTouched: () => void;
54
- registerOnChange(fn: (_: any) => void): void;
55
- registerOnTouched(fn: () => void): void;
56
- setDisabledState(isDisabled: boolean): void;
35
+ input: ElementRef;
36
+ selectDate: EventEmitter<Date>;
37
+ selectedDate: ReplaySubject<Date | string | number>;
38
+ mask: string;
39
+ constructor(_elementRef: ElementRef, _cdr: ChangeDetectorRef, datePipe: DatePipe);
57
40
  ngOnInit(): void;
58
- ngOnDestroy(): void;
59
- applyValue(date: Date): void;
60
- setDate: (day: Date) => void;
61
- setYear: (year: number) => void;
62
- setMonth: (month: number) => void;
63
- setHour: (hours: number) => void;
64
- setMinute: (minute: number) => void;
65
- setSecond: (seconds: number) => void;
66
- setToday: () => void;
67
- clearPicker: (event: MouseEvent) => void;
68
- isDateInDisabledPeriod: (dat: Date) => boolean;
69
- isScrollIgnored: () => boolean;
70
- scrollMonth: (e: any) => boolean;
71
- scrollYear: (e: any) => boolean;
72
- openPicker: (show: boolean) => void;
73
- closePicker: () => void;
74
- preventEvent: (event: any) => boolean;
75
- focus(): void;
76
- setMode(mode: DatePickerMode): void;
77
- private emptyDate;
41
+ prepareInput(): void;
42
+ onBlur(): void;
43
+ setDate(date: any): void;
44
+ onChange(date: Date): void;
45
+ registerOnChange(fn: (date: Date) => any): void;
46
+ registerOnTouched(fn: any): void;
47
+ writeValue(obj: Date | string | number): void;
78
48
  static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerComponent, never>;
79
- static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerComponent, "teta-date-picker", never, { "disabled": "disabled"; "invalid": "invalid"; "firstDayOfWeek": "firstDayOfWeek"; "disabledDates": "disabledDates"; "disabledPeriods": "disabledPeriods"; "disabledDays": "disabledDays"; "minDate": "minDate"; "maxDate": "maxDate"; "minYearDate": "minYearDate"; "maxYearDate": "maxYearDate"; "align": "align"; "verticalAlign": "verticalAlign"; "appendToBody": "appendToBody"; "allowNull": "allowNull"; "backdrop": "backdrop"; "showTime": "showTime"; "format": "format"; }, {}, never, never, false>;
49
+ static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerComponent, "teta-date-picker", never, { "date": "date"; "locale": "locale"; "showTime": "showTime"; "minDate": "minDate"; "maxDate": "maxDate"; "invalid": "invalid"; "disabled": "disabled"; "align": "align"; "verticalAlign": "verticalAlign"; "viewType": "viewType"; "appendToBody": "appendToBody"; "backdrop": "backdrop"; "allowNull": "allowNull"; "firstDayOfWeek": "firstDayOfWeek"; "disabledDates": "disabledDates"; "disabledPeriods": "disabledPeriods"; "disabledDays": "disabledDays"; "minYearDate": "minYearDate"; "maxYearDate": "maxYearDate"; }, { "selectDate": "selectDate"; }, never, never, false>;
80
50
  }
@@ -1,20 +1,24 @@
1
1
  import * as i0 from "@angular/core";
2
- import * as i1 from "./date-picker/date-picker.component";
3
- import * as i2 from "./month-picker/month-picker.component";
4
- import * as i3 from "./day-select/day-select.component";
5
- import * as i4 from "./year-select/year-select.component";
6
- import * as i5 from "./month-select/month-select.component";
7
- import * as i6 from "./time-part-control/time-part-control.component";
8
- import * as i7 from "@angular/common";
9
- import * as i8 from "../dropdown/dropdown.module";
10
- import * as i9 from "../../directive/click-outside/click-outside.module";
11
- import * as i10 from "@angular/forms";
12
- import * as i11 from "../icon/icon.module";
13
- import * as i12 from "../../pipe/prepend-zero/prepend-zero.module";
14
- import * as i13 from "../button/button.module";
15
- import * as i14 from "../../directive/only-number/only-number.module";
2
+ import * as i1 from "./date-picker/date-calendar/date-calendar.component";
3
+ import * as i2 from "./day-picker/day-picker.component";
4
+ import * as i3 from "./date-picker/date-picker.component";
5
+ import * as i4 from "./date-range/range-calendar/range-calendar.component";
6
+ import * as i5 from "./day-picker/day-item/day-item.component";
7
+ import * as i6 from "./month-picker/month-picker.component";
8
+ import * as i7 from "./year-picker/scroll-to-selected-year.directive";
9
+ import * as i8 from "./year-picker/year-picker.component";
10
+ import * as i9 from "./date-range/date-range.component";
11
+ import * as i10 from "@angular/common";
12
+ import * as i11 from "../dropdown/dropdown.module";
13
+ import * as i12 from "../button/button.module";
14
+ import * as i13 from "@angular/forms";
15
+ import * as i14 from "@maskito/angular";
16
+ import * as i15 from "../icon/icon.module";
17
+ import * as i16 from "../input/input.module";
18
+ import * as i17 from "../../directive/scroll-into-view/scroll-into-view.module";
19
+ import * as i18 from "../../directive/click-outside/click-outside.module";
16
20
  export declare class DatePickerModule {
17
21
  static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerModule, never>;
18
- static ɵmod: i0.ɵɵNgModuleDeclaration<DatePickerModule, [typeof i1.DatePickerComponent, typeof i2.MonthPickerComponent, typeof i3.DaySelectComponent, typeof i4.YearSelectComponent, typeof i5.MonthSelectComponent, typeof i6.TimePartControlComponent], [typeof i7.CommonModule, typeof i8.DropdownModule, typeof i9.ClickOutsideModule, typeof i10.FormsModule, typeof i11.IconModule, typeof i12.PrependZeroModule, typeof i13.ButtonModule, typeof i14.OnlyNumberModule], [typeof i1.DatePickerComponent, typeof i2.MonthPickerComponent]>;
22
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DatePickerModule, [typeof i1.DateCalendarComponent, typeof i2.DayPickerComponent, typeof i3.DatePickerComponent, typeof i4.RangeCalendarComponent, typeof i5.DayItemComponent, typeof i6.MonthPickerComponent, typeof i7.ScrollToSelectedYearDirective, typeof i8.YearPickerComponent, typeof i7.ScrollToSelectedYearDirective, typeof i9.DateRangeComponent], [typeof i10.CommonModule, typeof i11.DropdownModule, typeof i12.ButtonModule, typeof i13.FormsModule, typeof i14.MaskitoModule, typeof i15.IconModule, typeof i16.InputModule, typeof i17.ScrollIntoViewModule, typeof i18.ClickOutsideModule, typeof i13.ReactiveFormsModule], [typeof i3.DatePickerComponent, typeof i1.DateCalendarComponent, typeof i4.RangeCalendarComponent, typeof i9.DateRangeComponent]>;
19
23
  static ɵinj: i0.ɵɵInjectorDeclaration<DatePickerModule>;
20
24
  }
@@ -0,0 +1,46 @@
1
+ import { ChangeDetectorRef, ElementRef, EventEmitter, OnInit } from '@angular/core';
2
+ import { BasePicker } from "../base-picker";
3
+ import { DatePipe } from "@angular/common";
4
+ import { Align } from "../../../common/enum/align.enum";
5
+ import { VerticalAlign } from "../../../common/enum/vertical-align.enum";
6
+ import { viewType } from 'projects/components/src/common/model/view-type.model';
7
+ import { ControlValueAccessor } from "@angular/forms";
8
+ import { ReplaySubject } from "rxjs";
9
+ import { DateFromToModel } from "../model/from-to.model";
10
+ import * as i0 from "@angular/core";
11
+ export declare const DATE_Range_CONTROL_VALUE_ACCESSOR: any;
12
+ export declare class DateRangeComponent extends BasePicker implements OnInit, ControlValueAccessor {
13
+ _cdr: ChangeDetectorRef;
14
+ _elementRef: ElementRef;
15
+ datePipe: DatePipe;
16
+ date: DateFromToModel;
17
+ locale: string;
18
+ showTime: boolean;
19
+ minDate: Date | string | number;
20
+ maxDate: Date | string | number;
21
+ invalid: boolean;
22
+ disabled: boolean;
23
+ align: Align;
24
+ verticalAlign: VerticalAlign;
25
+ viewType: viewType;
26
+ appendToBody: boolean;
27
+ backdrop: boolean;
28
+ allowNull: boolean;
29
+ input: ElementRef;
30
+ selectDate: EventEmitter<DateFromToModel>;
31
+ mask: string;
32
+ selectedDate: ReplaySubject<DateFromToModel>;
33
+ constructor(_cdr: ChangeDetectorRef, _elementRef: ElementRef, datePipe: DatePipe);
34
+ changeSelectedDate(date: Date, selectedDate: DateFromToModel): void;
35
+ checkNull(): string;
36
+ prepareInput(): void;
37
+ onBlur(): void;
38
+ setDate(range: DateFromToModel): void;
39
+ writeValue(obj: DateFromToModel): void;
40
+ registerOnChange(fn: any): void;
41
+ registerOnTouched(fn: any): void;
42
+ ngOnInit(): void;
43
+ onChange(date: Date): void;
44
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateRangeComponent, never>;
45
+ static ɵcmp: i0.ɵɵComponentDeclaration<DateRangeComponent, "teta-date-range", never, { "date": "date"; "locale": "locale"; "showTime": "showTime"; "minDate": "minDate"; "maxDate": "maxDate"; "invalid": "invalid"; "disabled": "disabled"; "align": "align"; "verticalAlign": "verticalAlign"; "viewType": "viewType"; "appendToBody": "appendToBody"; "backdrop": "backdrop"; "allowNull": "allowNull"; }, { "selectDate": "selectDate"; }, never, never, false>;
46
+ }
@@ -0,0 +1,39 @@
1
+ import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
2
+ import { DayModel } from '../../model/day-model';
3
+ import { viewType } from "../../../../common/model/view-type.model";
4
+ import { DateFromToModel } from "../../model/from-to.model";
5
+ import { BaseCalendar } from "../../base-calendar";
6
+ import * as i0 from "@angular/core";
7
+ export declare class RangeCalendarComponent extends BaseCalendar implements OnChanges, OnDestroy {
8
+ _cdr: ChangeDetectorRef;
9
+ locale: string;
10
+ open: boolean;
11
+ date: DateFromToModel;
12
+ viewType: viewType;
13
+ allowNull: boolean;
14
+ selectedDate: DateFromToModel;
15
+ min: Date | string | number;
16
+ isDateNull: boolean;
17
+ max: Date | string | number;
18
+ hoveredDateChange: EventEmitter<Date>;
19
+ setDate: EventEmitter<Date>;
20
+ calendar: {
21
+ currentMonth: DayModel[];
22
+ nextMonth: DayModel[];
23
+ };
24
+ _hoveredDate: Date;
25
+ get hoveredDate(): Date;
26
+ set hoveredDate(e: Date);
27
+ constructor(_cdr: ChangeDetectorRef);
28
+ getFromTo(): {
29
+ from: any;
30
+ to: any;
31
+ };
32
+ isSelected(d: Date, selectedDate: Date): boolean;
33
+ checkSelected(date: Date, selectedDate: Date): boolean;
34
+ isFirstDaySuitable(m: number, y: number, max: Date): boolean;
35
+ isLastDaySuitable(m: number, y: number, min: Date): boolean;
36
+ ngOnChanges(changes: SimpleChanges): void;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<RangeCalendarComponent, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<RangeCalendarComponent, "teta-range-calendar", never, { "locale": "locale"; "open": "open"; "date": "date"; "viewType": "viewType"; "allowNull": "allowNull"; "selectedDate": "selectedDate"; "min": "min"; "isDateNull": "isDateNull"; "max": "max"; }, { "hoveredDateChange": "hoveredDateChange"; "setDate": "setDate"; }, never, never, false>;
39
+ }
@@ -0,0 +1,9 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { DayModel } from 'projects/components/src/component/date-picker/model/day-model';
3
+ import * as i0 from "@angular/core";
4
+ export declare class DayItemComponent implements OnInit {
5
+ day: DayModel;
6
+ ngOnInit(): void;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<DayItemComponent, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<DayItemComponent, "teta-day-item", never, { "day": "day"; }, {}, never, never, false>;
9
+ }
@@ -0,0 +1,30 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { viewType } from 'projects/components/src/common/model/view-type.model';
3
+ import { DayModel } from "../model/day-model";
4
+ import { DateFromToModel } from "../model/from-to.model";
5
+ import * as i0 from "@angular/core";
6
+ export declare class DayPickerComponent {
7
+ date: Date | string | number;
8
+ calendar: DayModel[];
9
+ viewType: viewType;
10
+ range?: DateFromToModel;
11
+ min: Date | string | number;
12
+ max: Date | string | number;
13
+ locale: string;
14
+ hoveredDate?: Date;
15
+ hoveredDateChange?: EventEmitter<Date>;
16
+ selectDate: EventEmitter<Date>;
17
+ daysOfWeek: Map<any, any>;
18
+ constructor();
19
+ isInRange(day: DayModel, from: Date | number | string, to: Date | number | string): boolean;
20
+ isHoveredRange(day: DayModel): boolean;
21
+ isActiveRange(day: DayModel): boolean;
22
+ pickDate(day: DayModel): void;
23
+ getRangeActiveClass(d: DayModel): "" | "datepicker-date_active-first" | "datepicker-date_active-second";
24
+ hover(date: Date): void;
25
+ getClassStaticItem(d: DayModel): "" | "datepicker-date_active-first" | "datepicker-date_active-second";
26
+ getClassHoveredItem(): "datepicker-date_active-first" | "datepicker-date_active-second";
27
+ getClassSelectedItem(d: DayModel): "" | "datepicker-date_active-first" | "datepicker-date_active-second";
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<DayPickerComponent, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<DayPickerComponent, "teta-day-picker", never, { "date": "date"; "calendar": "calendar"; "viewType": "viewType"; "range": "range"; "min": "min"; "max": "max"; "locale": "locale"; "hoveredDate": "hoveredDate"; }, { "hoveredDateChange": "hoveredDateChange"; "selectDate": "selectDate"; }, never, never, false>;
30
+ }
@@ -0,0 +1,4 @@
1
+ export interface DateFromToModel {
2
+ from: Date | string | number;
3
+ to: Date | string | number;
4
+ }
@@ -0,0 +1,4 @@
1
+ export interface MinMaxDateModel {
2
+ min: Date | string | number;
3
+ max: Date | string | number;
4
+ }
@@ -1,54 +1,20 @@
1
- import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
2
- import { ControlValueAccessor } from '@angular/forms';
3
- import { DatePickerMode } from '../model/date-picker-mode.enum';
4
- import { TetaLocalisation } from '../../../locale/teta-localisation';
5
- import { TetaConfigService } from '../../../locale/teta-config.service';
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { IIdName } from "../../../common/contract/i-id-name";
3
+ import { viewType } from "../../../common/model/view-type.model";
6
4
  import * as i0 from "@angular/core";
7
- export declare const MONTH_PICKER_CONTROL_VALUE_ACCESSOR: any;
8
- export declare class MonthPickerComponent implements ControlValueAccessor, OnInit, OnDestroy {
9
- localeService: TetaConfigService;
10
- private _cdr;
11
- disabled: boolean;
12
- minDate: Date;
13
- maxDate: Date;
14
- showToday: boolean;
15
- appendToBody: boolean;
16
- showPicker: boolean;
17
- private readonly classDatepicker;
18
- private readonly tabindex;
19
- datePickerModeEnum: typeof DatePickerMode;
20
- locale: TetaLocalisation;
21
- today: Date;
22
- displayMode: DatePickerMode;
23
- _value: Date | null;
24
- _currentMonth: number | null;
25
- _currentYear: number | null;
26
- get value(): any;
27
- set value(v: any);
28
- get currentMonth(): number | null;
29
- set currentMonth(v: number | null);
30
- get currentYear(): number | null;
31
- set currentYear(v: number | null);
32
- private _alive;
33
- constructor(localeService: TetaConfigService, _cdr: ChangeDetectorRef);
34
- writeValue(value: any): void;
35
- initPicker(date: Date): void;
36
- setDefaults(): void;
37
- clearPicker(): void;
38
- onChange: (_: any) => void;
39
- onTouched: () => void;
40
- registerOnChange(fn: (_: any) => void): void;
41
- registerOnTouched(fn: () => void): void;
5
+ export declare class MonthPickerComponent implements OnInit {
6
+ locale: string;
7
+ selectedMonth: number;
8
+ viewType: viewType;
9
+ currentYear: number;
10
+ localeMoths: Map<string, string[]>;
11
+ selectMonth: EventEmitter<number>;
12
+ changeYear: EventEmitter<number>;
13
+ months: IIdName<any>[];
14
+ constructor();
15
+ pickMonth(monthId: number): void;
16
+ pickYear(year: number): void;
42
17
  ngOnInit(): void;
43
- ngOnDestroy(): void;
44
- isMinInvalid: (dat: Date) => boolean;
45
- isMaxInvalid: (dat: Date) => boolean;
46
- scrollMonth: (e: any) => void;
47
- scrollYear: (e: any) => void;
48
- setMonth: (month: number) => void;
49
- setYear: (year: number) => void;
50
- setToday: () => void;
51
- setMode(mode: DatePickerMode): void;
52
18
  static ɵfac: i0.ɵɵFactoryDeclaration<MonthPickerComponent, never>;
53
- static ɵcmp: i0.ɵɵComponentDeclaration<MonthPickerComponent, "teta-month-picker", never, { "disabled": "disabled"; "minDate": "minDate"; "maxDate": "maxDate"; "showToday": "showToday"; "appendToBody": "appendToBody"; }, {}, never, never, false>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<MonthPickerComponent, "teta-month-picker", never, { "locale": "locale"; "selectedMonth": "selectedMonth"; "viewType": "viewType"; "currentYear": "currentYear"; "localeMoths": "localeMoths"; }, { "selectMonth": "selectMonth"; "changeYear": "changeYear"; }, never, never, false>;
54
20
  }