@taiga-ui/core 4.52.0-canary.abf3e8c → 4.52.0-canary.ae38a1e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/calendar/calendar-sheet.component.d.ts +1 -1
- package/components/calendar/calendar-sheet.pipe.d.ts +1 -1
- package/components/calendar/calendar.options.d.ts +9 -0
- package/components/calendar/index.d.ts +1 -0
- package/components/calendar/order-week-days.pipe.d.ts +1 -1
- package/components/input/input.d.ts +1 -1
- package/components/input/input.directive.d.ts +1 -2
- package/components/label/label.directive.d.ts +1 -1
- package/components/link/index.d.ts +0 -1
- package/components/link/link.directive.d.ts +8 -6
- package/components/notification/notification.directive.d.ts +2 -2
- package/components/root/root.component.d.ts +1 -1
- package/components/scrollbar/scroll-ref.directive.d.ts +2 -0
- package/components/scrollbar/scrollbar.component.d.ts +1 -5
- package/components/spin-button/spin-button.component.d.ts +1 -1
- package/components/textfield/textfield-multi/textfield-multi.component.d.ts +1 -2
- package/components/textfield/textfield.component.d.ts +6 -7
- package/directives/appearance/appearance.directive.d.ts +1 -1
- package/directives/appearance/appearance.options.d.ts +1 -2
- package/directives/button-x/button-x.directive.d.ts +6 -0
- package/directives/button-x/index.d.ts +1 -0
- package/directives/index.d.ts +1 -0
- package/directives/items-handlers/items-handlers.directive.d.ts +5 -9
- package/directives/items-handlers/items-handlers.tokens.d.ts +4 -4
- package/fesm2022/taiga-ui-core-classes.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-button.mjs +7 -7
- package/fesm2022/taiga-ui-core-components-button.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-calendar.mjs +38 -36
- package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-cell.mjs +7 -7
- package/fesm2022/taiga-ui-core-components-cell.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-data-list.mjs +17 -17
- package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-error.mjs +10 -10
- package/fesm2022/taiga-ui-core-components-expand.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-icon.mjs +7 -7
- package/fesm2022/taiga-ui-core-components-icon.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-input.mjs +10 -10
- package/fesm2022/taiga-ui-core-components-input.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-label.mjs +11 -13
- package/fesm2022/taiga-ui-core-components-label.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-link.mjs +13 -24
- package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-loader.mjs +4 -4
- package/fesm2022/taiga-ui-core-components-loader.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-notification.mjs +21 -23
- package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-root.mjs +6 -8
- package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs +43 -48
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-spin-button.mjs +6 -6
- package/fesm2022/taiga-ui-core-components-spin-button.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-textfield.mjs +47 -47
- package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-title.mjs +7 -7
- package/fesm2022/taiga-ui-core-components-title.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-appearance.mjs +10 -10
- package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-button-x.mjs +51 -0
- package/fesm2022/taiga-ui-core-directives-button-x.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-directives-date-format.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-group.mjs +7 -7
- package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-icons.mjs +10 -10
- package/fesm2022/taiga-ui-core-directives-icons.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-items-handlers.mjs +15 -36
- package/fesm2022/taiga-ui-core-directives-items-handlers.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-number-format.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives.mjs +1 -0
- package/fesm2022/taiga-ui-core-directives.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-pipes-format-number.mjs +3 -3
- package/fesm2022/taiga-ui-core-portals-alert.mjs +9 -9
- package/fesm2022/taiga-ui-core-portals-dialog.mjs +16 -15
- package/fesm2022/taiga-ui-core-portals-dialog.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs +119 -138
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-hint.mjs +61 -116
- package/fesm2022/taiga-ui-core-portals-hint.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-modal.mjs +8 -8
- package/fesm2022/taiga-ui-core-portals-modal.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-popup.mjs +9 -9
- package/fesm2022/taiga-ui-core-services.mjs +12 -56
- package/fesm2022/taiga-ui-core-services.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-tokens.mjs +32 -42
- package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs +13 -4
- package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs.map +1 -1
- package/fesm2022/taiga-ui-core.mjs +0 -1
- package/fesm2022/taiga-ui-core.mjs.map +1 -1
- package/index.d.ts +0 -1
- package/package.json +63 -64
- package/portals/dropdown/dropdown-close.directive.d.ts +15 -0
- package/portals/dropdown/dropdown-context.directive.d.ts +0 -1
- package/portals/dropdown/dropdown-open.directive.d.ts +6 -7
- package/portals/dropdown/dropdown-options.directive.d.ts +0 -4
- package/portals/dropdown/index.d.ts +1 -0
- package/portals/hint/hint-options.directive.d.ts +1 -20
- package/portals/hint/hint-position.directive.d.ts +4 -4
- package/portals/hint/hint.d.ts +1 -2
- package/portals/hint/hint.directive.d.ts +2 -2
- package/services/index.d.ts +0 -2
- package/styles/components/appearance.less +5 -0
- package/styles/components/button.less +10 -20
- package/styles/components/icon.less +11 -0
- package/styles/components/icons.less +2 -1
- package/styles/components/label.less +3 -12
- package/styles/components/link.less +8 -24
- package/styles/components/notification.less +31 -65
- package/styles/components/textfield.less +127 -212
- package/styles/components/title.less +8 -8
- package/styles/mixins/appearance.less +8 -24
- package/styles/mixins/appearance.scss +8 -24
- package/styles/mixins/date-picker.less +1 -1
- package/styles/mixins/picker.less +1 -1
- package/styles/mixins/picker.scss +1 -1
- package/styles/mixins/slider.less +4 -10
- package/styles/mixins/slider.scss +23 -21
- package/styles/taiga-ui-local.less +0 -1
- package/styles/taiga-ui-local.scss +0 -1
- package/styles/taiga-ui-theme.less +0 -1
- package/styles/theme/appearance/outline.less +9 -18
- package/styles/theme/appearance/primary.less +2 -4
- package/styles/theme/appearance/secondary.less +6 -14
- package/styles/theme/appearance/status.less +0 -4
- package/styles/theme/appearance/table.less +36 -35
- package/styles/theme/appearance/textfield.less +30 -27
- package/styles/theme/appearance.less +0 -1
- package/styles/theme/variables.less +16 -17
- package/styles/variables/media.less +13 -18
- package/styles/variables/media.scss +13 -13
- package/tokens/breakpoint.d.ts +4 -0
- package/tokens/common-icons.d.ts +2 -0
- package/tokens/index.d.ts +1 -4
- package/utils/miscellaneous/font-scaling.d.ts +2 -1
- package/animations/animations.d.ts +0 -109
- package/animations/index.d.ts +0 -1
- package/components/link/link.options.d.ts +0 -10
- package/fesm2022/taiga-ui-core-animations.mjs +0 -370
- package/fesm2022/taiga-ui-core-animations.mjs.map +0 -1
- package/services/breakpoint.service.d.ts +0 -16
- package/services/dark-theme.service.d.ts +0 -10
- package/styles/mixins/wrapper.less +0 -64
- package/styles/mixins/wrapper.scss +0 -61
- package/styles/theme/appearance/opposite.less +0 -17
- package/styles/theme/wrapper.less +0 -211
- package/tokens/day-type-handler.d.ts +0 -7
- package/tokens/first-day-of-week.d.ts +0 -5
- package/tokens/scroll-ref.d.ts +0 -2
- package/tokens/spin-icons.d.ts +0 -6
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Pipe, EventEmitter, Output, Input, ChangeDetectionStrategy, Component,
|
|
3
|
-
import { DAYS_IN_WEEK, TuiDay, TuiMonth, TuiDayRange, TUI_FIRST_DAY, TUI_LAST_DAY, MIN_YEAR, MAX_YEAR, TuiYear, TuiMonthRange, TUI_LAST_DISPLAYED_DAY } from '@taiga-ui/cdk/date-time';
|
|
2
|
+
import { signal, inject, Pipe, EventEmitter, Output, Input, ChangeDetectionStrategy, Component, computed, ChangeDetectorRef } from '@angular/core';
|
|
3
|
+
import { TuiDayOfWeek, DAYS_IN_WEEK, TuiDay, TuiMonth, TuiDayRange, TUI_FIRST_DAY, TUI_LAST_DAY, MIN_YEAR, MAX_YEAR, TuiYear, TuiMonthRange, TUI_LAST_DISPLAYED_DAY } from '@taiga-ui/cdk/date-time';
|
|
4
4
|
import { TuiMapperPipe } from '@taiga-ui/cdk/pipes/mapper';
|
|
5
|
-
import { tuiNullableSame,
|
|
5
|
+
import { tuiNullableSame, tuiIsNumber } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
6
6
|
import { TuiScrollIntoView, TuiScrollbar } from '@taiga-ui/core/components/scrollbar';
|
|
7
7
|
import { TUI_ITEMS_HANDLERS } from '@taiga-ui/core/directives/items-handlers';
|
|
8
|
-
import {
|
|
8
|
+
import { TUI_SHORT_WEEK_DAYS, TUI_MONTHS, tuiAsAuxiliary } from '@taiga-ui/core/tokens';
|
|
9
9
|
import { map, Subject } from 'rxjs';
|
|
10
|
-
import { __decorate } from 'tslib';
|
|
11
10
|
import { AsyncPipe } from '@angular/common';
|
|
12
11
|
import { toObservable } from '@angular/core/rxjs-interop';
|
|
13
12
|
import { TUI_FALSE_HANDLER } from '@taiga-ui/cdk/constants';
|
|
@@ -17,6 +16,12 @@ import { tuiInRange } from '@taiga-ui/cdk/utils/math';
|
|
|
17
16
|
import { TuiLink } from '@taiga-ui/core/components/link';
|
|
18
17
|
import { TuiSpinButton } from '@taiga-ui/core/components/spin-button';
|
|
19
18
|
|
|
19
|
+
const TUI_CALENDAR_DEFAULT_OPTIONS = {
|
|
20
|
+
dayType: (day) => (day.isWeekend ? 'weekend' : 'weekday'),
|
|
21
|
+
weekStart: signal(TuiDayOfWeek.Monday),
|
|
22
|
+
};
|
|
23
|
+
const [TUI_CALENDAR_OPTIONS, tuiCalendarOptionsProvider] = tuiCreateOptions(TUI_CALENDAR_DEFAULT_OPTIONS);
|
|
24
|
+
|
|
20
25
|
const TUI_CALENDAR_SHEET_DEFAULT_OPTIONS = {
|
|
21
26
|
rangeMode: false,
|
|
22
27
|
};
|
|
@@ -26,7 +31,7 @@ const [TUI_CALENDAR_SHEET_OPTIONS, tuiCalendarSheetOptionsProvider] = tuiCreateO
|
|
|
26
31
|
const CALENDAR_ROWS_COUNT = 6;
|
|
27
32
|
class TuiCalendarSheetPipe {
|
|
28
33
|
constructor() {
|
|
29
|
-
this.
|
|
34
|
+
this.options = inject(TUI_CALENDAR_OPTIONS);
|
|
30
35
|
this.currentMonth = null;
|
|
31
36
|
this.currentSheet = [];
|
|
32
37
|
}
|
|
@@ -42,7 +47,7 @@ class TuiCalendarSheetPipe {
|
|
|
42
47
|
month,
|
|
43
48
|
rowIndex,
|
|
44
49
|
colIndex,
|
|
45
|
-
firstDayOfWeek: this.
|
|
50
|
+
firstDayOfWeek: this.options.weekStart(),
|
|
46
51
|
});
|
|
47
52
|
const isPrevMonthDay = (day, relativeToMonth = month) => day.year < relativeToMonth.year || day.month < relativeToMonth.month;
|
|
48
53
|
const isNextMonthDay = (day, relativeToMonth = month) => day.year > relativeToMonth.year || day.month > relativeToMonth.month;
|
|
@@ -60,10 +65,10 @@ class TuiCalendarSheetPipe {
|
|
|
60
65
|
this.currentMonth = month;
|
|
61
66
|
return this.currentSheet;
|
|
62
67
|
}
|
|
63
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
64
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.
|
|
68
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiCalendarSheetPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
69
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: TuiCalendarSheetPipe, isStandalone: true, name: "tuiCalendarSheet" }); }
|
|
65
70
|
}
|
|
66
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiCalendarSheetPipe, decorators: [{
|
|
67
72
|
type: Pipe,
|
|
68
73
|
args: [{
|
|
69
74
|
name: 'tuiCalendarSheet',
|
|
@@ -108,18 +113,18 @@ function convertToSundayFirstWeekFormat(weekDaysNames) {
|
|
|
108
113
|
}
|
|
109
114
|
class TuiOrderWeekDaysPipe {
|
|
110
115
|
constructor() {
|
|
111
|
-
this.
|
|
116
|
+
this.options = inject(TUI_CALENDAR_OPTIONS);
|
|
112
117
|
}
|
|
113
118
|
transform(mondayFirstWeekDays$) {
|
|
114
119
|
return mondayFirstWeekDays$.pipe(map(convertToSundayFirstWeekFormat), map((weekDays) => [
|
|
115
|
-
...weekDays.slice(this.
|
|
116
|
-
...weekDays.slice(0, this.
|
|
120
|
+
...weekDays.slice(this.options.weekStart()),
|
|
121
|
+
...weekDays.slice(0, this.options.weekStart()),
|
|
117
122
|
]));
|
|
118
123
|
}
|
|
119
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
120
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.
|
|
124
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiOrderWeekDaysPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
125
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: TuiOrderWeekDaysPipe, isStandalone: true, name: "tuiOrderWeekDays" }); }
|
|
121
126
|
}
|
|
122
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiOrderWeekDaysPipe, decorators: [{
|
|
123
128
|
type: Pipe,
|
|
124
129
|
args: [{
|
|
125
130
|
name: 'tuiOrderWeekDays',
|
|
@@ -131,7 +136,7 @@ class TuiCalendarSheet {
|
|
|
131
136
|
this.options = inject(TUI_CALENDAR_SHEET_OPTIONS);
|
|
132
137
|
this.today = TuiDay.currentLocal();
|
|
133
138
|
this.unorderedWeekDays$ = toObservable(inject(TUI_SHORT_WEEK_DAYS));
|
|
134
|
-
this.
|
|
139
|
+
this.dayType = inject(TUI_CALENDAR_OPTIONS).dayType;
|
|
135
140
|
this.month = TuiMonth.currentLocal();
|
|
136
141
|
this.disabledItemHandler = TUI_FALSE_HANDLER;
|
|
137
142
|
this.markerHandler = null;
|
|
@@ -238,13 +243,10 @@ class TuiCalendarSheet {
|
|
|
238
243
|
this.hoveredItem = day;
|
|
239
244
|
this.hoveredItemChange.emit(day);
|
|
240
245
|
}
|
|
241
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
242
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
246
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiCalendarSheet, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
247
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiCalendarSheet, isStandalone: true, selector: "tui-calendar-sheet", inputs: { month: "month", disabledItemHandler: "disabledItemHandler", markerHandler: "markerHandler", value: "value", hoveredItem: "hoveredItem", showAdjacent: "showAdjacent", single: "single" }, outputs: { hoveredItemChange: "hoveredItemChange", dayClick: "dayClick" }, host: { properties: { "class._picking": "isRangePicking" } }, ngImport: i0, template: "<div class=\"t-row t-row_weekday\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div\n class=\"t-cell\"\n [textContent]=\"day\"\n ></div>\n }\n</div>\n@let sheet = month | tuiCalendarSheet: true;\n<div>\n @for (_ of '-'.repeat(sheet.length); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-sheet__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(sheet[rowIndex]?.length ?? 0); track $index) {\n @let item = sheet[rowIndex]?.[$index];\n @if (item && (!itemIsUnavailable(item) || showAdjacent)) {\n <div\n automation-id=\"tui-calendar-sheet__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [attr.data-type]=\"item | tuiMapper: dayType\"\n [class.t-cell_disabled]=\"disabledItemHandler(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [class.t-cell_unavailable]=\"itemIsUnavailable(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event && item)\"\n >\n {{ item.day }}\n @if (\n item | tuiMapper: toMarkers : itemIsToday(item) : getItemRange(item) : markerHandler;\n as markers\n ) {\n <div class=\"t-dots\">\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[0]\"\n ></div>\n @if (markers.length > 1) {\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[1] || ''\"\n ></div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-body-m)}.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;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;inset:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{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);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)}}.t-cell{inline-size:calc(100% / 7)}[data-type=weekday]{color:var(--tui-text-primary)}[data-type=weekend]{color:var(--tui-text-negative)}.t-row{justify-content:flex-start}.t-row:first-child{justify-content:flex-end}.t-row_weekday{font:var(--tui-font-body-s);color:var(--tui-text-secondary);pointer-events:none}.t-cell_unavailable{opacity:var(--tui-disabled-opacity)}.t-dots{position:absolute;bottom:0;display:flex;justify-content:center;margin-block-start:-.5rem;padding-block-end:.25rem}.t-dot{display:inline-block;inline-size:.25rem;block-size:.25rem;border-radius:100%;margin:0 .0625rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TuiCalendarSheetPipe, name: "tuiCalendarSheet" }, { kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "pipe", type: TuiOrderWeekDaysPipe, name: "tuiOrderWeekDays" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
243
248
|
}
|
|
244
|
-
|
|
245
|
-
tuiPure
|
|
246
|
-
], TuiCalendarSheet.prototype, "getRange", null);
|
|
247
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiCalendarSheet, decorators: [{
|
|
249
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiCalendarSheet, decorators: [{
|
|
248
250
|
type: Component,
|
|
249
251
|
args: [{ selector: 'tui-calendar-sheet', imports: [
|
|
250
252
|
AsyncPipe,
|
|
@@ -254,7 +256,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImpo
|
|
|
254
256
|
TuiOrderWeekDaysPipe,
|
|
255
257
|
], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
256
258
|
'[class._picking]': 'isRangePicking',
|
|
257
|
-
}, template: "<div class=\"t-row t-row_weekday\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div\n class=\"t-cell\"\n [textContent]=\"day\"\n ></div>\n }\n</div>\n@let sheet = month | tuiCalendarSheet: true;\n<div>\n @for (_ of '-'.repeat(sheet.length); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-sheet__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(sheet[rowIndex]?.length ?? 0); track $index) {\n @let item = sheet[rowIndex]?.[$index];\n @if (item && (!itemIsUnavailable(item) || showAdjacent)) {\n <div\n automation-id=\"tui-calendar-sheet__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [attr.data-type]=\"item | tuiMapper:
|
|
259
|
+
}, template: "<div class=\"t-row t-row_weekday\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div\n class=\"t-cell\"\n [textContent]=\"day\"\n ></div>\n }\n</div>\n@let sheet = month | tuiCalendarSheet: true;\n<div>\n @for (_ of '-'.repeat(sheet.length); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-sheet__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(sheet[rowIndex]?.length ?? 0); track $index) {\n @let item = sheet[rowIndex]?.[$index];\n @if (item && (!itemIsUnavailable(item) || showAdjacent)) {\n <div\n automation-id=\"tui-calendar-sheet__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [attr.data-type]=\"item | tuiMapper: dayType\"\n [class.t-cell_disabled]=\"disabledItemHandler(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [class.t-cell_unavailable]=\"itemIsUnavailable(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event && item)\"\n >\n {{ item.day }}\n @if (\n item | tuiMapper: toMarkers : itemIsToday(item) : getItemRange(item) : markerHandler;\n as markers\n ) {\n <div class=\"t-dots\">\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[0]\"\n ></div>\n @if (markers.length > 1) {\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[1] || ''\"\n ></div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n }\n</div>\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-body-m)}.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;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;inset:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{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);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)}}.t-cell{inline-size:calc(100% / 7)}[data-type=weekday]{color:var(--tui-text-primary)}[data-type=weekend]{color:var(--tui-text-negative)}.t-row{justify-content:flex-start}.t-row:first-child{justify-content:flex-end}.t-row_weekday{font:var(--tui-font-body-s);color:var(--tui-text-secondary);pointer-events:none}.t-cell_unavailable{opacity:var(--tui-disabled-opacity)}.t-dots{position:absolute;bottom:0;display:flex;justify-content:center;margin-block-start:-.5rem;padding-block-end:.25rem}.t-dot{display:inline-block;inline-size:.25rem;block-size:.25rem;border-radius:100%;margin:0 .0625rem}\n"] }]
|
|
258
260
|
}], propDecorators: { month: [{
|
|
259
261
|
type: Input
|
|
260
262
|
}], disabledItemHandler: [{
|
|
@@ -273,7 +275,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImpo
|
|
|
273
275
|
type: Output
|
|
274
276
|
}], dayClick: [{
|
|
275
277
|
type: Output
|
|
276
|
-
}]
|
|
278
|
+
}] } });
|
|
277
279
|
|
|
278
280
|
class TuiCalendarSpin {
|
|
279
281
|
constructor() {
|
|
@@ -303,10 +305,10 @@ class TuiCalendarSpin {
|
|
|
303
305
|
this.value = value;
|
|
304
306
|
this.valueChange.emit(value);
|
|
305
307
|
}
|
|
306
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
307
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
308
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiCalendarSpin, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
309
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiCalendarSpin, isStandalone: true, selector: "tui-calendar-spin", inputs: { value: "value", min: "min", max: "max" }, outputs: { valueChange: "valueChange", yearClick: "yearClick" }, ngImport: i0, template: "<tui-spin-button\n [focusable]=\"false\"\n [leftDisabled]=\"value.monthSameOrBefore(min)\"\n [rightDisabled]=\"value.monthSameOrAfter(max)\"\n (leftClick)=\"append({month: -1})\"\n (rightClick)=\"append({month: 1})\"\n>\n {{ months()[value.month] }}\n @if (min.year === max.year) {\n {{ value.formattedYear }}\n } @else {\n <button\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"onYearClick()\"\n >\n {{ value.formattedYear }}\n </button>\n }\n</tui-spin-button>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]" }, { kind: "component", type: TuiSpinButton, selector: "tui-spin-button", inputs: ["focusable", "disabled", "leftDisabled", "rightDisabled"], outputs: ["leftClick", "rightClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
308
310
|
}
|
|
309
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
311
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiCalendarSpin, decorators: [{
|
|
310
312
|
type: Component,
|
|
311
313
|
args: [{ selector: 'tui-calendar-spin', imports: [TuiLink, TuiSpinButton], changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-spin-button\n [focusable]=\"false\"\n [leftDisabled]=\"value.monthSameOrBefore(min)\"\n [rightDisabled]=\"value.monthSameOrAfter(max)\"\n (leftClick)=\"append({month: -1})\"\n (rightClick)=\"append({month: 1})\"\n>\n {{ months()[value.month] }}\n @if (min.year === max.year) {\n {{ value.formattedYear }}\n } @else {\n <button\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"onYearClick()\"\n >\n {{ value.formattedYear }}\n </button>\n }\n</tui-spin-button>\n", styles: [":host{display:block}\n"] }]
|
|
312
314
|
}], propDecorators: { value: [{
|
|
@@ -410,14 +412,14 @@ class TuiCalendarYear {
|
|
|
410
412
|
const max = this.max() ?? MAX_YEAR;
|
|
411
413
|
return max < initial ? max + 1 : initial;
|
|
412
414
|
}
|
|
413
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
414
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
415
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiCalendarYear, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
416
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiCalendarYear, isStandalone: true, selector: "tui-calendar-year", inputs: { rangeMode: "rangeMode", disabledItemHandler: "disabledItemHandler", initialItemSetter: ["initialItem", "initialItemSetter", (x) => x ?? CURRENT_YEAR], minSetter: ["min", "minSetter", (x) => x ?? MIN_YEAR], maxSetter: ["max", "maxSetter", (x) => x ?? MAX_YEAR], valueSetter: ["value", "valueSetter"] }, outputs: { yearClick: "yearClick" }, host: { properties: { "class._picking": "isRangePicking()" } }, providers: [tuiAsAuxiliary(TuiCalendarYear)], ngImport: i0, template: "@for (_ of '-'.repeat(rows); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-year__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(4); track $index) {\n @let item = getItem(rowIndex, $index);\n <div\n automation-id=\"tui-calendar-year__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"isDisabled(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [tuiScrollIntoView]=\"scrollItemIntoView(item)\"\n (click)=\"yearClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ item }}\n </div>\n }\n </div>\n}\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-body-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;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;inset:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{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);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;padding-inline-end:1rem;inline-size:15.75rem;padding:0 1.125rem}.t-cell{flex:1;border-block-start-width:.5rem;border-block-end-width:.5rem}\n"], dependencies: [{ kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "directive", type: TuiScrollIntoView, selector: "[tuiScrollIntoView]", inputs: ["tuiScrollIntoView"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
415
417
|
}
|
|
416
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
418
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiCalendarYear, decorators: [{
|
|
417
419
|
type: Component,
|
|
418
420
|
args: [{ selector: 'tui-calendar-year', imports: [TuiHovered, TuiScrollIntoView], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiAsAuxiliary(TuiCalendarYear)], host: {
|
|
419
421
|
'[class._picking]': 'isRangePicking()',
|
|
420
|
-
}, template: "@for (_ of '-'.repeat(rows); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-year__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(4); track $index) {\n @let item = getItem(rowIndex, $index);\n <div\n automation-id=\"tui-calendar-year__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"isDisabled(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [tuiScrollIntoView]=\"scrollItemIntoView(item)\"\n (click)=\"yearClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ item }}\n </div>\n }\n </div>\n}\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-
|
|
422
|
+
}, template: "@for (_ of '-'.repeat(rows); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-year__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(4); track $index) {\n @let item = getItem(rowIndex, $index);\n <div\n automation-id=\"tui-calendar-year__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"isDisabled(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [tuiScrollIntoView]=\"scrollItemIntoView(item)\"\n (click)=\"yearClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ item }}\n </div>\n }\n </div>\n}\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-body-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;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;inset:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{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);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;padding-inline-end:1rem;inline-size:15.75rem;padding:0 1.125rem}.t-cell{flex:1;border-block-start-width:.5rem;border-block-end-width:.5rem}\n"] }]
|
|
421
423
|
}], propDecorators: { rangeMode: [{
|
|
422
424
|
type: Input
|
|
423
425
|
}], disabledItemHandler: [{
|
|
@@ -525,10 +527,10 @@ class TuiCalendar {
|
|
|
525
527
|
this.hoveredItem = day;
|
|
526
528
|
this.hoveredItemChange.emit(day);
|
|
527
529
|
}
|
|
528
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
529
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
530
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
531
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiCalendar, isStandalone: true, selector: "tui-calendar", inputs: { month: "month", disabledItemHandler: "disabledItemHandler", min: "min", max: "max", minViewedMonth: "minViewedMonth", maxViewedMonth: "maxViewedMonth", hoveredItem: "hoveredItem", showAdjacent: "showAdjacent", markerHandler: "markerHandler", value: "value", initialView: "initialView" }, outputs: { dayClick: "dayClick", monthChange: "monthChange", hoveredItemChange: "hoveredItemChange" }, host: { listeners: { "pointerdown.prevent.zoneless": "0" } }, providers: [tuiAsAuxiliary(TuiCalendar)], ngImport: i0, template: "@if (isInYearView) {\n <tui-scrollbar\n automation-id=\"tui-calendar__scrollbar\"\n class=\"t-scrollbar\"\n >\n <tui-calendar-year\n automation-id=\"tui-calendar__year\"\n [initialItem]=\"month.year\"\n [max]=\"computedMax.year\"\n [min]=\"computedMin.year\"\n [rangeMode]=\"options.rangeMode\"\n [value]=\"value\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n </tui-scrollbar>\n} @else {\n <tui-calendar-spin\n automation-id=\"tui-calendar__pagination\"\n class=\"t-pagination\"\n [max]=\"computedMaxViewedMonth\"\n [min]=\"computedMinViewedMonth\"\n [value]=\"month\"\n (valueChange)=\"onPaginationValueChange($event)\"\n (yearClick)=\"onPaginationYearClick()\"\n />\n <tui-calendar-sheet\n automation-id=\"tui-calendar__calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : computedMin : computedMax\"\n [hoveredItem]=\"hoveredItem\"\n [markerHandler]=\"markerHandler\"\n [month]=\"month\"\n [showAdjacent]=\"showAdjacent\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n (hoveredItemChange)=\"onHoveredItemChange($event)\"\n />\n}\n", styles: [":host{display:block;min-block-size:20.25rem;inline-size:18rem;padding:1rem 1.125rem;box-sizing:border-box;flex-shrink:0}:host-context(tui-sheet-dialog){inline-size:100%}tui-calendar-year{padding:0}.t-scrollbar{block-size:18.25rem;inline-size:calc(100% + 1rem)}.t-pagination{margin-block-end:1rem}\n"], dependencies: [{ kind: "component", type: TuiCalendarSheet, selector: "tui-calendar-sheet", inputs: ["month", "disabledItemHandler", "markerHandler", "value", "hoveredItem", "showAdjacent", "single"], outputs: ["hoveredItemChange", "dayClick"] }, { kind: "component", type: TuiCalendarSpin, selector: "tui-calendar-spin", inputs: ["value", "min", "max"], outputs: ["valueChange", "yearClick"] }, { kind: "component", type: TuiCalendarYear, selector: "tui-calendar-year", inputs: ["rangeMode", "disabledItemHandler", "initialItem", "min", "max", "value"], outputs: ["yearClick"] }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
530
532
|
}
|
|
531
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
533
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiCalendar, decorators: [{
|
|
532
534
|
type: Component,
|
|
533
535
|
args: [{ selector: 'tui-calendar', imports: [
|
|
534
536
|
TuiCalendarSheet,
|
|
@@ -573,5 +575,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImpo
|
|
|
573
575
|
* Generated bundle index. Do not edit.
|
|
574
576
|
*/
|
|
575
577
|
|
|
576
|
-
export { TUI_CALENDAR_SHEET_DEFAULT_OPTIONS, TUI_CALENDAR_SHEET_OPTIONS, TuiCalendar, TuiCalendarSheet, TuiCalendarSheetPipe, TuiCalendarSpin, TuiCalendarYear, TuiOrderWeekDaysPipe, tuiCalendarSheetOptionsProvider };
|
|
578
|
+
export { TUI_CALENDAR_DEFAULT_OPTIONS, TUI_CALENDAR_OPTIONS, TUI_CALENDAR_SHEET_DEFAULT_OPTIONS, TUI_CALENDAR_SHEET_OPTIONS, TuiCalendar, TuiCalendarSheet, TuiCalendarSheetPipe, TuiCalendarSpin, TuiCalendarYear, TuiOrderWeekDaysPipe, tuiCalendarOptionsProvider, tuiCalendarSheetOptionsProvider };
|
|
577
579
|
//# sourceMappingURL=taiga-ui-core-components-calendar.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-components-calendar.mjs","sources":["../../../projects/core/components/calendar/calendar-sheet.options.ts","../../../projects/core/components/calendar/calendar-sheet.pipe.ts","../../../projects/core/components/calendar/order-week-days.pipe.ts","../../../projects/core/components/calendar/calendar-sheet.component.ts","../../../projects/core/components/calendar/calendar-sheet.template.html","../../../projects/core/components/calendar/calendar-spin.component.ts","../../../projects/core/components/calendar/calendar-spin.template.html","../../../projects/core/components/calendar/calendar-year.component.ts","../../../projects/core/components/calendar/calendar-year.template.html","../../../projects/core/components/calendar/calendar.component.ts","../../../projects/core/components/calendar/calendar.template.html","../../../projects/core/components/calendar/taiga-ui-core-components-calendar.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCalendarSheetOptions {\n readonly rangeMode: boolean;\n}\n\nexport const TUI_CALENDAR_SHEET_DEFAULT_OPTIONS: TuiCalendarSheetOptions = {\n rangeMode: false,\n};\n\nexport const [TUI_CALENDAR_SHEET_OPTIONS, tuiCalendarSheetOptionsProvider] =\n tuiCreateOptions(TUI_CALENDAR_SHEET_DEFAULT_OPTIONS);\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {DAYS_IN_WEEK, TuiDay, type TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {tuiInRange} from '@taiga-ui/cdk/utils/math';\nimport {TUI_FIRST_DAY_OF_WEEK} from '@taiga-ui/core/tokens';\n\nconst CALENDAR_ROWS_COUNT = 6;\n\n@Pipe({\n name: 'tuiCalendarSheet',\n})\nexport class TuiCalendarSheetPipe implements PipeTransform {\n private readonly firstDayOfWeek = inject(TUI_FIRST_DAY_OF_WEEK);\n private currentMonth: TuiMonth | null = null;\n private currentSheet: ReadonlyArray<readonly TuiDay[]> = [];\n\n public transform(\n month: TuiMonth,\n showAdjacentDays = false,\n ): ReadonlyArray<readonly TuiDay[]> {\n if (this.currentMonth?.monthSame(month)) {\n return this.currentSheet;\n }\n\n const sheet: Array<readonly TuiDay[]> = [];\n\n for (let rowIndex = 0; rowIndex < CALENDAR_ROWS_COUNT; rowIndex++) {\n const row: TuiDay[] = [];\n\n for (let colIndex = 0; colIndex < DAYS_IN_WEEK; colIndex++) {\n const day = getDayFromMonthRowCol({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek: this.firstDayOfWeek,\n });\n\n const isPrevMonthDay = (day: TuiDay, relativeToMonth = month): boolean =>\n day.year < relativeToMonth.year || day.month < relativeToMonth.month;\n\n const isNextMonthDay = (day: TuiDay, relativeToMonth = month): boolean =>\n day.year > relativeToMonth.year || day.month > relativeToMonth.month;\n\n if (isPrevMonthDay(day) && !showAdjacentDays) {\n continue;\n }\n\n if (isNextMonthDay(day) && !showAdjacentDays) {\n break;\n }\n\n row.push(day);\n }\n\n sheet.push(row);\n }\n\n this.currentSheet = sheet.filter((row) => row.length);\n this.currentMonth = month;\n\n return this.currentSheet;\n }\n}\n\n/**\n * Computes day of week offset of the beginning of the month\n */\nfunction getMonthStartDaysOffset(\n month: TuiMonth,\n firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6,\n): number {\n const startMonthOffsetFromSunday = new Date(month.year, month.month, 1).getDay();\n\n return startMonthOffsetFromSunday >= firstDayOfWeek\n ? startMonthOffsetFromSunday - firstDayOfWeek\n : DAYS_IN_WEEK - (firstDayOfWeek - startMonthOffsetFromSunday);\n}\n\n/**\n * Calculated day on a calendar grid\n * @return resulting day on these coordinates (could exceed passed month)\n */\nfunction getDayFromMonthRowCol({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek,\n}: {\n /**\n * column in a calendar\n */\n colIndex: number;\n /**\n * first day of the week index (Sunday - 0, Saturday - 6)\n */\n firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n month: TuiMonth;\n /**\n * row in a calendar\n */\n rowIndex: number;\n}): TuiDay {\n ngDevMode && console.assert(Number.isInteger(rowIndex));\n ngDevMode && console.assert(tuiInRange(rowIndex, 0, 6));\n ngDevMode && console.assert(Number.isInteger(colIndex));\n ngDevMode && console.assert(tuiInRange(colIndex, 0, DAYS_IN_WEEK));\n\n let day =\n rowIndex * DAYS_IN_WEEK +\n colIndex -\n getMonthStartDaysOffset(month, firstDayOfWeek) +\n 1;\n\n if (day > month.daysCount) {\n day -= month.daysCount;\n month = month.append({month: 1});\n }\n\n if (day <= 0) {\n month = month.append({month: -1});\n day = month.daysCount + day;\n }\n\n return new TuiDay(month.year, month.month, day);\n}\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {TUI_FIRST_DAY_OF_WEEK} from '@taiga-ui/core/tokens';\nimport {map, type Observable} from 'rxjs';\n\nfunction convertToSundayFirstWeekFormat(\n weekDaysNames: readonly string[],\n): readonly string[] {\n const sundayIndex = weekDaysNames.length - 1;\n\n return [weekDaysNames[sundayIndex] || '', ...weekDaysNames.slice(0, sundayIndex)];\n}\n\n@Pipe({\n name: 'tuiOrderWeekDays',\n})\nexport class TuiOrderWeekDaysPipe implements PipeTransform {\n private readonly firstDayOfWeekIndex = inject(TUI_FIRST_DAY_OF_WEEK);\n\n public transform(\n mondayFirstWeekDays$: Observable<readonly string[]>,\n ): Observable<readonly string[]> {\n return mondayFirstWeekDays$.pipe(\n map(convertToSundayFirstWeekFormat),\n map((weekDays) => [\n ...weekDays.slice(this.firstDayOfWeekIndex),\n ...weekDays.slice(0, this.firstDayOfWeekIndex),\n ]),\n );\n }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiDay, TuiDayRange, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiNullableSame, tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_DAY_TYPE_HANDLER, TUI_SHORT_WEEK_DAYS} from '@taiga-ui/core/tokens';\n\nimport {TUI_CALENDAR_SHEET_OPTIONS} from './calendar-sheet.options';\nimport {TuiCalendarSheetPipe} from './calendar-sheet.pipe';\nimport {TuiOrderWeekDaysPipe} from './order-week-days.pipe';\n\nexport type TuiMarkerHandler = TuiHandler<TuiDay, [] | [string, string] | [string]>;\n\n@Component({\n selector: 'tui-calendar-sheet',\n imports: [\n AsyncPipe,\n TuiCalendarSheetPipe,\n TuiHovered,\n TuiMapperPipe,\n TuiOrderWeekDaysPipe,\n ],\n templateUrl: './calendar-sheet.template.html',\n styleUrl: './calendar-sheet.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._picking]': 'isRangePicking',\n },\n})\nexport class TuiCalendarSheet {\n private readonly options = inject(TUI_CALENDAR_SHEET_OPTIONS);\n private readonly today = TuiDay.currentLocal();\n\n protected readonly unorderedWeekDays$ = toObservable(inject(TUI_SHORT_WEEK_DAYS));\n protected readonly dayTypeHandler = inject(TUI_DAY_TYPE_HANDLER);\n\n @Input()\n public month: TuiMonth = TuiMonth.currentLocal();\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<TuiDay> = TUI_FALSE_HANDLER;\n\n @Input()\n public markerHandler: TuiMarkerHandler | null = null;\n\n @Input()\n public value: TuiDay | TuiDayRange | readonly TuiDay[] | null = null;\n\n @Input()\n public hoveredItem: TuiDay | null = null;\n\n @Input()\n public showAdjacent = true;\n\n /**\n * @deprecated use static DI options instead\n * ```\n * tuiCalendarSheetOptionsProvider({rangeMode: true})\n * ```\n * TODO(v5): delete it\n */\n @Input()\n public single = true;\n\n @Output()\n public readonly hoveredItemChange = new EventEmitter<TuiDay | null>();\n\n @Output()\n public readonly dayClick = new EventEmitter<TuiDay>();\n\n /**\n * @deprecated TODO(v5): delete it. It is used nowhere except unit tests\n */\n public itemIsInterval(day: TuiDay): boolean {\n const {value, hoveredItem} = this;\n\n if (!(value instanceof TuiDayRange)) {\n return false;\n }\n\n if (!value.isSingleDay) {\n return value.from.daySameOrBefore(day) && value.to.dayAfter(day);\n }\n\n if (hoveredItem === null) {\n return false;\n }\n\n const range = TuiDayRange.sort(value.from, hoveredItem);\n\n return range.from.daySameOrBefore(day) && range.to.dayAfter(day);\n }\n\n public onItemHovered(item: TuiDay | false): void {\n this.updateHoveredItem(item || null);\n }\n\n public getItemRange(item: TuiDay): 'active' | 'end' | 'middle' | 'start' | null {\n const {value, hoveredItem} = this;\n\n if (!value) {\n return null;\n }\n\n if (value instanceof TuiDay && !this.computedRangeMode) {\n return value.daySame(item) ? 'active' : null;\n }\n\n if (value instanceof TuiDayRange && value.isSingleDay) {\n return value.from.daySame(item) ? 'active' : null;\n }\n\n if (!(value instanceof TuiDay) && !(value instanceof TuiDayRange)) {\n return value.find((day) => day.daySame(item)) ? 'active' : null;\n }\n\n const range = this.getRange(value, hoveredItem);\n\n if (range.isSingleDay && range.from.daySame(item)) {\n return 'active';\n }\n\n if (range.from.daySame(item)) {\n return 'start';\n }\n\n if (range.to.daySame(item)) {\n return 'end';\n }\n\n return range.from.dayBefore(item) && range.to.dayAfter(item) ? 'middle' : null;\n }\n\n protected get computedRangeMode(): boolean {\n return !this.single || this.options.rangeMode;\n }\n\n protected get isRangePicking(): boolean {\n return this.computedRangeMode\n ? this.value instanceof TuiDay\n : /**\n * Only for backward compatibility!\n * TODO(v5): replace with `this.options.rangeMode && this.value instanceof TuiDay`\n */\n this.value instanceof TuiDayRange && this.value.isSingleDay;\n }\n\n protected readonly toMarkers = (\n day: TuiDay,\n today: boolean,\n range: string | null,\n markerHandler: TuiMarkerHandler | null,\n ): [string, string] | [string] | null => {\n if (today || ['active', 'end', 'start'].includes(range || '')) {\n return null;\n }\n\n const markers = markerHandler?.(day);\n\n return markers?.length ? markers : null;\n };\n\n protected itemIsToday(item: TuiDay): boolean {\n return this.today.daySame(item);\n }\n\n protected itemIsUnavailable(item: TuiDay): boolean {\n return !this.month.monthSame(item);\n }\n\n protected onItemClick(item: TuiDay): void {\n this.dayClick.emit(item);\n }\n\n @tuiPure\n private getRange(\n value: TuiDay | TuiDayRange,\n hoveredItem: TuiDay | null,\n ): TuiDayRange {\n if (value instanceof TuiDay) {\n return TuiDayRange.sort(value, hoveredItem ?? value);\n }\n\n return value.isSingleDay\n ? TuiDayRange.sort(value.from, hoveredItem ?? value.to)\n : value;\n }\n\n private updateHoveredItem(day: TuiDay | null): void {\n if (tuiNullableSame(this.hoveredItem, day, (a, b) => a.daySame(b))) {\n return;\n }\n\n this.hoveredItem = day;\n this.hoveredItemChange.emit(day);\n }\n}\n","<div class=\"t-row t-row_weekday\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div\n class=\"t-cell\"\n [textContent]=\"day\"\n ></div>\n }\n</div>\n@let sheet = month | tuiCalendarSheet: true;\n<div>\n @for (_ of '-'.repeat(sheet.length); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-sheet__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(sheet[rowIndex]?.length ?? 0); track $index) {\n @let item = sheet[rowIndex]?.[$index];\n @if (item && (!itemIsUnavailable(item) || showAdjacent)) {\n <div\n automation-id=\"tui-calendar-sheet__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [attr.data-type]=\"item | tuiMapper: dayTypeHandler\"\n [class.t-cell_disabled]=\"disabledItemHandler(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [class.t-cell_unavailable]=\"itemIsUnavailable(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event && item)\"\n >\n {{ item.day }}\n @if (\n item | tuiMapper: toMarkers : itemIsToday(item) : getItemRange(item) : markerHandler;\n as markers\n ) {\n <div class=\"t-dots\">\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[0]\"\n ></div>\n @if (markers.length > 1) {\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[1] || ''\"\n ></div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiMonth,\n type TuiMonthLike,\n type TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiSpinButton} from '@taiga-ui/core/components/spin-button';\nimport {TUI_MONTHS} from '@taiga-ui/core/tokens';\n\n@Component({\n selector: 'tui-calendar-spin',\n imports: [TuiLink, TuiSpinButton],\n templateUrl: './calendar-spin.template.html',\n styleUrl: './calendar-spin.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiCalendarSpin {\n protected readonly months = inject(TUI_MONTHS);\n\n @Input()\n public value = TuiMonth.currentLocal();\n\n @Input()\n public min: TuiMonth = TUI_FIRST_DAY;\n\n @Input()\n public max: TuiMonth = TUI_LAST_DAY;\n\n @Output()\n public readonly valueChange = new EventEmitter<TuiMonth>();\n\n @Output()\n public readonly yearClick = new EventEmitter<TuiYear>();\n\n protected onYearClick(): void {\n this.yearClick.next(this.value);\n }\n\n protected append(date: TuiMonthLike): void {\n const value = this.value.append(date);\n\n if (this.min.monthSameOrAfter(value)) {\n this.updateValue(this.min);\n } else {\n this.updateValue(this.max.monthSameOrBefore(value) ? this.max : value);\n }\n }\n\n private updateValue(value: TuiMonth): void {\n if (this.value.monthSame(value)) {\n return;\n }\n\n this.value = value;\n this.valueChange.emit(value);\n }\n}\n","<tui-spin-button\n [focusable]=\"false\"\n [leftDisabled]=\"value.monthSameOrBefore(min)\"\n [rightDisabled]=\"value.monthSameOrAfter(max)\"\n (leftClick)=\"append({month: -1})\"\n (rightClick)=\"append({month: 1})\"\n>\n {{ months()[value.month] }}\n @if (min.year === max.year) {\n {{ value.formattedYear }}\n } @else {\n <button\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"onYearClick()\"\n >\n {{ value.formattedYear }}\n </button>\n }\n</tui-spin-button>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n inject,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {\n MAX_YEAR,\n MIN_YEAR,\n TuiDay,\n type TuiDayRange,\n TuiMonth,\n TuiMonthRange,\n TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiIsNumber} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiScrollIntoView} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\n\nconst LIMIT = 100;\nconst ITEMS_IN_ROW = 4;\nconst CURRENT_YEAR = TuiMonth.currentLocal().year;\n\n@Component({\n selector: 'tui-calendar-year',\n imports: [TuiHovered, TuiScrollIntoView],\n templateUrl: './calendar-year.template.html',\n styleUrl: './calendar-year.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiCalendarYear)],\n host: {\n '[class._picking]': 'isRangePicking()',\n },\n})\nexport class TuiCalendarYear {\n private readonly hoveredItem = signal<number | null>(null);\n\n protected readonly isRangePicking = computed(\n (x = this.value()) =>\n this.rangeMode && (x instanceof TuiDay || x instanceof TuiMonth),\n );\n\n @Input()\n public rangeMode = false;\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<number> =\n inject(TUI_ITEMS_HANDLERS).disabledItemHandler();\n\n @Output()\n public readonly yearClick = new EventEmitter<number>();\n\n public readonly initialItem = signal<number>(CURRENT_YEAR);\n public readonly min = signal(MIN_YEAR);\n public readonly max = signal(MAX_YEAR);\n public readonly value = signal<\n TuiDayRange | TuiMonthRange | TuiYear | number | readonly TuiDay[] | null\n >(null);\n\n // TODO(v5): use signal inputs\n @Input({alias: 'initialItem', transform: (x: number | null) => x ?? CURRENT_YEAR})\n public set initialItemSetter(x: number | null) {\n this.initialItem.set(x ?? CURRENT_YEAR);\n }\n\n // TODO(v5): use signal inputs\n @Input({alias: 'min', transform: (x: number | null) => x ?? MIN_YEAR})\n public set minSetter(x: number) {\n this.min.set(x);\n }\n\n // TODO(v5): use signal inputs\n @Input({alias: 'max', transform: (x: number | null) => x ?? MAX_YEAR})\n public set maxSetter(x: number) {\n this.max.set(x);\n }\n\n // TODO(v5): use signal inputs\n @Input('value')\n public set valueSetter(\n x: TuiDayRange | TuiMonthRange | TuiYear | number | readonly TuiDay[] | null,\n ) {\n this.value.set(x);\n }\n\n public isDisabled(item: number): boolean {\n return (\n (this.max() && this.max() < item) ||\n (this.min() && this.min() > item) ||\n this.disabledItemHandler(item)\n );\n }\n\n public getItemRange(item: number): 'active' | 'end' | 'middle' | 'start' | null {\n const value = this.value();\n const hoveredItem = this.hoveredItem();\n\n if (value instanceof TuiYear && value.year === item) {\n return 'active';\n }\n\n if (tuiIsNumber(value)) {\n return value === item ? 'active' : null;\n }\n\n if (!(value instanceof TuiMonthRange) && !(value instanceof TuiYear)) {\n return value?.find((day) => day.year === item) ? 'active' : null;\n }\n\n const hovered = this.isRangePicking() ? hoveredItem : null;\n const from = 'from' in value ? value.from?.year : value.year;\n const to = 'from' in value ? value.to.year : value.year;\n\n const min = Math.min(from, hovered ?? to);\n const max = Math.max(from, hovered ?? to);\n\n if (min === max && from === to && from === item) {\n return 'active';\n }\n\n if (min === item) {\n return 'start';\n }\n\n if (max === item) {\n return 'end';\n }\n\n return min < item && item < max ? 'middle' : null;\n }\n\n public onItemHovered(hovered: boolean, item: number): void {\n this.hoveredItem.set(hovered ? item : null);\n }\n\n protected get rows(): number {\n return Math.ceil((this.calculatedMax - this.calculatedMin) / ITEMS_IN_ROW);\n }\n\n protected scrollItemIntoView(item: number): boolean {\n return this.initialItem() === item;\n }\n\n protected getItem(rowIndex: number, colIndex: number): number {\n return rowIndex * ITEMS_IN_ROW + colIndex + this.calculatedMin;\n }\n\n protected itemIsToday(item: number): boolean {\n return CURRENT_YEAR === item;\n }\n\n private get calculatedMin(): number {\n const initial = this.initialItem() - LIMIT;\n const min = this.min() ?? MIN_YEAR;\n\n return min > initial ? min : initial;\n }\n\n private get calculatedMax(): number {\n const initial = this.initialItem() + LIMIT;\n const max = this.max() ?? MAX_YEAR;\n\n return max < initial ? max + 1 : initial;\n }\n}\n","@for (_ of '-'.repeat(rows); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-year__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(4); track $index) {\n @let item = getItem(rowIndex, $index);\n <div\n automation-id=\"tui-calendar-year__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"isDisabled(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [tuiScrollIntoView]=\"scrollItemIntoView(item)\"\n (click)=\"yearClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ item }}\n </div>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TUI_LAST_DISPLAYED_DAY,\n TuiDay,\n type TuiDayRange,\n TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiMapper} from '@taiga-ui/cdk/types';\nimport {tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {Subject} from 'rxjs';\n\nimport {TuiCalendarSheet, type TuiMarkerHandler} from './calendar-sheet.component';\nimport {TUI_CALENDAR_SHEET_OPTIONS} from './calendar-sheet.options';\nimport {TuiCalendarSpin} from './calendar-spin.component';\nimport {TuiCalendarYear} from './calendar-year.component';\n\n@Component({\n selector: 'tui-calendar',\n imports: [\n TuiCalendarSheet,\n TuiCalendarSpin,\n TuiCalendarYear,\n TuiMapperPipe,\n TuiScrollbar,\n ],\n templateUrl: './calendar.template.html',\n styleUrl: './calendar.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiCalendar)],\n host: {\n '(pointerdown.prevent.zoneless)': '0',\n },\n})\nexport class TuiCalendar {\n private readonly cdr = inject(ChangeDetectorRef);\n private day: TuiDay | TuiDayRange | readonly TuiDay[] | null = null;\n private view: 'month' | 'year' = 'month';\n protected readonly options = inject(TUI_CALENDAR_SHEET_OPTIONS);\n\n @Input()\n public month: TuiMonth = TuiMonth.currentLocal();\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<TuiDay> =\n inject(TUI_ITEMS_HANDLERS).disabledItemHandler();\n\n @Input()\n public min: TuiDay | null = TUI_FIRST_DAY;\n\n @Input()\n public max: TuiDay | null = TUI_LAST_DAY;\n\n @Input()\n public minViewedMonth: TuiMonth | null = TUI_FIRST_DAY;\n\n @Input()\n public maxViewedMonth: TuiMonth | null = TUI_LAST_DAY;\n\n @Input()\n public hoveredItem: TuiDay | null = null;\n\n @Input()\n public showAdjacent = true;\n\n @Input()\n public markerHandler: TuiMarkerHandler | null = null;\n\n @Output()\n public readonly dayClick = new EventEmitter<TuiDay>();\n\n @Output()\n public readonly monthChange = new EventEmitter<TuiMonth>();\n\n @Output()\n public readonly hoveredItemChange = new EventEmitter<TuiDay | null>();\n\n /** @deprecated for private use only until Calendars are refactored */\n public readonly valueChange = new Subject<TuiDay>();\n\n @Input()\n public set value(value: TuiDay | TuiDayRange | readonly TuiDay[] | null) {\n this.cdr.markForCheck();\n this.day = value;\n\n if (\n this.showAdjacent &&\n value instanceof TuiDay &&\n value.daySameOrBefore(TUI_LAST_DISPLAYED_DAY)\n ) {\n this.month = value;\n }\n }\n\n @Input()\n public set initialView(view: 'month' | 'year') {\n this.view = view;\n }\n\n public get value(): TuiDay | TuiDayRange | readonly TuiDay[] | null {\n return this.day;\n }\n\n public onPaginationValueChange(month: TuiMonth): void {\n this.updateViewedMonth(month);\n }\n\n public onDayClick(day: TuiDay): void {\n this.dayClick.emit(day);\n this.valueChange.next(day);\n }\n\n public onHoveredItemChange(day: TuiDay | null): void {\n this.updateHoveredDay(day);\n }\n\n protected get computedMin(): TuiDay {\n return this.min ?? TUI_FIRST_DAY;\n }\n\n protected get computedMax(): TuiDay {\n return this.max ?? TUI_LAST_DAY;\n }\n\n protected get computedMinViewedMonth(): TuiMonth {\n const min = this.computedMin;\n const minViewed = this.minViewedMonth ?? TUI_FIRST_DAY;\n\n return minViewed.monthSameOrAfter(min) ? minViewed : min;\n }\n\n protected get computedMaxViewedMonth(): TuiMonth {\n const max = this.computedMax;\n const maxViewed = this.maxViewedMonth ?? TUI_LAST_DAY;\n\n return maxViewed.monthSameOrBefore(max) ? maxViewed : max;\n }\n\n protected get isInYearView(): boolean {\n return this.view === 'year';\n }\n\n protected readonly disabledItemHandlerMapper: TuiMapper<\n [TuiBooleanHandler<TuiDay>, TuiDay, TuiDay],\n TuiBooleanHandler<TuiDay>\n > = (disabledItemHandler, min, max) => (item) =>\n item.dayBefore(min) || item.dayAfter(max) || disabledItemHandler(item);\n\n protected onPaginationYearClick(): void {\n this.view = 'year';\n }\n\n protected onPickerYearClick(year: number): void {\n this.view = 'month';\n this.updateViewedMonth(new TuiMonth(year, this.month.month));\n }\n\n private updateViewedMonth(month: TuiMonth): void {\n if (this.month.monthSame(month)) {\n return;\n }\n\n this.month = month;\n this.monthChange.emit(month);\n }\n\n private updateHoveredDay(day: TuiDay | null): void {\n if (tuiNullableSame(this.hoveredItem, day, (a, b) => a.daySame(b))) {\n return;\n }\n\n this.hoveredItem = day;\n this.hoveredItemChange.emit(day);\n }\n}\n","@if (isInYearView) {\n <tui-scrollbar\n automation-id=\"tui-calendar__scrollbar\"\n class=\"t-scrollbar\"\n >\n <tui-calendar-year\n automation-id=\"tui-calendar__year\"\n [initialItem]=\"month.year\"\n [max]=\"computedMax.year\"\n [min]=\"computedMin.year\"\n [rangeMode]=\"options.rangeMode\"\n [value]=\"value\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n </tui-scrollbar>\n} @else {\n <tui-calendar-spin\n automation-id=\"tui-calendar__pagination\"\n class=\"t-pagination\"\n [max]=\"computedMaxViewedMonth\"\n [min]=\"computedMinViewedMonth\"\n [value]=\"month\"\n (valueChange)=\"onPaginationValueChange($event)\"\n (yearClick)=\"onPaginationYearClick()\"\n />\n <tui-calendar-sheet\n automation-id=\"tui-calendar__calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : computedMin : computedMax\"\n [hoveredItem]=\"hoveredItem\"\n [markerHandler]=\"markerHandler\"\n [month]=\"month\"\n [showAdjacent]=\"showAdjacent\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n (hoveredItemChange)=\"onHoveredItemChange($event)\"\n />\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-core-components-calendar.mjs","sources":["../../../projects/core/components/calendar/calendar.options.ts","../../../projects/core/components/calendar/calendar-sheet.options.ts","../../../projects/core/components/calendar/calendar-sheet.pipe.ts","../../../projects/core/components/calendar/order-week-days.pipe.ts","../../../projects/core/components/calendar/calendar-sheet.component.ts","../../../projects/core/components/calendar/calendar-sheet.template.html","../../../projects/core/components/calendar/calendar-spin.component.ts","../../../projects/core/components/calendar/calendar-spin.template.html","../../../projects/core/components/calendar/calendar-year.component.ts","../../../projects/core/components/calendar/calendar-year.template.html","../../../projects/core/components/calendar/calendar.component.ts","../../../projects/core/components/calendar/calendar.template.html","../../../projects/core/components/calendar/taiga-ui-core-components-calendar.ts"],"sourcesContent":["import {type Signal, signal} from '@angular/core';\nimport {type TuiDay, TuiDayOfWeek} from '@taiga-ui/cdk/date-time';\nimport {type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCalendarOptions {\n readonly dayType: TuiHandler<TuiDay, string>;\n readonly weekStart: Signal<0 | 1 | 2 | 3 | 4 | 5 | 6>;\n}\n\nexport const TUI_CALENDAR_DEFAULT_OPTIONS: TuiCalendarOptions = {\n dayType: (day) => (day.isWeekend ? 'weekend' : 'weekday'),\n weekStart: signal(TuiDayOfWeek.Monday),\n};\n\nexport const [TUI_CALENDAR_OPTIONS, tuiCalendarOptionsProvider] = tuiCreateOptions(\n TUI_CALENDAR_DEFAULT_OPTIONS,\n);\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCalendarSheetOptions {\n readonly rangeMode: boolean;\n}\n\nexport const TUI_CALENDAR_SHEET_DEFAULT_OPTIONS: TuiCalendarSheetOptions = {\n rangeMode: false,\n};\n\nexport const [TUI_CALENDAR_SHEET_OPTIONS, tuiCalendarSheetOptionsProvider] =\n tuiCreateOptions(TUI_CALENDAR_SHEET_DEFAULT_OPTIONS);\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {DAYS_IN_WEEK, TuiDay, type TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {tuiInRange} from '@taiga-ui/cdk/utils/math';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\n\nconst CALENDAR_ROWS_COUNT = 6;\n\n@Pipe({\n name: 'tuiCalendarSheet',\n})\nexport class TuiCalendarSheetPipe implements PipeTransform {\n private readonly options = inject(TUI_CALENDAR_OPTIONS);\n private currentMonth: TuiMonth | null = null;\n private currentSheet: ReadonlyArray<readonly TuiDay[]> = [];\n\n public transform(\n month: TuiMonth,\n showAdjacentDays = false,\n ): ReadonlyArray<readonly TuiDay[]> {\n if (this.currentMonth?.monthSame(month)) {\n return this.currentSheet;\n }\n\n const sheet: Array<readonly TuiDay[]> = [];\n\n for (let rowIndex = 0; rowIndex < CALENDAR_ROWS_COUNT; rowIndex++) {\n const row: TuiDay[] = [];\n\n for (let colIndex = 0; colIndex < DAYS_IN_WEEK; colIndex++) {\n const day = getDayFromMonthRowCol({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek: this.options.weekStart(),\n });\n\n const isPrevMonthDay = (day: TuiDay, relativeToMonth = month): boolean =>\n day.year < relativeToMonth.year || day.month < relativeToMonth.month;\n\n const isNextMonthDay = (day: TuiDay, relativeToMonth = month): boolean =>\n day.year > relativeToMonth.year || day.month > relativeToMonth.month;\n\n if (isPrevMonthDay(day) && !showAdjacentDays) {\n continue;\n }\n\n if (isNextMonthDay(day) && !showAdjacentDays) {\n break;\n }\n\n row.push(day);\n }\n\n sheet.push(row);\n }\n\n this.currentSheet = sheet.filter((row) => row.length);\n this.currentMonth = month;\n\n return this.currentSheet;\n }\n}\n\n/**\n * Computes day of week offset of the beginning of the month\n */\nfunction getMonthStartDaysOffset(\n month: TuiMonth,\n firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6,\n): number {\n const startMonthOffsetFromSunday = new Date(month.year, month.month, 1).getDay();\n\n return startMonthOffsetFromSunday >= firstDayOfWeek\n ? startMonthOffsetFromSunday - firstDayOfWeek\n : DAYS_IN_WEEK - (firstDayOfWeek - startMonthOffsetFromSunday);\n}\n\n/**\n * Calculated day on a calendar grid\n * @return resulting day on these coordinates (could exceed passed month)\n */\nfunction getDayFromMonthRowCol({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek,\n}: {\n /**\n * column in a calendar\n */\n colIndex: number;\n /**\n * first day of the week index (Sunday - 0, Saturday - 6)\n */\n firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n month: TuiMonth;\n /**\n * row in a calendar\n */\n rowIndex: number;\n}): TuiDay {\n ngDevMode && console.assert(Number.isInteger(rowIndex));\n ngDevMode && console.assert(tuiInRange(rowIndex, 0, 6));\n ngDevMode && console.assert(Number.isInteger(colIndex));\n ngDevMode && console.assert(tuiInRange(colIndex, 0, DAYS_IN_WEEK));\n\n let day =\n rowIndex * DAYS_IN_WEEK +\n colIndex -\n getMonthStartDaysOffset(month, firstDayOfWeek) +\n 1;\n\n if (day > month.daysCount) {\n day -= month.daysCount;\n month = month.append({month: 1});\n }\n\n if (day <= 0) {\n month = month.append({month: -1});\n day = month.daysCount + day;\n }\n\n return new TuiDay(month.year, month.month, day);\n}\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {map, type Observable} from 'rxjs';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\n\nfunction convertToSundayFirstWeekFormat(\n weekDaysNames: readonly string[],\n): readonly string[] {\n const sundayIndex = weekDaysNames.length - 1;\n\n return [weekDaysNames[sundayIndex] || '', ...weekDaysNames.slice(0, sundayIndex)];\n}\n\n@Pipe({\n name: 'tuiOrderWeekDays',\n})\nexport class TuiOrderWeekDaysPipe implements PipeTransform {\n private readonly options = inject(TUI_CALENDAR_OPTIONS);\n\n public transform(\n mondayFirstWeekDays$: Observable<readonly string[]>,\n ): Observable<readonly string[]> {\n return mondayFirstWeekDays$.pipe(\n map(convertToSundayFirstWeekFormat),\n map((weekDays) => [\n ...weekDays.slice(this.options.weekStart()),\n ...weekDays.slice(0, this.options.weekStart()),\n ]),\n );\n }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiDay, TuiDayRange, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_SHORT_WEEK_DAYS} from '@taiga-ui/core/tokens';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\nimport {TUI_CALENDAR_SHEET_OPTIONS} from './calendar-sheet.options';\nimport {TuiCalendarSheetPipe} from './calendar-sheet.pipe';\nimport {TuiOrderWeekDaysPipe} from './order-week-days.pipe';\n\nexport type TuiMarkerHandler = TuiHandler<TuiDay, [] | [string, string] | [string]>;\n\n@Component({\n selector: 'tui-calendar-sheet',\n imports: [\n AsyncPipe,\n TuiCalendarSheetPipe,\n TuiHovered,\n TuiMapperPipe,\n TuiOrderWeekDaysPipe,\n ],\n templateUrl: './calendar-sheet.template.html',\n styleUrl: './calendar-sheet.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._picking]': 'isRangePicking',\n },\n})\nexport class TuiCalendarSheet {\n private readonly options = inject(TUI_CALENDAR_SHEET_OPTIONS);\n private readonly today = TuiDay.currentLocal();\n\n protected readonly unorderedWeekDays$ = toObservable(inject(TUI_SHORT_WEEK_DAYS));\n protected readonly dayType = inject(TUI_CALENDAR_OPTIONS).dayType;\n\n @Input()\n public month: TuiMonth = TuiMonth.currentLocal();\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<TuiDay> = TUI_FALSE_HANDLER;\n\n @Input()\n public markerHandler: TuiMarkerHandler | null = null;\n\n @Input()\n public value: TuiDay | TuiDayRange | readonly TuiDay[] | null = null;\n\n @Input()\n public hoveredItem: TuiDay | null = null;\n\n @Input()\n public showAdjacent = true;\n\n /**\n * @deprecated use static DI options instead\n * ```\n * tuiCalendarSheetOptionsProvider({rangeMode: true})\n * ```\n * TODO(v5): delete it\n */\n @Input()\n public single = true;\n\n @Output()\n public readonly hoveredItemChange = new EventEmitter<TuiDay | null>();\n\n @Output()\n public readonly dayClick = new EventEmitter<TuiDay>();\n\n /**\n * @deprecated TODO(v5): delete it. It is used nowhere except unit tests\n */\n public itemIsInterval(day: TuiDay): boolean {\n const {value, hoveredItem} = this;\n\n if (!(value instanceof TuiDayRange)) {\n return false;\n }\n\n if (!value.isSingleDay) {\n return value.from.daySameOrBefore(day) && value.to.dayAfter(day);\n }\n\n if (hoveredItem === null) {\n return false;\n }\n\n const range = TuiDayRange.sort(value.from, hoveredItem);\n\n return range.from.daySameOrBefore(day) && range.to.dayAfter(day);\n }\n\n public onItemHovered(item: TuiDay | false): void {\n this.updateHoveredItem(item || null);\n }\n\n public getItemRange(item: TuiDay): 'active' | 'end' | 'middle' | 'start' | null {\n const {value, hoveredItem} = this;\n\n if (!value) {\n return null;\n }\n\n if (value instanceof TuiDay && !this.computedRangeMode) {\n return value.daySame(item) ? 'active' : null;\n }\n\n if (value instanceof TuiDayRange && value.isSingleDay) {\n return value.from.daySame(item) ? 'active' : null;\n }\n\n if (!(value instanceof TuiDay) && !(value instanceof TuiDayRange)) {\n return value.find((day) => day.daySame(item)) ? 'active' : null;\n }\n\n const range = this.getRange(value, hoveredItem);\n\n if (range.isSingleDay && range.from.daySame(item)) {\n return 'active';\n }\n\n if (range.from.daySame(item)) {\n return 'start';\n }\n\n if (range.to.daySame(item)) {\n return 'end';\n }\n\n return range.from.dayBefore(item) && range.to.dayAfter(item) ? 'middle' : null;\n }\n\n protected get computedRangeMode(): boolean {\n return !this.single || this.options.rangeMode;\n }\n\n protected get isRangePicking(): boolean {\n return this.computedRangeMode\n ? this.value instanceof TuiDay\n : /**\n * Only for backward compatibility!\n * TODO(v5): replace with `this.options.rangeMode && this.value instanceof TuiDay`\n */\n this.value instanceof TuiDayRange && this.value.isSingleDay;\n }\n\n protected readonly toMarkers = (\n day: TuiDay,\n today: boolean,\n range: string | null,\n markerHandler: TuiMarkerHandler | null,\n ): [string, string] | [string] | null => {\n if (today || ['active', 'end', 'start'].includes(range || '')) {\n return null;\n }\n\n const markers = markerHandler?.(day);\n\n return markers?.length ? markers : null;\n };\n\n protected itemIsToday(item: TuiDay): boolean {\n return this.today.daySame(item);\n }\n\n protected itemIsUnavailable(item: TuiDay): boolean {\n return !this.month.monthSame(item);\n }\n\n protected onItemClick(item: TuiDay): void {\n this.dayClick.emit(item);\n }\n\n private getRange(\n value: TuiDay | TuiDayRange,\n hoveredItem: TuiDay | null,\n ): TuiDayRange {\n if (value instanceof TuiDay) {\n return TuiDayRange.sort(value, hoveredItem ?? value);\n }\n\n return value.isSingleDay\n ? TuiDayRange.sort(value.from, hoveredItem ?? value.to)\n : value;\n }\n\n private updateHoveredItem(day: TuiDay | null): void {\n if (tuiNullableSame(this.hoveredItem, day, (a, b) => a.daySame(b))) {\n return;\n }\n\n this.hoveredItem = day;\n this.hoveredItemChange.emit(day);\n }\n}\n","<div class=\"t-row t-row_weekday\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div\n class=\"t-cell\"\n [textContent]=\"day\"\n ></div>\n }\n</div>\n@let sheet = month | tuiCalendarSheet: true;\n<div>\n @for (_ of '-'.repeat(sheet.length); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-sheet__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(sheet[rowIndex]?.length ?? 0); track $index) {\n @let item = sheet[rowIndex]?.[$index];\n @if (item && (!itemIsUnavailable(item) || showAdjacent)) {\n <div\n automation-id=\"tui-calendar-sheet__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [attr.data-type]=\"item | tuiMapper: dayType\"\n [class.t-cell_disabled]=\"disabledItemHandler(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [class.t-cell_unavailable]=\"itemIsUnavailable(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event && item)\"\n >\n {{ item.day }}\n @if (\n item | tuiMapper: toMarkers : itemIsToday(item) : getItemRange(item) : markerHandler;\n as markers\n ) {\n <div class=\"t-dots\">\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[0]\"\n ></div>\n @if (markers.length > 1) {\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[1] || ''\"\n ></div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiMonth,\n type TuiMonthLike,\n type TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiSpinButton} from '@taiga-ui/core/components/spin-button';\nimport {TUI_MONTHS} from '@taiga-ui/core/tokens';\n\n@Component({\n selector: 'tui-calendar-spin',\n imports: [TuiLink, TuiSpinButton],\n templateUrl: './calendar-spin.template.html',\n styleUrl: './calendar-spin.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiCalendarSpin {\n protected readonly months = inject(TUI_MONTHS);\n\n @Input()\n public value = TuiMonth.currentLocal();\n\n @Input()\n public min: TuiMonth = TUI_FIRST_DAY;\n\n @Input()\n public max: TuiMonth = TUI_LAST_DAY;\n\n @Output()\n public readonly valueChange = new EventEmitter<TuiMonth>();\n\n @Output()\n public readonly yearClick = new EventEmitter<TuiYear>();\n\n protected onYearClick(): void {\n this.yearClick.next(this.value);\n }\n\n protected append(date: TuiMonthLike): void {\n const value = this.value.append(date);\n\n if (this.min.monthSameOrAfter(value)) {\n this.updateValue(this.min);\n } else {\n this.updateValue(this.max.monthSameOrBefore(value) ? this.max : value);\n }\n }\n\n private updateValue(value: TuiMonth): void {\n if (this.value.monthSame(value)) {\n return;\n }\n\n this.value = value;\n this.valueChange.emit(value);\n }\n}\n","<tui-spin-button\n [focusable]=\"false\"\n [leftDisabled]=\"value.monthSameOrBefore(min)\"\n [rightDisabled]=\"value.monthSameOrAfter(max)\"\n (leftClick)=\"append({month: -1})\"\n (rightClick)=\"append({month: 1})\"\n>\n {{ months()[value.month] }}\n @if (min.year === max.year) {\n {{ value.formattedYear }}\n } @else {\n <button\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"onYearClick()\"\n >\n {{ value.formattedYear }}\n </button>\n }\n</tui-spin-button>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n inject,\n Input,\n Output,\n signal,\n} from '@angular/core';\nimport {\n MAX_YEAR,\n MIN_YEAR,\n TuiDay,\n type TuiDayRange,\n TuiMonth,\n TuiMonthRange,\n TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiIsNumber} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiScrollIntoView} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\n\nconst LIMIT = 100;\nconst ITEMS_IN_ROW = 4;\nconst CURRENT_YEAR = TuiMonth.currentLocal().year;\n\n@Component({\n selector: 'tui-calendar-year',\n imports: [TuiHovered, TuiScrollIntoView],\n templateUrl: './calendar-year.template.html',\n styleUrl: './calendar-year.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiCalendarYear)],\n host: {\n '[class._picking]': 'isRangePicking()',\n },\n})\nexport class TuiCalendarYear {\n private readonly hoveredItem = signal<number | null>(null);\n\n protected readonly isRangePicking = computed(\n (x = this.value()) =>\n this.rangeMode && (x instanceof TuiDay || x instanceof TuiMonth),\n );\n\n @Input()\n public rangeMode = false;\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<number> =\n inject(TUI_ITEMS_HANDLERS).disabledItemHandler();\n\n @Output()\n public readonly yearClick = new EventEmitter<number>();\n\n public readonly initialItem = signal<number>(CURRENT_YEAR);\n public readonly min = signal(MIN_YEAR);\n public readonly max = signal(MAX_YEAR);\n public readonly value = signal<\n TuiDayRange | TuiMonthRange | TuiYear | number | readonly TuiDay[] | null\n >(null);\n\n // TODO(v5): use signal inputs\n @Input({alias: 'initialItem', transform: (x: number | null) => x ?? CURRENT_YEAR})\n public set initialItemSetter(x: number | null) {\n this.initialItem.set(x ?? CURRENT_YEAR);\n }\n\n // TODO(v5): use signal inputs\n @Input({alias: 'min', transform: (x: number | null) => x ?? MIN_YEAR})\n public set minSetter(x: number) {\n this.min.set(x);\n }\n\n // TODO(v5): use signal inputs\n @Input({alias: 'max', transform: (x: number | null) => x ?? MAX_YEAR})\n public set maxSetter(x: number) {\n this.max.set(x);\n }\n\n // TODO(v5): use signal inputs\n @Input('value')\n public set valueSetter(\n x: TuiDayRange | TuiMonthRange | TuiYear | number | readonly TuiDay[] | null,\n ) {\n this.value.set(x);\n }\n\n public isDisabled(item: number): boolean {\n return (\n (this.max() && this.max() < item) ||\n (this.min() && this.min() > item) ||\n this.disabledItemHandler(item)\n );\n }\n\n public getItemRange(item: number): 'active' | 'end' | 'middle' | 'start' | null {\n const value = this.value();\n const hoveredItem = this.hoveredItem();\n\n if (value instanceof TuiYear && value.year === item) {\n return 'active';\n }\n\n if (tuiIsNumber(value)) {\n return value === item ? 'active' : null;\n }\n\n if (!(value instanceof TuiMonthRange) && !(value instanceof TuiYear)) {\n return value?.find((day) => day.year === item) ? 'active' : null;\n }\n\n const hovered = this.isRangePicking() ? hoveredItem : null;\n const from = 'from' in value ? value.from?.year : value.year;\n const to = 'from' in value ? value.to.year : value.year;\n\n const min = Math.min(from, hovered ?? to);\n const max = Math.max(from, hovered ?? to);\n\n if (min === max && from === to && from === item) {\n return 'active';\n }\n\n if (min === item) {\n return 'start';\n }\n\n if (max === item) {\n return 'end';\n }\n\n return min < item && item < max ? 'middle' : null;\n }\n\n public onItemHovered(hovered: boolean, item: number): void {\n this.hoveredItem.set(hovered ? item : null);\n }\n\n protected get rows(): number {\n return Math.ceil((this.calculatedMax - this.calculatedMin) / ITEMS_IN_ROW);\n }\n\n protected scrollItemIntoView(item: number): boolean {\n return this.initialItem() === item;\n }\n\n protected getItem(rowIndex: number, colIndex: number): number {\n return rowIndex * ITEMS_IN_ROW + colIndex + this.calculatedMin;\n }\n\n protected itemIsToday(item: number): boolean {\n return CURRENT_YEAR === item;\n }\n\n private get calculatedMin(): number {\n const initial = this.initialItem() - LIMIT;\n const min = this.min() ?? MIN_YEAR;\n\n return min > initial ? min : initial;\n }\n\n private get calculatedMax(): number {\n const initial = this.initialItem() + LIMIT;\n const max = this.max() ?? MAX_YEAR;\n\n return max < initial ? max + 1 : initial;\n }\n}\n","@for (_ of '-'.repeat(rows); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-year__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(4); track $index) {\n @let item = getItem(rowIndex, $index);\n <div\n automation-id=\"tui-calendar-year__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"isDisabled(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [tuiScrollIntoView]=\"scrollItemIntoView(item)\"\n (click)=\"yearClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ item }}\n </div>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n Output,\n} from '@angular/core';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TUI_LAST_DISPLAYED_DAY,\n TuiDay,\n type TuiDayRange,\n TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiMapper} from '@taiga-ui/cdk/types';\nimport {tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {Subject} from 'rxjs';\n\nimport {TuiCalendarSheet, type TuiMarkerHandler} from './calendar-sheet.component';\nimport {TUI_CALENDAR_SHEET_OPTIONS} from './calendar-sheet.options';\nimport {TuiCalendarSpin} from './calendar-spin.component';\nimport {TuiCalendarYear} from './calendar-year.component';\n\n@Component({\n selector: 'tui-calendar',\n imports: [\n TuiCalendarSheet,\n TuiCalendarSpin,\n TuiCalendarYear,\n TuiMapperPipe,\n TuiScrollbar,\n ],\n templateUrl: './calendar.template.html',\n styleUrl: './calendar.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiCalendar)],\n host: {\n '(pointerdown.prevent.zoneless)': '0',\n },\n})\nexport class TuiCalendar {\n private readonly cdr = inject(ChangeDetectorRef);\n private day: TuiDay | TuiDayRange | readonly TuiDay[] | null = null;\n private view: 'month' | 'year' = 'month';\n protected readonly options = inject(TUI_CALENDAR_SHEET_OPTIONS);\n\n @Input()\n public month: TuiMonth = TuiMonth.currentLocal();\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<TuiDay> =\n inject(TUI_ITEMS_HANDLERS).disabledItemHandler();\n\n @Input()\n public min: TuiDay | null = TUI_FIRST_DAY;\n\n @Input()\n public max: TuiDay | null = TUI_LAST_DAY;\n\n @Input()\n public minViewedMonth: TuiMonth | null = TUI_FIRST_DAY;\n\n @Input()\n public maxViewedMonth: TuiMonth | null = TUI_LAST_DAY;\n\n @Input()\n public hoveredItem: TuiDay | null = null;\n\n @Input()\n public showAdjacent = true;\n\n @Input()\n public markerHandler: TuiMarkerHandler | null = null;\n\n @Output()\n public readonly dayClick = new EventEmitter<TuiDay>();\n\n @Output()\n public readonly monthChange = new EventEmitter<TuiMonth>();\n\n @Output()\n public readonly hoveredItemChange = new EventEmitter<TuiDay | null>();\n\n /** @deprecated for private use only until Calendars are refactored */\n public readonly valueChange = new Subject<TuiDay>();\n\n @Input()\n public set value(value: TuiDay | TuiDayRange | readonly TuiDay[] | null) {\n this.cdr.markForCheck();\n this.day = value;\n\n if (\n this.showAdjacent &&\n value instanceof TuiDay &&\n value.daySameOrBefore(TUI_LAST_DISPLAYED_DAY)\n ) {\n this.month = value;\n }\n }\n\n @Input()\n public set initialView(view: 'month' | 'year') {\n this.view = view;\n }\n\n public get value(): TuiDay | TuiDayRange | readonly TuiDay[] | null {\n return this.day;\n }\n\n public onPaginationValueChange(month: TuiMonth): void {\n this.updateViewedMonth(month);\n }\n\n public onDayClick(day: TuiDay): void {\n this.dayClick.emit(day);\n this.valueChange.next(day);\n }\n\n public onHoveredItemChange(day: TuiDay | null): void {\n this.updateHoveredDay(day);\n }\n\n protected get computedMin(): TuiDay {\n return this.min ?? TUI_FIRST_DAY;\n }\n\n protected get computedMax(): TuiDay {\n return this.max ?? TUI_LAST_DAY;\n }\n\n protected get computedMinViewedMonth(): TuiMonth {\n const min = this.computedMin;\n const minViewed = this.minViewedMonth ?? TUI_FIRST_DAY;\n\n return minViewed.monthSameOrAfter(min) ? minViewed : min;\n }\n\n protected get computedMaxViewedMonth(): TuiMonth {\n const max = this.computedMax;\n const maxViewed = this.maxViewedMonth ?? TUI_LAST_DAY;\n\n return maxViewed.monthSameOrBefore(max) ? maxViewed : max;\n }\n\n protected get isInYearView(): boolean {\n return this.view === 'year';\n }\n\n protected readonly disabledItemHandlerMapper: TuiMapper<\n [TuiBooleanHandler<TuiDay>, TuiDay, TuiDay],\n TuiBooleanHandler<TuiDay>\n > = (disabledItemHandler, min, max) => (item) =>\n item.dayBefore(min) || item.dayAfter(max) || disabledItemHandler(item);\n\n protected onPaginationYearClick(): void {\n this.view = 'year';\n }\n\n protected onPickerYearClick(year: number): void {\n this.view = 'month';\n this.updateViewedMonth(new TuiMonth(year, this.month.month));\n }\n\n private updateViewedMonth(month: TuiMonth): void {\n if (this.month.monthSame(month)) {\n return;\n }\n\n this.month = month;\n this.monthChange.emit(month);\n }\n\n private updateHoveredDay(day: TuiDay | null): void {\n if (tuiNullableSame(this.hoveredItem, day, (a, b) => a.daySame(b))) {\n return;\n }\n\n this.hoveredItem = day;\n this.hoveredItemChange.emit(day);\n }\n}\n","@if (isInYearView) {\n <tui-scrollbar\n automation-id=\"tui-calendar__scrollbar\"\n class=\"t-scrollbar\"\n >\n <tui-calendar-year\n automation-id=\"tui-calendar__year\"\n [initialItem]=\"month.year\"\n [max]=\"computedMax.year\"\n [min]=\"computedMin.year\"\n [rangeMode]=\"options.rangeMode\"\n [value]=\"value\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n </tui-scrollbar>\n} @else {\n <tui-calendar-spin\n automation-id=\"tui-calendar__pagination\"\n class=\"t-pagination\"\n [max]=\"computedMaxViewedMonth\"\n [min]=\"computedMinViewedMonth\"\n [value]=\"month\"\n (valueChange)=\"onPaginationValueChange($event)\"\n (yearClick)=\"onPaginationYearClick()\"\n />\n <tui-calendar-sheet\n automation-id=\"tui-calendar__calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : computedMin : computedMax\"\n [hoveredItem]=\"hoveredItem\"\n [markerHandler]=\"markerHandler\"\n [month]=\"month\"\n [showAdjacent]=\"showAdjacent\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n (hoveredItemChange)=\"onHoveredItemChange($event)\"\n />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|