@taiga-ui/experimental 5.18.0 → 5.19.0

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.
@@ -1,5 +1,5 @@
1
1
  import { AbstractTuiCalendar } from '@taiga-ui/core/components/calendar';
2
- export declare class TuiDatePickerHeader {
2
+ export declare class TuiCalendarHeader {
3
3
  protected readonly picker: AbstractTuiCalendar<import("@taiga-ui/cdk/date-time").TuiDay | import("@taiga-ui/cdk/date-time").TuiDayRange | readonly import("@taiga-ui/cdk/date-time").TuiDay[]>;
4
4
  protected readonly dropdown: import("@angular/core").ElementRef<Element> | null;
5
5
  readonly mode: import("@angular/core").InputSignal<"multi" | "range" | "single" | undefined>;
@@ -8,7 +8,7 @@ type DatePicker<T> = T extends 'single' ? TuiDay : T extends 'multi' ? readonly
8
8
  /**
9
9
  * @deprecated: work in progress, do not use!
10
10
  */
11
- export declare class TuiDatePicker<T extends 'multi' | 'range' | 'single' = 'single'> extends AbstractTuiCalendar<DatePicker<T>> {
11
+ export declare class TuiCalendar<T extends 'multi' | 'range' | 'single' = 'single'> extends AbstractTuiCalendar<DatePicker<T>> {
12
12
  protected readonly options: import("@taiga-ui/experimental/components/month").TuiMonthOptions;
13
13
  protected readonly carousel: import("@angular/core").Signal<TuiCarouselComponent | undefined>;
14
14
  protected readonly icons: import("@taiga-ui/core/tokens").TuiCommonIcons;
@@ -43,7 +43,7 @@ export declare class TuiDatePicker<T extends 'multi' | 'range' | 'single' = 'sin
43
43
  protected onYear(year: number): void;
44
44
  protected onMonth(month: TuiMonth): void;
45
45
  protected onDay(day: TuiDay): void;
46
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiDatePicker<any>, never>;
47
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiDatePicker<any>, "tui-date-picker", never, { "view": { "alias": "view"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "contentDay": { "alias": "contentDay"; "required": false; "isSignal": true; }; "contentMonth": { "alias": "contentMonth"; "required": false; "isSignal": true; }; "contentYear": { "alias": "contentYear"; "required": false; "isSignal": true; }; "dayType": { "alias": "dayType"; "required": false; "isSignal": true; }; "showAdjacent": { "alias": "showAdjacent"; "required": false; "isSignal": true; }; "showWeek": { "alias": "showWeek"; "required": false; "isSignal": true; }; }, { "view": "viewChange"; }, never, never, true, never>;
46
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiCalendar<any>, never>;
47
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiCalendar<any>, "tui-calendar[new]", never, { "view": { "alias": "view"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "contentDay": { "alias": "contentDay"; "required": false; "isSignal": true; }; "contentMonth": { "alias": "contentMonth"; "required": false; "isSignal": true; }; "contentYear": { "alias": "contentYear"; "required": false; "isSignal": true; }; "dayType": { "alias": "dayType"; "required": false; "isSignal": true; }; "showAdjacent": { "alias": "showAdjacent"; "required": false; "isSignal": true; }; "showWeek": { "alias": "showWeek"; "required": false; "isSignal": true; }; }, { "view": "viewChange"; }, never, never, true, never>;
48
48
  }
49
49
  export {};
@@ -0,0 +1,2 @@
1
+ export * from './calendar.component';
2
+ export * from './calendar-header.component';
@@ -1,5 +1,5 @@
1
+ export * from '@taiga-ui/experimental/components/calendar';
1
2
  export * from '@taiga-ui/experimental/components/data-grid';
2
- export * from '@taiga-ui/experimental/components/date-picker';
3
3
  export * from '@taiga-ui/experimental/components/file';
4
4
  export * from '@taiga-ui/experimental/components/month';
5
5
  export * from '@taiga-ui/experimental/components/popout';
@@ -25,16 +25,16 @@ import { TuiInputDateMulti } from '@taiga-ui/kit/components/input-date-multi';
25
25
  import { TuiInputDateRange } from '@taiga-ui/kit/components/input-date-range';
26
26
  import * as i2 from '@taiga-ui/cdk/directives/item';
27
27
 
28
- let TuiDatePickerHeader = class TuiDatePickerHeader {
28
+ let TuiCalendarHeader = class TuiCalendarHeader {
29
29
  constructor() {
30
30
  this.picker = inject(AbstractTuiCalendar);
31
31
  this.dropdown = inject(TUI_DROPDOWN_HOST, { optional: true });
32
32
  this.mode = input();
33
33
  }
34
34
  };
35
- TuiDatePickerHeader = __decorate([
35
+ TuiCalendarHeader = __decorate([
36
36
  Component({
37
- selector: 'tui-date-picker-header',
37
+ selector: 'tui-calendar-header',
38
38
  imports: [FormsModule, TuiInputDate, TuiInputDateMulti, TuiInputDateRange],
39
39
  template: `
40
40
  @switch (mode()) {
@@ -90,12 +90,12 @@ TuiDatePickerHeader = __decorate([
90
90
  changeDetection: ChangeDetectionStrategy.OnPush,
91
91
  providers: [tuiInputDateOptionsProvider({ icon: '' })],
92
92
  })
93
- ], TuiDatePickerHeader);
93
+ ], TuiCalendarHeader);
94
94
 
95
95
  /**
96
96
  * @deprecated: work in progress, do not use!
97
97
  */
98
- class TuiDatePicker extends AbstractTuiCalendar {
98
+ class TuiCalendar extends AbstractTuiCalendar {
99
99
  constructor() {
100
100
  super(...arguments);
101
101
  this.options = inject(TUI_MONTH_OPTIONS);
@@ -178,25 +178,25 @@ class TuiDatePicker extends AbstractTuiCalendar {
178
178
  this.value.set(day);
179
179
  }
180
180
  }
181
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiDatePicker, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
182
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiDatePicker, isStandalone: true, selector: "tui-date-picker", inputs: { view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, contentDay: { classPropertyName: "contentDay", publicName: "contentDay", isSignal: true, isRequired: false, transformFunction: null }, contentMonth: { classPropertyName: "contentMonth", publicName: "contentMonth", isSignal: true, isRequired: false, transformFunction: null }, contentYear: { classPropertyName: "contentYear", publicName: "contentYear", isSignal: true, isRequired: false, transformFunction: null }, dayType: { classPropertyName: "dayType", publicName: "dayType", isSignal: true, isRequired: false, transformFunction: null }, showAdjacent: { classPropertyName: "showAdjacent", publicName: "showAdjacent", isSignal: true, isRequired: false, transformFunction: null }, showWeek: { classPropertyName: "showWeek", publicName: "showWeek", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { view: "viewChange" }, providers: [
183
- tuiAsAuxiliary(TuiDatePicker),
184
- tuiProvide(AbstractTuiCalendar, TuiDatePicker),
181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiCalendar, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
182
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiCalendar, isStandalone: true, selector: "tui-calendar[new]", inputs: { view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, contentDay: { classPropertyName: "contentDay", publicName: "contentDay", isSignal: true, isRequired: false, transformFunction: null }, contentMonth: { classPropertyName: "contentMonth", publicName: "contentMonth", isSignal: true, isRequired: false, transformFunction: null }, contentYear: { classPropertyName: "contentYear", publicName: "contentYear", isSignal: true, isRequired: false, transformFunction: null }, dayType: { classPropertyName: "dayType", publicName: "dayType", isSignal: true, isRequired: false, transformFunction: null }, showAdjacent: { classPropertyName: "showAdjacent", publicName: "showAdjacent", isSignal: true, isRequired: false, transformFunction: null }, showWeek: { classPropertyName: "showWeek", publicName: "showWeek", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { view: "viewChange" }, providers: [
183
+ tuiAsAuxiliary(TuiCalendar),
184
+ tuiProvide(AbstractTuiCalendar, TuiCalendar),
185
185
  tuiButtonOptionsProvider({ size: 'xs', appearance: 'flat' }),
186
186
  tuiTextfieldOptionsProvider({ size: signal('m'), cleaner: signal(false) }),
187
- ], viewQueries: [{ propertyName: "carousel", first: true, predicate: TuiCarouselComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<header class=\"t-header\">\n @if (view() !== 'year') {\n <button\n appearance=\"\"\n tabindex=\"-1\"\n tuiLink\n type=\"button\"\n class=\"t-button\"\n [textContent]=\"button()\"\n [tuiChevron]=\"false\"\n (click)=\"view.set(view() === 'day' ? 'month' : 'year')\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n ></button>\n } @else {\n @let years = month().year + (carousel()?.index() || 0) * 12 - 6 | tuiMapper: getItems;\n <b>{{ years[0] }}-{{ years[years.length - 1] }}</b>\n }\n <button\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-chevron\"\n [disabled]=\"start()\"\n [iconStart]=\"icons.decrement\"\n (click)=\"onSpin(-1)\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n >\n {{ texts()[0] }}\n </button>\n <button\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-chevron\"\n [disabled]=\"end()\"\n [iconStart]=\"icons.increment\"\n (click)=\"onSpin(1)\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n >\n {{ texts()[1] }}\n </button>\n\n @if (dropdown?.nativeElement?.matches(':not(input)')) {\n <tui-date-picker-header [mode]=\"mode()\" />\n }\n</header>\n<tui-elastic-container class=\"t-slides\">\n <section tuiSlides>\n @switch (view()) {\n @case ('day') {\n <tui-carousel\n [index]=\"index()\"\n [max]=\"max().year * 12 + max().month\"\n [min]=\"min().year * 12 + min().month\"\n (indexChange)=\"month.set(getMonth($event))\"\n >\n <tui-month\n *tuiItem=\"let current\"\n class=\"t-calendar\"\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"current | tuiMapper: getMonth\"\n [showAdjacent]=\"showAdjacent()\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n />\n </tui-carousel>\n }\n\n @case ('month') {\n <tui-data-grid\n class=\"t-grid\"\n [content]=\"contentMonth() ?? content()\"\n [disabledItemHandler]=\"disabledMonth()\"\n [items]=\"year()\"\n [value]=\"months()\"\n (pick)=\"onMonth($event)\"\n />\n }\n\n @case ('year') {\n <tui-carousel\n [max]=\"yearMax()\"\n [min]=\"yearMin()\"\n >\n <tui-data-grid\n *tuiItem=\"let offset\"\n class=\"t-grid\"\n [content]=\"contentYear()\"\n [disabledItemHandler]=\"disabledYear()\"\n [items]=\"month().year + offset * 12 - 6 | tuiMapper: getItems\"\n [value]=\"years()\"\n (pick)=\"onYear($event)\"\n />\n </tui-carousel>\n }\n }\n </section>\n</tui-elastic-container>\n", styles: [":host{display:block;inline-size:calc(20rem * var(--tui-font-scale));min-inline-size:calc(20rem * var(--tui-font-scale));flex:1;box-sizing:content-box}:host-context(tui-dropdown){padding:.5rem}:host-context(tui-dropdown):not(:only-child){box-shadow:0 0 0 1px var(--tui-border-normal)}.t-header{position:relative;display:flex;gap:.25rem;align-items:center;justify-content:flex-end;padding:.5rem .75rem 1rem;font:var(--tui-typography-ui-l)}.t-header:focus-within{visibility:hidden}.t-header :first-child{margin-inline-end:auto}.t-button{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:var(--tui-curve-productive-standard);font:inherit;font-weight:700;text-decoration:none}@media(hover:hover)and (pointer:fine){.t-button:hover{opacity:var(--tui-disabled-opacity)}}.t-chevron{transform:scaleX(var(--tui-inline))}.t-grid{padding:0 .5rem .5rem}.t-slides{margin:0 -.5rem}.t-calendar{padding:0 .5rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i1.TuiCarouselComponent, selector: "tui-carousel", inputs: ["index", "min", "max"], outputs: ["indexChange"] }, { kind: "directive", type: i2.TuiItem, selector: "[tuiItem]" }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: TuiDataGrid, selector: "tui-data-grid", inputs: ["items", "content", "value", "disabledItemHandler"], outputs: ["pick"] }, { kind: "component", type: TuiDatePickerHeader, selector: "tui-date-picker-header", inputs: ["mode"] }, { kind: "component", type: TuiElasticContainer, selector: "tui-elastic-container" }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]" }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "component", type:
187
+ ], viewQueries: [{ propertyName: "carousel", first: true, predicate: TuiCarouselComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<header class=\"t-header\">\n @if (view() !== 'year') {\n <button\n appearance=\"\"\n tabindex=\"-1\"\n tuiLink\n type=\"button\"\n class=\"t-button\"\n [textContent]=\"button()\"\n [tuiChevron]=\"false\"\n (click)=\"view.set(view() === 'day' ? 'month' : 'year')\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n ></button>\n } @else {\n @let years = month().year + (carousel()?.index() || 0) * 12 - 6 | tuiMapper: getItems;\n <b>{{ years[0] }}-{{ years[years.length - 1] }}</b>\n }\n <button\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-chevron\"\n [disabled]=\"start()\"\n [iconStart]=\"icons.decrement\"\n (click)=\"onSpin(-1)\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n >\n {{ texts()[0] }}\n </button>\n <button\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-chevron\"\n [disabled]=\"end()\"\n [iconStart]=\"icons.increment\"\n (click)=\"onSpin(1)\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n >\n {{ texts()[1] }}\n </button>\n\n @if (dropdown?.nativeElement?.matches(':not(input)')) {\n <tui-calendar-header [mode]=\"mode()\" />\n }\n</header>\n<tui-elastic-container class=\"t-slides\">\n <section tuiSlides>\n @switch (view()) {\n @case ('day') {\n <tui-carousel\n [index]=\"index()\"\n [max]=\"max().year * 12 + max().month\"\n [min]=\"min().year * 12 + min().month\"\n (indexChange)=\"month.set(getMonth($event))\"\n >\n <tui-month\n *tuiItem=\"let current\"\n class=\"t-calendar\"\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"current | tuiMapper: getMonth\"\n [showAdjacent]=\"showAdjacent()\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n />\n </tui-carousel>\n }\n\n @case ('month') {\n <tui-data-grid\n class=\"t-grid\"\n [content]=\"contentMonth() ?? content()\"\n [disabledItemHandler]=\"disabledMonth()\"\n [items]=\"year()\"\n [value]=\"months()\"\n (pick)=\"onMonth($event)\"\n />\n }\n\n @case ('year') {\n <tui-carousel\n [max]=\"yearMax()\"\n [min]=\"yearMin()\"\n >\n <tui-data-grid\n *tuiItem=\"let offset\"\n class=\"t-grid\"\n [content]=\"contentYear()\"\n [disabledItemHandler]=\"disabledYear()\"\n [items]=\"month().year + offset * 12 - 6 | tuiMapper: getItems\"\n [value]=\"years()\"\n (pick)=\"onYear($event)\"\n />\n </tui-carousel>\n }\n }\n </section>\n</tui-elastic-container>\n", styles: [":host{display:block;inline-size:calc(20rem * var(--tui-font-scale));min-inline-size:calc(20rem * var(--tui-font-scale));flex:1;box-sizing:content-box}:host-context(tui-dropdown){padding:.5rem}:host-context(tui-dropdown):not(:only-child){box-shadow:0 0 0 1px var(--tui-border-normal)}.t-header{position:relative;display:flex;gap:.25rem;align-items:center;justify-content:flex-end;padding:.5rem .75rem 1rem;font:var(--tui-typography-ui-l)}.t-header:focus-within{visibility:hidden}.t-header :first-child{margin-inline-end:auto}.t-button{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:var(--tui-curve-productive-standard);font:inherit;font-weight:700;text-decoration:none}@media(hover:hover)and (pointer:fine){.t-button:hover{opacity:var(--tui-disabled-opacity)}}.t-chevron{transform:scaleX(var(--tui-inline))}.t-grid{padding:0 .5rem .5rem}.t-slides{margin:0 -.5rem}.t-calendar{padding:0 .5rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiCalendarHeader, selector: "tui-calendar-header", inputs: ["mode"] }, { kind: "component", type: i1.TuiCarouselComponent, selector: "tui-carousel", inputs: ["index", "min", "max"], outputs: ["indexChange"] }, { kind: "directive", type: i2.TuiItem, selector: "[tuiItem]" }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: TuiDataGrid, selector: "tui-data-grid", inputs: ["items", "content", "value", "disabledItemHandler"], outputs: ["pick"] }, { kind: "component", type: TuiElasticContainer, selector: "tui-elastic-container" }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]" }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "component", type:
188
188
  // eslint-disable-next-line @taiga-ui/experience-next/short-tui-imports
189
189
  TuiMonthComponent, selector: "tui-month", inputs: ["month", "value", "content", "dayType", "showAdjacent", "showWeek", "disabledItemHandler"], outputs: ["pick"] }, { kind: "directive", type: TuiSlides, selector: "[tuiSlides]", inputs: ["tuiSlides"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
190
190
  }
191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiDatePicker, decorators: [{
191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiCalendar, decorators: [{
192
192
  type: Component,
193
- args: [{ selector: 'tui-date-picker', imports: [
193
+ args: [{ selector: 'tui-calendar[new]', imports: [
194
194
  FormsModule,
195
195
  TuiButton,
196
+ TuiCalendarHeader,
196
197
  TuiCarousel,
197
198
  TuiChevron,
198
199
  TuiDataGrid,
199
- TuiDatePickerHeader,
200
200
  TuiElasticContainer,
201
201
  TuiLink,
202
202
  TuiMapperPipe,
@@ -204,16 +204,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
204
204
  TuiMonthComponent,
205
205
  TuiSlides,
206
206
  ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
207
- tuiAsAuxiliary(TuiDatePicker),
208
- tuiProvide(AbstractTuiCalendar, TuiDatePicker),
207
+ tuiAsAuxiliary(TuiCalendar),
208
+ tuiProvide(AbstractTuiCalendar, TuiCalendar),
209
209
  tuiButtonOptionsProvider({ size: 'xs', appearance: 'flat' }),
210
210
  tuiTextfieldOptionsProvider({ size: signal('m'), cleaner: signal(false) }),
211
- ], template: "<header class=\"t-header\">\n @if (view() !== 'year') {\n <button\n appearance=\"\"\n tabindex=\"-1\"\n tuiLink\n type=\"button\"\n class=\"t-button\"\n [textContent]=\"button()\"\n [tuiChevron]=\"false\"\n (click)=\"view.set(view() === 'day' ? 'month' : 'year')\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n ></button>\n } @else {\n @let years = month().year + (carousel()?.index() || 0) * 12 - 6 | tuiMapper: getItems;\n <b>{{ years[0] }}-{{ years[years.length - 1] }}</b>\n }\n <button\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-chevron\"\n [disabled]=\"start()\"\n [iconStart]=\"icons.decrement\"\n (click)=\"onSpin(-1)\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n >\n {{ texts()[0] }}\n </button>\n <button\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-chevron\"\n [disabled]=\"end()\"\n [iconStart]=\"icons.increment\"\n (click)=\"onSpin(1)\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n >\n {{ texts()[1] }}\n </button>\n\n @if (dropdown?.nativeElement?.matches(':not(input)')) {\n <tui-date-picker-header [mode]=\"mode()\" />\n }\n</header>\n<tui-elastic-container class=\"t-slides\">\n <section tuiSlides>\n @switch (view()) {\n @case ('day') {\n <tui-carousel\n [index]=\"index()\"\n [max]=\"max().year * 12 + max().month\"\n [min]=\"min().year * 12 + min().month\"\n (indexChange)=\"month.set(getMonth($event))\"\n >\n <tui-month\n *tuiItem=\"let current\"\n class=\"t-calendar\"\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"current | tuiMapper: getMonth\"\n [showAdjacent]=\"showAdjacent()\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n />\n </tui-carousel>\n }\n\n @case ('month') {\n <tui-data-grid\n class=\"t-grid\"\n [content]=\"contentMonth() ?? content()\"\n [disabledItemHandler]=\"disabledMonth()\"\n [items]=\"year()\"\n [value]=\"months()\"\n (pick)=\"onMonth($event)\"\n />\n }\n\n @case ('year') {\n <tui-carousel\n [max]=\"yearMax()\"\n [min]=\"yearMin()\"\n >\n <tui-data-grid\n *tuiItem=\"let offset\"\n class=\"t-grid\"\n [content]=\"contentYear()\"\n [disabledItemHandler]=\"disabledYear()\"\n [items]=\"month().year + offset * 12 - 6 | tuiMapper: getItems\"\n [value]=\"years()\"\n (pick)=\"onYear($event)\"\n />\n </tui-carousel>\n }\n }\n </section>\n</tui-elastic-container>\n", styles: [":host{display:block;inline-size:calc(20rem * var(--tui-font-scale));min-inline-size:calc(20rem * var(--tui-font-scale));flex:1;box-sizing:content-box}:host-context(tui-dropdown){padding:.5rem}:host-context(tui-dropdown):not(:only-child){box-shadow:0 0 0 1px var(--tui-border-normal)}.t-header{position:relative;display:flex;gap:.25rem;align-items:center;justify-content:flex-end;padding:.5rem .75rem 1rem;font:var(--tui-typography-ui-l)}.t-header:focus-within{visibility:hidden}.t-header :first-child{margin-inline-end:auto}.t-button{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:var(--tui-curve-productive-standard);font:inherit;font-weight:700;text-decoration:none}@media(hover:hover)and (pointer:fine){.t-button:hover{opacity:var(--tui-disabled-opacity)}}.t-chevron{transform:scaleX(var(--tui-inline))}.t-grid{padding:0 .5rem .5rem}.t-slides{margin:0 -.5rem}.t-calendar{padding:0 .5rem}\n"] }]
211
+ ], template: "<header class=\"t-header\">\n @if (view() !== 'year') {\n <button\n appearance=\"\"\n tabindex=\"-1\"\n tuiLink\n type=\"button\"\n class=\"t-button\"\n [textContent]=\"button()\"\n [tuiChevron]=\"false\"\n (click)=\"view.set(view() === 'day' ? 'month' : 'year')\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n ></button>\n } @else {\n @let years = month().year + (carousel()?.index() || 0) * 12 - 6 | tuiMapper: getItems;\n <b>{{ years[0] }}-{{ years[years.length - 1] }}</b>\n }\n <button\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-chevron\"\n [disabled]=\"start()\"\n [iconStart]=\"icons.decrement\"\n (click)=\"onSpin(-1)\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n >\n {{ texts()[0] }}\n </button>\n <button\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-chevron\"\n [disabled]=\"end()\"\n [iconStart]=\"icons.increment\"\n (click)=\"onSpin(1)\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n >\n {{ texts()[1] }}\n </button>\n\n @if (dropdown?.nativeElement?.matches(':not(input)')) {\n <tui-calendar-header [mode]=\"mode()\" />\n }\n</header>\n<tui-elastic-container class=\"t-slides\">\n <section tuiSlides>\n @switch (view()) {\n @case ('day') {\n <tui-carousel\n [index]=\"index()\"\n [max]=\"max().year * 12 + max().month\"\n [min]=\"min().year * 12 + min().month\"\n (indexChange)=\"month.set(getMonth($event))\"\n >\n <tui-month\n *tuiItem=\"let current\"\n class=\"t-calendar\"\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"current | tuiMapper: getMonth\"\n [showAdjacent]=\"showAdjacent()\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n />\n </tui-carousel>\n }\n\n @case ('month') {\n <tui-data-grid\n class=\"t-grid\"\n [content]=\"contentMonth() ?? content()\"\n [disabledItemHandler]=\"disabledMonth()\"\n [items]=\"year()\"\n [value]=\"months()\"\n (pick)=\"onMonth($event)\"\n />\n }\n\n @case ('year') {\n <tui-carousel\n [max]=\"yearMax()\"\n [min]=\"yearMin()\"\n >\n <tui-data-grid\n *tuiItem=\"let offset\"\n class=\"t-grid\"\n [content]=\"contentYear()\"\n [disabledItemHandler]=\"disabledYear()\"\n [items]=\"month().year + offset * 12 - 6 | tuiMapper: getItems\"\n [value]=\"years()\"\n (pick)=\"onYear($event)\"\n />\n </tui-carousel>\n }\n }\n </section>\n</tui-elastic-container>\n", styles: [":host{display:block;inline-size:calc(20rem * var(--tui-font-scale));min-inline-size:calc(20rem * var(--tui-font-scale));flex:1;box-sizing:content-box}:host-context(tui-dropdown){padding:.5rem}:host-context(tui-dropdown):not(:only-child){box-shadow:0 0 0 1px var(--tui-border-normal)}.t-header{position:relative;display:flex;gap:.25rem;align-items:center;justify-content:flex-end;padding:.5rem .75rem 1rem;font:var(--tui-typography-ui-l)}.t-header:focus-within{visibility:hidden}.t-header :first-child{margin-inline-end:auto}.t-button{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:var(--tui-curve-productive-standard);font:inherit;font-weight:700;text-decoration:none}@media(hover:hover)and (pointer:fine){.t-button:hover{opacity:var(--tui-disabled-opacity)}}.t-chevron{transform:scaleX(var(--tui-inline))}.t-grid{padding:0 .5rem .5rem}.t-slides{margin:0 -.5rem}.t-calendar{padding:0 .5rem}\n"] }]
212
212
  }] });
213
213
 
214
214
  /**
215
215
  * Generated bundle index. Do not edit.
216
216
  */
217
217
 
218
- export { TuiDatePicker, TuiDatePickerHeader };
219
- //# sourceMappingURL=taiga-ui-experimental-components-date-picker.mjs.map
218
+ export { TuiCalendar, TuiCalendarHeader };
219
+ //# sourceMappingURL=taiga-ui-experimental-components-calendar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-experimental-components-calendar.mjs","sources":["../../../projects/experimental/components/calendar/calendar-header.component.ts","../../../projects/experimental/components/calendar/calendar.component.ts","../../../projects/experimental/components/calendar/calendar.component.html","../../../projects/experimental/components/calendar/taiga-ui-experimental-components-calendar.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {AbstractTuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {TUI_DROPDOWN_HOST} from '@taiga-ui/core/portals/dropdown';\nimport {\n TuiInputDate,\n tuiInputDateOptionsProvider,\n} from '@taiga-ui/kit/components/input-date';\nimport {TuiInputDateMulti} from '@taiga-ui/kit/components/input-date-multi';\nimport {TuiInputDateRange} from '@taiga-ui/kit/components/input-date-range';\n\n@Component({\n selector: 'tui-calendar-header',\n imports: [FormsModule, TuiInputDate, TuiInputDateMulti, TuiInputDateRange],\n template: `\n @switch (mode()) {\n @case ('multi') {\n <tui-textfield multi>\n <input\n tuiInputDateMulti\n [attr.aria-labelledby]=\"dropdown?.nativeElement?.id || null\"\n [max]=\"picker.max()\"\n [min]=\"picker.min()\"\n [(ngModel)]=\"picker.value\"\n />\n </tui-textfield>\n }\n @case ('range') {\n <tui-textfield>\n <input\n tuiInputDateRange\n [attr.aria-labelledby]=\"dropdown?.nativeElement?.id || null\"\n [max]=\"picker.max()\"\n [min]=\"picker.min()\"\n [(ngModel)]=\"picker.value\"\n />\n </tui-textfield>\n }\n @default {\n <tui-textfield>\n <input\n tuiInputDate\n [attr.aria-labelledby]=\"dropdown?.nativeElement?.id || null\"\n [max]=\"picker.max()\"\n [min]=\"picker.min()\"\n [(ngModel)]=\"picker.value\"\n />\n </tui-textfield>\n }\n }\n `,\n styles: `\n :host {\n position: absolute;\n inset: 0.125rem;\n opacity: 0;\n pointer-events: none;\n visibility: visible;\n\n &:focus-within {\n opacity: 1;\n pointer-events: auto;\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiInputDateOptionsProvider({icon: ''})],\n})\nexport class TuiCalendarHeader {\n protected readonly picker = inject(AbstractTuiCalendar);\n protected readonly dropdown = inject(TUI_DROPDOWN_HOST, {optional: true});\n\n public readonly mode = input<'multi' | 'range' | 'single'>();\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TuiDay, TuiDayRange, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiArrayToggle} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton, tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {AbstractTuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {TuiCarousel, TuiCarouselComponent} from '@taiga-ui/core/components/carousel';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {tuiTextfieldOptionsProvider} from '@taiga-ui/core/components/textfield';\nimport {TUI_DROPDOWN_HOST} from '@taiga-ui/core/portals/dropdown';\nimport {\n TUI_COMMON_ICONS,\n TUI_MONTHS,\n TUI_SPIN_TEXTS,\n tuiAsAuxiliary,\n} from '@taiga-ui/core/tokens';\nimport {TuiDataGrid} from '@taiga-ui/experimental/components/data-grid';\nimport {\n TUI_MONTH_OPTIONS,\n TuiMonthComponent,\n} from '@taiga-ui/experimental/components/month';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport {TuiElasticContainer} from '@taiga-ui/layout/components/elastic-container';\nimport {TuiSlides} from '@taiga-ui/layout/components/slides';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {TuiCalendarHeader} from './calendar-header.component';\n\ntype DatePicker<T> = T extends 'single'\n ? TuiDay\n : T extends 'multi'\n ? readonly TuiDay[]\n : TuiDayRange;\n\n/**\n * @deprecated: work in progress, do not use!\n */\n@Component({\n selector: 'tui-calendar[new]',\n imports: [\n FormsModule,\n TuiButton,\n TuiCalendarHeader,\n TuiCarousel,\n TuiChevron,\n TuiDataGrid,\n TuiElasticContainer,\n TuiLink,\n TuiMapperPipe,\n // eslint-disable-next-line @taiga-ui/experience-next/short-tui-imports\n TuiMonthComponent,\n TuiSlides,\n ],\n templateUrl: './calendar.component.html',\n styleUrl: './calendar.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsAuxiliary(TuiCalendar),\n tuiProvide(AbstractTuiCalendar, TuiCalendar),\n tuiButtonOptionsProvider({size: 'xs', appearance: 'flat'}),\n tuiTextfieldOptionsProvider({size: signal('m'), cleaner: signal(false)}),\n ],\n})\nexport class TuiCalendar<\n T extends 'multi' | 'range' | 'single' = 'single',\n> extends AbstractTuiCalendar<DatePicker<T>> {\n protected readonly options = inject(TUI_MONTH_OPTIONS);\n protected readonly carousel = viewChild(TuiCarouselComponent);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly texts = inject(TUI_SPIN_TEXTS);\n protected readonly i18n = inject(TUI_MONTHS);\n protected readonly dropdown = inject(TUI_DROPDOWN_HOST, {optional: true});\n\n protected readonly content = computed<PolymorpheusContent<TuiContext<TuiMonth>>>(\n () => (c) => this.i18n()[c.$implicit.month],\n );\n\n protected readonly years = computed((value = this.value()) =>\n value instanceof TuiDayRange\n ? Array.from(\n {length: value.to.year - value.from.year + 1},\n (_, index) => value.from.year + index,\n )\n : Array.from(new Set(coerceArray<TuiDay>(value ?? []).map(({year}) => year))),\n );\n\n protected readonly year = computed(() =>\n Array.from({length: 12}, (_, index) => new TuiMonth(this.month().year, index)),\n );\n\n protected readonly months = computed((value = this.value()) =>\n this.year().filter((month) =>\n value instanceof TuiDayRange\n ? value.monthInRange(month)\n : coerceArray<TuiDay>(value ?? []).some((day) => day.monthSame(month)),\n ),\n );\n\n protected readonly button = computed(() =>\n this.view() === 'day'\n ? `${this.i18n()[this.month().month]} ${this.month().formattedYear}`\n : this.month().formattedYear,\n );\n\n protected readonly yearMin = computed(() =>\n Math.ceil((this.min().year - this.month().year - 5) / 12),\n );\n\n protected readonly yearMax = computed(() =>\n Math.floor((this.max().year - this.month().year + 6) / 12),\n );\n\n protected readonly disabledDay = computed(\n () => (day: TuiDay) =>\n day < this.min() || day > this.max() || this.disabledItemHandler()(day),\n );\n\n protected readonly disabledMonth = computed<TuiBooleanHandler<TuiMonth>>(\n () => (month) => month.monthBefore(this.min()) || month.monthAfter(this.max()),\n );\n\n protected readonly disabledYear = computed(\n () => (year: number) => year < this.min().year || year > this.max().year,\n );\n\n protected readonly start = computed((carousel = this.carousel()) =>\n this.view() === 'month'\n ? this.month().year === this.min().year\n : carousel?.index() === carousel?.min(),\n );\n\n protected readonly end = computed((carousel = this.carousel()) =>\n this.view() === 'month'\n ? this.month().year === this.max().year\n : carousel?.index() === carousel?.max(),\n );\n\n protected readonly index = computed(\n () => this.month().year * 12 + this.month().month,\n );\n\n protected readonly sync = effect(() => {\n const value = this.value();\n const [day] = value instanceof TuiDayRange ? [value.from] : coerceArray(value);\n\n if (!day || day.year < 9000) {\n this.month.update(({month, year}) =>\n (day || new TuiDay(year, month, 1)).dayLimit(this.min(), this.max()),\n );\n }\n });\n\n public readonly view = model<'day' | 'month' | 'year'>('day');\n public readonly mode = input<T>();\n public readonly contentDay = input<PolymorpheusContent<TuiContext<TuiDay>>>();\n public readonly contentMonth = input<PolymorpheusContent<TuiContext<TuiMonth>>>();\n public readonly contentYear = input<PolymorpheusContent<TuiContext<number>>>();\n public readonly dayType = input(this.options.dayType);\n public readonly showAdjacent = input(this.options.showAdjacent);\n public readonly showWeek = input(this.options.showWeek);\n\n protected getMonth(index: number): TuiMonth {\n return new TuiMonth(Math.floor(index / 12), index % 12);\n }\n\n protected getItems(initial: number): readonly number[] {\n return Array.from({length: 12}, (_, index) => initial + index);\n }\n\n protected onSpin(step: number): void {\n this.carousel()?.[step > 0 ? 'next' : 'prev']();\n\n if (this.view() === 'month') {\n this.month.update((month) => month.append({year: step}));\n }\n }\n\n protected onYear(year: number): void {\n this.month.update(({month}) => new TuiMonth(year, month));\n this.view.set('month');\n }\n\n protected onMonth(month: TuiMonth): void {\n this.month.set(month);\n this.view.set('day');\n }\n\n protected onDay(day: TuiDay): void {\n if (this.mode() === 'range') {\n this.value.update((value): any =>\n value instanceof TuiDayRange && value.from === value.to\n ? TuiDayRange.sort(value.to, day.append({}))\n : new TuiDayRange(day, day),\n );\n } else if (this.mode() === 'multi') {\n this.value.update((value): any =>\n Array.isArray(value)\n ? tuiArrayToggle(value, day, (a: TuiDay, b: TuiDay) => a.daySame(b))\n : [day],\n );\n } else {\n this.value.set(day as any);\n }\n }\n}\n","<header class=\"t-header\">\n @if (view() !== 'year') {\n <button\n appearance=\"\"\n tabindex=\"-1\"\n tuiLink\n type=\"button\"\n class=\"t-button\"\n [textContent]=\"button()\"\n [tuiChevron]=\"false\"\n (click)=\"view.set(view() === 'day' ? 'month' : 'year')\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n ></button>\n } @else {\n @let years = month().year + (carousel()?.index() || 0) * 12 - 6 | tuiMapper: getItems;\n <b>{{ years[0] }}-{{ years[years.length - 1] }}</b>\n }\n <button\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-chevron\"\n [disabled]=\"start()\"\n [iconStart]=\"icons.decrement\"\n (click)=\"onSpin(-1)\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n >\n {{ texts()[0] }}\n </button>\n <button\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-chevron\"\n [disabled]=\"end()\"\n [iconStart]=\"icons.increment\"\n (click)=\"onSpin(1)\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n >\n {{ texts()[1] }}\n </button>\n\n @if (dropdown?.nativeElement?.matches(':not(input)')) {\n <tui-calendar-header [mode]=\"mode()\" />\n }\n</header>\n<tui-elastic-container class=\"t-slides\">\n <section tuiSlides>\n @switch (view()) {\n @case ('day') {\n <tui-carousel\n [index]=\"index()\"\n [max]=\"max().year * 12 + max().month\"\n [min]=\"min().year * 12 + min().month\"\n (indexChange)=\"month.set(getMonth($event))\"\n >\n <tui-month\n *tuiItem=\"let current\"\n class=\"t-calendar\"\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"current | tuiMapper: getMonth\"\n [showAdjacent]=\"showAdjacent()\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n />\n </tui-carousel>\n }\n\n @case ('month') {\n <tui-data-grid\n class=\"t-grid\"\n [content]=\"contentMonth() ?? content()\"\n [disabledItemHandler]=\"disabledMonth()\"\n [items]=\"year()\"\n [value]=\"months()\"\n (pick)=\"onMonth($event)\"\n />\n }\n\n @case ('year') {\n <tui-carousel\n [max]=\"yearMax()\"\n [min]=\"yearMin()\"\n >\n <tui-data-grid\n *tuiItem=\"let offset\"\n class=\"t-grid\"\n [content]=\"contentYear()\"\n [disabledItemHandler]=\"disabledYear()\"\n [items]=\"month().year + offset * 12 - 6 | tuiMapper: getItems\"\n [value]=\"years()\"\n (pick)=\"onYear($event)\"\n />\n </tui-carousel>\n }\n }\n </section>\n</tui-elastic-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -40,7 +40,7 @@ class TuiFile {
40
40
  <ng-content select="[tuiTitle]" />
41
41
  </label>
42
42
  <ng-content select="[tuiButtonX]" />
43
- `, isInline: true, styles: ["[data-tui-version=\"5.18.0\"]{@import \"./file.styles.less\";}\n"], dependencies: [{ kind: "directive", type: TuiAvatar, selector: "[tuiAvatar]", inputs: ["size", "round", "badge"] }, { kind: "directive", type: TuiSlides, selector: "[tuiSlides]", inputs: ["tuiSlides"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
43
+ `, isInline: true, styles: ["[data-tui-version=\"5.19.0\"]{@import \"./file.styles.less\";}\n"], dependencies: [{ kind: "directive", type: TuiAvatar, selector: "[tuiAvatar]", inputs: ["size", "round", "badge"] }, { kind: "directive", type: TuiSlides, selector: "[tuiSlides]", inputs: ["tuiSlides"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
44
44
  }
45
45
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiFile, decorators: [{
46
46
  type: Component,
@@ -65,7 +65,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
65
65
  ], hostDirectives: [{ directive: TuiCell, inputs: ['tuiCell: size'] }], host: {
66
66
  tuiFile: '',
67
67
  '[attr.data-orientation]': 'orientation()',
68
- }, styles: ["[data-tui-version=\"5.18.0\"]{@import \"./file.styles.less\";}\n"] }]
68
+ }, styles: ["[data-tui-version=\"5.19.0\"]{@import \"./file.styles.less\";}\n"] }]
69
69
  }] });
70
70
 
71
71
  class TuiFilePipe {
@@ -1,5 +1,5 @@
1
+ export * from '@taiga-ui/experimental/components/calendar';
1
2
  export * from '@taiga-ui/experimental/components/data-grid';
2
- export * from '@taiga-ui/experimental/components/date-picker';
3
3
  export * from '@taiga-ui/experimental/components/file';
4
4
  export * from '@taiga-ui/experimental/components/month';
5
5
  export * from '@taiga-ui/experimental/components/popout';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/experimental",
3
- "version": "5.18.0",
3
+ "version": "5.19.0",
4
4
  "description": "A package with Taiga UI experimental components",
5
5
  "keywords": [
6
6
  "angular",
@@ -30,11 +30,11 @@
30
30
  "peerDependencies": {
31
31
  "@angular/common": ">=19.0.0",
32
32
  "@angular/core": ">=19.0.0",
33
- "@taiga-ui/addon-commerce": "5.18.0",
34
- "@taiga-ui/cdk": "5.18.0",
35
- "@taiga-ui/core": "5.18.0",
36
- "@taiga-ui/kit": "5.18.0",
37
- "@taiga-ui/layout": "5.18.0",
33
+ "@taiga-ui/addon-commerce": "5.19.0",
34
+ "@taiga-ui/cdk": "5.19.0",
35
+ "@taiga-ui/core": "5.19.0",
36
+ "@taiga-ui/kit": "5.19.0",
37
+ "@taiga-ui/layout": "5.19.0",
38
38
  "@taiga-ui/polymorpheus": "^5.0.1",
39
39
  "rxjs": ">=7.0.0"
40
40
  },
@@ -52,9 +52,13 @@
52
52
  "types": "./components/index.d.ts",
53
53
  "default": "./fesm2022/taiga-ui-experimental-components.mjs"
54
54
  },
55
- "./components/date-picker": {
56
- "types": "./components/date-picker/index.d.ts",
57
- "default": "./fesm2022/taiga-ui-experimental-components-date-picker.mjs"
55
+ "./components/calendar": {
56
+ "types": "./components/calendar/index.d.ts",
57
+ "default": "./fesm2022/taiga-ui-experimental-components-calendar.mjs"
58
+ },
59
+ "./components/data-grid": {
60
+ "types": "./components/data-grid/index.d.ts",
61
+ "default": "./fesm2022/taiga-ui-experimental-components-data-grid.mjs"
58
62
  },
59
63
  "./components/file": {
60
64
  "types": "./components/file/index.d.ts",
@@ -71,10 +75,6 @@
71
75
  "./components/search-results": {
72
76
  "types": "./components/search-results/index.d.ts",
73
77
  "default": "./fesm2022/taiga-ui-experimental-components-search-results.mjs"
74
- },
75
- "./components/data-grid": {
76
- "types": "./components/data-grid/index.d.ts",
77
- "default": "./fesm2022/taiga-ui-experimental-components-data-grid.mjs"
78
78
  }
79
79
  },
80
80
  "sideEffects": false,
@@ -1,2 +0,0 @@
1
- export * from './date-picker.component';
2
- export * from './date-picker-header.component';
@@ -1 +0,0 @@
1
- {"version":3,"file":"taiga-ui-experimental-components-date-picker.mjs","sources":["../../../projects/experimental/components/date-picker/date-picker-header.component.ts","../../../projects/experimental/components/date-picker/date-picker.component.ts","../../../projects/experimental/components/date-picker/date-picker.component.html","../../../projects/experimental/components/date-picker/taiga-ui-experimental-components-date-picker.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {AbstractTuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {TUI_DROPDOWN_HOST} from '@taiga-ui/core/portals/dropdown';\nimport {\n TuiInputDate,\n tuiInputDateOptionsProvider,\n} from '@taiga-ui/kit/components/input-date';\nimport {TuiInputDateMulti} from '@taiga-ui/kit/components/input-date-multi';\nimport {TuiInputDateRange} from '@taiga-ui/kit/components/input-date-range';\n\n@Component({\n selector: 'tui-date-picker-header',\n imports: [FormsModule, TuiInputDate, TuiInputDateMulti, TuiInputDateRange],\n template: `\n @switch (mode()) {\n @case ('multi') {\n <tui-textfield multi>\n <input\n tuiInputDateMulti\n [attr.aria-labelledby]=\"dropdown?.nativeElement?.id || null\"\n [max]=\"picker.max()\"\n [min]=\"picker.min()\"\n [(ngModel)]=\"picker.value\"\n />\n </tui-textfield>\n }\n @case ('range') {\n <tui-textfield>\n <input\n tuiInputDateRange\n [attr.aria-labelledby]=\"dropdown?.nativeElement?.id || null\"\n [max]=\"picker.max()\"\n [min]=\"picker.min()\"\n [(ngModel)]=\"picker.value\"\n />\n </tui-textfield>\n }\n @default {\n <tui-textfield>\n <input\n tuiInputDate\n [attr.aria-labelledby]=\"dropdown?.nativeElement?.id || null\"\n [max]=\"picker.max()\"\n [min]=\"picker.min()\"\n [(ngModel)]=\"picker.value\"\n />\n </tui-textfield>\n }\n }\n `,\n styles: `\n :host {\n position: absolute;\n inset: 0.125rem;\n opacity: 0;\n pointer-events: none;\n visibility: visible;\n\n &:focus-within {\n opacity: 1;\n pointer-events: auto;\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiInputDateOptionsProvider({icon: ''})],\n})\nexport class TuiDatePickerHeader {\n protected readonly picker = inject(AbstractTuiCalendar);\n protected readonly dropdown = inject(TUI_DROPDOWN_HOST, {optional: true});\n\n public readonly mode = input<'multi' | 'range' | 'single'>();\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TuiDay, TuiDayRange, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiArrayToggle} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton, tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {AbstractTuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {TuiCarousel, TuiCarouselComponent} from '@taiga-ui/core/components/carousel';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {tuiTextfieldOptionsProvider} from '@taiga-ui/core/components/textfield';\nimport {TUI_DROPDOWN_HOST} from '@taiga-ui/core/portals/dropdown';\nimport {\n TUI_COMMON_ICONS,\n TUI_MONTHS,\n TUI_SPIN_TEXTS,\n tuiAsAuxiliary,\n} from '@taiga-ui/core/tokens';\nimport {TuiDataGrid} from '@taiga-ui/experimental/components/data-grid';\nimport {\n TUI_MONTH_OPTIONS,\n TuiMonthComponent,\n} from '@taiga-ui/experimental/components/month';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport {TuiElasticContainer} from '@taiga-ui/layout/components/elastic-container';\nimport {TuiSlides} from '@taiga-ui/layout/components/slides';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {TuiDatePickerHeader} from './date-picker-header.component';\n\ntype DatePicker<T> = T extends 'single'\n ? TuiDay\n : T extends 'multi'\n ? readonly TuiDay[]\n : TuiDayRange;\n\n/**\n * @deprecated: work in progress, do not use!\n */\n@Component({\n selector: 'tui-date-picker',\n imports: [\n FormsModule,\n TuiButton,\n TuiCarousel,\n TuiChevron,\n TuiDataGrid,\n TuiDatePickerHeader,\n TuiElasticContainer,\n TuiLink,\n TuiMapperPipe,\n // eslint-disable-next-line @taiga-ui/experience-next/short-tui-imports\n TuiMonthComponent,\n TuiSlides,\n ],\n templateUrl: './date-picker.component.html',\n styleUrl: './date-picker.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsAuxiliary(TuiDatePicker),\n tuiProvide(AbstractTuiCalendar, TuiDatePicker),\n tuiButtonOptionsProvider({size: 'xs', appearance: 'flat'}),\n tuiTextfieldOptionsProvider({size: signal('m'), cleaner: signal(false)}),\n ],\n})\nexport class TuiDatePicker<\n T extends 'multi' | 'range' | 'single' = 'single',\n> extends AbstractTuiCalendar<DatePicker<T>> {\n protected readonly options = inject(TUI_MONTH_OPTIONS);\n protected readonly carousel = viewChild(TuiCarouselComponent);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly texts = inject(TUI_SPIN_TEXTS);\n protected readonly i18n = inject(TUI_MONTHS);\n protected readonly dropdown = inject(TUI_DROPDOWN_HOST, {optional: true});\n\n protected readonly content = computed<PolymorpheusContent<TuiContext<TuiMonth>>>(\n () => (c) => this.i18n()[c.$implicit.month],\n );\n\n protected readonly years = computed((value = this.value()) =>\n value instanceof TuiDayRange\n ? Array.from(\n {length: value.to.year - value.from.year + 1},\n (_, index) => value.from.year + index,\n )\n : Array.from(new Set(coerceArray<TuiDay>(value ?? []).map(({year}) => year))),\n );\n\n protected readonly year = computed(() =>\n Array.from({length: 12}, (_, index) => new TuiMonth(this.month().year, index)),\n );\n\n protected readonly months = computed((value = this.value()) =>\n this.year().filter((month) =>\n value instanceof TuiDayRange\n ? value.monthInRange(month)\n : coerceArray<TuiDay>(value ?? []).some((day) => day.monthSame(month)),\n ),\n );\n\n protected readonly button = computed(() =>\n this.view() === 'day'\n ? `${this.i18n()[this.month().month]} ${this.month().formattedYear}`\n : this.month().formattedYear,\n );\n\n protected readonly yearMin = computed(() =>\n Math.ceil((this.min().year - this.month().year - 5) / 12),\n );\n\n protected readonly yearMax = computed(() =>\n Math.floor((this.max().year - this.month().year + 6) / 12),\n );\n\n protected readonly disabledDay = computed(\n () => (day: TuiDay) =>\n day < this.min() || day > this.max() || this.disabledItemHandler()(day),\n );\n\n protected readonly disabledMonth = computed<TuiBooleanHandler<TuiMonth>>(\n () => (month) => month.monthBefore(this.min()) || month.monthAfter(this.max()),\n );\n\n protected readonly disabledYear = computed(\n () => (year: number) => year < this.min().year || year > this.max().year,\n );\n\n protected readonly start = computed((carousel = this.carousel()) =>\n this.view() === 'month'\n ? this.month().year === this.min().year\n : carousel?.index() === carousel?.min(),\n );\n\n protected readonly end = computed((carousel = this.carousel()) =>\n this.view() === 'month'\n ? this.month().year === this.max().year\n : carousel?.index() === carousel?.max(),\n );\n\n protected readonly index = computed(\n () => this.month().year * 12 + this.month().month,\n );\n\n protected readonly sync = effect(() => {\n const value = this.value();\n const [day] = value instanceof TuiDayRange ? [value.from] : coerceArray(value);\n\n if (!day || day.year < 9000) {\n this.month.update(({month, year}) =>\n (day || new TuiDay(year, month, 1)).dayLimit(this.min(), this.max()),\n );\n }\n });\n\n public readonly view = model<'day' | 'month' | 'year'>('day');\n public readonly mode = input<T>();\n public readonly contentDay = input<PolymorpheusContent<TuiContext<TuiDay>>>();\n public readonly contentMonth = input<PolymorpheusContent<TuiContext<TuiMonth>>>();\n public readonly contentYear = input<PolymorpheusContent<TuiContext<number>>>();\n public readonly dayType = input(this.options.dayType);\n public readonly showAdjacent = input(this.options.showAdjacent);\n public readonly showWeek = input(this.options.showWeek);\n\n protected getMonth(index: number): TuiMonth {\n return new TuiMonth(Math.floor(index / 12), index % 12);\n }\n\n protected getItems(initial: number): readonly number[] {\n return Array.from({length: 12}, (_, index) => initial + index);\n }\n\n protected onSpin(step: number): void {\n this.carousel()?.[step > 0 ? 'next' : 'prev']();\n\n if (this.view() === 'month') {\n this.month.update((month) => month.append({year: step}));\n }\n }\n\n protected onYear(year: number): void {\n this.month.update(({month}) => new TuiMonth(year, month));\n this.view.set('month');\n }\n\n protected onMonth(month: TuiMonth): void {\n this.month.set(month);\n this.view.set('day');\n }\n\n protected onDay(day: TuiDay): void {\n if (this.mode() === 'range') {\n this.value.update((value): any =>\n value instanceof TuiDayRange && value.from === value.to\n ? TuiDayRange.sort(value.to, day.append({}))\n : new TuiDayRange(day, day),\n );\n } else if (this.mode() === 'multi') {\n this.value.update((value): any =>\n Array.isArray(value)\n ? tuiArrayToggle(value, day, (a: TuiDay, b: TuiDay) => a.daySame(b))\n : [day],\n );\n } else {\n this.value.set(day as any);\n }\n }\n}\n","<header class=\"t-header\">\n @if (view() !== 'year') {\n <button\n appearance=\"\"\n tabindex=\"-1\"\n tuiLink\n type=\"button\"\n class=\"t-button\"\n [textContent]=\"button()\"\n [tuiChevron]=\"false\"\n (click)=\"view.set(view() === 'day' ? 'month' : 'year')\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n ></button>\n } @else {\n @let years = month().year + (carousel()?.index() || 0) * 12 - 6 | tuiMapper: getItems;\n <b>{{ years[0] }}-{{ years[years.length - 1] }}</b>\n }\n <button\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-chevron\"\n [disabled]=\"start()\"\n [iconStart]=\"icons.decrement\"\n (click)=\"onSpin(-1)\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n >\n {{ texts()[0] }}\n </button>\n <button\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-chevron\"\n [disabled]=\"end()\"\n [iconStart]=\"icons.increment\"\n (click)=\"onSpin(1)\"\n (pointerdown.zoneless.prevent)=\"(0)\"\n >\n {{ texts()[1] }}\n </button>\n\n @if (dropdown?.nativeElement?.matches(':not(input)')) {\n <tui-date-picker-header [mode]=\"mode()\" />\n }\n</header>\n<tui-elastic-container class=\"t-slides\">\n <section tuiSlides>\n @switch (view()) {\n @case ('day') {\n <tui-carousel\n [index]=\"index()\"\n [max]=\"max().year * 12 + max().month\"\n [min]=\"min().year * 12 + min().month\"\n (indexChange)=\"month.set(getMonth($event))\"\n >\n <tui-month\n *tuiItem=\"let current\"\n class=\"t-calendar\"\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"current | tuiMapper: getMonth\"\n [showAdjacent]=\"showAdjacent()\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n />\n </tui-carousel>\n }\n\n @case ('month') {\n <tui-data-grid\n class=\"t-grid\"\n [content]=\"contentMonth() ?? content()\"\n [disabledItemHandler]=\"disabledMonth()\"\n [items]=\"year()\"\n [value]=\"months()\"\n (pick)=\"onMonth($event)\"\n />\n }\n\n @case ('year') {\n <tui-carousel\n [max]=\"yearMax()\"\n [min]=\"yearMin()\"\n >\n <tui-data-grid\n *tuiItem=\"let offset\"\n class=\"t-grid\"\n [content]=\"contentYear()\"\n [disabledItemHandler]=\"disabledYear()\"\n [items]=\"month().year + offset * 12 - 6 | tuiMapper: getItems\"\n [value]=\"years()\"\n (pick)=\"onYear($event)\"\n />\n </tui-carousel>\n }\n }\n </section>\n</tui-elastic-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}