@taiga-ui/kit 4.27.1 → 4.28.0-canary.13906d8

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 (44) hide show
  1. package/components/calendar-month/calendar-month.component.d.ts +11 -9
  2. package/components/data-list-wrapper/data-list-group-wrapper.component.d.ts +1 -1
  3. package/components/files/index.d.ts +1 -1
  4. package/components/index.d.ts +1 -0
  5. package/components/input-month/index.d.ts +4 -0
  6. package/components/input-month/input-month.d.ts +4 -0
  7. package/components/input-month/input-month.directive.d.ts +23 -0
  8. package/components/input-month/input-month.options.d.ts +7 -0
  9. package/components/input-month/native-month-picker/native-month-picker.component.d.ts +15 -0
  10. package/components/push/push.component.d.ts +2 -1
  11. package/components/tree/index.d.ts +1 -1
  12. package/esm2022/components/calendar-month/calendar-month.component.mjs +37 -36
  13. package/esm2022/components/chip/chip.directive.mjs +2 -2
  14. package/esm2022/components/data-list-wrapper/data-list-group-wrapper.component.mjs +1 -1
  15. package/esm2022/components/files/index.mjs +1 -2
  16. package/esm2022/components/index.mjs +2 -1
  17. package/esm2022/components/input-month/index.mjs +5 -0
  18. package/esm2022/components/input-month/input-month.directive.mjs +81 -0
  19. package/esm2022/components/input-month/input-month.mjs +9 -0
  20. package/esm2022/components/input-month/input-month.options.mjs +6 -0
  21. package/esm2022/components/input-month/native-month-picker/native-month-picker.component.mjs +54 -0
  22. package/esm2022/components/input-month/taiga-ui-kit-components-input-month.mjs +5 -0
  23. package/esm2022/components/push/push-alert.component.mjs +2 -2
  24. package/esm2022/components/push/push.component.mjs +8 -3
  25. package/esm2022/components/tree/index.mjs +1 -2
  26. package/esm2022/tokens/index.mjs +2 -1
  27. package/esm2022/tokens/month-formatter.mjs +11 -0
  28. package/fesm2022/taiga-ui-kit-components-calendar-month.mjs +37 -36
  29. package/fesm2022/taiga-ui-kit-components-calendar-month.mjs.map +1 -1
  30. package/fesm2022/taiga-ui-kit-components-chip.mjs +2 -2
  31. package/fesm2022/taiga-ui-kit-components-chip.mjs.map +1 -1
  32. package/fesm2022/taiga-ui-kit-components-data-list-wrapper.mjs.map +1 -1
  33. package/fesm2022/taiga-ui-kit-components-input-month.mjs +145 -0
  34. package/fesm2022/taiga-ui-kit-components-input-month.mjs.map +1 -0
  35. package/fesm2022/taiga-ui-kit-components-push.mjs +8 -3
  36. package/fesm2022/taiga-ui-kit-components-push.mjs.map +1 -1
  37. package/fesm2022/taiga-ui-kit-components.mjs +1 -0
  38. package/fesm2022/taiga-ui-kit-components.mjs.map +1 -1
  39. package/fesm2022/taiga-ui-kit-tokens.mjs +9 -1
  40. package/fesm2022/taiga-ui-kit-tokens.mjs.map +1 -1
  41. package/package.json +14 -8
  42. package/styles/components/chip.less +5 -1
  43. package/tokens/index.d.ts +1 -0
  44. package/tokens/month-formatter.d.ts +4 -0
@@ -1,10 +1,10 @@
1
1
  import { __decorate } from 'tslib';
2
- import { NgIf, AsyncPipe, NgForOf } from '@angular/common';
2
+ import { NgIf } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { inject, EventEmitter, Component, ChangeDetectionStrategy, Input, Output } from '@angular/core';
4
+ import { inject, computed, EventEmitter, signal, Component, ChangeDetectionStrategy, Input, Output } from '@angular/core';
5
5
  import { toSignal } from '@angular/core/rxjs-interop';
6
6
  import { TUI_FALSE_HANDLER } from '@taiga-ui/cdk/constants';
7
- import { TuiDay, TUI_FIRST_DAY, TUI_LAST_DAY, TuiMonthRange, TuiMonth, TuiYear } from '@taiga-ui/cdk/date-time';
7
+ import { TuiDay, TuiMonthRange, TUI_FIRST_DAY, TUI_LAST_DAY, TuiMonth, TuiYear } from '@taiga-ui/cdk/date-time';
8
8
  import { TuiHovered } from '@taiga-ui/cdk/directives/hovered';
9
9
  import { TuiLet } from '@taiga-ui/cdk/directives/let';
10
10
  import { TuiRepeatTimes } from '@taiga-ui/cdk/directives/repeat-times';
@@ -13,6 +13,7 @@ import { TuiCalendarYear } from '@taiga-ui/core/components/calendar';
13
13
  import { TuiLink } from '@taiga-ui/core/components/link';
14
14
  import { TuiScrollbar } from '@taiga-ui/core/components/scrollbar';
15
15
  import { TuiSpinButton } from '@taiga-ui/core/components/spin-button';
16
+ import { tuiAsAuxiliary } from '@taiga-ui/core/components/textfield';
16
17
  import { TUI_CALENDAR_MONTHS } from '@taiga-ui/kit/tokens';
17
18
 
18
19
  const TODAY = TuiDay.currentLocal();
@@ -20,20 +21,30 @@ class TuiCalendarMonth {
20
21
  constructor() {
21
22
  this.isYearPickerShown = false;
22
23
  this.months = toSignal(inject(TUI_CALENDAR_MONTHS));
23
- this.value = null;
24
+ this.isSingle = computed((x = this.value()) => x instanceof TuiMonthRange && x.isSingleMonth);
24
25
  this.year = TODAY;
25
26
  this.disabledItemHandler = TUI_FALSE_HANDLER;
26
27
  this.minLength = null;
27
28
  this.maxLength = null;
28
- this.min = TUI_FIRST_DAY;
29
- this.max = TUI_LAST_DAY;
30
29
  this.monthClick = new EventEmitter();
31
30
  this.hoveredItemChange = new EventEmitter();
32
31
  this.yearChange = new EventEmitter();
32
+ this.min = signal(TUI_FIRST_DAY);
33
+ this.max = signal(TUI_LAST_DAY);
34
+ this.value = signal(null);
33
35
  this.hoveredItem = null;
34
36
  }
35
- get isSingle() {
36
- return this.value instanceof TuiMonthRange && this.value.isSingleMonth;
37
+ // TODO(v5): use signal inputs
38
+ set minSetter(x) {
39
+ this.min.set(x);
40
+ }
41
+ // TODO(v5): use signal inputs
42
+ set maxSetter(x) {
43
+ this.max.set(x);
44
+ }
45
+ // TODO(v5): use signal inputs
46
+ set valueSetter(x) {
47
+ this.value.set(x);
37
48
  }
38
49
  onNextYear() {
39
50
  this.updateActiveYear(this.year.append({ year: 1 }));
@@ -42,7 +53,8 @@ class TuiCalendarMonth {
42
53
  this.updateActiveYear(this.year.append({ year: -1 }));
43
54
  }
44
55
  getItemRange(item) {
45
- const { value, hoveredItem } = this;
56
+ const value = this.value();
57
+ const { hoveredItem } = this;
46
58
  if (!(value instanceof TuiMonthRange)) {
47
59
  return value?.monthSame(item) ? 'active' : null;
48
60
  }
@@ -50,7 +62,7 @@ class TuiCalendarMonth {
50
62
  const hovered = hoveredItem ? hoveredItem.month + hoveredItem.year * 12 : null;
51
63
  const from = value.from.month + value.from.year * 12;
52
64
  const to = value.to.month + value.to.year * 12;
53
- const picking = this.isSingle ? hovered : null;
65
+ const picking = this.isSingle() ? hovered : null;
54
66
  const min = Math.min(from, to, picking ?? from);
55
67
  const max = Math.max(from, to, picking ?? from);
56
68
  if (min === max && min === months) {
@@ -64,20 +76,8 @@ class TuiCalendarMonth {
64
76
  }
65
77
  return min < months && months < max ? 'middle' : null;
66
78
  }
67
- get computedMin() {
68
- return this.min ?? TUI_FIRST_DAY;
69
- }
70
- get computedMax() {
71
- return this.max ?? TUI_LAST_DAY;
72
- }
73
- get previousYearDisabled() {
74
- return this.year.yearSameOrBefore(this.computedMin);
75
- }
76
- get nextYearDisabled() {
77
- return this.year.yearSameOrAfter(this.computedMax);
78
- }
79
79
  get disabledItemHandlerWithMinMax() {
80
- return this.calculateDisabledItemHandlerWithMinMax(this.disabledItemHandler, this.value, this.computedMin, this.computedMax, this.minLength, this.maxLength);
80
+ return this.calculateDisabledItemHandlerWithMinMax(this.disabledItemHandler, this.value(), this.min(), this.max(), this.minLength, this.maxLength);
81
81
  }
82
82
  getTuiMonth(monthNumber, yearNumber) {
83
83
  return new TuiMonth(yearNumber, monthNumber);
@@ -132,7 +132,7 @@ class TuiCalendarMonth {
132
132
  this.yearChange.emit(year);
133
133
  }
134
134
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCalendarMonth, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
135
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCalendarMonth, isStandalone: true, selector: "tui-calendar-month", inputs: { value: "value", year: "year", disabledItemHandler: "disabledItemHandler", minLength: "minLength", maxLength: "maxLength", min: "min", max: "max" }, outputs: { monthClick: "monthClick", hoveredItemChange: "hoveredItemChange", yearChange: "yearChange" }, host: { properties: { "class._picking": "isSingle" } }, ngImport: i0, template: "<tui-scrollbar\n *ngIf=\"isYearPickerShown; else monthSelect\"\n class=\"t-scrollbar\"\n>\n <tui-calendar-year\n [initialItem]=\"year.year\"\n [max]=\"computedMax.year\"\n [min]=\"computedMin.year\"\n [value]=\"value\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n</tui-scrollbar>\n<ng-template #monthSelect>\n <tui-spin-button\n class=\"t-spin\"\n [focusable]=\"false\"\n [leftDisabled]=\"previousYearDisabled\"\n [rightDisabled]=\"nextYearDisabled\"\n (leftClick)=\"onPreviousYear()\"\n (rightClick)=\"onNextYear()\"\n >\n <button\n automation-id=\"tui-calendar-month__active-year\"\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"onYearClick()\"\n >\n {{ year.formattedYear }}\n </button>\n </tui-spin-button>\n <div\n *tuiRepeatTimes=\"let row of 3\"\n class=\"t-row\"\n >\n <ng-container *tuiRepeatTimes=\"let column of 4\">\n <div\n *tuiLet=\"getTuiMonth(row * 4 + column, year.year) as item\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandlerWithMinMax(item)\"\n [class.t-cell_today]=\"isItemToday(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ months()?.[row * 4 + column] }}\n </div>\n </ng-container>\n </div>\n</ng-template>\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-text-m)}.t-row:first-child{justify-content:flex-end}.t-row:last-child{justify-content:flex-start}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;line-height:2rem;isolation:isolate;cursor:pointer;overflow:hidden;border:.125rem solid transparent;box-sizing:border-box;-webkit-mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem));mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem))}.t-cell:first-child{border-inline-start-color:transparent!important}.t-cell:last-child{border-inline-end-color:transparent!important}.t-cell:before,.t-cell:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{-webkit-mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat;mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat}.t-cell[data-range]:before{background:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]:not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=middle]:not(:last-child):before{border-top-right-radius:0;border-bottom-right-radius:0}.t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:not(:last-child):before{right:-1rem}.t-cell[data-range=start]:after{background:var(--tui-background-accent-1)}.t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{left:-1rem}.t-cell[data-range=end]:after{background:var(--tui-background-accent-1);transform:scaleX(-1)}.t-cell[data-range=active]{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range=active]:after{background:var(--tui-background-accent-1);-webkit-mask:none;mask:none}.t-cell_disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-cell_today{text-decoration:underline;text-underline-offset:.25rem}@media (hover: hover) and (pointer: fine){.t-cell:hover:not([data-range=start]):not([data-range=end]):before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:hover:after,.t-cell[data-range=end]:hover:after,.t-cell[data-range=active]:hover:after{background:var(--tui-background-accent-1-hover)}}:host{display:block;block-size:12rem;inline-size:16rem;padding:1.125rem;box-sizing:content-box}.t-spin{margin-block-end:1rem}.t-cell{inline-size:4rem;border-block-start-width:.75rem;border-block-end-width:.75rem}.t-scrollbar{block-size:inherit;inline-size:inherit}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TuiCalendarYear, selector: "tui-calendar-year", inputs: ["value", "initialItem", "min", "max", "disabledItemHandler"], outputs: ["yearClick"] }, { kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar", inputs: ["hidden"] }, { kind: "component", type: TuiSpinButton, selector: "tui-spin-button", inputs: ["focusable", "disabled", "leftDisabled", "rightDisabled"], outputs: ["leftClick", "rightClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
135
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "16.2.12", type: TuiCalendarMonth, isStandalone: true, selector: "tui-calendar-month", inputs: { year: "year", disabledItemHandler: "disabledItemHandler", minLength: "minLength", maxLength: "maxLength", minSetter: ["min", "minSetter", (x) => x ?? TUI_FIRST_DAY], maxSetter: ["max", "maxSetter", (x) => x ?? TUI_LAST_DAY], valueSetter: ["value", "valueSetter"] }, outputs: { monthClick: "monthClick", hoveredItemChange: "hoveredItemChange", yearChange: "yearChange" }, host: { properties: { "class._picking": "isSingle()" } }, providers: [tuiAsAuxiliary(TuiCalendarMonth)], ngImport: i0, template: "<tui-scrollbar\n *ngIf=\"isYearPickerShown; else monthSelect\"\n class=\"t-scrollbar\"\n>\n <tui-calendar-year\n [initialItem]=\"year.year\"\n [max]=\"max().year\"\n [min]=\"min().year\"\n [value]=\"value()\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n</tui-scrollbar>\n<ng-template #monthSelect>\n <tui-spin-button\n class=\"t-spin\"\n [focusable]=\"false\"\n [leftDisabled]=\"year.yearSameOrBefore(min())\"\n [rightDisabled]=\"year.yearSameOrAfter(max())\"\n (leftClick)=\"onPreviousYear()\"\n (rightClick)=\"onNextYear()\"\n >\n <button\n automation-id=\"tui-calendar-month__active-year\"\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"onYearClick()\"\n >\n {{ year.formattedYear }}\n </button>\n </tui-spin-button>\n <div\n *tuiRepeatTimes=\"let row of 3\"\n class=\"t-row\"\n >\n <ng-container *tuiRepeatTimes=\"let column of 4\">\n <div\n *tuiLet=\"getTuiMonth(row * 4 + column, year.year) as item\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandlerWithMinMax(item)\"\n [class.t-cell_today]=\"isItemToday(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ months()?.[row * 4 + column] }}\n </div>\n </ng-container>\n </div>\n</ng-template>\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-text-m)}.t-row:first-child{justify-content:flex-end}.t-row:last-child{justify-content:flex-start}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;line-height:2rem;isolation:isolate;cursor:pointer;overflow:hidden;border:.125rem solid transparent;box-sizing:border-box;-webkit-mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem));mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem))}.t-cell:first-child{border-inline-start-color:transparent!important}.t-cell:last-child{border-inline-end-color:transparent!important}.t-cell:before,.t-cell:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{-webkit-mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat;mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat}.t-cell[data-range]:before{background:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]:not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=middle]:not(:last-child):before{border-top-right-radius:0;border-bottom-right-radius:0}.t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:not(:last-child):before{right:-1rem}.t-cell[data-range=start]:after{background:var(--tui-background-accent-1)}.t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{left:-1rem}.t-cell[data-range=end]:after{background:var(--tui-background-accent-1);transform:scaleX(-1)}.t-cell[data-range=active]{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range=active]:after{background:var(--tui-background-accent-1);-webkit-mask:none;mask:none}.t-cell_disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-cell_today{text-decoration:underline;text-underline-offset:.25rem}@media (hover: hover) and (pointer: fine){.t-cell:hover:not([data-range=start]):not([data-range=end]):before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:hover:after,.t-cell[data-range=end]:hover:after,.t-cell[data-range=active]:hover:after{background:var(--tui-background-accent-1-hover)}}:host{display:block;block-size:12rem;inline-size:16rem;padding:1.125rem;box-sizing:content-box}.t-spin{margin-block-end:1rem}.t-cell{inline-size:4rem;border-block-start-width:.75rem;border-block-end-width:.75rem}.t-scrollbar{block-size:inherit;inline-size:inherit}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TuiCalendarYear, selector: "tui-calendar-year", inputs: ["value", "initialItem", "min", "max", "disabledItemHandler"], outputs: ["yearClick"] }, { kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar", inputs: ["hidden"] }, { kind: "component", type: TuiSpinButton, selector: "tui-spin-button", inputs: ["focusable", "disabled", "leftDisabled", "rightDisabled"], outputs: ["leftClick", "rightClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
136
136
  }
137
137
  __decorate([
138
138
  tuiPure
@@ -140,8 +140,6 @@ __decorate([
140
140
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCalendarMonth, decorators: [{
141
141
  type: Component,
142
142
  args: [{ standalone: true, selector: 'tui-calendar-month', imports: [
143
- AsyncPipe,
144
- NgForOf,
145
143
  NgIf,
146
144
  TuiCalendarYear,
147
145
  TuiHovered,
@@ -150,12 +148,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
150
148
  TuiRepeatTimes,
151
149
  TuiScrollbar,
152
150
  TuiSpinButton,
153
- ], changeDetection: ChangeDetectionStrategy.OnPush, host: {
154
- '[class._picking]': 'isSingle',
155
- }, template: "<tui-scrollbar\n *ngIf=\"isYearPickerShown; else monthSelect\"\n class=\"t-scrollbar\"\n>\n <tui-calendar-year\n [initialItem]=\"year.year\"\n [max]=\"computedMax.year\"\n [min]=\"computedMin.year\"\n [value]=\"value\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n</tui-scrollbar>\n<ng-template #monthSelect>\n <tui-spin-button\n class=\"t-spin\"\n [focusable]=\"false\"\n [leftDisabled]=\"previousYearDisabled\"\n [rightDisabled]=\"nextYearDisabled\"\n (leftClick)=\"onPreviousYear()\"\n (rightClick)=\"onNextYear()\"\n >\n <button\n automation-id=\"tui-calendar-month__active-year\"\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"onYearClick()\"\n >\n {{ year.formattedYear }}\n </button>\n </tui-spin-button>\n <div\n *tuiRepeatTimes=\"let row of 3\"\n class=\"t-row\"\n >\n <ng-container *tuiRepeatTimes=\"let column of 4\">\n <div\n *tuiLet=\"getTuiMonth(row * 4 + column, year.year) as item\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandlerWithMinMax(item)\"\n [class.t-cell_today]=\"isItemToday(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ months()?.[row * 4 + column] }}\n </div>\n </ng-container>\n </div>\n</ng-template>\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-text-m)}.t-row:first-child{justify-content:flex-end}.t-row:last-child{justify-content:flex-start}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;line-height:2rem;isolation:isolate;cursor:pointer;overflow:hidden;border:.125rem solid transparent;box-sizing:border-box;-webkit-mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem));mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem))}.t-cell:first-child{border-inline-start-color:transparent!important}.t-cell:last-child{border-inline-end-color:transparent!important}.t-cell:before,.t-cell:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{-webkit-mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat;mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat}.t-cell[data-range]:before{background:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]:not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=middle]:not(:last-child):before{border-top-right-radius:0;border-bottom-right-radius:0}.t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:not(:last-child):before{right:-1rem}.t-cell[data-range=start]:after{background:var(--tui-background-accent-1)}.t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{left:-1rem}.t-cell[data-range=end]:after{background:var(--tui-background-accent-1);transform:scaleX(-1)}.t-cell[data-range=active]{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range=active]:after{background:var(--tui-background-accent-1);-webkit-mask:none;mask:none}.t-cell_disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-cell_today{text-decoration:underline;text-underline-offset:.25rem}@media (hover: hover) and (pointer: fine){.t-cell:hover:not([data-range=start]):not([data-range=end]):before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:hover:after,.t-cell[data-range=end]:hover:after,.t-cell[data-range=active]:hover:after{background:var(--tui-background-accent-1-hover)}}:host{display:block;block-size:12rem;inline-size:16rem;padding:1.125rem;box-sizing:content-box}.t-spin{margin-block-end:1rem}.t-cell{inline-size:4rem;border-block-start-width:.75rem;border-block-end-width:.75rem}.t-scrollbar{block-size:inherit;inline-size:inherit}\n"] }]
156
- }], propDecorators: { value: [{
157
- type: Input
158
- }], year: [{
151
+ ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiAsAuxiliary(TuiCalendarMonth)], host: {
152
+ '[class._picking]': 'isSingle()',
153
+ }, template: "<tui-scrollbar\n *ngIf=\"isYearPickerShown; else monthSelect\"\n class=\"t-scrollbar\"\n>\n <tui-calendar-year\n [initialItem]=\"year.year\"\n [max]=\"max().year\"\n [min]=\"min().year\"\n [value]=\"value()\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n</tui-scrollbar>\n<ng-template #monthSelect>\n <tui-spin-button\n class=\"t-spin\"\n [focusable]=\"false\"\n [leftDisabled]=\"year.yearSameOrBefore(min())\"\n [rightDisabled]=\"year.yearSameOrAfter(max())\"\n (leftClick)=\"onPreviousYear()\"\n (rightClick)=\"onNextYear()\"\n >\n <button\n automation-id=\"tui-calendar-month__active-year\"\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"onYearClick()\"\n >\n {{ year.formattedYear }}\n </button>\n </tui-spin-button>\n <div\n *tuiRepeatTimes=\"let row of 3\"\n class=\"t-row\"\n >\n <ng-container *tuiRepeatTimes=\"let column of 4\">\n <div\n *tuiLet=\"getTuiMonth(row * 4 + column, year.year) as item\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandlerWithMinMax(item)\"\n [class.t-cell_today]=\"isItemToday(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ months()?.[row * 4 + column] }}\n </div>\n </ng-container>\n </div>\n</ng-template>\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-text-m)}.t-row:first-child{justify-content:flex-end}.t-row:last-child{justify-content:flex-start}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;line-height:2rem;isolation:isolate;cursor:pointer;overflow:hidden;border:.125rem solid transparent;box-sizing:border-box;-webkit-mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem));mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem))}.t-cell:first-child{border-inline-start-color:transparent!important}.t-cell:last-child{border-inline-end-color:transparent!important}.t-cell:before,.t-cell:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{-webkit-mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat;mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat}.t-cell[data-range]:before{background:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]:not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=middle]:not(:last-child):before{border-top-right-radius:0;border-bottom-right-radius:0}.t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:not(:last-child):before{right:-1rem}.t-cell[data-range=start]:after{background:var(--tui-background-accent-1)}.t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{left:-1rem}.t-cell[data-range=end]:after{background:var(--tui-background-accent-1);transform:scaleX(-1)}.t-cell[data-range=active]{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range=active]:after{background:var(--tui-background-accent-1);-webkit-mask:none;mask:none}.t-cell_disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-cell_today{text-decoration:underline;text-underline-offset:.25rem}@media (hover: hover) and (pointer: fine){.t-cell:hover:not([data-range=start]):not([data-range=end]):before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:hover:after,.t-cell[data-range=end]:hover:after,.t-cell[data-range=active]:hover:after{background:var(--tui-background-accent-1-hover)}}:host{display:block;block-size:12rem;inline-size:16rem;padding:1.125rem;box-sizing:content-box}.t-spin{margin-block-end:1rem}.t-cell{inline-size:4rem;border-block-start-width:.75rem;border-block-end-width:.75rem}.t-scrollbar{block-size:inherit;inline-size:inherit}\n"] }]
154
+ }], propDecorators: { year: [{
159
155
  type: Input
160
156
  }], disabledItemHandler: [{
161
157
  type: Input
@@ -163,16 +159,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
163
159
  type: Input
164
160
  }], maxLength: [{
165
161
  type: Input
166
- }], min: [{
167
- type: Input
168
- }], max: [{
169
- type: Input
170
162
  }], monthClick: [{
171
163
  type: Output
172
164
  }], hoveredItemChange: [{
173
165
  type: Output
174
166
  }], yearChange: [{
175
167
  type: Output
168
+ }], minSetter: [{
169
+ type: Input,
170
+ args: [{ alias: 'min', transform: (x) => x ?? TUI_FIRST_DAY }]
171
+ }], maxSetter: [{
172
+ type: Input,
173
+ args: [{ alias: 'max', transform: (x) => x ?? TUI_LAST_DAY }]
174
+ }], valueSetter: [{
175
+ type: Input,
176
+ args: ['value']
176
177
  }], calculateDisabledItemHandlerWithMinMax: [] } });
177
178
 
178
179
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-calendar-month.mjs","sources":["../../../projects/kit/components/calendar-month/calendar-month.component.ts","../../../projects/kit/components/calendar-month/calendar-month.template.html","../../../projects/kit/components/calendar-month/taiga-ui-kit-components-calendar-month.ts"],"sourcesContent":["import {AsyncPipe, NgForOf, NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiDay,\n TuiMonth,\n TuiMonthRange,\n TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {TuiLet} from '@taiga-ui/cdk/directives/let';\nimport {TuiRepeatTimes} from '@taiga-ui/cdk/directives/repeat-times';\nimport type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiNullableSame, tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiCalendarYear} from '@taiga-ui/core/components/calendar';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {TuiSpinButton} from '@taiga-ui/core/components/spin-button';\nimport {TUI_CALENDAR_MONTHS} from '@taiga-ui/kit/tokens';\n\nconst TODAY = TuiDay.currentLocal();\n\n@Component({\n standalone: true,\n selector: 'tui-calendar-month',\n imports: [\n AsyncPipe,\n NgForOf,\n NgIf,\n TuiCalendarYear,\n TuiHovered,\n TuiLet,\n TuiLink,\n TuiRepeatTimes,\n TuiScrollbar,\n TuiSpinButton,\n ],\n templateUrl: './calendar-month.template.html',\n styleUrls: ['./calendar-month.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._picking]': 'isSingle',\n },\n})\nexport class TuiCalendarMonth {\n protected isYearPickerShown = false;\n protected readonly months = toSignal(inject(TUI_CALENDAR_MONTHS));\n\n @Input()\n public value: TuiMonth | TuiMonthRange | null = null;\n\n @Input()\n public year: TuiYear = TODAY;\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<TuiMonth> = TUI_FALSE_HANDLER;\n\n @Input()\n public minLength: number | null = null;\n\n @Input()\n public maxLength: number | null = null;\n\n @Input()\n public min: TuiMonth | null = TUI_FIRST_DAY;\n\n @Input()\n public max: TuiMonth | null = TUI_LAST_DAY;\n\n @Output()\n public readonly monthClick = new EventEmitter<TuiMonth>();\n\n @Output()\n public readonly hoveredItemChange = new EventEmitter<TuiMonth | null>();\n\n @Output()\n public readonly yearChange = new EventEmitter<TuiYear>();\n\n public hoveredItem: TuiMonth | null = null;\n\n public get isSingle(): boolean {\n return this.value instanceof TuiMonthRange && this.value.isSingleMonth;\n }\n\n public onNextYear(): void {\n this.updateActiveYear(this.year.append({year: 1}));\n }\n\n public onPreviousYear(): void {\n this.updateActiveYear(this.year.append({year: -1}));\n }\n\n public getItemRange(item: TuiMonth): 'active' | 'end' | 'middle' | 'start' | null {\n const {value, hoveredItem} = this;\n\n if (!(value instanceof TuiMonthRange)) {\n return value?.monthSame(item) ? 'active' : null;\n }\n\n const months = item.month + item.year * 12;\n const hovered = hoveredItem ? hoveredItem.month + hoveredItem.year * 12 : null;\n const from = value.from.month + value.from.year * 12;\n const to = value.to.month + value.to.year * 12;\n const picking = this.isSingle ? hovered : null;\n const min = Math.min(from, to, picking ?? from);\n const max = Math.max(from, to, picking ?? from);\n\n if (min === max && min === months) {\n return 'active';\n }\n\n if (min === months) {\n return 'start';\n }\n\n if (max === months) {\n return 'end';\n }\n\n return min < months && months < max ? 'middle' : null;\n }\n\n protected get computedMin(): TuiMonth {\n return this.min ?? TUI_FIRST_DAY;\n }\n\n protected get computedMax(): TuiMonth {\n return this.max ?? TUI_LAST_DAY;\n }\n\n protected get previousYearDisabled(): boolean {\n return this.year.yearSameOrBefore(this.computedMin);\n }\n\n protected get nextYearDisabled(): boolean {\n return this.year.yearSameOrAfter(this.computedMax);\n }\n\n protected get disabledItemHandlerWithMinMax(): TuiBooleanHandler<TuiMonth> {\n return this.calculateDisabledItemHandlerWithMinMax(\n this.disabledItemHandler,\n this.value,\n this.computedMin,\n this.computedMax,\n this.minLength,\n this.maxLength,\n );\n }\n\n protected getTuiMonth(monthNumber: number, yearNumber: number): TuiMonth {\n return new TuiMonth(yearNumber, monthNumber);\n }\n\n protected isItemToday(item: TuiMonth): boolean {\n return TODAY.monthSame(item);\n }\n\n protected onPickerYearClick(year: number): void {\n this.isYearPickerShown = false;\n\n if (this.year.year !== year) {\n this.updateActiveYear(new TuiYear(year));\n }\n }\n\n protected onItemClick(month: TuiMonth): void {\n if (!this.disabledItemHandlerWithMinMax(month)) {\n this.monthClick.emit(month);\n }\n }\n\n protected onYearClick(): void {\n this.isYearPickerShown = true;\n }\n\n protected onItemHovered(hovered: boolean, item: TuiMonth): void {\n this.updateHoveredItem(hovered ? item : null);\n }\n\n // eslint-disable-next-line @typescript-eslint/max-params,max-params\n @tuiPure\n private calculateDisabledItemHandlerWithMinMax(\n disabledItemHandler: TuiBooleanHandler<TuiMonth>,\n value: TuiMonth | TuiMonthRange | null,\n min: TuiMonth,\n max: TuiMonth,\n minLength: number | null,\n maxLength: number | null,\n ): TuiBooleanHandler<TuiMonth> {\n return (item) => {\n const delta =\n value instanceof TuiMonthRange && value.isSingleMonth\n ? Math.abs(\n item.year * 12 +\n item.month -\n value.from.year * 12 -\n value.from.month,\n )\n : 0;\n\n const tooLong = delta && maxLength && delta > maxLength;\n const tooShort = delta && minLength && delta < minLength;\n\n return (\n tooLong ||\n tooShort ||\n item.monthBefore(min) ||\n item.monthAfter(max) ||\n disabledItemHandler(item)\n );\n };\n }\n\n private updateHoveredItem(month: TuiMonth | null): void {\n if (tuiNullableSame(this.hoveredItem, month, (a, b) => a.monthSame(b))) {\n return;\n }\n\n this.hoveredItem = month;\n this.hoveredItemChange.emit(month);\n }\n\n private updateActiveYear(year: TuiYear): void {\n this.year = year;\n this.yearChange.emit(year);\n }\n}\n","<tui-scrollbar\n *ngIf=\"isYearPickerShown; else monthSelect\"\n class=\"t-scrollbar\"\n>\n <tui-calendar-year\n [initialItem]=\"year.year\"\n [max]=\"computedMax.year\"\n [min]=\"computedMin.year\"\n [value]=\"value\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n</tui-scrollbar>\n<ng-template #monthSelect>\n <tui-spin-button\n class=\"t-spin\"\n [focusable]=\"false\"\n [leftDisabled]=\"previousYearDisabled\"\n [rightDisabled]=\"nextYearDisabled\"\n (leftClick)=\"onPreviousYear()\"\n (rightClick)=\"onNextYear()\"\n >\n <button\n automation-id=\"tui-calendar-month__active-year\"\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"onYearClick()\"\n >\n {{ year.formattedYear }}\n </button>\n </tui-spin-button>\n <div\n *tuiRepeatTimes=\"let row of 3\"\n class=\"t-row\"\n >\n <ng-container *tuiRepeatTimes=\"let column of 4\">\n <div\n *tuiLet=\"getTuiMonth(row * 4 + column, year.year) as item\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandlerWithMinMax(item)\"\n [class.t-cell_today]=\"isItemToday(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ months()?.[row * 4 + column] }}\n </div>\n </ng-container>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-calendar-month.mjs","sources":["../../../projects/kit/components/calendar-month/calendar-month.component.ts","../../../projects/kit/components/calendar-month/calendar-month.template.html","../../../projects/kit/components/calendar-month/taiga-ui-kit-components-calendar-month.ts"],"sourcesContent":["import {NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n inject,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiDay,\n TuiMonth,\n TuiMonthRange,\n TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {TuiLet} from '@taiga-ui/cdk/directives/let';\nimport {TuiRepeatTimes} from '@taiga-ui/cdk/directives/repeat-times';\nimport type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiNullableSame, tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiCalendarYear} from '@taiga-ui/core/components/calendar';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {TuiSpinButton} from '@taiga-ui/core/components/spin-button';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/components/textfield';\nimport {TUI_CALENDAR_MONTHS} from '@taiga-ui/kit/tokens';\n\nconst TODAY = TuiDay.currentLocal();\n\n@Component({\n standalone: true,\n selector: 'tui-calendar-month',\n imports: [\n NgIf,\n TuiCalendarYear,\n TuiHovered,\n TuiLet,\n TuiLink,\n TuiRepeatTimes,\n TuiScrollbar,\n TuiSpinButton,\n ],\n templateUrl: './calendar-month.template.html',\n styleUrls: ['./calendar-month.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiCalendarMonth)],\n host: {\n '[class._picking]': 'isSingle()',\n },\n})\nexport class TuiCalendarMonth {\n protected isYearPickerShown = false;\n protected readonly months = toSignal(inject(TUI_CALENDAR_MONTHS));\n protected readonly isSingle = computed(\n (x = this.value()) => x instanceof TuiMonthRange && x.isSingleMonth,\n );\n\n @Input()\n public year: TuiYear = TODAY;\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<TuiMonth> = TUI_FALSE_HANDLER;\n\n @Input()\n public minLength: number | null = null;\n\n @Input()\n public maxLength: number | null = null;\n\n @Output()\n public readonly monthClick = new EventEmitter<TuiMonth>();\n\n @Output()\n public readonly hoveredItemChange = new EventEmitter<TuiMonth | null>();\n\n @Output()\n public readonly yearChange = new EventEmitter<TuiYear>();\n\n public readonly min = signal<TuiMonth>(TUI_FIRST_DAY);\n public readonly max = signal<TuiMonth>(TUI_LAST_DAY);\n public readonly value = signal<TuiMonth | TuiMonthRange | null>(null);\n public hoveredItem: TuiMonth | null = null;\n\n // TODO(v5): use signal inputs\n @Input({alias: 'min', transform: (x: TuiMonth | null) => x ?? TUI_FIRST_DAY})\n public set minSetter(x: TuiMonth) {\n this.min.set(x);\n }\n\n // TODO(v5): use signal inputs\n @Input({alias: 'max', transform: (x: TuiMonth | null) => x ?? TUI_LAST_DAY})\n public set maxSetter(x: TuiMonth) {\n this.max.set(x);\n }\n\n // TODO(v5): use signal inputs\n @Input('value')\n public set valueSetter(x: TuiMonth | TuiMonthRange | null) {\n this.value.set(x);\n }\n\n public onNextYear(): void {\n this.updateActiveYear(this.year.append({year: 1}));\n }\n\n public onPreviousYear(): void {\n this.updateActiveYear(this.year.append({year: -1}));\n }\n\n public getItemRange(item: TuiMonth): 'active' | 'end' | 'middle' | 'start' | null {\n const value = this.value();\n const {hoveredItem} = this;\n\n if (!(value instanceof TuiMonthRange)) {\n return value?.monthSame(item) ? 'active' : null;\n }\n\n const months = item.month + item.year * 12;\n const hovered = hoveredItem ? hoveredItem.month + hoveredItem.year * 12 : null;\n const from = value.from.month + value.from.year * 12;\n const to = value.to.month + value.to.year * 12;\n const picking = this.isSingle() ? hovered : null;\n const min = Math.min(from, to, picking ?? from);\n const max = Math.max(from, to, picking ?? from);\n\n if (min === max && min === months) {\n return 'active';\n }\n\n if (min === months) {\n return 'start';\n }\n\n if (max === months) {\n return 'end';\n }\n\n return min < months && months < max ? 'middle' : null;\n }\n\n protected get disabledItemHandlerWithMinMax(): TuiBooleanHandler<TuiMonth> {\n return this.calculateDisabledItemHandlerWithMinMax(\n this.disabledItemHandler,\n this.value(),\n this.min(),\n this.max(),\n this.minLength,\n this.maxLength,\n );\n }\n\n protected getTuiMonth(monthNumber: number, yearNumber: number): TuiMonth {\n return new TuiMonth(yearNumber, monthNumber);\n }\n\n protected isItemToday(item: TuiMonth): boolean {\n return TODAY.monthSame(item);\n }\n\n protected onPickerYearClick(year: number): void {\n this.isYearPickerShown = false;\n\n if (this.year.year !== year) {\n this.updateActiveYear(new TuiYear(year));\n }\n }\n\n protected onItemClick(month: TuiMonth): void {\n if (!this.disabledItemHandlerWithMinMax(month)) {\n this.monthClick.emit(month);\n }\n }\n\n protected onYearClick(): void {\n this.isYearPickerShown = true;\n }\n\n protected onItemHovered(hovered: boolean, item: TuiMonth): void {\n this.updateHoveredItem(hovered ? item : null);\n }\n\n // eslint-disable-next-line @typescript-eslint/max-params,max-params\n @tuiPure\n private calculateDisabledItemHandlerWithMinMax(\n disabledItemHandler: TuiBooleanHandler<TuiMonth>,\n value: TuiMonth | TuiMonthRange | null,\n min: TuiMonth,\n max: TuiMonth,\n minLength: number | null,\n maxLength: number | null,\n ): TuiBooleanHandler<TuiMonth> {\n return (item) => {\n const delta =\n value instanceof TuiMonthRange && value.isSingleMonth\n ? Math.abs(\n item.year * 12 +\n item.month -\n value.from.year * 12 -\n value.from.month,\n )\n : 0;\n\n const tooLong = delta && maxLength && delta > maxLength;\n const tooShort = delta && minLength && delta < minLength;\n\n return (\n tooLong ||\n tooShort ||\n item.monthBefore(min) ||\n item.monthAfter(max) ||\n disabledItemHandler(item)\n );\n };\n }\n\n private updateHoveredItem(month: TuiMonth | null): void {\n if (tuiNullableSame(this.hoveredItem, month, (a, b) => a.monthSame(b))) {\n return;\n }\n\n this.hoveredItem = month;\n this.hoveredItemChange.emit(month);\n }\n\n private updateActiveYear(year: TuiYear): void {\n this.year = year;\n this.yearChange.emit(year);\n }\n}\n","<tui-scrollbar\n *ngIf=\"isYearPickerShown; else monthSelect\"\n class=\"t-scrollbar\"\n>\n <tui-calendar-year\n [initialItem]=\"year.year\"\n [max]=\"max().year\"\n [min]=\"min().year\"\n [value]=\"value()\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n</tui-scrollbar>\n<ng-template #monthSelect>\n <tui-spin-button\n class=\"t-spin\"\n [focusable]=\"false\"\n [leftDisabled]=\"year.yearSameOrBefore(min())\"\n [rightDisabled]=\"year.yearSameOrAfter(max())\"\n (leftClick)=\"onPreviousYear()\"\n (rightClick)=\"onNextYear()\"\n >\n <button\n automation-id=\"tui-calendar-month__active-year\"\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"onYearClick()\"\n >\n {{ year.formattedYear }}\n </button>\n </tui-spin-button>\n <div\n *tuiRepeatTimes=\"let row of 3\"\n class=\"t-row\"\n >\n <ng-container *tuiRepeatTimes=\"let column of 4\">\n <div\n *tuiLet=\"getTuiMonth(row * 4 + column, year.year) as item\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandlerWithMinMax(item)\"\n [class.t-cell_today]=\"isItemToday(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ months()?.[row * 4 + column] }}\n </div>\n </ng-container>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -21,13 +21,13 @@ function tuiChipOptionsProvider(options) {
21
21
 
22
22
  class TuiChipStyles {
23
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiChipStyles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiChipStyles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-chip" }, ngImport: i0, template: '', isInline: true, styles: ["tui-chip,[tuiChip]{--t-gap: .125rem;--t-margin: -.125rem;--t-icon-size: 1rem;--t-padding: 0 .625rem;--t-size: var(--tui-height-s);-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;position:relative;display:inline-flex;align-items:center;flex-shrink:0;box-sizing:border-box;white-space:nowrap;overflow:hidden;vertical-align:middle;max-inline-size:100%;gap:calc(var(--t-gap, 0rem) - 2 * var(--t-margin, 0rem));font:var(--tui-font-text-s);border-radius:var(--tui-radius-m);padding:var(--t-padding);block-size:var(--t-size);inline-size:-webkit-fit-content;inline-size:-moz-fit-content;inline-size:fit-content;isolation:isolate}tui-chip>img,[tuiChip]>img,tui-chip>tui-svg,[tuiChip]>tui-svg,tui-chip>tui-icon,[tuiChip]>tui-icon,tui-chip>tui-avatar,[tuiChip]>tui-avatar,tui-chip>tui-badge,[tuiChip]>tui-badge,tui-chip>[tuiBadge],[tuiChip]>[tuiBadge],tui-chip>[tuiRadio],[tuiChip]>[tuiRadio],tui-chip>[tuiSwitch],[tuiChip]>[tuiSwitch],tui-chip>[tuiCheckbox],[tuiChip]>[tuiCheckbox],tui-chip[tuiIcons]:before,[tuiChip][tuiIcons]:before,tui-chip[tuiIcons]:after,[tuiChip][tuiIcons]:after{margin:var(--t-margin)}tui-chip:matches(a,button,select,textarea,input,label):not(:disabled),[tuiChip]:matches(a,button,select,textarea,input,label):not(:disabled){cursor:pointer}tui-chip:is(a,button,select,textarea,input,label):not(:disabled),[tuiChip]:is(a,button,select,textarea,input,label):not(:disabled){cursor:pointer}tui-chip>tui-icon,[tuiChip]>tui-icon,tui-chip[tuiIcons]:before,[tuiChip][tuiIcons]:before,tui-chip[tuiIcons]:after,[tuiChip][tuiIcons]:after{font-size:var(--t-icon-size)!important}tui-chip>[tuiIconButton],[tuiChip]>[tuiIconButton]{margin:-.375rem}tui-chip[data-size=xxs],[tuiChip][data-size=xxs]{--t-gap: 0rem;--t-padding: 0 .25rem;--t-size: 1rem;--t-icon-size: .75rem;font:var(--tui-font-text-xs);border-radius:var(--tui-radius-xs)}tui-chip[data-size=xxs]>[tuiIconButton],[tuiChip][data-size=xxs]>[tuiIconButton]{margin:-.5rem;transform:scale(.75)}tui-chip[data-size=xs],[tuiChip][data-size=xs]{--t-padding: 0 .375rem;--t-size: var(--tui-height-xs);border-radius:var(--tui-radius-xs)}tui-chip[data-size=xs]>[tuiIconButton],[tuiChip][data-size=xs]>[tuiIconButton]{margin:-.375rem}tui-chip[data-size=m],[tuiChip][data-size=m]{--t-margin: -.375rem;--t-icon-size: 1.5rem;--t-padding: 0 1rem;--t-size: var(--tui-height-m);font:var(--tui-font-text-m)}tui-chip[data-size=m]>[tuiIconButton],[tuiChip][data-size=m]>[tuiIconButton]{margin:-.75rem}tui-chip>img,[tuiChip]>img,tui-chip tui-avatar,[tuiChip] tui-avatar{inline-size:1.5rem;margin-inline-start:-.375rem}tui-chip>[tuiFade]:first-of-type,[tuiChip]>[tuiFade]:first-of-type{flex:1 0 30%;max-inline-size:-webkit-fit-content;max-inline-size:-moz-fit-content;max-inline-size:fit-content}tui-chip>[tuiFade]:last-of-type,[tuiChip]>[tuiFade]:last-of-type{flex:0 1 auto}tui-chip>input[tuiChip],[tuiChip]>input[tuiChip]{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;z-index:-1;margin:0}tui-chip[tuiAppearance][data-appearance=error],[tuiChip][tuiAppearance][data-appearance=error],tui-chip[tuiAppearance][data-appearance=success],[tuiChip][tuiAppearance][data-appearance=success],tui-chip[tuiAppearance][data-appearance=negative],[tuiChip][tuiAppearance][data-appearance=negative],tui-chip[tuiAppearance][data-appearance=positive],[tuiChip][tuiAppearance][data-appearance=positive],tui-chip[tuiAppearance][data-appearance=warning],[tuiChip][tuiAppearance][data-appearance=warning],tui-chip[tuiAppearance][data-appearance=info],[tuiChip][tuiAppearance][data-appearance=info],tui-chip[tuiAppearance][data-appearance=neutral],[tuiChip][tuiAppearance][data-appearance=neutral]{color:var(--tui-text-primary)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiChipStyles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-chip" }, ngImport: i0, template: '', isInline: true, styles: ["tui-chip,[tuiChip]{--t-gap: .125rem;--t-margin: -.125rem;--t-icon-size: 1rem;--t-padding: 0 .625rem;--t-size: var(--tui-height-s);-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;position:relative;display:inline-flex;align-items:center;flex-shrink:0;box-sizing:border-box;white-space:nowrap;overflow:hidden;vertical-align:middle;max-inline-size:100%;gap:calc(var(--t-gap, 0rem) - 2 * var(--t-margin, 0rem));font:var(--tui-font-text-s);border-radius:var(--tui-radius-m);padding:var(--t-padding);block-size:var(--t-size);inline-size:-webkit-fit-content;inline-size:-moz-fit-content;inline-size:fit-content;isolation:isolate}tui-chip>img,[tuiChip]>img,tui-chip>tui-svg,[tuiChip]>tui-svg,tui-chip>tui-icon,[tuiChip]>tui-icon,tui-chip>tui-avatar,[tuiChip]>tui-avatar,tui-chip>tui-badge,[tuiChip]>tui-badge,tui-chip>[tuiBadge],[tuiChip]>[tuiBadge],tui-chip>[tuiRadio],[tuiChip]>[tuiRadio],tui-chip>[tuiSwitch],[tuiChip]>[tuiSwitch],tui-chip>[tuiCheckbox],[tuiChip]>[tuiCheckbox],tui-chip[tuiIcons]:before,[tuiChip][tuiIcons]:before,tui-chip[tuiIcons]:after,[tuiChip][tuiIcons]:after{margin:var(--t-margin)}tui-chip:matches(a,button,select,textarea,input,label):not(:disabled),[tuiChip]:matches(a,button,select,textarea,input,label):not(:disabled){cursor:pointer}tui-chip:is(a,button,select,textarea,input,label):not(:disabled),[tuiChip]:is(a,button,select,textarea,input,label):not(:disabled){cursor:pointer}tui-chip>tui-icon,[tuiChip]>tui-icon,tui-chip[tuiIcons]:before,[tuiChip][tuiIcons]:before,tui-chip[tuiIcons]:after,[tuiChip][tuiIcons]:after{font-size:var(--t-icon-size)!important}tui-chip>[tuiIconButton],[tuiChip]>[tuiIconButton]{margin:-.375rem}tui-chip[data-size=xxs],[tuiChip][data-size=xxs]{--t-gap: 0rem;--t-padding: 0 .25rem;--t-size: 1rem;--t-icon-size: .75rem;font:var(--tui-font-text-xs);border-radius:var(--tui-radius-xs)}tui-chip[data-size=xxs]>[tuiIconButton],[tuiChip][data-size=xxs]>[tuiIconButton]{margin:-.5rem;transform:scale(.75)}tui-chip[data-size=xs],[tuiChip][data-size=xs]{--t-padding: 0 .375rem;--t-size: var(--tui-height-xs);border-radius:var(--tui-radius-xs)}tui-chip[data-size=xs]>[tuiIconButton],[tuiChip][data-size=xs]>[tuiIconButton]{margin:-.375rem}tui-chip[data-size=m],[tuiChip][data-size=m]{--t-margin: -.375rem;--t-icon-size: 1.5rem;--t-padding: 0 1rem;--t-size: var(--tui-height-m);font:var(--tui-font-text-m)}tui-chip[data-size=m]>[tuiIconButton],[tuiChip][data-size=m]>[tuiIconButton]{margin:-.75rem}tui-chip>img,[tuiChip]>img,tui-chip tui-avatar,[tuiChip] tui-avatar{inline-size:1.5rem;margin-inline-start:-.375rem}tui-chip>[tuiFade]:first-of-type,[tuiChip]>[tuiFade]:first-of-type{flex:1 0 30%;max-inline-size:-webkit-fit-content;max-inline-size:-moz-fit-content;max-inline-size:fit-content}tui-chip>[tuiFade]:last-of-type,[tuiChip]>[tuiFade]:last-of-type{flex:0 1 auto}tui-chip>input[tuiChip],[tuiChip]>input[tuiChip]{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;margin:0}tui-chip>input[tuiChip][type=checkbox],[tuiChip]>input[tuiChip][type=checkbox],tui-chip>input[tuiChip][type=radio],[tuiChip]>input[tuiChip][type=radio]{z-index:-1}tui-chip[tuiAppearance][data-appearance=error],[tuiChip][tuiAppearance][data-appearance=error],tui-chip[tuiAppearance][data-appearance=success],[tuiChip][tuiAppearance][data-appearance=success],tui-chip[tuiAppearance][data-appearance=negative],[tuiChip][tuiAppearance][data-appearance=negative],tui-chip[tuiAppearance][data-appearance=positive],[tuiChip][tuiAppearance][data-appearance=positive],tui-chip[tuiAppearance][data-appearance=warning],[tuiChip][tuiAppearance][data-appearance=warning],tui-chip[tuiAppearance][data-appearance=info],[tuiChip][tuiAppearance][data-appearance=info],tui-chip[tuiAppearance][data-appearance=neutral],[tuiChip][tuiAppearance][data-appearance=neutral]{color:var(--tui-text-primary)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
25
25
  }
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiChipStyles, decorators: [{
27
27
  type: Component,
28
28
  args: [{ standalone: true, template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
29
29
  class: 'tui-chip',
30
- }, styles: ["tui-chip,[tuiChip]{--t-gap: .125rem;--t-margin: -.125rem;--t-icon-size: 1rem;--t-padding: 0 .625rem;--t-size: var(--tui-height-s);-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;position:relative;display:inline-flex;align-items:center;flex-shrink:0;box-sizing:border-box;white-space:nowrap;overflow:hidden;vertical-align:middle;max-inline-size:100%;gap:calc(var(--t-gap, 0rem) - 2 * var(--t-margin, 0rem));font:var(--tui-font-text-s);border-radius:var(--tui-radius-m);padding:var(--t-padding);block-size:var(--t-size);inline-size:-webkit-fit-content;inline-size:-moz-fit-content;inline-size:fit-content;isolation:isolate}tui-chip>img,[tuiChip]>img,tui-chip>tui-svg,[tuiChip]>tui-svg,tui-chip>tui-icon,[tuiChip]>tui-icon,tui-chip>tui-avatar,[tuiChip]>tui-avatar,tui-chip>tui-badge,[tuiChip]>tui-badge,tui-chip>[tuiBadge],[tuiChip]>[tuiBadge],tui-chip>[tuiRadio],[tuiChip]>[tuiRadio],tui-chip>[tuiSwitch],[tuiChip]>[tuiSwitch],tui-chip>[tuiCheckbox],[tuiChip]>[tuiCheckbox],tui-chip[tuiIcons]:before,[tuiChip][tuiIcons]:before,tui-chip[tuiIcons]:after,[tuiChip][tuiIcons]:after{margin:var(--t-margin)}tui-chip:matches(a,button,select,textarea,input,label):not(:disabled),[tuiChip]:matches(a,button,select,textarea,input,label):not(:disabled){cursor:pointer}tui-chip:is(a,button,select,textarea,input,label):not(:disabled),[tuiChip]:is(a,button,select,textarea,input,label):not(:disabled){cursor:pointer}tui-chip>tui-icon,[tuiChip]>tui-icon,tui-chip[tuiIcons]:before,[tuiChip][tuiIcons]:before,tui-chip[tuiIcons]:after,[tuiChip][tuiIcons]:after{font-size:var(--t-icon-size)!important}tui-chip>[tuiIconButton],[tuiChip]>[tuiIconButton]{margin:-.375rem}tui-chip[data-size=xxs],[tuiChip][data-size=xxs]{--t-gap: 0rem;--t-padding: 0 .25rem;--t-size: 1rem;--t-icon-size: .75rem;font:var(--tui-font-text-xs);border-radius:var(--tui-radius-xs)}tui-chip[data-size=xxs]>[tuiIconButton],[tuiChip][data-size=xxs]>[tuiIconButton]{margin:-.5rem;transform:scale(.75)}tui-chip[data-size=xs],[tuiChip][data-size=xs]{--t-padding: 0 .375rem;--t-size: var(--tui-height-xs);border-radius:var(--tui-radius-xs)}tui-chip[data-size=xs]>[tuiIconButton],[tuiChip][data-size=xs]>[tuiIconButton]{margin:-.375rem}tui-chip[data-size=m],[tuiChip][data-size=m]{--t-margin: -.375rem;--t-icon-size: 1.5rem;--t-padding: 0 1rem;--t-size: var(--tui-height-m);font:var(--tui-font-text-m)}tui-chip[data-size=m]>[tuiIconButton],[tuiChip][data-size=m]>[tuiIconButton]{margin:-.75rem}tui-chip>img,[tuiChip]>img,tui-chip tui-avatar,[tuiChip] tui-avatar{inline-size:1.5rem;margin-inline-start:-.375rem}tui-chip>[tuiFade]:first-of-type,[tuiChip]>[tuiFade]:first-of-type{flex:1 0 30%;max-inline-size:-webkit-fit-content;max-inline-size:-moz-fit-content;max-inline-size:fit-content}tui-chip>[tuiFade]:last-of-type,[tuiChip]>[tuiFade]:last-of-type{flex:0 1 auto}tui-chip>input[tuiChip],[tuiChip]>input[tuiChip]{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;z-index:-1;margin:0}tui-chip[tuiAppearance][data-appearance=error],[tuiChip][tuiAppearance][data-appearance=error],tui-chip[tuiAppearance][data-appearance=success],[tuiChip][tuiAppearance][data-appearance=success],tui-chip[tuiAppearance][data-appearance=negative],[tuiChip][tuiAppearance][data-appearance=negative],tui-chip[tuiAppearance][data-appearance=positive],[tuiChip][tuiAppearance][data-appearance=positive],tui-chip[tuiAppearance][data-appearance=warning],[tuiChip][tuiAppearance][data-appearance=warning],tui-chip[tuiAppearance][data-appearance=info],[tuiChip][tuiAppearance][data-appearance=info],tui-chip[tuiAppearance][data-appearance=neutral],[tuiChip][tuiAppearance][data-appearance=neutral]{color:var(--tui-text-primary)}\n"] }]
30
+ }, styles: ["tui-chip,[tuiChip]{--t-gap: .125rem;--t-margin: -.125rem;--t-icon-size: 1rem;--t-padding: 0 .625rem;--t-size: var(--tui-height-s);-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;position:relative;display:inline-flex;align-items:center;flex-shrink:0;box-sizing:border-box;white-space:nowrap;overflow:hidden;vertical-align:middle;max-inline-size:100%;gap:calc(var(--t-gap, 0rem) - 2 * var(--t-margin, 0rem));font:var(--tui-font-text-s);border-radius:var(--tui-radius-m);padding:var(--t-padding);block-size:var(--t-size);inline-size:-webkit-fit-content;inline-size:-moz-fit-content;inline-size:fit-content;isolation:isolate}tui-chip>img,[tuiChip]>img,tui-chip>tui-svg,[tuiChip]>tui-svg,tui-chip>tui-icon,[tuiChip]>tui-icon,tui-chip>tui-avatar,[tuiChip]>tui-avatar,tui-chip>tui-badge,[tuiChip]>tui-badge,tui-chip>[tuiBadge],[tuiChip]>[tuiBadge],tui-chip>[tuiRadio],[tuiChip]>[tuiRadio],tui-chip>[tuiSwitch],[tuiChip]>[tuiSwitch],tui-chip>[tuiCheckbox],[tuiChip]>[tuiCheckbox],tui-chip[tuiIcons]:before,[tuiChip][tuiIcons]:before,tui-chip[tuiIcons]:after,[tuiChip][tuiIcons]:after{margin:var(--t-margin)}tui-chip:matches(a,button,select,textarea,input,label):not(:disabled),[tuiChip]:matches(a,button,select,textarea,input,label):not(:disabled){cursor:pointer}tui-chip:is(a,button,select,textarea,input,label):not(:disabled),[tuiChip]:is(a,button,select,textarea,input,label):not(:disabled){cursor:pointer}tui-chip>tui-icon,[tuiChip]>tui-icon,tui-chip[tuiIcons]:before,[tuiChip][tuiIcons]:before,tui-chip[tuiIcons]:after,[tuiChip][tuiIcons]:after{font-size:var(--t-icon-size)!important}tui-chip>[tuiIconButton],[tuiChip]>[tuiIconButton]{margin:-.375rem}tui-chip[data-size=xxs],[tuiChip][data-size=xxs]{--t-gap: 0rem;--t-padding: 0 .25rem;--t-size: 1rem;--t-icon-size: .75rem;font:var(--tui-font-text-xs);border-radius:var(--tui-radius-xs)}tui-chip[data-size=xxs]>[tuiIconButton],[tuiChip][data-size=xxs]>[tuiIconButton]{margin:-.5rem;transform:scale(.75)}tui-chip[data-size=xs],[tuiChip][data-size=xs]{--t-padding: 0 .375rem;--t-size: var(--tui-height-xs);border-radius:var(--tui-radius-xs)}tui-chip[data-size=xs]>[tuiIconButton],[tuiChip][data-size=xs]>[tuiIconButton]{margin:-.375rem}tui-chip[data-size=m],[tuiChip][data-size=m]{--t-margin: -.375rem;--t-icon-size: 1.5rem;--t-padding: 0 1rem;--t-size: var(--tui-height-m);font:var(--tui-font-text-m)}tui-chip[data-size=m]>[tuiIconButton],[tuiChip][data-size=m]>[tuiIconButton]{margin:-.75rem}tui-chip>img,[tuiChip]>img,tui-chip tui-avatar,[tuiChip] tui-avatar{inline-size:1.5rem;margin-inline-start:-.375rem}tui-chip>[tuiFade]:first-of-type,[tuiChip]>[tuiFade]:first-of-type{flex:1 0 30%;max-inline-size:-webkit-fit-content;max-inline-size:-moz-fit-content;max-inline-size:fit-content}tui-chip>[tuiFade]:last-of-type,[tuiChip]>[tuiFade]:last-of-type{flex:0 1 auto}tui-chip>input[tuiChip],[tuiChip]>input[tuiChip]{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;margin:0}tui-chip>input[tuiChip][type=checkbox],[tuiChip]>input[tuiChip][type=checkbox],tui-chip>input[tuiChip][type=radio],[tuiChip]>input[tuiChip][type=radio]{z-index:-1}tui-chip[tuiAppearance][data-appearance=error],[tuiChip][tuiAppearance][data-appearance=error],tui-chip[tuiAppearance][data-appearance=success],[tuiChip][tuiAppearance][data-appearance=success],tui-chip[tuiAppearance][data-appearance=negative],[tuiChip][tuiAppearance][data-appearance=negative],tui-chip[tuiAppearance][data-appearance=positive],[tuiChip][tuiAppearance][data-appearance=positive],tui-chip[tuiAppearance][data-appearance=warning],[tuiChip][tuiAppearance][data-appearance=warning],tui-chip[tuiAppearance][data-appearance=info],[tuiChip][tuiAppearance][data-appearance=info],tui-chip[tuiAppearance][data-appearance=neutral],[tuiChip][tuiAppearance][data-appearance=neutral]{color:var(--tui-text-primary)}\n"] }]
31
31
  }] });
32
32
  class TuiChip {
33
33
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-chip.mjs","sources":["../../../projects/kit/components/chip/chip.options.ts","../../../projects/kit/components/chip/chip.directive.ts","../../../projects/kit/components/chip/taiga-ui-kit-components-chip.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\nimport type {TuiSizeXXS} from '@taiga-ui/core/types';\n\nexport interface TuiChipOptions extends TuiAppearanceOptions {\n readonly size: TuiSizeXXS;\n}\n\nexport const TUI_CHIP_DEFAULT_OPTIONS: TuiChipOptions = {\n appearance: 'neutral',\n size: 's',\n};\n\nexport const TUI_CHIP_OPTIONS = tuiCreateToken(TUI_CHIP_DEFAULT_OPTIONS);\n\nexport function tuiChipOptionsProvider(options: Partial<TuiChipOptions>): Provider {\n return tuiProvideOptions(TUI_CHIP_OPTIONS, options, TUI_CHIP_DEFAULT_OPTIONS);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {\n tuiAppearanceOptionsProvider,\n TuiWithAppearance,\n} from '@taiga-ui/core/directives/appearance';\nimport {TuiWithIcons} from '@taiga-ui/core/directives/icons';\nimport type {TuiSizeXXS} from '@taiga-ui/core/types';\nimport {tuiAvatarOptionsProvider} from '@taiga-ui/kit/components/avatar';\nimport {tuiCheckboxOptionsProvider} from '@taiga-ui/kit/components/checkbox';\nimport {tuiSwitchOptionsProvider} from '@taiga-ui/kit/components/switch';\n\nimport {TUI_CHIP_OPTIONS} from './chip.options';\n\n@Component({\n standalone: true,\n template: '',\n styles: ['@import \"@taiga-ui/kit/styles/components/chip.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'tui-chip',\n },\n})\nclass TuiChipStyles {}\n\n@Directive({\n standalone: true,\n selector: 'tui-chip,[tuiChip]',\n providers: [\n tuiAppearanceOptionsProvider(TUI_CHIP_OPTIONS),\n tuiSwitchOptionsProvider({size: 's'}),\n tuiCheckboxOptionsProvider({size: 's'}),\n tuiAvatarOptionsProvider({size: 'xs'}),\n tuiButtonOptionsProvider({\n size: 'xs',\n appearance: 'icon',\n }),\n ],\n hostDirectives: [TuiWithAppearance, TuiWithIcons],\n host: {'[attr.data-size]': 'size'},\n})\nexport class TuiChip {\n private readonly options = inject(TUI_CHIP_OPTIONS);\n\n protected readonly nothing = tuiWithStyles(TuiChipStyles);\n\n @Input()\n public size: TuiSizeXXS = this.options.size;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-chip.mjs","sources":["../../../projects/kit/components/chip/chip.options.ts","../../../projects/kit/components/chip/chip.directive.ts","../../../projects/kit/components/chip/taiga-ui-kit-components-chip.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\nimport type {TuiSizeXXS} from '@taiga-ui/core/types';\n\nexport interface TuiChipOptions extends TuiAppearanceOptions {\n readonly size: TuiSizeXXS;\n}\n\nexport const TUI_CHIP_DEFAULT_OPTIONS: TuiChipOptions = {\n appearance: 'neutral',\n size: 's',\n};\n\nexport const TUI_CHIP_OPTIONS = tuiCreateToken(TUI_CHIP_DEFAULT_OPTIONS);\n\nexport function tuiChipOptionsProvider(options: Partial<TuiChipOptions>): Provider {\n return tuiProvideOptions(TUI_CHIP_OPTIONS, options, TUI_CHIP_DEFAULT_OPTIONS);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {\n tuiAppearanceOptionsProvider,\n TuiWithAppearance,\n} from '@taiga-ui/core/directives/appearance';\nimport {TuiWithIcons} from '@taiga-ui/core/directives/icons';\nimport type {TuiSizeXXS} from '@taiga-ui/core/types';\nimport {tuiAvatarOptionsProvider} from '@taiga-ui/kit/components/avatar';\nimport {tuiCheckboxOptionsProvider} from '@taiga-ui/kit/components/checkbox';\nimport {tuiSwitchOptionsProvider} from '@taiga-ui/kit/components/switch';\n\nimport {TUI_CHIP_OPTIONS} from './chip.options';\n\n@Component({\n standalone: true,\n template: '',\n styles: ['@import \"@taiga-ui/kit/styles/components/chip.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'tui-chip',\n },\n})\nclass TuiChipStyles {}\n\n@Directive({\n standalone: true,\n selector: 'tui-chip,[tuiChip]',\n providers: [\n tuiAppearanceOptionsProvider(TUI_CHIP_OPTIONS),\n tuiSwitchOptionsProvider({size: 's'}),\n tuiCheckboxOptionsProvider({size: 's'}),\n tuiAvatarOptionsProvider({size: 'xs'}),\n tuiButtonOptionsProvider({\n size: 'xs',\n appearance: 'icon',\n }),\n ],\n hostDirectives: [TuiWithAppearance, TuiWithIcons],\n host: {'[attr.data-size]': 'size'},\n})\nexport class TuiChip {\n private readonly options = inject(TUI_CHIP_OPTIONS);\n\n protected readonly nothing = tuiWithStyles(TuiChipStyles);\n\n @Input()\n public size: TuiSizeXXS = this.options.size;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-data-list-wrapper.mjs","sources":["../../../projects/kit/components/data-list-wrapper/data-list-wrapper.component.ts","../../../projects/kit/components/data-list-wrapper/data-list-wrapper.template.html","../../../projects/kit/components/data-list-wrapper/data-list-group-wrapper.component.ts","../../../projects/kit/components/data-list-wrapper/data-list-group-wrapper.template.html","../../../projects/kit/components/data-list-wrapper/data-list-wrapper.module.ts","../../../projects/kit/components/data-list-wrapper/taiga-ui-kit-components-data-list-wrapper.ts"],"sourcesContent":["import {NgForOf, NgIf} from '@angular/common';\nimport type {ElementRef, QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n Output,\n ViewChildren,\n} from '@angular/core';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiElement} from '@taiga-ui/cdk/directives/element';\nimport {tuiIsNativeFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiAsDataListAccessor,\n TuiDataList,\n tuiInjectDataListSize,\n TuiOption,\n} from '@taiga-ui/core/components/data-list';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport type {TuiValueContentContext} from '@taiga-ui/core/types';\nimport type {TuiItemsHandlers} from '@taiga-ui/kit/tokens';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/kit/tokens';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n@Component({\n standalone: true,\n selector: 'tui-data-list-wrapper:not([labels])',\n imports: [NgForOf, NgIf, PolymorpheusOutlet, TuiDataList, TuiElement, TuiLoader],\n templateUrl: './data-list-wrapper.template.html',\n styleUrls: ['./data-list-wrapper.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsDataListAccessor(TuiDataListWrapperComponent)],\n})\nexport class TuiDataListWrapperComponent<T, K = T> {\n private readonly itemsHandlers: TuiItemsHandlers<T> = inject(TUI_ITEMS_HANDLERS);\n\n @ViewChildren(forwardRef(() => TuiOption))\n protected readonly optionsQuery: QueryList<TuiOption<T>> = EMPTY_QUERY;\n\n @Input()\n public items: readonly K[] | null = [];\n\n @Input()\n public disabledItemHandler: TuiItemsHandlers<T>['disabledItemHandler'] =\n this.itemsHandlers.disabledItemHandler;\n\n @Input()\n public emptyContent: PolymorpheusContent;\n\n @Input()\n public size = tuiInjectDataListSize();\n\n @Output()\n public readonly itemClick = new EventEmitter<T>();\n\n @Input()\n public itemContent: PolymorpheusContent<TuiValueContentContext<T>> = ({$implicit}) =>\n this.itemsHandlers.stringify($implicit);\n\n public getContext(\n $implicit: T,\n {nativeElement}: ElementRef<HTMLElement>,\n ): TuiValueContentContext<T> {\n return {$implicit, active: tuiIsNativeFocused(nativeElement)};\n }\n\n public getOptions(includeDisabled = false): readonly T[] {\n return this.optionsQuery\n .filter(({disabled}) => includeDisabled || !disabled)\n .map(({value}) => value)\n .filter(tuiIsPresent);\n }\n\n protected $cast(items: readonly K[]): readonly T[] {\n return items as unknown as readonly T[];\n }\n}\n","<tui-data-list\n *ngIf=\"items; else loading\"\n [emptyContent]=\"emptyContent\"\n [size]=\"size\"\n>\n <button\n *ngFor=\"let item of $cast(items)\"\n #elementRef=\"elementRef\"\n automation-id=\"tui-data-list-wrapper__option\"\n tuiElement\n tuiOption\n type=\"button\"\n [disabled]=\"disabledItemHandler(item)\"\n [value]=\"item\"\n (click)=\"itemClick.emit(item)\"\n >\n <span class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"itemContent as text; context: getContext(item, elementRef)\">\n {{ text }}\n </ng-container>\n </span>\n </button>\n</tui-data-list>\n<ng-template #loading>\n <tui-loader\n automation-id=\"tui-data-list-wrapper__loader\"\n class=\"t-loader\"\n />\n</ng-template>\n","import {NgForOf, NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TuiElement} from '@taiga-ui/cdk/directives/element';\nimport {tuiAsDataListAccessor, TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiDataListWrapperComponent} from './data-list-wrapper.component';\n\n@Component({\n standalone: true,\n selector: 'tui-data-list-wrapper[labels]',\n imports: [NgForOf, NgIf, PolymorpheusOutlet, TuiDataList, TuiElement, TuiLoader],\n templateUrl: './data-list-group-wrapper.template.html',\n styleUrls: ['./data-list-wrapper.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsDataListAccessor(TuiDataListGroupWrapperComponent)],\n})\nexport class TuiDataListGroupWrapperComponent<T> extends TuiDataListWrapperComponent<\n T,\n T[]\n> {\n @Input()\n public labels: readonly string[] = [];\n}\n","<tui-data-list\n *ngIf=\"items; else loading\"\n [emptyContent]=\"emptyContent\"\n [size]=\"size\"\n>\n <tui-opt-group\n *ngFor=\"let group of items; let index = index\"\n [label]=\"labels[index]\"\n >\n <button\n *ngFor=\"let item of group\"\n #elementRef=\"elementRef\"\n automation-id=\"tui-data-list-wrapper__option\"\n tuiElement\n tuiOption\n type=\"button\"\n [disabled]=\"disabledItemHandler(item)\"\n [value]=\"item\"\n (click)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"itemContent as text; context: getContext(item, elementRef)\">\n {{ text }}\n </ng-container>\n </button>\n </tui-opt-group>\n</tui-data-list>\n<ng-template #loading>\n <tui-loader class=\"t-loader\" />\n</ng-template>\n","import {TuiDataListDirective} from '@taiga-ui/core/components/data-list';\n\nimport {TuiDataListGroupWrapperComponent} from './data-list-group-wrapper.component';\nimport {TuiDataListWrapperComponent} from './data-list-wrapper.component';\n\nexport const TuiDataListWrapper = [\n TuiDataListWrapperComponent,\n TuiDataListGroupWrapperComponent,\n TuiDataListDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-data-list-wrapper.mjs","sources":["../../../projects/kit/components/data-list-wrapper/data-list-wrapper.component.ts","../../../projects/kit/components/data-list-wrapper/data-list-wrapper.template.html","../../../projects/kit/components/data-list-wrapper/data-list-group-wrapper.component.ts","../../../projects/kit/components/data-list-wrapper/data-list-group-wrapper.template.html","../../../projects/kit/components/data-list-wrapper/data-list-wrapper.module.ts","../../../projects/kit/components/data-list-wrapper/taiga-ui-kit-components-data-list-wrapper.ts"],"sourcesContent":["import {NgForOf, NgIf} from '@angular/common';\nimport type {ElementRef, QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n Output,\n ViewChildren,\n} from '@angular/core';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiElement} from '@taiga-ui/cdk/directives/element';\nimport {tuiIsNativeFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiAsDataListAccessor,\n TuiDataList,\n tuiInjectDataListSize,\n TuiOption,\n} from '@taiga-ui/core/components/data-list';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport type {TuiValueContentContext} from '@taiga-ui/core/types';\nimport type {TuiItemsHandlers} from '@taiga-ui/kit/tokens';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/kit/tokens';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n@Component({\n standalone: true,\n selector: 'tui-data-list-wrapper:not([labels])',\n imports: [NgForOf, NgIf, PolymorpheusOutlet, TuiDataList, TuiElement, TuiLoader],\n templateUrl: './data-list-wrapper.template.html',\n styleUrls: ['./data-list-wrapper.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsDataListAccessor(TuiDataListWrapperComponent)],\n})\nexport class TuiDataListWrapperComponent<T, K = T> {\n private readonly itemsHandlers: TuiItemsHandlers<T> = inject(TUI_ITEMS_HANDLERS);\n\n @ViewChildren(forwardRef(() => TuiOption))\n protected readonly optionsQuery: QueryList<TuiOption<T>> = EMPTY_QUERY;\n\n @Input()\n public items: readonly K[] | null = [];\n\n @Input()\n public disabledItemHandler: TuiItemsHandlers<T>['disabledItemHandler'] =\n this.itemsHandlers.disabledItemHandler;\n\n @Input()\n public emptyContent: PolymorpheusContent;\n\n @Input()\n public size = tuiInjectDataListSize();\n\n @Output()\n public readonly itemClick = new EventEmitter<T>();\n\n @Input()\n public itemContent: PolymorpheusContent<TuiValueContentContext<T>> = ({$implicit}) =>\n this.itemsHandlers.stringify($implicit);\n\n public getContext(\n $implicit: T,\n {nativeElement}: ElementRef<HTMLElement>,\n ): TuiValueContentContext<T> {\n return {$implicit, active: tuiIsNativeFocused(nativeElement)};\n }\n\n public getOptions(includeDisabled = false): readonly T[] {\n return this.optionsQuery\n .filter(({disabled}) => includeDisabled || !disabled)\n .map(({value}) => value)\n .filter(tuiIsPresent);\n }\n\n protected $cast(items: readonly K[]): readonly T[] {\n return items as unknown as readonly T[];\n }\n}\n","<tui-data-list\n *ngIf=\"items; else loading\"\n [emptyContent]=\"emptyContent\"\n [size]=\"size\"\n>\n <button\n *ngFor=\"let item of $cast(items)\"\n #elementRef=\"elementRef\"\n automation-id=\"tui-data-list-wrapper__option\"\n tuiElement\n tuiOption\n type=\"button\"\n [disabled]=\"disabledItemHandler(item)\"\n [value]=\"item\"\n (click)=\"itemClick.emit(item)\"\n >\n <span class=\"t-content\">\n <ng-container *polymorpheusOutlet=\"itemContent as text; context: getContext(item, elementRef)\">\n {{ text }}\n </ng-container>\n </span>\n </button>\n</tui-data-list>\n<ng-template #loading>\n <tui-loader\n automation-id=\"tui-data-list-wrapper__loader\"\n class=\"t-loader\"\n />\n</ng-template>\n","import {NgForOf, NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TuiElement} from '@taiga-ui/cdk/directives/element';\nimport {tuiAsDataListAccessor, TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiDataListWrapperComponent} from './data-list-wrapper.component';\n\n@Component({\n standalone: true,\n selector: 'tui-data-list-wrapper[labels]',\n imports: [NgForOf, NgIf, PolymorpheusOutlet, TuiDataList, TuiElement, TuiLoader],\n templateUrl: './data-list-group-wrapper.template.html',\n styleUrls: ['./data-list-wrapper.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsDataListAccessor(TuiDataListGroupWrapperComponent)],\n})\nexport class TuiDataListGroupWrapperComponent<T> extends TuiDataListWrapperComponent<\n T,\n readonly T[]\n> {\n @Input()\n public labels: readonly string[] = [];\n}\n","<tui-data-list\n *ngIf=\"items; else loading\"\n [emptyContent]=\"emptyContent\"\n [size]=\"size\"\n>\n <tui-opt-group\n *ngFor=\"let group of items; let index = index\"\n [label]=\"labels[index]\"\n >\n <button\n *ngFor=\"let item of group\"\n #elementRef=\"elementRef\"\n automation-id=\"tui-data-list-wrapper__option\"\n tuiElement\n tuiOption\n type=\"button\"\n [disabled]=\"disabledItemHandler(item)\"\n [value]=\"item\"\n (click)=\"itemClick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"itemContent as text; context: getContext(item, elementRef)\">\n {{ text }}\n </ng-container>\n </button>\n </tui-opt-group>\n</tui-data-list>\n<ng-template #loading>\n <tui-loader class=\"t-loader\" />\n</ng-template>\n","import {TuiDataListDirective} from '@taiga-ui/core/components/data-list';\n\nimport {TuiDataListGroupWrapperComponent} from './data-list-group-wrapper.component';\nimport {TuiDataListWrapperComponent} from './data-list-wrapper.component';\n\nexport const TuiDataListWrapper = [\n TuiDataListWrapperComponent,\n TuiDataListGroupWrapperComponent,\n TuiDataListDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;AA6BA,MASa,2BAA2B,CAAA;AATxC,IAAA,WAAA,GAAA;AAUqB,QAAA,IAAA,CAAA,aAAa,GAAwB,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAG9D,IAAY,CAAA,YAAA,GAA4B,WAAW,CAAC;QAGhE,IAAK,CAAA,KAAA,GAAwB,EAAE,CAAC;AAGhC,QAAA,IAAA,CAAA,mBAAmB,GACtB,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC;QAMpC,IAAI,CAAA,IAAA,GAAG,qBAAqB,EAAE,CAAC;AAGtB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAK,CAAC;AAG3C,QAAA,IAAA,CAAA,WAAW,GAAmD,CAAC,EAAC,SAAS,EAAC,KAC7E,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAmB/C,KAAA;AAjBU,IAAA,UAAU,CACb,SAAY,EACZ,EAAC,aAAa,EAA0B,EAAA;QAExC,OAAO,EAAC,SAAS,EAAE,MAAM,EAAE,kBAAkB,CAAC,aAAa,CAAC,EAAC,CAAC;KACjE;IAEM,UAAU,CAAC,eAAe,GAAG,KAAK,EAAA;QACrC,OAAO,IAAI,CAAC,YAAY;AACnB,aAAA,MAAM,CAAC,CAAC,EAAC,QAAQ,EAAC,KAAK,eAAe,IAAI,CAAC,QAAQ,CAAC;aACpD,GAAG,CAAC,CAAC,EAAC,KAAK,EAAC,KAAK,KAAK,CAAC;aACvB,MAAM,CAAC,YAAY,CAAC,CAAC;KAC7B;AAES,IAAA,KAAK,CAAC,KAAmB,EAAA;AAC/B,QAAA,OAAO,KAAgC,CAAC;KAC3C;+GA1CQ,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAFzB,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,CAAC,8FAKhC,SAAS,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzC5C,01BA6BA,EDGc,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,mHAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAe,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,mFAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAMtE,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBATvC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,qCAAqC,EAAA,OAAA,EACtC,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,EAAA,eAAA,EAG/D,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,qBAAqB,CAAA,2BAAA,CAA6B,CAAC,EAAA,QAAA,EAAA,01BAAA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,CAAA;8BAM5C,YAAY,EAAA,CAAA;sBAD9B,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,SAAS,CAAC,CAAA;gBAIlC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAIC,mBAAmB,EAAA,CAAA;sBADzB,KAAK;gBAKC,YAAY,EAAA,CAAA;sBADlB,KAAK;gBAIC,IAAI,EAAA,CAAA;sBADV,KAAK;gBAIU,SAAS,EAAA,CAAA;sBADxB,MAAM;gBAIA,WAAW,EAAA,CAAA;sBADjB,KAAK;;;AEnDV,MASa,gCAAoC,SAAQ,2BAGxD,CAAA;AAZD,IAAA,WAAA,GAAA;;QAcW,IAAM,CAAA,MAAA,GAAsB,EAAE,CAAC;AACzC,KAAA;+GANY,gCAAgC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,0GAF9B,CAAC,qBAAqB,CAAC,gCAAgC,CAAC,CAAC,EChBxE,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,q5BA6BA,EDjBc,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,mHAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAe,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,mFAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAMtE,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAT5C,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,+BAA+B,EAAA,OAAA,EAChC,CAAC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,EAAA,eAAA,EAG/D,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,qBAAqB,CAAA,gCAAA,CAAkC,CAAC,EAAA,QAAA,EAAA,q5BAAA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,CAAA;8BAO7D,MAAM,EAAA,CAAA;sBADZ,KAAK;;;AEjBG,MAAA,kBAAkB,GAAG;IAC9B,2BAA2B;IAC3B,gCAAgC;IAChC,oBAAoB;;;ACRxB;;AAEG;;;;"}
@@ -0,0 +1,145 @@
1
+ import { TuiCalendarMonth } from '@taiga-ui/kit/components/calendar-month';
2
+ import * as i0 from '@angular/core';
3
+ import { inject, computed, effect, Directive, signal, Component, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';
4
+ import { toSignal } from '@angular/core/rxjs-interop';
5
+ import { TuiControl, tuiAsControl } from '@taiga-ui/cdk/classes';
6
+ import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
7
+ import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
8
+ import { tuiValueBinding, tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
9
+ import { tuiDirectiveBinding } from '@taiga-ui/cdk/utils/miscellaneous';
10
+ import * as i1 from '@taiga-ui/core/components/textfield';
11
+ import { TUI_TEXTFIELD_OPTIONS, tuiInjectAuxiliary, TuiWithTextfield, TuiTextfieldContent } from '@taiga-ui/core/components/textfield';
12
+ import { tuiDropdownOpen, TUI_DROPDOWN_OPTIONS } from '@taiga-ui/core/directives/dropdown';
13
+ import { TuiIcons } from '@taiga-ui/core/directives/icons';
14
+ import { TUI_MONTH_FORMATTER } from '@taiga-ui/kit/tokens';
15
+ import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
16
+ import { NgIf } from '@angular/common';
17
+ import { TUI_FIRST_DAY, TUI_LAST_DAY, TuiMonth } from '@taiga-ui/cdk/date-time';
18
+
19
+ const TUI_INPUT_MONTH_DEFAULT_OPTIONS = {
20
+ icon: () => '@tui.calendar',
21
+ };
22
+ const [TUI_INPUT_MONTH_OPTIONS, tuiInputMonthOptionsProvider] = tuiCreateOptions(TUI_INPUT_MONTH_DEFAULT_OPTIONS);
23
+
24
+ class TuiInputMonthDirective extends TuiControl {
25
+ constructor() {
26
+ super();
27
+ this.options = inject(TUI_INPUT_MONTH_OPTIONS);
28
+ this.textfieldOptions = inject(TUI_TEXTFIELD_OPTIONS);
29
+ this.open = tuiDropdownOpen();
30
+ this.formatter = toSignal(inject(TUI_MONTH_FORMATTER), {
31
+ initialValue: () => '',
32
+ });
33
+ this.textfieldValue = tuiValueBinding(computed(() => this.formatter()(this.value())));
34
+ this.icon = tuiDirectiveBinding(TuiIcons, 'iconEnd', computed(() => this.options.icon(this.textfieldOptions.size())), {});
35
+ this.calendarSync = effect(() => {
36
+ this.calendar()?.value.set(this.value());
37
+ }, TUI_ALLOW_SIGNAL_WRITES);
38
+ this.onMonthClickEffect = effect((onCleanup) => {
39
+ const subscription = this.calendar()?.monthClick.subscribe((month) => {
40
+ this.onChange(month);
41
+ this.open.set(false);
42
+ });
43
+ onCleanup(() => subscription?.unsubscribe());
44
+ });
45
+ this.calendar = tuiInjectAuxiliary((x) => x instanceof TuiCalendarMonth);
46
+ this.nativePickerEnabled = tuiInjectElement().type === 'month' && inject(TUI_IS_MOBILE);
47
+ /**
48
+ * Update directive props with new defaults before inputs are processed
49
+ * TODO: find better way to override TuiDropdownFixed host directive from TuiTextfieldComponent
50
+ */
51
+ inject(TUI_DROPDOWN_OPTIONS).limitWidth = 'auto';
52
+ }
53
+ setDisabledState() {
54
+ super.setDisabledState();
55
+ this.open.set(false);
56
+ }
57
+ toggleDropdown() {
58
+ if (this.interactive() && !this.nativePickerEnabled) {
59
+ this.open.update((x) => !x);
60
+ }
61
+ }
62
+ clear() {
63
+ this.onChange(null);
64
+ if (!this.nativePickerEnabled) {
65
+ this.open.set(true);
66
+ }
67
+ }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputMonthDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
69
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputMonthDirective, isStandalone: true, selector: "input[tuiInputMonth]", host: { attributes: { "inputmode": "none" }, listeners: { "click": "toggleDropdown()", "blur": "onTouched()", "beforeinput": "$event.inputType.includes(\"delete\") || $event.preventDefault()", "input": "$event.inputType?.includes(\"delete\") && clear()" }, properties: { "disabled": "disabled()" } }, providers: [tuiAsControl(TuiInputMonthDirective)], usesInheritance: true, hostDirectives: [{ directive: i1.TuiWithTextfield }], ngImport: i0 }); }
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputMonthDirective, decorators: [{
72
+ type: Directive,
73
+ args: [{
74
+ standalone: true,
75
+ selector: 'input[tuiInputMonth]',
76
+ providers: [tuiAsControl(TuiInputMonthDirective)],
77
+ hostDirectives: [TuiWithTextfield],
78
+ host: {
79
+ inputmode: 'none',
80
+ '[disabled]': 'disabled()',
81
+ '(click)': 'toggleDropdown()',
82
+ '(blur)': 'onTouched()',
83
+ '(beforeinput)': '$event.inputType.includes("delete") || $event.preventDefault()',
84
+ '(input)': '$event.inputType?.includes("delete") && clear()',
85
+ },
86
+ }]
87
+ }], ctorParameters: function () { return []; } });
88
+
89
+ class TuiNativeMonthPicker {
90
+ constructor() {
91
+ this.control = inject(TuiControl);
92
+ this.host = inject(TuiInputMonthDirective);
93
+ this.min = signal(null);
94
+ this.max = signal(null);
95
+ this.calendarSync = effect(() => {
96
+ const calendar = this.host.calendar();
97
+ if (calendar) {
98
+ calendar.min.set(this.min() ?? TUI_FIRST_DAY); // TODO(v5): remove TUI_FIRST_DAY fallback
99
+ calendar.max.set(this.max() ?? TUI_LAST_DAY); // TODO(v5): remove TUI_LAST_DAY fallback
100
+ }
101
+ }, TUI_ALLOW_SIGNAL_WRITES);
102
+ }
103
+ // TODO(v5): use signal inputs
104
+ set minSetter(x) {
105
+ this.min.set(x);
106
+ }
107
+ // TODO(v5): use signal inputs
108
+ set maxSetter(x) {
109
+ this.max.set(x);
110
+ }
111
+ onInput(value) {
112
+ if (!value) {
113
+ return this.control.onChange(null);
114
+ }
115
+ const [year = 0, month = 0] = value.split('-').map(Number);
116
+ this.control.onChange(new TuiMonth(year, month - 1));
117
+ }
118
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiNativeMonthPicker, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
119
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiNativeMonthPicker, isStandalone: true, selector: "input[tuiInputMonth][type=\"month\"]", inputs: { minSetter: ["min", "minSetter"], maxSetter: ["max", "maxSetter"] }, host: { properties: { "type": "\"text\"" } }, ngImport: i0, template: "<ng-container *ngIf=\"host.nativePickerEnabled\">\n <input\n *tuiTextfieldContent\n type=\"month\"\n [max]=\"max()?.toJSON()\"\n [min]=\"min()?.toJSON()\"\n [value]=\"host.value()?.toJSON()\"\n (click.stop.zoneless)=\"(0)\"\n (input)=\"onInput($any($event.target).value)\"\n (mousedown.stop.zoneless)=\"(0)\"\n />\n</ng-container>\n", styles: ["tui-textfield input[tuiInputMonth]+.t-content input[type=month]{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;opacity:0;border:0}tui-textfield input[tuiInputMonth]+.t-content input[type=month]::-webkit-calendar-picker-indicator{position:absolute;top:0;left:0;inline-size:100%;block-size:100%}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
120
+ }
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiNativeMonthPicker, decorators: [{
122
+ type: Component,
123
+ args: [{ standalone: true, selector: 'input[tuiInputMonth][type="month"]', imports: [NgIf, TuiTextfieldContent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
124
+ '[type]': '"text"',
125
+ }, template: "<ng-container *ngIf=\"host.nativePickerEnabled\">\n <input\n *tuiTextfieldContent\n type=\"month\"\n [max]=\"max()?.toJSON()\"\n [min]=\"min()?.toJSON()\"\n [value]=\"host.value()?.toJSON()\"\n (click.stop.zoneless)=\"(0)\"\n (input)=\"onInput($any($event.target).value)\"\n (mousedown.stop.zoneless)=\"(0)\"\n />\n</ng-container>\n", styles: ["tui-textfield input[tuiInputMonth]+.t-content input[type=month]{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;opacity:0;border:0}tui-textfield input[tuiInputMonth]+.t-content input[type=month]::-webkit-calendar-picker-indicator{position:absolute;top:0;left:0;inline-size:100%;block-size:100%}\n"] }]
126
+ }], propDecorators: { minSetter: [{
127
+ type: Input,
128
+ args: ['min']
129
+ }], maxSetter: [{
130
+ type: Input,
131
+ args: ['max']
132
+ }] } });
133
+
134
+ const TuiInputMonth = [
135
+ TuiInputMonthDirective,
136
+ TuiCalendarMonth,
137
+ TuiNativeMonthPicker,
138
+ ];
139
+
140
+ /**
141
+ * Generated bundle index. Do not edit.
142
+ */
143
+
144
+ export { TUI_INPUT_MONTH_DEFAULT_OPTIONS, TUI_INPUT_MONTH_OPTIONS, TuiInputMonth, TuiInputMonthDirective, TuiNativeMonthPicker, tuiInputMonthOptionsProvider };
145
+ //# sourceMappingURL=taiga-ui-kit-components-input-month.mjs.map