@taiga-ui/experimental 5.22.0 → 5.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/calendar/calendar-mobile.component.d.ts +15 -0
- package/components/calendar/calendar.d.ts +2 -1
- package/components/calendar/index.d.ts +1 -0
- package/components/search-results/search-history.component.d.ts +1 -1
- package/fesm2022/taiga-ui-experimental-components-calendar.mjs +59 -3
- package/fesm2022/taiga-ui-experimental-components-calendar.mjs.map +1 -1
- package/fesm2022/taiga-ui-experimental-components-file.mjs +2 -2
- package/fesm2022/taiga-ui-experimental-components-month.mjs +2 -2
- package/fesm2022/taiga-ui-experimental-components-month.mjs.map +1 -1
- package/fesm2022/taiga-ui-experimental-components-search-results.mjs +6 -6
- package/fesm2022/taiga-ui-experimental-components-search-results.mjs.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TuiDay, type TuiMonth } from '@taiga-ui/cdk/date-time';
|
|
2
|
+
import { TuiDatePicker } from './date-picker';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated: work in progress, do not use!
|
|
6
|
+
*/
|
|
7
|
+
export declare class TuiCalendarMobileComponent<T extends 'multi' | 'range' | 'single'> extends TuiDatePicker<T> {
|
|
8
|
+
private ready;
|
|
9
|
+
protected updateMonth(day?: TuiDay | null): void;
|
|
10
|
+
protected getMonth(month: number): TuiMonth;
|
|
11
|
+
protected setMonth({ year, month }: TuiMonth): void;
|
|
12
|
+
protected getAppearance(month: TuiMonth): 'primary' | 'secondary-grayscale';
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TuiCalendarMobileComponent<any>, never>;
|
|
14
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TuiCalendarMobileComponent<any>, "tui-calendar-mobile", never, {}, {}, never, never, true, never>;
|
|
15
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { TuiCalendarComponent } from './calendar.component';
|
|
2
|
+
import { TuiCalendarMobileComponent } from './calendar-mobile.component';
|
|
2
3
|
import { TuiCalendarMultiComponent } from './calendar-multi.component';
|
|
3
|
-
export declare const TuiCalendar: readonly [typeof TuiCalendarComponent, typeof TuiCalendarMultiComponent];
|
|
4
|
+
export declare const TuiCalendar: readonly [typeof TuiCalendarComponent, typeof TuiCalendarMobileComponent, typeof TuiCalendarMultiComponent];
|
|
@@ -19,7 +19,7 @@ export declare class TuiSearchHistory {
|
|
|
19
19
|
empty: string;
|
|
20
20
|
remove: string;
|
|
21
21
|
};
|
|
22
|
-
protected readonly $: import("rxjs").Subscription
|
|
22
|
+
protected readonly $: import("rxjs").Subscription;
|
|
23
23
|
protected history: readonly string[];
|
|
24
24
|
readonly popular: import("@angular/core").InputSignal<readonly string[]>;
|
|
25
25
|
protected store(item: string): void;
|
|
@@ -2,7 +2,7 @@ import { coerceArray } from '@angular/cdk/coercion';
|
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { inject, input, Component, ChangeDetectionStrategy, computed, effect, untracked, Directive, viewChild, model, signal, ElementRef } from '@angular/core';
|
|
4
4
|
import { FormsModule } from '@angular/forms';
|
|
5
|
-
import { TuiDayRange, TuiMonth, TuiDay } from '@taiga-ui/cdk/date-time';
|
|
5
|
+
import { TuiDayRange, TuiMonth, TuiDay, tuiDateClamp } 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 { TuiButton, tuiButtonOptionsProvider } from '@taiga-ui/core/components/button';
|
|
@@ -24,6 +24,7 @@ import { TuiInputDateMulti } from '@taiga-ui/kit/components/input-date-multi';
|
|
|
24
24
|
import { TuiInputDateRange } from '@taiga-ui/kit/components/input-date-range';
|
|
25
25
|
import { tuiArrayToggle } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
26
26
|
import * as i2 from '@taiga-ui/cdk/directives/item';
|
|
27
|
+
import { TuiScrollWheel } from '@taiga-ui/experimental/components/scroll-wheel';
|
|
27
28
|
import { WaIntersectionObservee } from '@ng-web-apis/intersection-observer';
|
|
28
29
|
|
|
29
30
|
let TuiCalendarHeader = class TuiCalendarHeader {
|
|
@@ -78,6 +79,7 @@ TuiCalendarHeader = __decorate([
|
|
|
78
79
|
:host {
|
|
79
80
|
position: absolute;
|
|
80
81
|
inset: 0.125rem;
|
|
82
|
+
block-size: fit-content;
|
|
81
83
|
opacity: 0;
|
|
82
84
|
pointer-events: none;
|
|
83
85
|
visibility: visible;
|
|
@@ -228,6 +230,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
228
230
|
], 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('input')) {\n <tui-calendar-header [mode]=\"mode()\" />\n }\n</header>\n<tui-elastic-container class=\"t-slides\">\n <section tuiSlides>\n @switch (view()) {\n @case ('day') {\n <tui-carousel\n [index]=\"index()\"\n [max]=\"max().year * 12 + max().month\"\n [min]=\"min().year * 12 + min().month\"\n (indexChange)=\"month.set(getMonth($event))\"\n >\n <tui-month\n *tuiItem=\"let current\"\n class=\"t-calendar\"\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"current | tuiMapper: getMonth\"\n [showAdjacent]=\"showAdjacent()\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n />\n </tui-carousel>\n }\n\n @case ('month') {\n <tui-data-grid\n class=\"t-grid\"\n [content]=\"contentMonth() ?? content()\"\n [disabledItemHandler]=\"disabledMonth()\"\n [items]=\"year()\"\n [value]=\"months()\"\n (pick)=\"onMonth($event)\"\n />\n }\n\n @case ('year') {\n <tui-carousel\n [max]=\"yearMax()\"\n [min]=\"yearMin()\"\n >\n <tui-data-grid\n *tuiItem=\"let offset\"\n class=\"t-grid\"\n [content]=\"contentYear()\"\n [disabledItemHandler]=\"disabledYear()\"\n [items]=\"month().year + offset * 12 - 6 | tuiMapper: getItems\"\n [value]=\"years()\"\n (pick)=\"onYear($event)\"\n />\n </tui-carousel>\n }\n }\n </section>\n</tui-elastic-container>\n", styles: [":host{display:block;min-inline-size:calc(20rem * var(--tui-font-scale));flex:1;box-sizing:content-box;overflow:hidden}:host-context(tui-dropdown){inline-size:calc(20rem * var(--tui-font-scale));padding-inline:.5rem}:host-context(tui-dropdown):has([tuiTitle]) .t-calendar{padding-block-end:.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;min-block-size:var(--tui-height-l);padding:0 .75rem;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,.t-calendar{padding:0 .5rem 1rem}.t-slides{margin:0 -.5rem}\n"] }]
|
|
229
231
|
}] });
|
|
230
232
|
|
|
233
|
+
/**
|
|
234
|
+
* @deprecated: work in progress, do not use!
|
|
235
|
+
*/
|
|
236
|
+
class TuiCalendarMobileComponent extends TuiDatePicker {
|
|
237
|
+
constructor() {
|
|
238
|
+
super(...arguments);
|
|
239
|
+
this.ready = false;
|
|
240
|
+
}
|
|
241
|
+
updateMonth(day) {
|
|
242
|
+
if (!this.ready) {
|
|
243
|
+
super.updateMonth(day);
|
|
244
|
+
this.ready = true;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
getMonth(month) {
|
|
248
|
+
return this.month().append({ month });
|
|
249
|
+
}
|
|
250
|
+
setMonth({ year, month }) {
|
|
251
|
+
this.value.set(new TuiDayRange(tuiDateClamp(new TuiDay(year, month, 1), this.min(), this.max()), tuiDateClamp(new TuiDay(year, month, 1).append({ month: 1, day: -1 }), this.min(), this.max())));
|
|
252
|
+
}
|
|
253
|
+
getAppearance(month) {
|
|
254
|
+
const value = this.value();
|
|
255
|
+
if (value instanceof TuiDayRange) {
|
|
256
|
+
const { from, to } = value;
|
|
257
|
+
const start = from.monthSame(month) && from.day === 1;
|
|
258
|
+
const end = to.monthSame(month) && to.day === month.daysCount;
|
|
259
|
+
return (from.monthBefore(month) || start) && (to.monthAfter(month) || end)
|
|
260
|
+
? 'primary'
|
|
261
|
+
: 'secondary-grayscale';
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
return 'secondary-grayscale';
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiCalendarMobileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
268
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiCalendarMobileComponent, isStandalone: true, selector: "tui-calendar-mobile", providers: [
|
|
269
|
+
tuiAsAuxiliary(TuiCalendarMobileComponent),
|
|
270
|
+
tuiProvide(AbstractTuiCalendar, TuiCalendarMobileComponent),
|
|
271
|
+
tuiTextfieldOptionsProvider({ size: signal('m'), cleaner: signal(false) }),
|
|
272
|
+
], usesInheritance: true, ngImport: i0, template: "<tui-month\n class=\"t-labels\"\n [showWeek]=\"showWeek()\"\n/>\n<tui-scroll-wheel class=\"t-scroll\">\n <ng-template let-index>\n @let month = getMonth(index);\n @if (mode() === 'range') {\n <button\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"getAppearance(month)\"\n [disabled]=\"month.monthBefore(min()) || month.monthAfter(max())\"\n (click)=\"setMonth(month)\"\n >\n {{ i18n()[month.month] }} {{ month.year }}\n </button>\n } @else {\n <div class=\"t-header\">{{ i18n()[month.month] }} {{ month.year }}</div>\n }\n <tui-month\n class=\"t-month\"\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"month\"\n [showAdjacent]=\"false\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n />\n </ng-template>\n</tui-scroll-wheel>\n@if (!dropdown?.nativeElement?.matches('input')) {\n <tui-calendar-header [mode]=\"mode()\" />\n}\n", styles: [":host{position:relative;display:flex;align-items:flex-start;flex:1}:host-context(tui-sheet-dialog) .t-scroll,:host-context(tui-sheet-dialog) .t-labels{inset:2rem -1rem calc(-1*max(1.5rem,env(safe-area-inset-bottom)))}:host-context(tui-sheet-dialog) .t-header{background:var(--tui-background-elevation-1)}:host-context(tui-dialog) .t-scroll,:host-context(tui-dialog) .t-labels{inset:2rem -1rem calc(-1*max(1rem,env(safe-area-inset-bottom)))}:host-context(tui-dialog tui-app-bar +){margin-block-start:-1rem}.t-labels{position:absolute;inset:0;inline-size:auto;inset-block-start:0!important;clip-path:inset(0 0 calc(100% - 2rem))}.t-scroll{position:absolute;inset:2rem 0 0;isolation:isolate}.t-button{margin:.375rem 1rem;border-radius:10rem}.t-header{position:sticky;z-index:1;inset-block-start:0;font:var(--tui-typography-heading-h6);padding:.75rem 1rem;background:var(--tui-background-base)}.t-month{gap:.5rem 0;min-block-size:2.5rem;font:var(--tui-typography-body-l);margin-block-end:1rem;grid-template-rows:none}.t-month ::ng-deep>span{display:none}\n"], dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],label[tuiButton],a[tuiIconButton],button[tuiIconButton],label[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiCalendarHeader, selector: "tui-calendar-header", inputs: ["mode"] }, { kind: "component", type: TuiMonthComponent, selector: "tui-month", inputs: ["month", "value", "content", "dayType", "showAdjacent", "showWeek", "disabledItemHandler"], outputs: ["pick"] }, { kind: "component", type: TuiScrollWheel, selector: "tui-scroll-wheel", inputs: ["buffer", "index"], outputs: ["indexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
273
|
+
}
|
|
274
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiCalendarMobileComponent, decorators: [{
|
|
275
|
+
type: Component,
|
|
276
|
+
args: [{ selector: 'tui-calendar-mobile', imports: [TuiButton, TuiCalendarHeader, TuiMonthComponent, TuiScrollWheel], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
277
|
+
tuiAsAuxiliary(TuiCalendarMobileComponent),
|
|
278
|
+
tuiProvide(AbstractTuiCalendar, TuiCalendarMobileComponent),
|
|
279
|
+
tuiTextfieldOptionsProvider({ size: signal('m'), cleaner: signal(false) }),
|
|
280
|
+
], template: "<tui-month\n class=\"t-labels\"\n [showWeek]=\"showWeek()\"\n/>\n<tui-scroll-wheel class=\"t-scroll\">\n <ng-template let-index>\n @let month = getMonth(index);\n @if (mode() === 'range') {\n <button\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"getAppearance(month)\"\n [disabled]=\"month.monthBefore(min()) || month.monthAfter(max())\"\n (click)=\"setMonth(month)\"\n >\n {{ i18n()[month.month] }} {{ month.year }}\n </button>\n } @else {\n <div class=\"t-header\">{{ i18n()[month.month] }} {{ month.year }}</div>\n }\n <tui-month\n class=\"t-month\"\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"month\"\n [showAdjacent]=\"false\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n />\n </ng-template>\n</tui-scroll-wheel>\n@if (!dropdown?.nativeElement?.matches('input')) {\n <tui-calendar-header [mode]=\"mode()\" />\n}\n", styles: [":host{position:relative;display:flex;align-items:flex-start;flex:1}:host-context(tui-sheet-dialog) .t-scroll,:host-context(tui-sheet-dialog) .t-labels{inset:2rem -1rem calc(-1*max(1.5rem,env(safe-area-inset-bottom)))}:host-context(tui-sheet-dialog) .t-header{background:var(--tui-background-elevation-1)}:host-context(tui-dialog) .t-scroll,:host-context(tui-dialog) .t-labels{inset:2rem -1rem calc(-1*max(1rem,env(safe-area-inset-bottom)))}:host-context(tui-dialog tui-app-bar +){margin-block-start:-1rem}.t-labels{position:absolute;inset:0;inline-size:auto;inset-block-start:0!important;clip-path:inset(0 0 calc(100% - 2rem))}.t-scroll{position:absolute;inset:2rem 0 0;isolation:isolate}.t-button{margin:.375rem 1rem;border-radius:10rem}.t-header{position:sticky;z-index:1;inset-block-start:0;font:var(--tui-typography-heading-h6);padding:.75rem 1rem;background:var(--tui-background-base)}.t-month{gap:.5rem 0;min-block-size:2.5rem;font:var(--tui-typography-body-l);margin-block-end:1rem;grid-template-rows:none}.t-month ::ng-deep>span{display:none}\n"] }]
|
|
281
|
+
}] });
|
|
282
|
+
|
|
231
283
|
/**
|
|
232
284
|
* @deprecated: work in progress, do not use!
|
|
233
285
|
*/
|
|
@@ -296,11 +348,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
296
348
|
], host: { '[style.--t-months]': 'months()' }, template: "<header class=\"t-buttons\">\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('input')) {\n <tui-calendar-header [mode]=\"mode()\" />\n }\n</header>\n<section\n tuiSlides\n class=\"t-slides\"\n>\n <tui-carousel\n [index]=\"index()\"\n [max]=\"max().year * 12 + max().month\"\n [min]=\"min().year * 12 + min().month\"\n [style.max-block-size.px]=\"height()\"\n (indexChange)=\"month.set(getMonth(index() + ($event - index()) * months()))\"\n >\n <ng-container *tuiItem=\"let current\">\n @for (_ of '-'.repeat(months()); track $index) {\n @let month = index() + (current - index()) * months() + $index | tuiMapper: getMonth;\n <div\n #el\n class=\"t-calendar\"\n >\n <div class=\"t-header\">{{ i18n()[month.month] }} {{ month.year }}</div>\n <tui-month\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"month\"\n [showAdjacent]=\"false\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, month, el.offsetHeight)\"\n />\n </div>\n }\n </ng-container>\n </tui-carousel>\n</section>\n", styles: [":host{position:relative;display:block;inline-size:calc(20rem * var(--tui-font-scale) * var(--t-months));min-inline-size:calc(20rem * var(--tui-font-scale) * var(--t-months));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:center;padding:.5rem .25rem 1rem;font:var(--tui-typography-ui-l);font-weight:700}.t-chevron{transform:scaleX(var(--tui-inline))}.t-slides{margin:0 -.5rem}.t-calendar{inline-size:100%;align-self:flex-start;scroll-snap-align:start;scroll-snap-stop:always;padding:0 .5rem}.t-buttons{position:absolute;inset:0 0 auto;z-index:1;display:flex;justify-content:space-between;padding:inherit;margin:.5rem .25rem}.t-buttons:focus-within{visibility:hidden}\n"] }]
|
|
297
349
|
}] });
|
|
298
350
|
|
|
299
|
-
const TuiCalendar = [
|
|
351
|
+
const TuiCalendar = [
|
|
352
|
+
TuiCalendarComponent,
|
|
353
|
+
TuiCalendarMobileComponent,
|
|
354
|
+
TuiCalendarMultiComponent,
|
|
355
|
+
];
|
|
300
356
|
|
|
301
357
|
/**
|
|
302
358
|
* Generated bundle index. Do not edit.
|
|
303
359
|
*/
|
|
304
360
|
|
|
305
|
-
export { TuiCalendar, TuiCalendarComponent, TuiCalendarHeader, TuiCalendarMultiComponent, TuiDatePicker };
|
|
361
|
+
export { TuiCalendar, TuiCalendarComponent, TuiCalendarHeader, TuiCalendarMobileComponent, TuiCalendarMultiComponent, TuiDatePicker };
|
|
306
362
|
//# sourceMappingURL=taiga-ui-experimental-components-calendar.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-experimental-components-calendar.mjs","sources":["../../../projects/experimental/components/calendar/calendar-header.component.ts","../../../projects/experimental/components/calendar/date-picker.ts","../../../projects/experimental/components/calendar/calendar.component.ts","../../../projects/experimental/components/calendar/calendar.component.html","../../../projects/experimental/components/calendar/calendar-multi.component.ts","../../../projects/experimental/components/calendar/calendar-multi.component.html","../../../projects/experimental/components/calendar/calendar.ts","../../../projects/experimental/components/calendar/taiga-ui-experimental-components-calendar.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {AbstractTuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {TUI_DROPDOWN_HOST} from '@taiga-ui/core/portals/dropdown';\nimport {\n TuiInputDate,\n tuiInputDateOptionsProvider,\n} from '@taiga-ui/kit/components/input-date';\nimport {TuiInputDateMulti} from '@taiga-ui/kit/components/input-date-multi';\nimport {TuiInputDateRange} from '@taiga-ui/kit/components/input-date-range';\n\n@Component({\n selector: 'tui-calendar-header',\n imports: [FormsModule, TuiInputDate, TuiInputDateMulti, TuiInputDateRange],\n template: `\n @switch (mode()) {\n @case ('multi') {\n <tui-textfield multi>\n <input\n tuiInputDateMulti\n [attr.aria-labelledby]=\"dropdown?.nativeElement?.id || null\"\n [max]=\"picker.max()\"\n [min]=\"picker.min()\"\n [(ngModel)]=\"picker.value\"\n />\n </tui-textfield>\n }\n @case ('range') {\n <tui-textfield>\n <input\n tuiInputDateRange\n [attr.aria-labelledby]=\"dropdown?.nativeElement?.id || null\"\n [max]=\"picker.max()\"\n [min]=\"picker.min()\"\n [(ngModel)]=\"picker.value\"\n />\n </tui-textfield>\n }\n @default {\n <tui-textfield>\n <input\n tuiInputDate\n [attr.aria-labelledby]=\"dropdown?.nativeElement?.id || null\"\n [max]=\"picker.max()\"\n [min]=\"picker.min()\"\n [(ngModel)]=\"picker.value\"\n />\n </tui-textfield>\n }\n }\n `,\n styles: `\n :host {\n position: absolute;\n inset: 0.125rem;\n opacity: 0;\n pointer-events: none;\n visibility: visible;\n\n &:focus-within {\n opacity: 1;\n pointer-events: auto;\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiInputDateOptionsProvider({icon: ''})],\n})\nexport class TuiCalendarHeader {\n protected readonly picker = inject(AbstractTuiCalendar);\n protected readonly dropdown = inject(TUI_DROPDOWN_HOST, {optional: true});\n\n public readonly mode = input<'multi' | 'range' | 'single'>();\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {computed, Directive, effect, inject, input, untracked} from '@angular/core';\nimport {TuiDay, TuiDayRange, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiArrayToggle} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {AbstractTuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {TUI_DROPDOWN_HOST} from '@taiga-ui/core/portals/dropdown';\nimport {TUI_COMMON_ICONS, TUI_MONTHS, TUI_SPIN_TEXTS} from '@taiga-ui/core/tokens';\nimport {TUI_MONTH_OPTIONS} from '@taiga-ui/experimental/components/month';\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@Directive()\nexport abstract class TuiDatePicker<\n T extends 'multi' | 'range' | 'single',\n> extends AbstractTuiCalendar<DatePicker<T>> {\n protected readonly options = inject(TUI_MONTH_OPTIONS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly dropdown = inject(TUI_DROPDOWN_HOST, {optional: true});\n protected readonly texts = inject(TUI_SPIN_TEXTS);\n protected readonly i18n = inject(TUI_MONTHS);\n protected readonly disabledDay = computed(\n () => (day: TuiDay) =>\n day < this.min() || day > this.max() || this.disabledItemHandler()(day),\n );\n\n protected readonly sync = effect(() => {\n const value = this.value();\n const [day] = value instanceof TuiDayRange ? [value.from] : coerceArray(value);\n\n this.min();\n this.max();\n\n if (!day || day.year < 9000) {\n untracked(() => this.updateMonth(day));\n }\n });\n\n public readonly mode = input<T>();\n public readonly contentDay = input<PolymorpheusContent<TuiContext<TuiDay>>>();\n public readonly dayType = input(this.options.dayType);\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 updateMonth(day?: TuiDay | null): void {\n this.month.update(({month, year}) =>\n (day || new TuiDay(year, month, 1)).dayLimit(this.min(), this.max()),\n );\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","import {coerceArray} from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {type 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 {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 {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {TuiDataGrid} from '@taiga-ui/experimental/components/data-grid';\nimport {TuiMonthComponent} from '@taiga-ui/experimental/components/month';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport {TuiElasticContainer} from '@taiga-ui/layout/components/elastic-container';\nimport {TuiSlides} from '@taiga-ui/layout/components/slides';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {TuiCalendarHeader} from './calendar-header.component';\nimport {TuiDatePicker} from './date-picker';\n\n/**\n * @deprecated: work in progress, do not use!\n */\n@Component({\n selector: 'tui-calendar[new]',\n imports: [\n FormsModule,\n TuiButton,\n TuiCalendarHeader,\n TuiCarousel,\n TuiChevron,\n TuiDataGrid,\n TuiElasticContainer,\n TuiLink,\n TuiMapperPipe,\n // eslint-disable-next-line @taiga-ui/experience-next/short-tui-imports\n TuiMonthComponent,\n TuiSlides,\n ],\n templateUrl: './calendar.component.html',\n styleUrl: './calendar.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsAuxiliary(TuiCalendarComponent),\n tuiProvide(AbstractTuiCalendar, TuiCalendarComponent),\n tuiButtonOptionsProvider({size: 'xs', appearance: 'flat'}),\n tuiTextfieldOptionsProvider({size: signal('m'), cleaner: signal(false)}),\n ],\n})\nexport class TuiCalendarComponent<\n T extends 'multi' | 'range' | 'single',\n> extends TuiDatePicker<T> {\n protected readonly carousel = viewChild(TuiCarouselComponent);\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 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 public readonly view = model<'day' | 'month' | 'year'>('day');\n public readonly contentMonth = input<PolymorpheusContent<TuiContext<TuiMonth>>>();\n public readonly contentYear = input<PolymorpheusContent<TuiContext<number>>>();\n public readonly showAdjacent = input(this.options.showAdjacent);\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","<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('input')) {\n <tui-calendar-header [mode]=\"mode()\" />\n }\n</header>\n<tui-elastic-container class=\"t-slides\">\n <section tuiSlides>\n @switch (view()) {\n @case ('day') {\n <tui-carousel\n [index]=\"index()\"\n [max]=\"max().year * 12 + max().month\"\n [min]=\"min().year * 12 + min().month\"\n (indexChange)=\"month.set(getMonth($event))\"\n >\n <tui-month\n *tuiItem=\"let current\"\n class=\"t-calendar\"\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"current | tuiMapper: getMonth\"\n [showAdjacent]=\"showAdjacent()\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n />\n </tui-carousel>\n }\n\n @case ('month') {\n <tui-data-grid\n class=\"t-grid\"\n [content]=\"contentMonth() ?? content()\"\n [disabledItemHandler]=\"disabledMonth()\"\n [items]=\"year()\"\n [value]=\"months()\"\n (pick)=\"onMonth($event)\"\n />\n }\n\n @case ('year') {\n <tui-carousel\n [max]=\"yearMax()\"\n [min]=\"yearMin()\"\n >\n <tui-data-grid\n *tuiItem=\"let offset\"\n class=\"t-grid\"\n [content]=\"contentYear()\"\n [disabledItemHandler]=\"disabledYear()\"\n [items]=\"month().year + offset * 12 - 6 | tuiMapper: getItems\"\n [value]=\"years()\"\n (pick)=\"onYear($event)\"\n />\n </tui-carousel>\n }\n }\n </section>\n</tui-elastic-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {WaIntersectionObservee} from '@ng-web-apis/intersection-observer';\nimport {TuiDay, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\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 {tuiTextfieldOptionsProvider} from '@taiga-ui/core/components/textfield';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {TuiMonthComponent} from '@taiga-ui/experimental/components/month';\nimport {TuiSlides} from '@taiga-ui/layout/components/slides';\n\nimport {TuiCalendarHeader} from './calendar-header.component';\nimport {TuiDatePicker} from './date-picker';\n\n/**\n * @deprecated: work in progress, do not use!\n */\n@Component({\n selector: 'tui-calendar[months]',\n imports: [\n FormsModule,\n TuiButton,\n TuiCalendarHeader,\n TuiCarousel,\n TuiMapperPipe,\n // eslint-disable-next-line @taiga-ui/experience-next/short-tui-imports\n TuiMonthComponent,\n TuiSlides,\n WaIntersectionObservee,\n ],\n templateUrl: './calendar-multi.component.html',\n styleUrl: './calendar-multi.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsAuxiliary(TuiCalendarMultiComponent),\n tuiProvide(AbstractTuiCalendar, TuiCalendarMultiComponent),\n tuiButtonOptionsProvider({size: 'xs', appearance: 'flat'}),\n tuiTextfieldOptionsProvider({size: signal('m'), cleaner: signal(false)}),\n ],\n host: {'[style.--t-months]': 'months()'},\n})\nexport class TuiCalendarMultiComponent<\n T extends 'multi' | 'range' | 'single',\n> extends TuiDatePicker<T> {\n protected readonly carousel = viewChild(TuiCarouselComponent);\n protected readonly visible = signal<Record<string, number>>({});\n protected readonly scroll = viewChild.required(TuiCarouselComponent, {\n read: ElementRef,\n });\n\n protected readonly height = computed(() =>\n Math.max(...Object.values(this.visible())),\n );\n\n protected readonly start = computed(\n (carousel = this.carousel()) => carousel?.index() === carousel?.min(),\n );\n\n protected readonly end = computed(\n (carousel = this.carousel()) => carousel?.index() === carousel?.max(),\n );\n\n protected readonly index = computed(\n () => this.month().year * 12 + this.month().month,\n );\n\n public readonly months = input<1 | 2 | 3>(2);\n\n protected override updateMonth(day?: TuiDay | null): void {\n this.month.update(({year, month}) => {\n const updated = new TuiDay(day?.year || year, day?.month || month, 1);\n const limited = updated.dayLimit(this.min(), this.max());\n\n return Object.keys(this.visible()).includes(limited.toJSON().slice(0, -3))\n ? new TuiMonth(year, month)\n : limited;\n });\n }\n\n protected onSpin(step: number): void {\n const el: HTMLElement = this.scroll().nativeElement;\n const sign = el.matches('[dir=\"rtl\"] :scope') ? -1 : 1;\n const left = el.offsetWidth / this.months();\n\n el.scrollTo({left: el.scrollLeft + left * sign * step, behavior: 'smooth'});\n }\n\n protected onIntersection(visible: boolean, month: TuiMonth, height: number): void {\n this.visible.update((current) => {\n const {[month.toJSON()]: removed, ...rest} = current;\n\n return visible ? {...current, [month.toJSON()]: removed || height} : rest;\n });\n }\n}\n","<header class=\"t-buttons\">\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('input')) {\n <tui-calendar-header [mode]=\"mode()\" />\n }\n</header>\n<section\n tuiSlides\n class=\"t-slides\"\n>\n <tui-carousel\n [index]=\"index()\"\n [max]=\"max().year * 12 + max().month\"\n [min]=\"min().year * 12 + min().month\"\n [style.max-block-size.px]=\"height()\"\n (indexChange)=\"month.set(getMonth(index() + ($event - index()) * months()))\"\n >\n <ng-container *tuiItem=\"let current\">\n @for (_ of '-'.repeat(months()); track $index) {\n @let month = index() + (current - index()) * months() + $index | tuiMapper: getMonth;\n <div\n #el\n class=\"t-calendar\"\n >\n <div class=\"t-header\">{{ i18n()[month.month] }} {{ month.year }}</div>\n <tui-month\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"month\"\n [showAdjacent]=\"false\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, month, el.offsetHeight)\"\n />\n </div>\n }\n </ng-container>\n </tui-carousel>\n</section>\n","import {TuiCalendarComponent} from './calendar.component';\nimport {TuiCalendarMultiComponent} from './calendar-multi.component';\n\nexport const TuiCalendar = [TuiCalendarComponent, TuiCalendarMultiComponent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-experimental-components-calendar.mjs","sources":["../../../projects/experimental/components/calendar/calendar-header.component.ts","../../../projects/experimental/components/calendar/date-picker.ts","../../../projects/experimental/components/calendar/calendar.component.ts","../../../projects/experimental/components/calendar/calendar.component.html","../../../projects/experimental/components/calendar/calendar-mobile.component.ts","../../../projects/experimental/components/calendar/calendar-mobile.component.html","../../../projects/experimental/components/calendar/calendar-multi.component.ts","../../../projects/experimental/components/calendar/calendar-multi.component.html","../../../projects/experimental/components/calendar/calendar.ts","../../../projects/experimental/components/calendar/taiga-ui-experimental-components-calendar.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {AbstractTuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {TUI_DROPDOWN_HOST} from '@taiga-ui/core/portals/dropdown';\nimport {\n TuiInputDate,\n tuiInputDateOptionsProvider,\n} from '@taiga-ui/kit/components/input-date';\nimport {TuiInputDateMulti} from '@taiga-ui/kit/components/input-date-multi';\nimport {TuiInputDateRange} from '@taiga-ui/kit/components/input-date-range';\n\n@Component({\n selector: 'tui-calendar-header',\n imports: [FormsModule, TuiInputDate, TuiInputDateMulti, TuiInputDateRange],\n template: `\n @switch (mode()) {\n @case ('multi') {\n <tui-textfield multi>\n <input\n tuiInputDateMulti\n [attr.aria-labelledby]=\"dropdown?.nativeElement?.id || null\"\n [max]=\"picker.max()\"\n [min]=\"picker.min()\"\n [(ngModel)]=\"picker.value\"\n />\n </tui-textfield>\n }\n @case ('range') {\n <tui-textfield>\n <input\n tuiInputDateRange\n [attr.aria-labelledby]=\"dropdown?.nativeElement?.id || null\"\n [max]=\"picker.max()\"\n [min]=\"picker.min()\"\n [(ngModel)]=\"picker.value\"\n />\n </tui-textfield>\n }\n @default {\n <tui-textfield>\n <input\n tuiInputDate\n [attr.aria-labelledby]=\"dropdown?.nativeElement?.id || null\"\n [max]=\"picker.max()\"\n [min]=\"picker.min()\"\n [(ngModel)]=\"picker.value\"\n />\n </tui-textfield>\n }\n }\n `,\n styles: `\n :host {\n position: absolute;\n inset: 0.125rem;\n block-size: fit-content;\n opacity: 0;\n pointer-events: none;\n visibility: visible;\n\n &:focus-within {\n opacity: 1;\n pointer-events: auto;\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiInputDateOptionsProvider({icon: ''})],\n})\nexport class TuiCalendarHeader {\n protected readonly picker = inject(AbstractTuiCalendar);\n protected readonly dropdown = inject(TUI_DROPDOWN_HOST, {optional: true});\n\n public readonly mode = input<'multi' | 'range' | 'single'>();\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {computed, Directive, effect, inject, input, untracked} from '@angular/core';\nimport {TuiDay, TuiDayRange, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiArrayToggle} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {AbstractTuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {TUI_DROPDOWN_HOST} from '@taiga-ui/core/portals/dropdown';\nimport {TUI_COMMON_ICONS, TUI_MONTHS, TUI_SPIN_TEXTS} from '@taiga-ui/core/tokens';\nimport {TUI_MONTH_OPTIONS} from '@taiga-ui/experimental/components/month';\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@Directive()\nexport abstract class TuiDatePicker<\n T extends 'multi' | 'range' | 'single',\n> extends AbstractTuiCalendar<DatePicker<T>> {\n protected readonly options = inject(TUI_MONTH_OPTIONS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly dropdown = inject(TUI_DROPDOWN_HOST, {optional: true});\n protected readonly texts = inject(TUI_SPIN_TEXTS);\n protected readonly i18n = inject(TUI_MONTHS);\n protected readonly disabledDay = computed(\n () => (day: TuiDay) =>\n day < this.min() || day > this.max() || this.disabledItemHandler()(day),\n );\n\n protected readonly sync = effect(() => {\n const value = this.value();\n const [day] = value instanceof TuiDayRange ? [value.from] : coerceArray(value);\n\n this.min();\n this.max();\n\n if (!day || day.year < 9000) {\n untracked(() => this.updateMonth(day));\n }\n });\n\n public readonly mode = input<T>();\n public readonly contentDay = input<PolymorpheusContent<TuiContext<TuiDay>>>();\n public readonly dayType = input(this.options.dayType);\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 updateMonth(day?: TuiDay | null): void {\n this.month.update(({month, year}) =>\n (day || new TuiDay(year, month, 1)).dayLimit(this.min(), this.max()),\n );\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","import {coerceArray} from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n signal,\n viewChild,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {type 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 {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 {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {TuiDataGrid} from '@taiga-ui/experimental/components/data-grid';\nimport {TuiMonthComponent} from '@taiga-ui/experimental/components/month';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport {TuiElasticContainer} from '@taiga-ui/layout/components/elastic-container';\nimport {TuiSlides} from '@taiga-ui/layout/components/slides';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nimport {TuiCalendarHeader} from './calendar-header.component';\nimport {TuiDatePicker} from './date-picker';\n\n/**\n * @deprecated: work in progress, do not use!\n */\n@Component({\n selector: 'tui-calendar[new]',\n imports: [\n FormsModule,\n TuiButton,\n TuiCalendarHeader,\n TuiCarousel,\n TuiChevron,\n TuiDataGrid,\n TuiElasticContainer,\n TuiLink,\n TuiMapperPipe,\n // eslint-disable-next-line @taiga-ui/experience-next/short-tui-imports\n TuiMonthComponent,\n TuiSlides,\n ],\n templateUrl: './calendar.component.html',\n styleUrl: './calendar.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsAuxiliary(TuiCalendarComponent),\n tuiProvide(AbstractTuiCalendar, TuiCalendarComponent),\n tuiButtonOptionsProvider({size: 'xs', appearance: 'flat'}),\n tuiTextfieldOptionsProvider({size: signal('m'), cleaner: signal(false)}),\n ],\n})\nexport class TuiCalendarComponent<\n T extends 'multi' | 'range' | 'single',\n> extends TuiDatePicker<T> {\n protected readonly carousel = viewChild(TuiCarouselComponent);\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 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 public readonly view = model<'day' | 'month' | 'year'>('day');\n public readonly contentMonth = input<PolymorpheusContent<TuiContext<TuiMonth>>>();\n public readonly contentYear = input<PolymorpheusContent<TuiContext<number>>>();\n public readonly showAdjacent = input(this.options.showAdjacent);\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","<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('input')) {\n <tui-calendar-header [mode]=\"mode()\" />\n }\n</header>\n<tui-elastic-container class=\"t-slides\">\n <section tuiSlides>\n @switch (view()) {\n @case ('day') {\n <tui-carousel\n [index]=\"index()\"\n [max]=\"max().year * 12 + max().month\"\n [min]=\"min().year * 12 + min().month\"\n (indexChange)=\"month.set(getMonth($event))\"\n >\n <tui-month\n *tuiItem=\"let current\"\n class=\"t-calendar\"\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"current | tuiMapper: getMonth\"\n [showAdjacent]=\"showAdjacent()\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n />\n </tui-carousel>\n }\n\n @case ('month') {\n <tui-data-grid\n class=\"t-grid\"\n [content]=\"contentMonth() ?? content()\"\n [disabledItemHandler]=\"disabledMonth()\"\n [items]=\"year()\"\n [value]=\"months()\"\n (pick)=\"onMonth($event)\"\n />\n }\n\n @case ('year') {\n <tui-carousel\n [max]=\"yearMax()\"\n [min]=\"yearMin()\"\n >\n <tui-data-grid\n *tuiItem=\"let offset\"\n class=\"t-grid\"\n [content]=\"contentYear()\"\n [disabledItemHandler]=\"disabledYear()\"\n [items]=\"month().year + offset * 12 - 6 | tuiMapper: getItems\"\n [value]=\"years()\"\n (pick)=\"onYear($event)\"\n />\n </tui-carousel>\n }\n }\n </section>\n</tui-elastic-container>\n","import {ChangeDetectionStrategy, Component, signal} from '@angular/core';\nimport {tuiDateClamp, TuiDay, TuiDayRange, type TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {AbstractTuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {tuiTextfieldOptionsProvider} from '@taiga-ui/core/components/textfield';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {TuiMonthComponent} from '@taiga-ui/experimental/components/month';\nimport {TuiScrollWheel} from '@taiga-ui/experimental/components/scroll-wheel';\n\nimport {TuiCalendarHeader} from './calendar-header.component';\nimport {TuiDatePicker} from './date-picker';\n\n/**\n * @deprecated: work in progress, do not use!\n */\n@Component({\n selector: 'tui-calendar-mobile',\n // eslint-disable-next-line @taiga-ui/experience-next/short-tui-imports\n imports: [TuiButton, TuiCalendarHeader, TuiMonthComponent, TuiScrollWheel],\n templateUrl: './calendar-mobile.component.html',\n styleUrl: './calendar-mobile.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsAuxiliary(TuiCalendarMobileComponent),\n tuiProvide(AbstractTuiCalendar, TuiCalendarMobileComponent),\n tuiTextfieldOptionsProvider({size: signal('m'), cleaner: signal(false)}),\n ],\n})\nexport class TuiCalendarMobileComponent<\n T extends 'multi' | 'range' | 'single',\n> extends TuiDatePicker<T> {\n private ready = false;\n\n protected override updateMonth(day?: TuiDay | null): void {\n if (!this.ready) {\n super.updateMonth(day);\n this.ready = true;\n }\n }\n\n protected override getMonth(month: number): TuiMonth {\n return this.month().append({month});\n }\n\n protected setMonth({year, month}: TuiMonth): void {\n this.value.set(\n new TuiDayRange(\n tuiDateClamp(new TuiDay(year, month, 1), this.min(), this.max()),\n tuiDateClamp(\n new TuiDay(year, month, 1).append({month: 1, day: -1}),\n this.min(),\n this.max(),\n ),\n ) as any,\n );\n }\n\n protected getAppearance(month: TuiMonth): 'primary' | 'secondary-grayscale' {\n const value = this.value();\n\n if (value instanceof TuiDayRange) {\n const {from, to} = value;\n const start = from.monthSame(month) && from.day === 1;\n const end = to.monthSame(month) && to.day === month.daysCount;\n\n return (from.monthBefore(month) || start) && (to.monthAfter(month) || end)\n ? 'primary'\n : 'secondary-grayscale';\n } else {\n return 'secondary-grayscale';\n }\n }\n}\n","<tui-month\n class=\"t-labels\"\n [showWeek]=\"showWeek()\"\n/>\n<tui-scroll-wheel class=\"t-scroll\">\n <ng-template let-index>\n @let month = getMonth(index);\n @if (mode() === 'range') {\n <button\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"getAppearance(month)\"\n [disabled]=\"month.monthBefore(min()) || month.monthAfter(max())\"\n (click)=\"setMonth(month)\"\n >\n {{ i18n()[month.month] }} {{ month.year }}\n </button>\n } @else {\n <div class=\"t-header\">{{ i18n()[month.month] }} {{ month.year }}</div>\n }\n <tui-month\n class=\"t-month\"\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"month\"\n [showAdjacent]=\"false\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n />\n </ng-template>\n</tui-scroll-wheel>\n@if (!dropdown?.nativeElement?.matches('input')) {\n <tui-calendar-header [mode]=\"mode()\" />\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {WaIntersectionObservee} from '@ng-web-apis/intersection-observer';\nimport {TuiDay, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\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 {tuiTextfieldOptionsProvider} from '@taiga-ui/core/components/textfield';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {TuiMonthComponent} from '@taiga-ui/experimental/components/month';\nimport {TuiSlides} from '@taiga-ui/layout/components/slides';\n\nimport {TuiCalendarHeader} from './calendar-header.component';\nimport {TuiDatePicker} from './date-picker';\n\n/**\n * @deprecated: work in progress, do not use!\n */\n@Component({\n selector: 'tui-calendar[months]',\n imports: [\n FormsModule,\n TuiButton,\n TuiCalendarHeader,\n TuiCarousel,\n TuiMapperPipe,\n // eslint-disable-next-line @taiga-ui/experience-next/short-tui-imports\n TuiMonthComponent,\n TuiSlides,\n WaIntersectionObservee,\n ],\n templateUrl: './calendar-multi.component.html',\n styleUrl: './calendar-multi.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsAuxiliary(TuiCalendarMultiComponent),\n tuiProvide(AbstractTuiCalendar, TuiCalendarMultiComponent),\n tuiButtonOptionsProvider({size: 'xs', appearance: 'flat'}),\n tuiTextfieldOptionsProvider({size: signal('m'), cleaner: signal(false)}),\n ],\n host: {'[style.--t-months]': 'months()'},\n})\nexport class TuiCalendarMultiComponent<\n T extends 'multi' | 'range' | 'single',\n> extends TuiDatePicker<T> {\n protected readonly carousel = viewChild(TuiCarouselComponent);\n protected readonly visible = signal<Record<string, number>>({});\n protected readonly scroll = viewChild.required(TuiCarouselComponent, {\n read: ElementRef,\n });\n\n protected readonly height = computed(() =>\n Math.max(...Object.values(this.visible())),\n );\n\n protected readonly start = computed(\n (carousel = this.carousel()) => carousel?.index() === carousel?.min(),\n );\n\n protected readonly end = computed(\n (carousel = this.carousel()) => carousel?.index() === carousel?.max(),\n );\n\n protected readonly index = computed(\n () => this.month().year * 12 + this.month().month,\n );\n\n public readonly months = input<1 | 2 | 3>(2);\n\n protected override updateMonth(day?: TuiDay | null): void {\n this.month.update(({year, month}) => {\n const updated = new TuiDay(day?.year || year, day?.month || month, 1);\n const limited = updated.dayLimit(this.min(), this.max());\n\n return Object.keys(this.visible()).includes(limited.toJSON().slice(0, -3))\n ? new TuiMonth(year, month)\n : limited;\n });\n }\n\n protected onSpin(step: number): void {\n const el: HTMLElement = this.scroll().nativeElement;\n const sign = el.matches('[dir=\"rtl\"] :scope') ? -1 : 1;\n const left = el.offsetWidth / this.months();\n\n el.scrollTo({left: el.scrollLeft + left * sign * step, behavior: 'smooth'});\n }\n\n protected onIntersection(visible: boolean, month: TuiMonth, height: number): void {\n this.visible.update((current) => {\n const {[month.toJSON()]: removed, ...rest} = current;\n\n return visible ? {...current, [month.toJSON()]: removed || height} : rest;\n });\n }\n}\n","<header class=\"t-buttons\">\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('input')) {\n <tui-calendar-header [mode]=\"mode()\" />\n }\n</header>\n<section\n tuiSlides\n class=\"t-slides\"\n>\n <tui-carousel\n [index]=\"index()\"\n [max]=\"max().year * 12 + max().month\"\n [min]=\"min().year * 12 + min().month\"\n [style.max-block-size.px]=\"height()\"\n (indexChange)=\"month.set(getMonth(index() + ($event - index()) * months()))\"\n >\n <ng-container *tuiItem=\"let current\">\n @for (_ of '-'.repeat(months()); track $index) {\n @let month = index() + (current - index()) * months() + $index | tuiMapper: getMonth;\n <div\n #el\n class=\"t-calendar\"\n >\n <div class=\"t-header\">{{ i18n()[month.month] }} {{ month.year }}</div>\n <tui-month\n [content]=\"contentDay()\"\n [dayType]=\"dayType()\"\n [disabledItemHandler]=\"disabledDay()\"\n [month]=\"month\"\n [showAdjacent]=\"false\"\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n (pick)=\"onDay($event)\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, month, el.offsetHeight)\"\n />\n </div>\n }\n </ng-container>\n </tui-carousel>\n</section>\n","import {TuiCalendarComponent} from './calendar.component';\nimport {TuiCalendarMobileComponent} from './calendar-mobile.component';\nimport {TuiCalendarMultiComponent} from './calendar-multi.component';\n\nexport const TuiCalendar = [\n TuiCalendarComponent,\n TuiCalendarMobileComponent,\n TuiCalendarMultiComponent,\n] as const;\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.23.0\"]{@import \"./file.styles.less\";}\n"], dependencies: [{ kind: "directive", type: TuiAvatar, selector: "[tuiAvatar]", inputs: ["size", "round", "badge"] }, { kind: "directive", type: TuiSlides, selector: "[tuiSlides]", inputs: ["tuiSlides"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
44
44
|
}
|
|
45
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiFile, decorators: [{
|
|
46
46
|
type: Component,
|
|
@@ -65,7 +65,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
65
65
|
], hostDirectives: [{ directive: TuiCell, inputs: ['tuiCell: size'] }], host: {
|
|
66
66
|
tuiFile: '',
|
|
67
67
|
'[attr.data-orientation]': 'orientation()',
|
|
68
|
-
}, styles: ["[data-tui-version=\"5.
|
|
68
|
+
}, styles: ["[data-tui-version=\"5.23.0\"]{@import \"./file.styles.less\";}\n"] }]
|
|
69
69
|
}] });
|
|
70
70
|
|
|
71
71
|
class TuiFilePipe {
|
|
@@ -87,14 +87,14 @@ class TuiMonthComponent {
|
|
|
87
87
|
return day === this.days()[5] || day === this.days()[6] ? 'weekend' : '';
|
|
88
88
|
}
|
|
89
89
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiMonthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
90
|
-
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 class=\"t-label\">#</span>\n}\n@for (day of week(); track $index) {\n <span\n class=\"t-label\"\n [attr.data-type]=\"getType(day)\"\n >\n {{ day.slice(0, 2) }}\n </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%;min-block-size:var(--tui-height-s);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-label{padding:.5rem 0 .375rem;font:var(--tui-typography-ui-s);text-transform:uppercase}.t-day{position:relative;inline-size:100%;min-block-size:inherit;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{
|
|
90
|
+
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 class=\"t-label\">#</span>\n}\n@for (day of week(); track $index) {\n <span\n class=\"t-label\"\n [attr.data-type]=\"getType(day)\"\n >\n {{ day.slice(0, 2) }}\n </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%;min-block-size:var(--tui-height-s);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-label{padding:.5rem 0 .375rem;font:var(--tui-typography-ui-s);text-transform:uppercase}.t-day{position:relative;inline-size:100%;min-block-size:inherit;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:before{clip-path:inset(0 calc(-10rem - var(--tui-inline) * 10rem) 0 calc(-10rem + var(--tui-inline) * 10rem) round var(--tui-radius-s))}.t-day_end:before{clip-path:inset(0 calc(-10rem + var(--tui-inline) * 10rem) 0 calc(-10rem - var(--tui-inline) * 10rem) round 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" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
91
91
|
}
|
|
92
92
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiMonthComponent, decorators: [{
|
|
93
93
|
type: Component,
|
|
94
94
|
args: [{ selector: 'tui-month', imports: [PolymorpheusOutlet, TuiCalendarSheetPipe, TuiMapperPipe, TuiWeekPipe], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
95
95
|
'[class._ww]': 'showWeek()',
|
|
96
96
|
'(mouseleave)': 'hovered.set(null)',
|
|
97
|
-
}, template: "@if (showWeek()) {\n <span class=\"t-label\">#</span>\n}\n@for (day of week(); track $index) {\n <span\n class=\"t-label\"\n [attr.data-type]=\"getType(day)\"\n >\n {{ day.slice(0, 2) }}\n </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%;min-block-size:var(--tui-height-s);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-label{padding:.5rem 0 .375rem;font:var(--tui-typography-ui-s);text-transform:uppercase}.t-day{position:relative;inline-size:100%;min-block-size:inherit;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{
|
|
97
|
+
}, template: "@if (showWeek()) {\n <span class=\"t-label\">#</span>\n}\n@for (day of week(); track $index) {\n <span\n class=\"t-label\"\n [attr.data-type]=\"getType(day)\"\n >\n {{ day.slice(0, 2) }}\n </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%;min-block-size:var(--tui-height-s);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-label{padding:.5rem 0 .375rem;font:var(--tui-typography-ui-s);text-transform:uppercase}.t-day{position:relative;inline-size:100%;min-block-size:inherit;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:before{clip-path:inset(0 calc(-10rem - var(--tui-inline) * 10rem) 0 calc(-10rem + var(--tui-inline) * 10rem) round var(--tui-radius-s))}.t-day_end:before{clip-path:inset(0 calc(-10rem + var(--tui-inline) * 10rem) 0 calc(-10rem - var(--tui-inline) * 10rem) round 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"] }]
|
|
98
98
|
}] });
|
|
99
99
|
function convert(week) {
|
|
100
100
|
return [week[week.length - 1] || '', ...week.slice(0, week.length - 1)];
|
|
@@ -1 +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 {\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: [PolymorpheusOutlet, TuiCalendarSheetPipe, TuiMapperPipe, TuiWeekPipe],\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 class=\"t-label\">#</span>\n}\n@for (day of week(); track $index) {\n <span\n class=\"t-label\"\n [attr.data-type]=\"getType(day)\"\n >\n {{ day.slice(0, 2) }}\n </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
|
+
{"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 {\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: [PolymorpheusOutlet, TuiCalendarSheetPipe, TuiMapperPipe, TuiWeekPipe],\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 class=\"t-label\">#</span>\n}\n@for (day of week(); track $index) {\n <span\n class=\"t-label\"\n [attr.data-type]=\"getType(day)\"\n >\n {{ day.slice(0, 2) }}\n </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,8 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, input, ChangeDetectionStrategy, Component, computed, Directive, contentChild, TemplateRef } from '@angular/core';
|
|
2
|
+
import { inject, INJECTOR, input, ChangeDetectionStrategy, Component, computed, Directive, contentChild, TemplateRef } from '@angular/core';
|
|
3
3
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { NgControl } from '@angular/forms';
|
|
5
5
|
import { WA_LOCAL_STORAGE, WA_NAVIGATOR } from '@ng-web-apis/common';
|
|
6
|
+
import { tuiControlValue } from '@taiga-ui/cdk/observables';
|
|
6
7
|
import { TuiButton } from '@taiga-ui/core/components/button';
|
|
7
8
|
import { TuiCell } from '@taiga-ui/core/components/cell';
|
|
8
9
|
import { TuiTextfieldComponent } from '@taiga-ui/core/components/textfield';
|
|
@@ -10,7 +11,7 @@ import { TuiTitle } from '@taiga-ui/core/components/title';
|
|
|
10
11
|
import { TUI_CLOSE_WORD } from '@taiga-ui/core/tokens';
|
|
11
12
|
import { TuiAvatar } from '@taiga-ui/kit/components/avatar';
|
|
12
13
|
import { TUI_INPUT_SEARCH } from '@taiga-ui/layout/tokens';
|
|
13
|
-
import { map, filter } from 'rxjs';
|
|
14
|
+
import { skip, map, filter } from 'rxjs';
|
|
14
15
|
import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
|
|
15
16
|
import { TuiInputSearch } from '@taiga-ui/layout/components/input-search';
|
|
16
17
|
import { KeyValuePipe, NgTemplateOutlet } from '@angular/common';
|
|
@@ -42,8 +43,8 @@ class TuiSearchHistory {
|
|
|
42
43
|
this.close = inject(TUI_CLOSE_WORD);
|
|
43
44
|
this.i18n = inject(TUI_INPUT_SEARCH);
|
|
44
45
|
this.options = inject(TUI_SEARCH_RESULTS_OPTIONS);
|
|
45
|
-
this.$ = this.control
|
|
46
|
-
|
|
46
|
+
this.$ = tuiControlValue(this.control, inject(INJECTOR))
|
|
47
|
+
.pipe(skip(1), map(String), filter((item) => !!item && !this.popular().includes(item)), takeUntilDestroyed())
|
|
47
48
|
.subscribe((value) => {
|
|
48
49
|
this.store(value);
|
|
49
50
|
});
|
|
@@ -61,8 +62,7 @@ class TuiSearchHistory {
|
|
|
61
62
|
this.storage?.setItem(this.options.key, JSON.stringify(this.items.filter((v) => v !== item)));
|
|
62
63
|
}
|
|
63
64
|
select(item) {
|
|
64
|
-
this.
|
|
65
|
-
this.textfield.input()?.nativeElement.focus();
|
|
65
|
+
this.textfield.handleOption(item);
|
|
66
66
|
}
|
|
67
67
|
get items() {
|
|
68
68
|
return JSON.parse(this.storage?.getItem(this.options.key) || '[]');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-experimental-components-search-results.mjs","sources":["../../../projects/experimental/components/search-results/search-results.options.ts","../../../projects/experimental/components/search-results/search-history.component.ts","../../../projects/experimental/components/search-results/search-history.component.html","../../../projects/experimental/components/search-results/search-hotkey.directive.ts","../../../projects/experimental/components/search-results/search-results.component.ts","../../../projects/experimental/components/search-results/search-results.component.html","../../../projects/experimental/components/search-results/search-results.ts","../../../projects/experimental/components/search-results/taiga-ui-experimental-components-search-results.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport const [TUI_SEARCH_RESULTS_OPTIONS, tuiSearchResultsOptionsProvider] =\n tuiCreateOptions({\n key: 'taiga-search-history',\n history: '@tui.clock',\n popular: '@tui.search',\n empty: '@tui.search',\n remove: '@tui.trash',\n });\n","import {ChangeDetectionStrategy, Component, inject, input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgControl} from '@angular/forms';\nimport {WA_LOCAL_STORAGE} from '@ng-web-apis/common';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiCell} from '@taiga-ui/core/components/cell';\nimport {TuiTextfieldComponent} from '@taiga-ui/core/components/textfield';\nimport {TuiTitle} from '@taiga-ui/core/components/title';\nimport {TUI_CLOSE_WORD} from '@taiga-ui/core/tokens';\nimport {TuiAvatar} from '@taiga-ui/kit/components/avatar';\nimport {TUI_INPUT_SEARCH} from '@taiga-ui/layout/tokens';\nimport {filter, map} from 'rxjs';\n\nimport {TUI_SEARCH_RESULTS_OPTIONS} from './search-results.options';\n\n@Component({\n selector: 'tui-search-history',\n imports: [TuiAvatar, TuiButton, TuiCell, TuiTitle],\n templateUrl: './search-history.component.html',\n styles: `\n :host:not(:empty) {\n display: block;\n padding: 0.375rem 0;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiSearchHistory {\n private readonly textfield = inject(TuiTextfieldComponent);\n private readonly storage = inject(WA_LOCAL_STORAGE);\n private readonly control = inject(NgControl);\n\n protected readonly close = inject(TUI_CLOSE_WORD);\n protected readonly i18n = inject(TUI_INPUT_SEARCH);\n protected readonly options = inject(TUI_SEARCH_RESULTS_OPTIONS);\n\n protected readonly $ = this.control.valueChanges\n ?.pipe(\n map(String),\n filter((item) => !!item && !this.popular().includes(item)),\n takeUntilDestroyed(),\n )\n .subscribe((value) => {\n this.store(value);\n });\n\n protected history = this.items;\n\n public readonly popular = input<readonly string[]>([]);\n\n protected store(item: string): void {\n this.storage?.setItem(\n this.options.key,\n JSON.stringify(\n Array.from(new Set([item.trim(), ...this.items]))\n .filter((v, _, a) => v && !a.find((s) => s.startsWith(v) && s !== v))\n .slice(0, 5),\n ),\n );\n }\n\n protected remove(item: string): void {\n this.textfield.input()?.nativeElement.focus();\n this.history = this.history.filter((v) => v !== item);\n this.storage?.setItem(\n this.options.key,\n JSON.stringify(this.items.filter((v) => v !== item)),\n );\n }\n\n protected select(item: string): void {\n this.control.control?.setValue(item);\n this.textfield.input()?.nativeElement.focus();\n }\n\n private get items(): readonly string[] {\n return JSON.parse(this.storage?.getItem(this.options.key) || '[]');\n }\n}\n","@if (history.length) {\n <label class=\"t-sr-label\">{{ i18n().history }}</label>\n}\n@for (item of history; track item) {\n <button\n tuiCell\n type=\"button\"\n (click)=\"select(item)\"\n (keydown.backspace)=\"remove(item)\"\n (keydown.delete)=\"remove(item)\"\n (mousedown.prevent)=\"(0)\"\n >\n <div [tuiAvatar]=\"options.history\"></div>\n <span tuiTitle>{{ item }}</span>\n <button\n appearance=\"icon\"\n size=\"xs\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n [iconStart]=\"options.remove\"\n (click.stop)=\"remove(item)\"\n >\n 🗑️\n </button>\n </button>\n}\n@if (popular().length) {\n <label class=\"t-sr-label\">{{ i18n().popular }}</label>\n}\n@for (item of popular(); track item) {\n <button\n tuiCell\n type=\"button\"\n (click)=\"select(item)\"\n (mousedown.prevent)=\"(0)\"\n >\n <span [tuiAvatar]=\"options.popular\"></span>\n <span tuiTitle>{{ item }}</span>\n </button>\n}\n","import {computed, Directive, inject} from '@angular/core';\nimport {WA_NAVIGATOR} from '@ng-web-apis/common';\nimport {TuiInputSearch} from '@taiga-ui/layout/components/input-search';\nimport {TUI_INPUT_SEARCH} from '@taiga-ui/layout/tokens';\n\n@Directive({\n selector: 'input[tuiSearchHotkey]',\n host: {\n '[placeholder]': 'placeholder()',\n '(document:keydown.alt.k.stop)': 'search.open()',\n '(document:keydown.meta.k.stop)': 'search.open()',\n },\n})\nexport class TuiSearchHotkey {\n private readonly platform = inject(WA_NAVIGATOR).platform;\n private readonly texts = inject(TUI_INPUT_SEARCH);\n\n protected readonly search = inject(TuiInputSearch);\n\n protected readonly placeholder = computed(({hotkey} = this.texts()) =>\n this.platform.startsWith('Mac') ? `⌘+K ${hotkey}` : `Alt+K ${hotkey}`,\n );\n}\n","import {type KeyValue, KeyValuePipe, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n inject,\n input,\n type OnChanges,\n TemplateRef,\n} from '@angular/core';\nimport {TuiFilterPipe} from '@taiga-ui/cdk/pipes/filter';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiMoveFocus} from '@taiga-ui/cdk/utils/focus';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {TuiTextfieldComponent} from '@taiga-ui/core/components/textfield';\nimport {TuiTabs} from '@taiga-ui/kit/components/tabs';\nimport {TuiBlockStatus} from '@taiga-ui/layout/components/block-status';\nimport {TUI_INPUT_SEARCH} from '@taiga-ui/layout/tokens';\n\nimport {TUI_SEARCH_RESULTS_OPTIONS} from './search-results.options';\n\n@Component({\n selector: 'tui-search-results',\n imports: [\n KeyValuePipe,\n NgTemplateOutlet,\n TuiBlockStatus,\n TuiFilterPipe,\n TuiIcon,\n TuiLoader,\n TuiScrollbar,\n TuiTabs,\n ],\n templateUrl: './search-results.component.html',\n styleUrl: './search-results.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(keydown.arrowDown.prevent)': 'onArrow($event.target, 1)',\n '(keydown.arrowUp.prevent)': 'onArrow($event.target, -1)',\n },\n})\nexport class TuiSearchResultsComponent<T> implements OnChanges {\n private readonly el = tuiInjectElement();\n\n protected readonly options = inject(TUI_SEARCH_RESULTS_OPTIONS);\n protected readonly i18n = inject(TUI_INPUT_SEARCH);\n protected readonly textfield = inject(TuiTextfieldComponent);\n protected active = 0;\n\n protected readonly empty = computed(\n (results = this.results() || {}) =>\n !Object.values(results).reduce((total, {length}) => length + total, 0),\n );\n\n public readonly template = contentChild(TemplateRef);\n public readonly results = input<Record<string, readonly T[]> | null>({});\n\n public ngOnChanges(): void {\n this.active = 0;\n }\n\n protected onArrow(current: HTMLElement, step: number): void {\n const elements = Array.from(this.el.querySelectorAll<HTMLElement>('[tuiCell]'));\n\n if (elements[0] === current && step < 0) {\n this.textfield.input()?.nativeElement.focus();\n } else {\n tuiMoveFocus(elements.indexOf(current), elements, step);\n }\n }\n\n protected tab(step: number): void {\n const max = Object.values(this.results() || {}).filter((v) => v.length).length;\n\n this.active = tuiClamp(this.active + step, 0, max);\n this.textfield.input()?.nativeElement.focus();\n }\n\n protected notEmpty({value}: KeyValue<string, readonly T[]>): boolean {\n return !!value.length;\n }\n\n protected asIs(): number {\n return 0;\n }\n}\n","@if (!textfield.value()) {\n <ng-content />\n} @else {\n @if (!results()) {\n <tui-loader class=\"t-loader\" />\n } @else {\n @if (empty()) {\n <tui-block-status\n size=\"m\"\n class=\"t-status\"\n >\n <tui-icon\n tuiSlot=\"top\"\n class=\"t-empty\"\n [icon]=\"options.empty\"\n />\n {{ i18n().empty }}\n </tui-block-status>\n } @else {\n @let items = (results() | keyvalue: asIs) || [];\n <tui-scrollbar class=\"t-scrollbar\">\n @for (group of items | tuiFilter: notEmpty; track group) {\n @if (!active || active === $index + 1) {\n @if (!active && items.length > 1) {\n <label class=\"t-sr-label\">\n {{ group.key }}\n </label>\n }\n @for (item of group.value; track item) {\n <ng-container\n [ngTemplateOutlet]=\"template() || null\"\n [ngTemplateOutletContext]=\"{$implicit: item}\"\n />\n }\n }\n }\n </tui-scrollbar>\n @if (items.length > 1) {\n <tui-tabs\n size=\"m\"\n class=\"t-tabs\"\n [(activeItemIndex)]=\"active\"\n (document:keydown.shift.tab.prevent)=\"tab(-1)\"\n (document:keydown.tab.prevent)=\"tab(1)\"\n >\n <button tuiTab>{{ i18n().all }}</button>\n @for (group of items; track group) {\n @if (group.value.length) {\n <button tuiTab>\n {{ group.key }}\n </button>\n }\n }\n </tui-tabs>\n }\n }\n }\n}\n","import {TuiSearchHistory} from './search-history.component';\nimport {TuiSearchHotkey} from './search-hotkey.directive';\nimport {TuiSearchResultsComponent} from './search-results.component';\n\nexport const TuiSearchResults = [\n TuiSearchHotkey,\n TuiSearchHistory,\n TuiSearchResultsComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-experimental-components-search-results.mjs","sources":["../../../projects/experimental/components/search-results/search-results.options.ts","../../../projects/experimental/components/search-results/search-history.component.ts","../../../projects/experimental/components/search-results/search-history.component.html","../../../projects/experimental/components/search-results/search-hotkey.directive.ts","../../../projects/experimental/components/search-results/search-results.component.ts","../../../projects/experimental/components/search-results/search-results.component.html","../../../projects/experimental/components/search-results/search-results.ts","../../../projects/experimental/components/search-results/taiga-ui-experimental-components-search-results.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport const [TUI_SEARCH_RESULTS_OPTIONS, tuiSearchResultsOptionsProvider] =\n tuiCreateOptions({\n key: 'taiga-search-history',\n history: '@tui.clock',\n popular: '@tui.search',\n empty: '@tui.search',\n remove: '@tui.trash',\n });\n","import {ChangeDetectionStrategy, Component, inject, INJECTOR, input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgControl} from '@angular/forms';\nimport {WA_LOCAL_STORAGE} from '@ng-web-apis/common';\nimport {tuiControlValue} from '@taiga-ui/cdk/observables';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiCell} from '@taiga-ui/core/components/cell';\nimport {TuiTextfieldComponent} from '@taiga-ui/core/components/textfield';\nimport {TuiTitle} from '@taiga-ui/core/components/title';\nimport {TUI_CLOSE_WORD} from '@taiga-ui/core/tokens';\nimport {TuiAvatar} from '@taiga-ui/kit/components/avatar';\nimport {TUI_INPUT_SEARCH} from '@taiga-ui/layout/tokens';\nimport {filter, map, skip} from 'rxjs';\n\nimport {TUI_SEARCH_RESULTS_OPTIONS} from './search-results.options';\n\n@Component({\n selector: 'tui-search-history',\n imports: [TuiAvatar, TuiButton, TuiCell, TuiTitle],\n templateUrl: './search-history.component.html',\n styles: `\n :host:not(:empty) {\n display: block;\n padding: 0.375rem 0;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiSearchHistory {\n private readonly textfield = inject(TuiTextfieldComponent);\n private readonly storage = inject(WA_LOCAL_STORAGE);\n private readonly control = inject(NgControl);\n\n protected readonly close = inject(TUI_CLOSE_WORD);\n protected readonly i18n = inject(TUI_INPUT_SEARCH);\n protected readonly options = inject(TUI_SEARCH_RESULTS_OPTIONS);\n\n protected readonly $ = tuiControlValue<string>(this.control, inject(INJECTOR))\n .pipe(\n skip(1),\n map(String),\n filter((item) => !!item && !this.popular().includes(item)),\n takeUntilDestroyed(),\n )\n .subscribe((value) => {\n this.store(value);\n });\n\n protected history = this.items;\n\n public readonly popular = input<readonly string[]>([]);\n\n protected store(item: string): void {\n this.storage?.setItem(\n this.options.key,\n JSON.stringify(\n Array.from(new Set([item.trim(), ...this.items]))\n .filter((v, _, a) => v && !a.find((s) => s.startsWith(v) && s !== v))\n .slice(0, 5),\n ),\n );\n }\n\n protected remove(item: string): void {\n this.textfield.input()?.nativeElement.focus();\n this.history = this.history.filter((v) => v !== item);\n this.storage?.setItem(\n this.options.key,\n JSON.stringify(this.items.filter((v) => v !== item)),\n );\n }\n\n protected select(item: string): void {\n this.textfield.handleOption(item);\n }\n\n private get items(): readonly string[] {\n return JSON.parse(this.storage?.getItem(this.options.key) || '[]');\n }\n}\n","@if (history.length) {\n <label class=\"t-sr-label\">{{ i18n().history }}</label>\n}\n@for (item of history; track item) {\n <button\n tuiCell\n type=\"button\"\n (click)=\"select(item)\"\n (keydown.backspace)=\"remove(item)\"\n (keydown.delete)=\"remove(item)\"\n (mousedown.prevent)=\"(0)\"\n >\n <div [tuiAvatar]=\"options.history\"></div>\n <span tuiTitle>{{ item }}</span>\n <button\n appearance=\"icon\"\n size=\"xs\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n [iconStart]=\"options.remove\"\n (click.stop)=\"remove(item)\"\n >\n 🗑️\n </button>\n </button>\n}\n@if (popular().length) {\n <label class=\"t-sr-label\">{{ i18n().popular }}</label>\n}\n@for (item of popular(); track item) {\n <button\n tuiCell\n type=\"button\"\n (click)=\"select(item)\"\n (mousedown.prevent)=\"(0)\"\n >\n <span [tuiAvatar]=\"options.popular\"></span>\n <span tuiTitle>{{ item }}</span>\n </button>\n}\n","import {computed, Directive, inject} from '@angular/core';\nimport {WA_NAVIGATOR} from '@ng-web-apis/common';\nimport {TuiInputSearch} from '@taiga-ui/layout/components/input-search';\nimport {TUI_INPUT_SEARCH} from '@taiga-ui/layout/tokens';\n\n@Directive({\n selector: 'input[tuiSearchHotkey]',\n host: {\n '[placeholder]': 'placeholder()',\n '(document:keydown.alt.k.stop)': 'search.open()',\n '(document:keydown.meta.k.stop)': 'search.open()',\n },\n})\nexport class TuiSearchHotkey {\n private readonly platform = inject(WA_NAVIGATOR).platform;\n private readonly texts = inject(TUI_INPUT_SEARCH);\n\n protected readonly search = inject(TuiInputSearch);\n\n protected readonly placeholder = computed(({hotkey} = this.texts()) =>\n this.platform.startsWith('Mac') ? `⌘+K ${hotkey}` : `Alt+K ${hotkey}`,\n );\n}\n","import {type KeyValue, KeyValuePipe, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n inject,\n input,\n type OnChanges,\n TemplateRef,\n} from '@angular/core';\nimport {TuiFilterPipe} from '@taiga-ui/cdk/pipes/filter';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiMoveFocus} from '@taiga-ui/cdk/utils/focus';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {TuiTextfieldComponent} from '@taiga-ui/core/components/textfield';\nimport {TuiTabs} from '@taiga-ui/kit/components/tabs';\nimport {TuiBlockStatus} from '@taiga-ui/layout/components/block-status';\nimport {TUI_INPUT_SEARCH} from '@taiga-ui/layout/tokens';\n\nimport {TUI_SEARCH_RESULTS_OPTIONS} from './search-results.options';\n\n@Component({\n selector: 'tui-search-results',\n imports: [\n KeyValuePipe,\n NgTemplateOutlet,\n TuiBlockStatus,\n TuiFilterPipe,\n TuiIcon,\n TuiLoader,\n TuiScrollbar,\n TuiTabs,\n ],\n templateUrl: './search-results.component.html',\n styleUrl: './search-results.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(keydown.arrowDown.prevent)': 'onArrow($event.target, 1)',\n '(keydown.arrowUp.prevent)': 'onArrow($event.target, -1)',\n },\n})\nexport class TuiSearchResultsComponent<T> implements OnChanges {\n private readonly el = tuiInjectElement();\n\n protected readonly options = inject(TUI_SEARCH_RESULTS_OPTIONS);\n protected readonly i18n = inject(TUI_INPUT_SEARCH);\n protected readonly textfield = inject(TuiTextfieldComponent);\n protected active = 0;\n\n protected readonly empty = computed(\n (results = this.results() || {}) =>\n !Object.values(results).reduce((total, {length}) => length + total, 0),\n );\n\n public readonly template = contentChild(TemplateRef);\n public readonly results = input<Record<string, readonly T[]> | null>({});\n\n public ngOnChanges(): void {\n this.active = 0;\n }\n\n protected onArrow(current: HTMLElement, step: number): void {\n const elements = Array.from(this.el.querySelectorAll<HTMLElement>('[tuiCell]'));\n\n if (elements[0] === current && step < 0) {\n this.textfield.input()?.nativeElement.focus();\n } else {\n tuiMoveFocus(elements.indexOf(current), elements, step);\n }\n }\n\n protected tab(step: number): void {\n const max = Object.values(this.results() || {}).filter((v) => v.length).length;\n\n this.active = tuiClamp(this.active + step, 0, max);\n this.textfield.input()?.nativeElement.focus();\n }\n\n protected notEmpty({value}: KeyValue<string, readonly T[]>): boolean {\n return !!value.length;\n }\n\n protected asIs(): number {\n return 0;\n }\n}\n","@if (!textfield.value()) {\n <ng-content />\n} @else {\n @if (!results()) {\n <tui-loader class=\"t-loader\" />\n } @else {\n @if (empty()) {\n <tui-block-status\n size=\"m\"\n class=\"t-status\"\n >\n <tui-icon\n tuiSlot=\"top\"\n class=\"t-empty\"\n [icon]=\"options.empty\"\n />\n {{ i18n().empty }}\n </tui-block-status>\n } @else {\n @let items = (results() | keyvalue: asIs) || [];\n <tui-scrollbar class=\"t-scrollbar\">\n @for (group of items | tuiFilter: notEmpty; track group) {\n @if (!active || active === $index + 1) {\n @if (!active && items.length > 1) {\n <label class=\"t-sr-label\">\n {{ group.key }}\n </label>\n }\n @for (item of group.value; track item) {\n <ng-container\n [ngTemplateOutlet]=\"template() || null\"\n [ngTemplateOutletContext]=\"{$implicit: item}\"\n />\n }\n }\n }\n </tui-scrollbar>\n @if (items.length > 1) {\n <tui-tabs\n size=\"m\"\n class=\"t-tabs\"\n [(activeItemIndex)]=\"active\"\n (document:keydown.shift.tab.prevent)=\"tab(-1)\"\n (document:keydown.tab.prevent)=\"tab(1)\"\n >\n <button tuiTab>{{ i18n().all }}</button>\n @for (group of items; track group) {\n @if (group.value.length) {\n <button tuiTab>\n {{ group.key }}\n </button>\n }\n }\n </tui-tabs>\n }\n }\n }\n}\n","import {TuiSearchHistory} from './search-history.component';\nimport {TuiSearchHotkey} from './search-hotkey.directive';\nimport {TuiSearchResultsComponent} from './search-results.component';\n\nexport const TuiSearchResults = [\n TuiSearchHotkey,\n TuiSearchHistory,\n TuiSearchResultsComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taiga-ui/experimental",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.23.0",
|
|
4
4
|
"description": "A package with Taiga UI experimental components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"@angular/common": ">=19.0.0",
|
|
32
32
|
"@angular/core": ">=19.0.0",
|
|
33
|
-
"@taiga-ui/addon-commerce": "5.
|
|
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.23.0",
|
|
34
|
+
"@taiga-ui/cdk": "5.23.0",
|
|
35
|
+
"@taiga-ui/core": "5.23.0",
|
|
36
|
+
"@taiga-ui/kit": "5.23.0",
|
|
37
|
+
"@taiga-ui/layout": "5.23.0",
|
|
38
38
|
"@taiga-ui/polymorpheus": "^5.0.1",
|
|
39
39
|
"rxjs": ">=7.0.0"
|
|
40
40
|
},
|