@taiga-ui/experimental 5.15.0 → 5.16.0-canary.ee9c301
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/date-picker/date-picker-header.component.d.ts +6 -0
- package/components/date-picker/date-picker.component.d.ts +5 -1
- package/components/date-picker/index.d.ts +1 -0
- package/components/index.d.ts +1 -1
- package/components/month/index.d.ts +3 -0
- package/components/{calendar/calendar.component.d.ts → month/month.component.d.ts} +3 -3
- package/components/month/month.options.d.ts +11 -0
- package/fesm2022/taiga-ui-experimental-components-data-grid.mjs +2 -2
- package/fesm2022/taiga-ui-experimental-components-data-grid.mjs.map +1 -1
- package/fesm2022/taiga-ui-experimental-components-date-picker.mjs +109 -36
- package/fesm2022/taiga-ui-experimental-components-date-picker.mjs.map +1 -1
- package/fesm2022/taiga-ui-experimental-components-file.mjs +2 -2
- package/fesm2022/taiga-ui-experimental-components-file.mjs.map +1 -1
- package/fesm2022/{taiga-ui-experimental-components-calendar.mjs → taiga-ui-experimental-components-month.mjs} +10 -10
- package/fesm2022/taiga-ui-experimental-components-month.mjs.map +1 -0
- package/fesm2022/taiga-ui-experimental-components.mjs +1 -1
- package/package.json +10 -10
- package/components/calendar/calendar.options.d.ts +0 -11
- package/components/calendar/index.d.ts +0 -3
- package/fesm2022/taiga-ui-experimental-components-calendar.mjs.map +0 -1
- /package/components/{calendar → month}/week.pipe.d.ts +0 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AbstractTuiCalendar } from '@taiga-ui/core/components/calendar';
|
|
2
|
+
export declare class TuiDatePickerHeader {
|
|
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
|
+
protected readonly dropdown: import("@angular/core").ElementRef<Element> | null;
|
|
5
|
+
readonly mode: import("@angular/core").InputSignal<"multi" | "range" | "single" | undefined>;
|
|
6
|
+
}
|
|
@@ -3,12 +3,13 @@ import { type TuiBooleanHandler, type TuiContext } from '@taiga-ui/cdk/types';
|
|
|
3
3
|
import { AbstractTuiCalendar } from '@taiga-ui/core/components/calendar';
|
|
4
4
|
import { TuiCarouselComponent } from '@taiga-ui/core/components/carousel';
|
|
5
5
|
import { type PolymorpheusContent } from '@taiga-ui/polymorpheus';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
6
7
|
type DatePicker<T> = T extends 'single' ? TuiDay : T extends 'multi' ? readonly TuiDay[] : TuiDayRange;
|
|
7
8
|
/**
|
|
8
9
|
* @deprecated: work in progress, do not use!
|
|
9
10
|
*/
|
|
10
11
|
export declare class TuiDatePicker<T extends 'multi' | 'range' | 'single' = 'single'> extends AbstractTuiCalendar<DatePicker<T>> {
|
|
11
|
-
protected readonly options: import("@taiga-ui/experimental/components/
|
|
12
|
+
protected readonly options: import("@taiga-ui/experimental/components/month").TuiMonthOptions;
|
|
12
13
|
protected readonly carousel: import("@angular/core").Signal<TuiCarouselComponent | undefined>;
|
|
13
14
|
protected readonly icons: import("@taiga-ui/core/tokens").TuiCommonIcons;
|
|
14
15
|
protected readonly texts: import("@angular/core").Signal<readonly [previous: string, next: string]>;
|
|
@@ -26,6 +27,7 @@ export declare class TuiDatePicker<T extends 'multi' | 'range' | 'single' = 'sin
|
|
|
26
27
|
protected readonly disabledYear: import("@angular/core").Signal<(year: number) => boolean>;
|
|
27
28
|
protected readonly start: import("@angular/core").Signal<boolean>;
|
|
28
29
|
protected readonly end: import("@angular/core").Signal<boolean>;
|
|
30
|
+
protected readonly index: import("@angular/core").Signal<number>;
|
|
29
31
|
protected readonly sync: import("@angular/core").EffectRef;
|
|
30
32
|
readonly view: import("@angular/core").ModelSignal<"day" | "month" | "year">;
|
|
31
33
|
readonly mode: import("@angular/core").InputSignal<T | undefined>;
|
|
@@ -41,5 +43,7 @@ export declare class TuiDatePicker<T extends 'multi' | 'range' | 'single' = 'sin
|
|
|
41
43
|
protected onYear(year: number): void;
|
|
42
44
|
protected onMonth(month: TuiMonth): void;
|
|
43
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>;
|
|
44
48
|
}
|
|
45
49
|
export {};
|
package/components/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from '@taiga-ui/experimental/components/calendar';
|
|
2
1
|
export * from '@taiga-ui/experimental/components/data-grid';
|
|
3
2
|
export * from '@taiga-ui/experimental/components/date-picker';
|
|
4
3
|
export * from '@taiga-ui/experimental/components/file';
|
|
4
|
+
export * from '@taiga-ui/experimental/components/month';
|
|
5
5
|
export * from '@taiga-ui/experimental/components/popout';
|
|
6
6
|
export * from '@taiga-ui/experimental/components/search-results';
|
|
@@ -5,7 +5,7 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
/**
|
|
6
6
|
* @deprecated: work in progress, do not use!
|
|
7
7
|
*/
|
|
8
|
-
export declare class
|
|
8
|
+
export declare class TuiMonthComponent {
|
|
9
9
|
private readonly days;
|
|
10
10
|
private readonly options;
|
|
11
11
|
protected readonly today: TuiDay;
|
|
@@ -21,6 +21,6 @@ export declare class TuiCalendar {
|
|
|
21
21
|
readonly disabledItemHandler: import("@angular/core").InputSignal<TuiBooleanHandler<TuiDay>>;
|
|
22
22
|
protected getRange(day: TuiDay): 'end' | 'middle' | 'single' | 'start' | null;
|
|
23
23
|
protected getType(day: string): string;
|
|
24
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
25
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<
|
|
24
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TuiMonthComponent, never>;
|
|
25
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TuiMonthComponent, "tui-month", never, { "month": { "alias": "month"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "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; }; "disabledItemHandler": { "alias": "disabledItemHandler"; "required": false; "isSignal": true; }; }, { "pick": "pick"; }, never, never, true, never>;
|
|
26
26
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Signal } from '@angular/core';
|
|
2
|
+
import { type TuiDay } from '@taiga-ui/cdk/date-time';
|
|
3
|
+
import { type TuiHandler } from '@taiga-ui/cdk/types';
|
|
4
|
+
export interface TuiMonthOptions {
|
|
5
|
+
readonly dayType: TuiHandler<TuiDay, string>;
|
|
6
|
+
readonly weekFirstDay: Signal<number>;
|
|
7
|
+
readonly showAdjacent: boolean;
|
|
8
|
+
readonly showWeek: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const TUI_MONTH_DEFAULT_OPTIONS: TuiMonthOptions;
|
|
11
|
+
export declare const TUI_MONTH_OPTIONS: import("@angular/core").InjectionToken<TuiMonthOptions>, tuiMonthOptionsProvider: (item: Partial<TuiMonthOptions> | (() => Partial<TuiMonthOptions>)) => import("@angular/core").FactoryProvider;
|
|
@@ -16,11 +16,11 @@ class TuiDataGrid {
|
|
|
16
16
|
this.disabledItemHandler = input(TUI_FALSE_HANDLER);
|
|
17
17
|
}
|
|
18
18
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiDataGrid, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiDataGrid, isStandalone: true, selector: "tui-data-grid", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabledItemHandler: { classPropertyName: "disabledItemHandler", publicName: "disabledItemHandler", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pick: "pick" }, ngImport: i0, template: "@for (item of items(); track item) {\n <button\n type=\"button\"\n class=\"t-item\"\n [class.t-item_active]=\"value().includes(item)\"\n [disabled]=\"disabledItemHandler()(item)\"\n (click)=\"pick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() || `${item}` as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n}\n", styles: [":host{display:grid;inline-size:100%;grid-template-columns:repeat(3,calc(33% - .625rem));gap:1rem .5rem;place-content:center}.t-item{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:var(--tui-curve-productive-standard);display:block;block-size:2.5rem;min-inline-size:0;border-radius:10rem;border:none;background:var(--tui-background-neutral-1);color:var(--tui-text-primary);font:var(--tui-typography-ui-s);white-space:nowrap}.t-item ::ng-deep [tuiTitle]{gap:.125rem;text-align:center}.t-item ::ng-deep [tuiTitle] [tuiSubtitle]{color:var(--tui-text-secondary);font:var(--tui-typography-ui-xs)}.t-item:disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-item_active{background:var(--tui-background-accent-2);color:var(--tui-text-primary-on-accent-2)}.t-item_active ::ng-deep [tuiTitle] [tuiSubtitle]{color:inherit}@media(hover:hover)and (pointer:fine){.t-item:hover{background:var(--tui-background-neutral-1-hover);cursor:pointer}.t-item_active:hover{background:var(--tui-background-accent-2-hover)}}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
19
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiDataGrid, isStandalone: true, selector: "tui-data-grid", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabledItemHandler: { classPropertyName: "disabledItemHandler", publicName: "disabledItemHandler", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pick: "pick" }, ngImport: i0, template: "@for (item of items(); track item) {\n <button\n type=\"button\"\n class=\"t-item\"\n [class.t-item_active]=\"value().includes(item)\"\n [disabled]=\"disabledItemHandler()(item)\"\n (click)=\"pick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() || `${item}` as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n}\n", styles: [":host{display:grid;inline-size:100%;grid-template-columns:repeat(3,calc(33% - .625rem));gap:1rem .5rem;place-content:center;box-sizing:border-box}.t-item{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:var(--tui-curve-productive-standard);display:block;block-size:2.5rem;min-inline-size:0;border-radius:10rem;border:none;background:var(--tui-background-neutral-1);color:var(--tui-text-primary);font:var(--tui-typography-ui-s);white-space:nowrap}.t-item ::ng-deep [tuiTitle]{gap:.125rem;text-align:center}.t-item ::ng-deep [tuiTitle] [tuiSubtitle]{color:var(--tui-text-secondary);font:var(--tui-typography-ui-xs)}.t-item:disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-item_active{background:var(--tui-background-accent-2);color:var(--tui-text-primary-on-accent-2)}.t-item_active ::ng-deep [tuiTitle] [tuiSubtitle]{color:inherit}@media(hover:hover)and (pointer:fine){.t-item:hover{background:var(--tui-background-neutral-1-hover);cursor:pointer}.t-item_active:hover{background:var(--tui-background-accent-2-hover)}}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
20
|
}
|
|
21
21
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiDataGrid, decorators: [{
|
|
22
22
|
type: Component,
|
|
23
|
-
args: [{ selector: 'tui-data-grid', imports: [PolymorpheusOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "@for (item of items(); track item) {\n <button\n type=\"button\"\n class=\"t-item\"\n [class.t-item_active]=\"value().includes(item)\"\n [disabled]=\"disabledItemHandler()(item)\"\n (click)=\"pick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() || `${item}` as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n}\n", styles: [":host{display:grid;inline-size:100%;grid-template-columns:repeat(3,calc(33% - .625rem));gap:1rem .5rem;place-content:center}.t-item{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:var(--tui-curve-productive-standard);display:block;block-size:2.5rem;min-inline-size:0;border-radius:10rem;border:none;background:var(--tui-background-neutral-1);color:var(--tui-text-primary);font:var(--tui-typography-ui-s);white-space:nowrap}.t-item ::ng-deep [tuiTitle]{gap:.125rem;text-align:center}.t-item ::ng-deep [tuiTitle] [tuiSubtitle]{color:var(--tui-text-secondary);font:var(--tui-typography-ui-xs)}.t-item:disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-item_active{background:var(--tui-background-accent-2);color:var(--tui-text-primary-on-accent-2)}.t-item_active ::ng-deep [tuiTitle] [tuiSubtitle]{color:inherit}@media(hover:hover)and (pointer:fine){.t-item:hover{background:var(--tui-background-neutral-1-hover);cursor:pointer}.t-item_active:hover{background:var(--tui-background-accent-2-hover)}}\n"] }]
|
|
23
|
+
args: [{ selector: 'tui-data-grid', imports: [PolymorpheusOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "@for (item of items(); track item) {\n <button\n type=\"button\"\n class=\"t-item\"\n [class.t-item_active]=\"value().includes(item)\"\n [disabled]=\"disabledItemHandler()(item)\"\n (click)=\"pick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() || `${item}` as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n}\n", styles: [":host{display:grid;inline-size:100%;grid-template-columns:repeat(3,calc(33% - .625rem));gap:1rem .5rem;place-content:center;box-sizing:border-box}.t-item{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:var(--tui-curve-productive-standard);display:block;block-size:2.5rem;min-inline-size:0;border-radius:10rem;border:none;background:var(--tui-background-neutral-1);color:var(--tui-text-primary);font:var(--tui-typography-ui-s);white-space:nowrap}.t-item ::ng-deep [tuiTitle]{gap:.125rem;text-align:center}.t-item ::ng-deep [tuiTitle] [tuiSubtitle]{color:var(--tui-text-secondary);font:var(--tui-typography-ui-xs)}.t-item:disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-item_active{background:var(--tui-background-accent-2);color:var(--tui-text-primary-on-accent-2)}.t-item_active ::ng-deep [tuiTitle] [tuiSubtitle]{color:inherit}@media(hover:hover)and (pointer:fine){.t-item:hover{background:var(--tui-background-neutral-1-hover);cursor:pointer}.t-item_active:hover{background:var(--tui-background-accent-2-hover)}}\n"] }]
|
|
24
24
|
}] });
|
|
25
25
|
|
|
26
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-experimental-components-data-grid.mjs","sources":["../../../projects/experimental/components/data-grid/data-grid.component.ts","../../../projects/experimental/components/data-grid/data-grid.component.html","../../../projects/experimental/components/data-grid/taiga-ui-experimental-components-data-grid.ts"],"sourcesContent":["import {coerceArray} from '@angular/cdk/coercion';\nimport {ChangeDetectionStrategy, Component, input, output} from '@angular/core';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {type TuiBooleanHandler, type TuiContext} from '@taiga-ui/cdk/types';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n/**\n * @deprecated: work in progress, do not use!\n */\n@Component({\n selector: 'tui-data-grid',\n imports: [PolymorpheusOutlet],\n templateUrl: './data-grid.component.html',\n styleUrl: './data-grid.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDataGrid<T> {\n public readonly pick = output<T>();\n public readonly items = input<readonly T[]>([]);\n public readonly content = input<PolymorpheusContent<TuiContext<T>>>();\n public readonly value = input([], {transform: coerceArray<T>});\n public readonly disabledItemHandler = input<TuiBooleanHandler<T>>(TUI_FALSE_HANDLER);\n}\n","@for (item of items(); track item) {\n <button\n type=\"button\"\n class=\"t-item\"\n [class.t-item_active]=\"value().includes(item)\"\n [disabled]=\"disabledItemHandler()(item)\"\n (click)=\"pick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() || `${item}` as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAMA;;AAEG;MAQU,WAAW,CAAA;AAPxB,IAAA,WAAA,GAAA;QAQoB,IAAA,CAAA,IAAI,GAAG,MAAM,EAAK;AAClB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAe,EAAE,CAAC;QAC/B,IAAA,CAAA,OAAO,GAAG,KAAK,EAAsC;AACrD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,EAAE,EAAC,SAAS,GAAE,WAAc,CAAA,EAAC,CAAC;AAC9C,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAuB,iBAAiB,CAAC;AACvF,IAAA;+GANY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBxB,gbAaA,EAAA,MAAA,EAAA,CAAA
|
|
1
|
+
{"version":3,"file":"taiga-ui-experimental-components-data-grid.mjs","sources":["../../../projects/experimental/components/data-grid/data-grid.component.ts","../../../projects/experimental/components/data-grid/data-grid.component.html","../../../projects/experimental/components/data-grid/taiga-ui-experimental-components-data-grid.ts"],"sourcesContent":["import {coerceArray} from '@angular/cdk/coercion';\nimport {ChangeDetectionStrategy, Component, input, output} from '@angular/core';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {type TuiBooleanHandler, type TuiContext} from '@taiga-ui/cdk/types';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\n/**\n * @deprecated: work in progress, do not use!\n */\n@Component({\n selector: 'tui-data-grid',\n imports: [PolymorpheusOutlet],\n templateUrl: './data-grid.component.html',\n styleUrl: './data-grid.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDataGrid<T> {\n public readonly pick = output<T>();\n public readonly items = input<readonly T[]>([]);\n public readonly content = input<PolymorpheusContent<TuiContext<T>>>();\n public readonly value = input([], {transform: coerceArray<T>});\n public readonly disabledItemHandler = input<TuiBooleanHandler<T>>(TUI_FALSE_HANDLER);\n}\n","@for (item of items(); track item) {\n <button\n type=\"button\"\n class=\"t-item\"\n [class.t-item_active]=\"value().includes(item)\"\n [disabled]=\"disabledItemHandler()(item)\"\n (click)=\"pick.emit(item)\"\n >\n <ng-container *polymorpheusOutlet=\"content() || `${item}` as text; context: {$implicit: item}\">\n {{ text }}\n </ng-container>\n </button>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAMA;;AAEG;MAQU,WAAW,CAAA;AAPxB,IAAA,WAAA,GAAA;QAQoB,IAAA,CAAA,IAAI,GAAG,MAAM,EAAK;AAClB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAe,EAAE,CAAC;QAC/B,IAAA,CAAA,OAAO,GAAG,KAAK,EAAsC;AACrD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE,EAAE,EAAC,SAAS,GAAE,WAAc,CAAA,EAAC,CAAC;AAC9C,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAuB,iBAAiB,CAAC;AACvF,IAAA;+GANY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBxB,gbAaA,EAAA,MAAA,EAAA,CAAA,qkCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFc,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAKnB,WAAW,EAAA,UAAA,EAAA,CAAA;kBAPvB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,WAChB,CAAC,kBAAkB,CAAC,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,gbAAA,EAAA,MAAA,EAAA,CAAA,qkCAAA,CAAA,EAAA;;;AEdnD;;AAEG;;;;"}
|
|
@@ -1,34 +1,104 @@
|
|
|
1
|
-
import { __decorate } from 'tslib';
|
|
2
1
|
import { coerceArray } from '@angular/cdk/coercion';
|
|
3
|
-
import
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { inject, input, Component, ChangeDetectionStrategy, viewChild, computed, effect, model, signal } from '@angular/core';
|
|
4
4
|
import { FormsModule } from '@angular/forms';
|
|
5
5
|
import { TuiDayRange, TuiMonth, TuiDay } from '@taiga-ui/cdk/date-time';
|
|
6
6
|
import { TuiMapperPipe } from '@taiga-ui/cdk/pipes/mapper';
|
|
7
7
|
import { tuiProvide } from '@taiga-ui/cdk/utils/di';
|
|
8
8
|
import { tuiArrayToggle } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
9
|
-
import {
|
|
9
|
+
import { TuiButton, tuiButtonOptionsProvider } from '@taiga-ui/core/components/button';
|
|
10
10
|
import { AbstractTuiCalendar } from '@taiga-ui/core/components/calendar';
|
|
11
|
+
import * as i1 from '@taiga-ui/core/components/carousel';
|
|
11
12
|
import { TuiCarouselComponent, TuiCarousel } from '@taiga-ui/core/components/carousel';
|
|
12
13
|
import { TuiLink } from '@taiga-ui/core/components/link';
|
|
13
14
|
import { tuiTextfieldOptionsProvider } from '@taiga-ui/core/components/textfield';
|
|
14
15
|
import { TUI_DROPDOWN_HOST } from '@taiga-ui/core/portals/dropdown';
|
|
15
16
|
import { TUI_COMMON_ICONS, TUI_SPIN_TEXTS, TUI_MONTHS, tuiAsAuxiliary } from '@taiga-ui/core/tokens';
|
|
16
|
-
import { TUI_CALENDAR_OPTIONS, TuiCalendar } from '@taiga-ui/experimental/components/calendar';
|
|
17
17
|
import { TuiDataGrid } from '@taiga-ui/experimental/components/data-grid';
|
|
18
|
-
import {
|
|
19
|
-
import { TuiInputDateMulti } from '@taiga-ui/kit/components/input-date-multi';
|
|
20
|
-
import { TuiInputDateRange } from '@taiga-ui/kit/components/input-date-range';
|
|
18
|
+
import { TUI_MONTH_OPTIONS, TuiMonthComponent } from '@taiga-ui/experimental/components/month';
|
|
21
19
|
import { TuiChevron } from '@taiga-ui/kit/directives/chevron';
|
|
22
20
|
import { TuiElasticContainer } from '@taiga-ui/layout/components/elastic-container';
|
|
23
21
|
import { TuiSlides } from '@taiga-ui/layout/components/slides';
|
|
22
|
+
import { __decorate } from 'tslib';
|
|
23
|
+
import { tuiInputDateOptionsProvider, TuiInputDate } from '@taiga-ui/kit/components/input-date';
|
|
24
|
+
import { TuiInputDateMulti } from '@taiga-ui/kit/components/input-date-multi';
|
|
25
|
+
import { TuiInputDateRange } from '@taiga-ui/kit/components/input-date-range';
|
|
26
|
+
import * as i2 from '@taiga-ui/cdk/directives/item';
|
|
27
|
+
|
|
28
|
+
let TuiDatePickerHeader = class TuiDatePickerHeader {
|
|
29
|
+
constructor() {
|
|
30
|
+
this.picker = inject(AbstractTuiCalendar);
|
|
31
|
+
this.dropdown = inject(TUI_DROPDOWN_HOST, { optional: true });
|
|
32
|
+
this.mode = input();
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
TuiDatePickerHeader = __decorate([
|
|
36
|
+
Component({
|
|
37
|
+
selector: 'tui-date-picker-header',
|
|
38
|
+
imports: [FormsModule, TuiInputDate, TuiInputDateMulti, TuiInputDateRange],
|
|
39
|
+
template: `
|
|
40
|
+
@switch (mode()) {
|
|
41
|
+
@case ('multi') {
|
|
42
|
+
<tui-textfield multi>
|
|
43
|
+
<input
|
|
44
|
+
tuiInputDateMulti
|
|
45
|
+
[attr.aria-labelledby]="dropdown?.nativeElement?.id || null"
|
|
46
|
+
[max]="picker.max()"
|
|
47
|
+
[min]="picker.min()"
|
|
48
|
+
[(ngModel)]="picker.value"
|
|
49
|
+
/>
|
|
50
|
+
</tui-textfield>
|
|
51
|
+
}
|
|
52
|
+
@case ('range') {
|
|
53
|
+
<tui-textfield>
|
|
54
|
+
<input
|
|
55
|
+
tuiInputDateRange
|
|
56
|
+
[attr.aria-labelledby]="dropdown?.nativeElement?.id || null"
|
|
57
|
+
[max]="picker.max()"
|
|
58
|
+
[min]="picker.min()"
|
|
59
|
+
[(ngModel)]="picker.value"
|
|
60
|
+
/>
|
|
61
|
+
</tui-textfield>
|
|
62
|
+
}
|
|
63
|
+
@default {
|
|
64
|
+
<tui-textfield>
|
|
65
|
+
<input
|
|
66
|
+
tuiInputDate
|
|
67
|
+
[attr.aria-labelledby]="dropdown?.nativeElement?.id || null"
|
|
68
|
+
[max]="picker.max()"
|
|
69
|
+
[min]="picker.min()"
|
|
70
|
+
[(ngModel)]="picker.value"
|
|
71
|
+
/>
|
|
72
|
+
</tui-textfield>
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
`,
|
|
76
|
+
styles: `
|
|
77
|
+
:host {
|
|
78
|
+
position: absolute;
|
|
79
|
+
inset: 0.125rem;
|
|
80
|
+
opacity: 0;
|
|
81
|
+
pointer-events: none;
|
|
82
|
+
visibility: visible;
|
|
83
|
+
|
|
84
|
+
&:focus-within {
|
|
85
|
+
opacity: 1;
|
|
86
|
+
pointer-events: auto;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
`,
|
|
90
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
91
|
+
providers: [tuiInputDateOptionsProvider({ icon: '' })],
|
|
92
|
+
})
|
|
93
|
+
], TuiDatePickerHeader);
|
|
24
94
|
|
|
25
95
|
/**
|
|
26
96
|
* @deprecated: work in progress, do not use!
|
|
27
97
|
*/
|
|
28
|
-
|
|
98
|
+
class TuiDatePicker extends AbstractTuiCalendar {
|
|
29
99
|
constructor() {
|
|
30
100
|
super(...arguments);
|
|
31
|
-
this.options = inject(
|
|
101
|
+
this.options = inject(TUI_MONTH_OPTIONS);
|
|
32
102
|
this.carousel = viewChild(TuiCarouselComponent);
|
|
33
103
|
this.icons = inject(TUI_COMMON_ICONS);
|
|
34
104
|
this.texts = inject(TUI_SPIN_TEXTS);
|
|
@@ -56,6 +126,7 @@ let TuiDatePicker = class TuiDatePicker extends AbstractTuiCalendar {
|
|
|
56
126
|
this.end = computed((carousel = this.carousel()) => this.view() === 'month'
|
|
57
127
|
? this.month().year === this.max().year
|
|
58
128
|
: carousel?.index() === carousel?.max());
|
|
129
|
+
this.index = computed(() => this.month().year * 12 + this.month().month);
|
|
59
130
|
this.sync = effect(() => {
|
|
60
131
|
const value = this.value();
|
|
61
132
|
const [day] = value instanceof TuiDayRange ? [value.from] : coerceArray(value);
|
|
@@ -107,40 +178,42 @@ let TuiDatePicker = class TuiDatePicker extends AbstractTuiCalendar {
|
|
|
107
178
|
this.value.set(day);
|
|
108
179
|
}
|
|
109
180
|
}
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
Component({
|
|
113
|
-
selector: 'tui-date-picker',
|
|
114
|
-
imports: [
|
|
115
|
-
FormsModule,
|
|
116
|
-
TuiButton,
|
|
117
|
-
TuiCalendar,
|
|
118
|
-
TuiCarousel,
|
|
119
|
-
TuiChevron,
|
|
120
|
-
TuiDataGrid,
|
|
121
|
-
TuiElasticContainer,
|
|
122
|
-
TuiInputDate,
|
|
123
|
-
TuiInputDateMulti,
|
|
124
|
-
TuiInputDateRange,
|
|
125
|
-
TuiLink,
|
|
126
|
-
TuiMapperPipe,
|
|
127
|
-
TuiSlides,
|
|
128
|
-
],
|
|
129
|
-
templateUrl: './date-picker.component.html',
|
|
130
|
-
styleUrl: './date-picker.component.less',
|
|
131
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
132
|
-
providers: [
|
|
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: [
|
|
133
183
|
tuiAsAuxiliary(TuiDatePicker),
|
|
134
184
|
tuiProvide(AbstractTuiCalendar, TuiDatePicker),
|
|
135
185
|
tuiButtonOptionsProvider({ size: 'xs', appearance: 'flat' }),
|
|
136
186
|
tuiTextfieldOptionsProvider({ size: signal('m'), cleaner: signal(false) }),
|
|
137
|
-
],
|
|
138
|
-
|
|
139
|
-
],
|
|
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:
|
|
188
|
+
// eslint-disable-next-line @taiga-ui/experience-next/short-tui-imports
|
|
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
|
+
}
|
|
191
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiDatePicker, decorators: [{
|
|
192
|
+
type: Component,
|
|
193
|
+
args: [{ selector: 'tui-date-picker', imports: [
|
|
194
|
+
FormsModule,
|
|
195
|
+
TuiButton,
|
|
196
|
+
TuiCarousel,
|
|
197
|
+
TuiChevron,
|
|
198
|
+
TuiDataGrid,
|
|
199
|
+
TuiDatePickerHeader,
|
|
200
|
+
TuiElasticContainer,
|
|
201
|
+
TuiLink,
|
|
202
|
+
TuiMapperPipe,
|
|
203
|
+
// eslint-disable-next-line @taiga-ui/experience-next/short-tui-imports
|
|
204
|
+
TuiMonthComponent,
|
|
205
|
+
TuiSlides,
|
|
206
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
207
|
+
tuiAsAuxiliary(TuiDatePicker),
|
|
208
|
+
tuiProvide(AbstractTuiCalendar, TuiDatePicker),
|
|
209
|
+
tuiButtonOptionsProvider({ size: 'xs', appearance: 'flat' }),
|
|
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"] }]
|
|
212
|
+
}] });
|
|
140
213
|
|
|
141
214
|
/**
|
|
142
215
|
* Generated bundle index. Do not edit.
|
|
143
216
|
*/
|
|
144
217
|
|
|
145
|
-
export { TuiDatePicker };
|
|
218
|
+
export { TuiDatePicker, TuiDatePickerHeader };
|
|
146
219
|
//# sourceMappingURL=taiga-ui-experimental-components-date-picker.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-experimental-components-date-picker.mjs","sources":["../../../projects/experimental/components/date-picker/date-picker.component.ts","../../../projects/experimental/components/date-picker/taiga-ui-experimental-components-date-picker.ts"],"sourcesContent":["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 {\n TUI_CALENDAR_OPTIONS,\n TuiCalendar,\n} from '@taiga-ui/experimental/components/calendar';\nimport {TuiDataGrid} from '@taiga-ui/experimental/components/data-grid';\nimport {TuiInputDate} 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';\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\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 TuiCalendar,\n TuiCarousel,\n TuiChevron,\n TuiDataGrid,\n TuiElasticContainer,\n TuiInputDate,\n TuiInputDateMulti,\n TuiInputDateRange,\n TuiLink,\n TuiMapperPipe,\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_CALENDAR_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 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","/**\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-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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"}
|
|
@@ -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.
|
|
43
|
+
`, isInline: true, styles: ["[data-tui-version=\"5.16.0-canary.ee9c301\"]{@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.
|
|
68
|
+
}, styles: ["[data-tui-version=\"5.16.0-canary.ee9c301\"]{@import \"./file.styles.less\";}\n"] }]
|
|
69
69
|
}] });
|
|
70
70
|
|
|
71
71
|
class TuiFilePipe {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-experimental-components-file.mjs","sources":["../../../projects/experimental/components/file/file.options.ts","../../../projects/experimental/components/file/file.directive.ts","../../../projects/experimental/components/file/file.pipe.ts","../../../projects/experimental/components/file/taiga-ui-experimental-components-file.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiOrientation, type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiFileOptions {\n readonly size: TuiSizeL | TuiSizeS | '';\n readonly orientation: TuiOrientation;\n}\n\nexport const TUI_FILE_OPTIONS_DEFAULT_OPTIONS: TuiFileOptions = {\n size: 'l',\n orientation: 'vertical',\n};\n\nexport const [TUI_FILE_OPTIONS_OPTIONS, tuiFileOptionsProvider] = tuiCreateOptions(\n TUI_FILE_OPTIONS_DEFAULT_OPTIONS,\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {TuiCell, tuiCellOptionsProvider} from '@taiga-ui/core/components/cell';\nimport {tuiLoaderOptionsProvider} from '@taiga-ui/core/components/loader';\nimport {tuiButtonXOptionsProvider} from '@taiga-ui/core/directives/button-x';\nimport {tuiHintOptionsProvider} from '@taiga-ui/core/portals/hint';\nimport {TuiAvatar, tuiAvatarOptionsProvider} from '@taiga-ui/kit/components/avatar';\nimport {TuiSlides} from '@taiga-ui/layout/components/slides';\n\nimport {TUI_FILE_OPTIONS_OPTIONS} from './file.options';\n\n@Component({\n selector: '[tuiFile]',\n imports: [TuiAvatar, TuiSlides],\n template: `\n <label>\n <span\n tuiSlides\n tuiAvatar\n >\n <ng-content />\n </span>\n <ng-content select=\"[tuiTitle]\" />\n </label>\n <ng-content select=\"[tuiButtonX]\" />\n `,\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './file.styles.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiCellOptionsProvider(() => ({size: inject(TUI_FILE_OPTIONS_OPTIONS).size})),\n tuiAvatarOptionsProvider({round: false, appearance: 'secondary-grayscale'}),\n tuiButtonOptionsProvider({size: 's', appearance: 'action'}),\n tuiButtonXOptionsProvider({size: 'xs', appearance: 'icon'}),\n tuiLoaderOptionsProvider({size: 'm', inheritColor: true}),\n tuiHintOptionsProvider({appearance: 'floating', direction: 'top'}),\n ],\n hostDirectives: [{directive: TuiCell, inputs: ['tuiCell: size']}],\n host: {\n tuiFile: '',\n '[attr.data-orientation]': 'orientation()',\n },\n})\nexport class TuiFile {\n public readonly orientation = input(inject(TUI_FILE_OPTIONS_OPTIONS).orientation);\n}\n","import {type OnDestroy, Pipe, type PipeTransform} from '@angular/core';\n\n@Pipe({name: 'tuiFile'})\nexport class TuiFilePipe implements PipeTransform, OnDestroy {\n private url = '';\n\n public transform(value: File): string {\n URL.revokeObjectURL(this.url);\n this.url = URL.createObjectURL(value);\n\n return this.url;\n }\n\n public ngOnDestroy(): void {\n URL.revokeObjectURL(this.url);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;AAQO,MAAM,gCAAgC,GAAmB;AAC5D,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,WAAW,EAAE,UAAU;;AAGpB,MAAM,CAAC,wBAAwB,EAAE,sBAAsB,CAAC,GAAG,gBAAgB,CAC9E,gCAAgC;;MCwCvB,OAAO,CAAA;AApCpB,IAAA,WAAA,GAAA;QAqCoB,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,WAAW,CAAC;AACpF,IAAA;+GAFY,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,EAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAdL;AACP,YAAA,sBAAsB,CAAC,OAAO,EAAC,IAAI,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,EAAC,CAAC,CAAC;YAC7E,wBAAwB,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAC,CAAC;YAC3E,wBAAwB,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAC,CAAC;YAC3D,yBAAyB,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAC,CAAC;YAC3D,wBAAwB,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAC,CAAC;YACzD,sBAAsB,CAAC,EAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC;SACrE,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1BS;;;;;;;;;;;KAWT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"taiga-ui-experimental-components-file.mjs","sources":["../../../projects/experimental/components/file/file.options.ts","../../../projects/experimental/components/file/file.directive.ts","../../../projects/experimental/components/file/file.pipe.ts","../../../projects/experimental/components/file/taiga-ui-experimental-components-file.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiOrientation, type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiFileOptions {\n readonly size: TuiSizeL | TuiSizeS | '';\n readonly orientation: TuiOrientation;\n}\n\nexport const TUI_FILE_OPTIONS_DEFAULT_OPTIONS: TuiFileOptions = {\n size: 'l',\n orientation: 'vertical',\n};\n\nexport const [TUI_FILE_OPTIONS_OPTIONS, tuiFileOptionsProvider] = tuiCreateOptions(\n TUI_FILE_OPTIONS_DEFAULT_OPTIONS,\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\nimport {TuiCell, tuiCellOptionsProvider} from '@taiga-ui/core/components/cell';\nimport {tuiLoaderOptionsProvider} from '@taiga-ui/core/components/loader';\nimport {tuiButtonXOptionsProvider} from '@taiga-ui/core/directives/button-x';\nimport {tuiHintOptionsProvider} from '@taiga-ui/core/portals/hint';\nimport {TuiAvatar, tuiAvatarOptionsProvider} from '@taiga-ui/kit/components/avatar';\nimport {TuiSlides} from '@taiga-ui/layout/components/slides';\n\nimport {TUI_FILE_OPTIONS_OPTIONS} from './file.options';\n\n@Component({\n selector: '[tuiFile]',\n imports: [TuiAvatar, TuiSlides],\n template: `\n <label>\n <span\n tuiSlides\n tuiAvatar\n >\n <ng-content />\n </span>\n <ng-content select=\"[tuiTitle]\" />\n </label>\n <ng-content select=\"[tuiButtonX]\" />\n `,\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './file.styles.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiCellOptionsProvider(() => ({size: inject(TUI_FILE_OPTIONS_OPTIONS).size})),\n tuiAvatarOptionsProvider({round: false, appearance: 'secondary-grayscale'}),\n tuiButtonOptionsProvider({size: 's', appearance: 'action'}),\n tuiButtonXOptionsProvider({size: 'xs', appearance: 'icon'}),\n tuiLoaderOptionsProvider({size: 'm', inheritColor: true}),\n tuiHintOptionsProvider({appearance: 'floating', direction: 'top'}),\n ],\n hostDirectives: [{directive: TuiCell, inputs: ['tuiCell: size']}],\n host: {\n tuiFile: '',\n '[attr.data-orientation]': 'orientation()',\n },\n})\nexport class TuiFile {\n public readonly orientation = input(inject(TUI_FILE_OPTIONS_OPTIONS).orientation);\n}\n","import {type OnDestroy, Pipe, type PipeTransform} from '@angular/core';\n\n@Pipe({name: 'tuiFile'})\nexport class TuiFilePipe implements PipeTransform, OnDestroy {\n private url = '';\n\n public transform(value: File): string {\n URL.revokeObjectURL(this.url);\n this.url = URL.createObjectURL(value);\n\n return this.url;\n }\n\n public ngOnDestroy(): void {\n URL.revokeObjectURL(this.url);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -10,13 +10,13 @@ import { TUI_SHORT_WEEK_DAYS } from '@taiga-ui/core/tokens';
|
|
|
10
10
|
import { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
|
|
11
11
|
import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
|
|
12
12
|
|
|
13
|
-
const
|
|
13
|
+
const TUI_MONTH_DEFAULT_OPTIONS = {
|
|
14
14
|
dayType: (day) => (day.isWeekend ? 'weekend' : 'weekday'),
|
|
15
15
|
weekFirstDay: signal(TuiDayOfWeek.Monday),
|
|
16
16
|
showAdjacent: false,
|
|
17
17
|
showWeek: false,
|
|
18
18
|
};
|
|
19
|
-
const [
|
|
19
|
+
const [TUI_MONTH_OPTIONS, tuiMonthOptionsProvider] = tuiCreateOptions(TUI_MONTH_DEFAULT_OPTIONS);
|
|
20
20
|
|
|
21
21
|
const ISO_MIN = 4;
|
|
22
22
|
class TuiWeekPipe {
|
|
@@ -45,10 +45,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
45
45
|
/**
|
|
46
46
|
* @deprecated: work in progress, do not use!
|
|
47
47
|
*/
|
|
48
|
-
class
|
|
48
|
+
class TuiMonthComponent {
|
|
49
49
|
constructor() {
|
|
50
50
|
this.days = inject(TUI_SHORT_WEEK_DAYS);
|
|
51
|
-
this.options = inject(
|
|
51
|
+
this.options = inject(TUI_MONTH_OPTIONS);
|
|
52
52
|
this.today = TuiDay.currentLocal();
|
|
53
53
|
this.hovered = signal(null);
|
|
54
54
|
this.week = computed((week = convert(this.days())) => [
|
|
@@ -87,12 +87,12 @@ class TuiCalendar {
|
|
|
87
87
|
getType(day) {
|
|
88
88
|
return day === this.days()[5] || day === this.days()[6] ? 'weekend' : '';
|
|
89
89
|
}
|
|
90
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type:
|
|
91
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type:
|
|
90
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiMonthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
91
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiMonthComponent, isStandalone: true, selector: "tui-month", inputs: { month: { classPropertyName: "month", publicName: "month", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", 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 }, disabledItemHandler: { classPropertyName: "disabledItemHandler", publicName: "disabledItemHandler", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pick: "pick" }, host: { listeners: { "mouseleave": "hovered.set(null)" }, properties: { "class._ww": "showWeek()" } }, ngImport: i0, template: "@if (showWeek()) {\n <span>#</span>\n}\n@for (day of week(); track $index) {\n <span [attr.data-type]=\"getType(day)\">{{ day.slice(0, 2) | uppercase }}</span>\n}\n@for (week of month() | tuiCalendarSheet: true; track week) {\n @for (day of week; track day) {\n @if (day.monthSameOrBefore(month()) || showAdjacent()) {\n @if (showWeek() && $first) {\n <button\n disabled\n tabindex=\"-1\"\n type=\"button\"\n class=\"t-day\"\n >\n {{ day | tuiWeek }}\n </button>\n }\n <button\n tabindex=\"-1\"\n type=\"button\"\n class=\"t-day\"\n [attr.data-range]=\"getRange(day)\"\n [attr.data-type]=\"day | tuiMapper: dayType()\"\n [class.t-day_adjacent]=\"day.month !== month().month\"\n [class.t-day_end]=\"$last\"\n [class.t-day_hidden]=\"day.monthBefore(month()) && !showAdjacent()\"\n [class.t-day_start]=\"$first\"\n [class.t-day_today]=\"day.daySame(today)\"\n [disabled]=\"disabledItemHandler()(day)\"\n (click)=\"pick.emit(day)\"\n (mouseenter)=\"hovered.set(day)\"\n (pointerdown.prevent.zoneless)=\"(0)\"\n >\n <ng-container *polymorpheusOutlet=\"content() || `${day.day}` as text; context: {$implicit: day}\">\n {{ text }}\n </ng-container>\n </button>\n }\n }\n}\n", styles: [":host{display:grid;inline-size:100%;color:var(--tui-text-secondary);font:var(--tui-typography-body-m);grid-template:2rem / repeat(7,1fr);gap:.25rem 0;place-items:center;isolation:isolate}:host._ww{grid-template:2rem / repeat(8,1fr)}.t-day{position:relative;inline-size:100%;min-block-size:var(--tui-height-s);padding:0;border:0;background:transparent;font:inherit;color:var(--tui-text-primary);cursor:pointer;overflow:hidden}.t-day:has([tuiTitle]){min-block-size:var(--tui-height-m)}.t-day:has([tuiTitle]):before{min-inline-size:var(--tui-height-m);border-radius:var(--tui-radius-m)}.t-day:has([tuiTitle]):after{display:none}.t-day ::ng-deep [tuiTitle]{gap:.125rem;text-align:center}.t-day ::ng-deep [tuiTitle] [tuiSubtitle]{color:var(--tui-text-secondary);font:var(--tui-typography-ui-xs)}.t-day ::ng-deep [tuiTitle] [tuiSubtitle]:before{content:\"\\200b\"}.t-day:before{content:\"\";position:absolute;inset:50%;z-index:-1;block-size:100%;min-inline-size:var(--tui-height-s);aspect-ratio:1;border-radius:100%;transform:translate(calc(var(--tui-inline) * -50%),-50%)}.t-day:disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-day_adjacent{opacity:var(--tui-disabled-opacity)}.t-day_hidden{visibility:hidden}.t-day_today:after{content:\"\";position:absolute;inset-block-end:.25rem;inset-inline-start:50%;margin-inline-start:-.125rem;inline-size:.25rem;block-size:.25rem;border-radius:100%;background:var(--tui-background-accent-1)}.t-day_start{border-start-start-radius:var(--tui-radius-s);border-end-start-radius:var(--tui-radius-s)}.t-day_end{border-start-end-radius:var(--tui-radius-s);border-end-end-radius:var(--tui-radius-s)}.t-day[data-range=single],.t-day[data-range=start],.t-day[data-range=end]{color:var(--tui-text-primary-on-accent-1)}.t-day[data-range=single] ::ng-deep [tuiSubtitle],.t-day[data-range=start] ::ng-deep [tuiSubtitle],.t-day[data-range=end] ::ng-deep [tuiSubtitle]{color:inherit}.t-day[data-range=single]:before,.t-day[data-range=start]:before,.t-day[data-range=end]:before{background:var(--tui-background-accent-1)}.t-day[data-range=single]:after,.t-day[data-range=start]:after,.t-day[data-range=end]:after{background:currentColor}.t-day[data-range=start]:before{box-shadow:calc(var(--tui-inline) * 11rem) 0 0 10rem var(--tui-background-neutral-1)}.t-day[data-range=end]:before{box-shadow:calc(var(--tui-inline) * -11rem) 0 0 10rem var(--tui-background-neutral-1)}.t-day[data-range=middle]:before{box-shadow:0 0 0 10rem var(--tui-background-neutral-1),inset 0 0 0 10rem var(--tui-background-neutral-1)}@media(hover:hover)and (pointer:fine){.t-day:hover:before{background:var(--tui-background-neutral-1-hover)}.t-day[data-range=single]:hover:before,.t-day[data-range=start]:hover:before,.t-day[data-range=end]:hover:before{background:var(--tui-background-accent-1-hover)}}[data-type~=weekend]{color:var(--tui-text-action)}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "pipe", type: TuiCalendarSheetPipe, name: "tuiCalendarSheet" }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "pipe", type: TuiWeekPipe, name: "tuiWeek" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
92
92
|
}
|
|
93
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type:
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiMonthComponent, decorators: [{
|
|
94
94
|
type: Component,
|
|
95
|
-
args: [{ selector: 'tui-
|
|
95
|
+
args: [{ selector: 'tui-month', imports: [
|
|
96
96
|
PolymorpheusOutlet,
|
|
97
97
|
TuiCalendarSheetPipe,
|
|
98
98
|
TuiMapperPipe,
|
|
@@ -111,5 +111,5 @@ function convert(week) {
|
|
|
111
111
|
* Generated bundle index. Do not edit.
|
|
112
112
|
*/
|
|
113
113
|
|
|
114
|
-
export {
|
|
115
|
-
//# sourceMappingURL=taiga-ui-experimental-components-
|
|
114
|
+
export { TUI_MONTH_DEFAULT_OPTIONS, TUI_MONTH_OPTIONS, TuiMonthComponent, TuiWeekPipe, tuiMonthOptionsProvider };
|
|
115
|
+
//# sourceMappingURL=taiga-ui-experimental-components-month.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taiga-ui-experimental-components-month.mjs","sources":["../../../projects/experimental/components/month/month.options.ts","../../../projects/experimental/components/month/week.pipe.ts","../../../projects/experimental/components/month/month.component.ts","../../../projects/experimental/components/month/month.component.html","../../../projects/experimental/components/month/taiga-ui-experimental-components-month.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 TuiMonthOptions {\n readonly dayType: TuiHandler<TuiDay, string>;\n readonly weekFirstDay: Signal<number>;\n readonly showAdjacent: boolean;\n readonly showWeek: boolean;\n}\n\nexport const TUI_MONTH_DEFAULT_OPTIONS: TuiMonthOptions = {\n dayType: (day) => (day.isWeekend ? 'weekend' : 'weekday'),\n weekFirstDay: signal(TuiDayOfWeek.Monday),\n showAdjacent: false,\n showWeek: false,\n};\n\nexport const [TUI_MONTH_OPTIONS, tuiMonthOptionsProvider] = tuiCreateOptions(\n TUI_MONTH_DEFAULT_OPTIONS,\n);\n","import {Pipe, type PipeTransform} from '@angular/core';\nimport {TuiDay} from '@taiga-ui/cdk/date-time';\n\nconst ISO_MIN = 4;\n\n@Pipe({name: 'tuiWeek'})\nexport class TuiWeekPipe implements PipeTransform {\n public transform(day: TuiDay): number {\n const today = this.getWeek(day);\n const prev = this.getWeek(day.append({day: -7}));\n const next = this.getWeek(day.append({day: 7}));\n\n return next === 2 ? 1 : today || prev;\n }\n\n private getWeek(day: TuiDay): number {\n const beginning = new TuiDay(day.year, 0, 1);\n const delta = beginning.dayOfWeek();\n const first = ISO_MIN > 7 - delta ? 0 : 1;\n const sunday = day.append({day: 6 - day.dayOfWeek()});\n const offset = Math.floor(TuiDay.lengthBetween(beginning, sunday) / 7);\n\n return first + offset;\n }\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {UpperCasePipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\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 {TuiCalendarSheetPipe} from '@taiga-ui/core/components/calendar';\nimport {TUI_SHORT_WEEK_DAYS} from '@taiga-ui/core/tokens';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TUI_MONTH_OPTIONS} from './month.options';\nimport {TuiWeekPipe} from './week.pipe';\n\n/**\n * @deprecated: work in progress, do not use!\n */\n@Component({\n selector: 'tui-month',\n imports: [\n PolymorpheusOutlet,\n TuiCalendarSheetPipe,\n TuiMapperPipe,\n TuiWeekPipe,\n UpperCasePipe,\n ],\n templateUrl: './month.component.html',\n styleUrl: './month.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._ww]': 'showWeek()',\n '(mouseleave)': 'hovered.set(null)',\n },\n})\nexport class TuiMonthComponent {\n private readonly days = inject(TUI_SHORT_WEEK_DAYS);\n private readonly options = inject(TUI_MONTH_OPTIONS);\n\n protected readonly today = TuiDay.currentLocal();\n protected readonly hovered = signal<TuiDay | null>(null);\n\n protected readonly week = computed((week = convert(this.days())) => [\n ...week.slice(this.options.weekFirstDay()),\n ...week.slice(0, this.options.weekFirstDay()),\n ]);\n\n public readonly pick = output<TuiDay>();\n public readonly month = input(TuiMonth.currentLocal());\n public readonly value = input<TuiDay | TuiDayRange | readonly TuiDay[] | null>(null);\n public readonly content = input<PolymorpheusContent<TuiContext<TuiDay>>>();\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 public readonly disabledItemHandler =\n input<TuiBooleanHandler<TuiDay>>(TUI_FALSE_HANDLER);\n\n protected getRange(day: TuiDay): 'end' | 'middle' | 'single' | 'start' | null {\n const value = this.value() || [];\n\n if (!(value instanceof TuiDayRange)) {\n return coerceArray(value).find((item) => day.daySame(item)) ? 'single' : null;\n }\n\n const hovered = this.hovered();\n\n const range =\n value.from === value.to && hovered\n ? TuiDayRange.sort(hovered, value.to)\n : value;\n\n if (range.isSingleDay && day.daySame(range.from)) {\n return 'single';\n }\n\n if (day.daySame(range.from)) {\n return 'start';\n }\n\n if (day.daySame(range.to)) {\n return 'end';\n }\n\n return range.dayInRange(day) ? 'middle' : null;\n }\n\n protected getType(day: string): string {\n return day === this.days()[5] || day === this.days()[6] ? 'weekend' : '';\n }\n}\n\nfunction convert(week: readonly string[]): readonly string[] {\n return [week[week.length - 1] || '', ...week.slice(0, week.length - 1)];\n}\n","@if (showWeek()) {\n <span>#</span>\n}\n@for (day of week(); track $index) {\n <span [attr.data-type]=\"getType(day)\">{{ day.slice(0, 2) | uppercase }}</span>\n}\n@for (week of month() | tuiCalendarSheet: true; track week) {\n @for (day of week; track day) {\n @if (day.monthSameOrBefore(month()) || showAdjacent()) {\n @if (showWeek() && $first) {\n <button\n disabled\n tabindex=\"-1\"\n type=\"button\"\n class=\"t-day\"\n >\n {{ day | tuiWeek }}\n </button>\n }\n <button\n tabindex=\"-1\"\n type=\"button\"\n class=\"t-day\"\n [attr.data-range]=\"getRange(day)\"\n [attr.data-type]=\"day | tuiMapper: dayType()\"\n [class.t-day_adjacent]=\"day.month !== month().month\"\n [class.t-day_end]=\"$last\"\n [class.t-day_hidden]=\"day.monthBefore(month()) && !showAdjacent()\"\n [class.t-day_start]=\"$first\"\n [class.t-day_today]=\"day.daySame(today)\"\n [disabled]=\"disabledItemHandler()(day)\"\n (click)=\"pick.emit(day)\"\n (mouseenter)=\"hovered.set(day)\"\n (pointerdown.prevent.zoneless)=\"(0)\"\n >\n <ng-container *polymorpheusOutlet=\"content() || `${day.day}` as text; context: {$implicit: day}\">\n {{ text }}\n </ng-container>\n </button>\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from '@taiga-ui/experimental/components/calendar';
|
|
2
1
|
export * from '@taiga-ui/experimental/components/data-grid';
|
|
3
2
|
export * from '@taiga-ui/experimental/components/date-picker';
|
|
4
3
|
export * from '@taiga-ui/experimental/components/file';
|
|
4
|
+
export * from '@taiga-ui/experimental/components/month';
|
|
5
5
|
export * from '@taiga-ui/experimental/components/popout';
|
|
6
6
|
export * from '@taiga-ui/experimental/components/search-results';
|
|
7
7
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taiga-ui/experimental",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.16.0-canary.ee9c301",
|
|
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.
|
|
34
|
-
"@taiga-ui/cdk": "5.
|
|
35
|
-
"@taiga-ui/core": "5.
|
|
36
|
-
"@taiga-ui/kit": "5.
|
|
37
|
-
"@taiga-ui/layout": "5.
|
|
33
|
+
"@taiga-ui/addon-commerce": "5.16.0",
|
|
34
|
+
"@taiga-ui/cdk": "5.16.0",
|
|
35
|
+
"@taiga-ui/core": "5.16.0",
|
|
36
|
+
"@taiga-ui/kit": "5.16.0",
|
|
37
|
+
"@taiga-ui/layout": "5.16.0",
|
|
38
38
|
"@taiga-ui/polymorpheus": "^5.0.1",
|
|
39
39
|
"rxjs": ">=7.0.0"
|
|
40
40
|
},
|
|
@@ -52,10 +52,6 @@
|
|
|
52
52
|
"types": "./components/index.d.ts",
|
|
53
53
|
"default": "./fesm2022/taiga-ui-experimental-components.mjs"
|
|
54
54
|
},
|
|
55
|
-
"./components/calendar": {
|
|
56
|
-
"types": "./components/calendar/index.d.ts",
|
|
57
|
-
"default": "./fesm2022/taiga-ui-experimental-components-calendar.mjs"
|
|
58
|
-
},
|
|
59
55
|
"./components/data-grid": {
|
|
60
56
|
"types": "./components/data-grid/index.d.ts",
|
|
61
57
|
"default": "./fesm2022/taiga-ui-experimental-components-data-grid.mjs"
|
|
@@ -68,6 +64,10 @@
|
|
|
68
64
|
"types": "./components/file/index.d.ts",
|
|
69
65
|
"default": "./fesm2022/taiga-ui-experimental-components-file.mjs"
|
|
70
66
|
},
|
|
67
|
+
"./components/month": {
|
|
68
|
+
"types": "./components/month/index.d.ts",
|
|
69
|
+
"default": "./fesm2022/taiga-ui-experimental-components-month.mjs"
|
|
70
|
+
},
|
|
71
71
|
"./components/popout": {
|
|
72
72
|
"types": "./components/popout/index.d.ts",
|
|
73
73
|
"default": "./fesm2022/taiga-ui-experimental-components-popout.mjs"
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { type Signal } from '@angular/core';
|
|
2
|
-
import { type TuiDay } from '@taiga-ui/cdk/date-time';
|
|
3
|
-
import { type TuiHandler } from '@taiga-ui/cdk/types';
|
|
4
|
-
export interface TuiCalendarOptions {
|
|
5
|
-
readonly dayType: TuiHandler<TuiDay, string>;
|
|
6
|
-
readonly weekFirstDay: Signal<number>;
|
|
7
|
-
readonly showAdjacent: boolean;
|
|
8
|
-
readonly showWeek: boolean;
|
|
9
|
-
}
|
|
10
|
-
export declare const TUI_CALENDAR_DEFAULT_OPTIONS: TuiCalendarOptions;
|
|
11
|
-
export declare const TUI_CALENDAR_OPTIONS: import("@angular/core").InjectionToken<TuiCalendarOptions>, tuiCalendarOptionsProvider: (item: Partial<TuiCalendarOptions> | (() => Partial<TuiCalendarOptions>)) => import("@angular/core").FactoryProvider;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-experimental-components-calendar.mjs","sources":["../../../projects/experimental/components/calendar/calendar.options.ts","../../../projects/experimental/components/calendar/week.pipe.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 {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 weekFirstDay: Signal<number>;\n readonly showAdjacent: boolean;\n readonly showWeek: boolean;\n}\n\nexport const TUI_CALENDAR_DEFAULT_OPTIONS: TuiCalendarOptions = {\n dayType: (day) => (day.isWeekend ? 'weekend' : 'weekday'),\n weekFirstDay: signal(TuiDayOfWeek.Monday),\n showAdjacent: false,\n showWeek: false,\n};\n\nexport const [TUI_CALENDAR_OPTIONS, tuiCalendarOptionsProvider] = tuiCreateOptions(\n TUI_CALENDAR_DEFAULT_OPTIONS,\n);\n","import {Pipe, type PipeTransform} from '@angular/core';\nimport {TuiDay} from '@taiga-ui/cdk/date-time';\n\nconst ISO_MIN = 4;\n\n@Pipe({name: 'tuiWeek'})\nexport class TuiWeekPipe implements PipeTransform {\n public transform(day: TuiDay): number {\n const today = this.getWeek(day);\n const prev = this.getWeek(day.append({day: -7}));\n const next = this.getWeek(day.append({day: 7}));\n\n return next === 2 ? 1 : today || prev;\n }\n\n private getWeek(day: TuiDay): number {\n const beginning = new TuiDay(day.year, 0, 1);\n const delta = beginning.dayOfWeek();\n const first = ISO_MIN > 7 - delta ? 0 : 1;\n const sunday = day.append({day: 6 - day.dayOfWeek()});\n const offset = Math.floor(TuiDay.lengthBetween(beginning, sunday) / 7);\n\n return first + offset;\n }\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {UpperCasePipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\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 {TuiCalendarSheetPipe} from '@taiga-ui/core/components/calendar';\nimport {TUI_SHORT_WEEK_DAYS} from '@taiga-ui/core/tokens';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\nimport {TuiWeekPipe} from './week.pipe';\n\n/**\n * @deprecated: work in progress, do not use!\n */\n@Component({\n selector: 'tui-calendar[new]',\n imports: [\n PolymorpheusOutlet,\n TuiCalendarSheetPipe,\n TuiMapperPipe,\n TuiWeekPipe,\n UpperCasePipe,\n ],\n templateUrl: './calendar.component.html',\n styleUrl: './calendar.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._ww]': 'showWeek()',\n '(mouseleave)': 'hovered.set(null)',\n },\n})\nexport class TuiCalendar {\n private readonly days = inject(TUI_SHORT_WEEK_DAYS);\n private readonly options = inject(TUI_CALENDAR_OPTIONS);\n\n protected readonly today = TuiDay.currentLocal();\n protected readonly hovered = signal<TuiDay | null>(null);\n\n protected readonly week = computed((week = convert(this.days())) => [\n ...week.slice(this.options.weekFirstDay()),\n ...week.slice(0, this.options.weekFirstDay()),\n ]);\n\n public readonly pick = output<TuiDay>();\n public readonly month = input(TuiMonth.currentLocal());\n public readonly value = input<TuiDay | TuiDayRange | readonly TuiDay[] | null>(null);\n public readonly content = input<PolymorpheusContent<TuiContext<TuiDay>>>();\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 public readonly disabledItemHandler =\n input<TuiBooleanHandler<TuiDay>>(TUI_FALSE_HANDLER);\n\n protected getRange(day: TuiDay): 'end' | 'middle' | 'single' | 'start' | null {\n const value = this.value() || [];\n\n if (!(value instanceof TuiDayRange)) {\n return coerceArray(value).find((item) => day.daySame(item)) ? 'single' : null;\n }\n\n const hovered = this.hovered();\n\n const range =\n value.from === value.to && hovered\n ? TuiDayRange.sort(hovered, value.to)\n : value;\n\n if (range.isSingleDay && day.daySame(range.from)) {\n return 'single';\n }\n\n if (day.daySame(range.from)) {\n return 'start';\n }\n\n if (day.daySame(range.to)) {\n return 'end';\n }\n\n return range.dayInRange(day) ? 'middle' : null;\n }\n\n protected getType(day: string): string {\n return day === this.days()[5] || day === this.days()[6] ? 'weekend' : '';\n }\n}\n\nfunction convert(week: readonly string[]): readonly string[] {\n return [week[week.length - 1] || '', ...week.slice(0, week.length - 1)];\n}\n","@if (showWeek()) {\n <span>#</span>\n}\n@for (day of week(); track $index) {\n <span [attr.data-type]=\"getType(day)\">{{ day.slice(0, 2) | uppercase }}</span>\n}\n@for (week of month() | tuiCalendarSheet: true; track week) {\n @for (day of week; track day) {\n @if (day.monthSameOrBefore(month()) || showAdjacent()) {\n @if (showWeek() && $first) {\n <button\n disabled\n tabindex=\"-1\"\n type=\"button\"\n class=\"t-day\"\n >\n {{ day | tuiWeek }}\n </button>\n }\n <button\n tabindex=\"-1\"\n type=\"button\"\n class=\"t-day\"\n [attr.data-range]=\"getRange(day)\"\n [attr.data-type]=\"day | tuiMapper: dayType()\"\n [class.t-day_adjacent]=\"day.month !== month().month\"\n [class.t-day_end]=\"$last\"\n [class.t-day_hidden]=\"day.monthBefore(month()) && !showAdjacent()\"\n [class.t-day_start]=\"$first\"\n [class.t-day_today]=\"day.daySame(today)\"\n [disabled]=\"disabledItemHandler()(day)\"\n (click)=\"pick.emit(day)\"\n (mouseenter)=\"hovered.set(day)\"\n (pointerdown.prevent.zoneless)=\"(0)\"\n >\n <ng-container *polymorpheusOutlet=\"content() || `${day.day}` as text; context: {$implicit: day}\">\n {{ text }}\n </ng-container>\n </button>\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
File without changes
|