ng-primitives 0.73.1 → 0.74.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/common/header/header-token.d.ts +3 -0
- package/common/header/header.d.ts +4 -0
- package/date-picker/date-picker-row-render/date-picker-row-render.d.ts +8 -0
- package/date-time/date-adapter/date-adapter.d.ts +9 -2
- package/date-time/index.d.ts +1 -0
- package/date-time/native-date-adapter/native-date-adapter.d.ts +8 -1
- package/fesm2022/ng-primitives-common.mjs +10 -1
- package/fesm2022/ng-primitives-common.mjs.map +1 -1
- package/fesm2022/ng-primitives-date-picker.mjs +14 -1
- package/fesm2022/ng-primitives-date-picker.mjs.map +1 -1
- package/fesm2022/ng-primitives-date-time.mjs +11 -4
- package/fesm2022/ng-primitives-date-time.mjs.map +1 -1
- package/fesm2022/ng-primitives-dialog.mjs +3 -1
- package/fesm2022/ng-primitives-dialog.mjs.map +1 -1
- package/fesm2022/ng-primitives-listbox.mjs +28 -4
- package/fesm2022/ng-primitives-listbox.mjs.map +1 -1
- package/fesm2022/ng-primitives-menu.mjs +1 -1
- package/fesm2022/ng-primitives-menu.mjs.map +1 -1
- package/listbox/index.d.ts +1 -0
- package/listbox/listbox-header/listbox-header.d.ts +9 -0
- package/menu/menu-trigger/menu-trigger.d.ts +1 -1
- package/package.json +9 -9
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated
|
|
4
|
+
*/
|
|
2
5
|
export declare class NgpHeader {
|
|
3
6
|
/**
|
|
4
7
|
* The id of the header.
|
|
5
8
|
*/
|
|
6
9
|
readonly id: import("@angular/core").InputSignal<string>;
|
|
10
|
+
constructor();
|
|
7
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgpHeader, never>;
|
|
8
12
|
static ɵdir: i0.ɵɵDirectiveDeclaration<NgpHeader, "[ngpHeader]", ["ngpHeader"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
9
13
|
}
|
|
@@ -52,6 +52,14 @@ export declare class NgpDatePickerRowRender<T> implements OnDestroy {
|
|
|
52
52
|
* @internal
|
|
53
53
|
*/
|
|
54
54
|
getFirstDayOfWeekOffset(firstCalendarDay: T): number;
|
|
55
|
+
/**
|
|
56
|
+
* Get the offset of the last day of the week.
|
|
57
|
+
* @param lastCalendarDay The last day of the calendar without the offset.
|
|
58
|
+
* @returns The offset of the last day of the week.
|
|
59
|
+
*
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
getLastDayOfWeekOffset(lastCalendarDay: T): number;
|
|
55
63
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgpDatePickerRowRender<any>, never>;
|
|
56
64
|
static ɵdir: i0.ɵɵDirectiveDeclaration<NgpDatePickerRowRender<any>, "[ngpDatePickerRowRender]", ["ngpDatePickerRowRender"], {}, {}, never, never, true, never>;
|
|
57
65
|
}
|
|
@@ -64,7 +64,14 @@ export interface NgpDateAdapter<T> {
|
|
|
64
64
|
*/
|
|
65
65
|
getDate(date: T): number;
|
|
66
66
|
/**
|
|
67
|
-
* Get the day.
|
|
67
|
+
* Get the day of the week as a number (1-7).
|
|
68
|
+
* - `1` = Monday
|
|
69
|
+
* - `2` = Tuesday
|
|
70
|
+
* - `3` = Wednesday
|
|
71
|
+
* - `4` = Thursday
|
|
72
|
+
* - `5` = Friday
|
|
73
|
+
* - `6` = Saturday
|
|
74
|
+
* - `7` = Sunday
|
|
68
75
|
*/
|
|
69
76
|
getDay(date: T): number;
|
|
70
77
|
/**
|
|
@@ -106,7 +113,7 @@ export interface NgpDateUnits {
|
|
|
106
113
|
*/
|
|
107
114
|
year?: number;
|
|
108
115
|
/**
|
|
109
|
-
* The month.
|
|
116
|
+
* The month 1-12.
|
|
110
117
|
*/
|
|
111
118
|
month?: number;
|
|
112
119
|
/**
|
package/date-time/index.d.ts
CHANGED
|
@@ -57,7 +57,14 @@ export declare class NgpNativeDateAdapter implements NgpDateAdapter<Date> {
|
|
|
57
57
|
*/
|
|
58
58
|
getMonth(date: Date): number;
|
|
59
59
|
/**
|
|
60
|
-
* Get the day.
|
|
60
|
+
* Get the day of the week as a number (1-7).
|
|
61
|
+
* - `1` = Monday
|
|
62
|
+
* - `2` = Tuesday
|
|
63
|
+
* - `3` = Wednesday
|
|
64
|
+
* - `4` = Thursday
|
|
65
|
+
* - `5` = Friday
|
|
66
|
+
* - `6` = Saturday
|
|
67
|
+
* - `7` = Sunday
|
|
61
68
|
*/
|
|
62
69
|
getDay(date: Date): number;
|
|
63
70
|
/**
|
|
@@ -2,6 +2,9 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { InjectionToken, inject, input, Directive } from '@angular/core';
|
|
3
3
|
import { uniqueId } from 'ng-primitives/utils';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated
|
|
7
|
+
*/
|
|
5
8
|
const NgpHeaderToken = new InjectionToken('NgpHeaderToken');
|
|
6
9
|
/**
|
|
7
10
|
* Inject the Header directive instance
|
|
@@ -10,12 +13,18 @@ function injectHeader() {
|
|
|
10
13
|
return inject(NgpHeaderToken);
|
|
11
14
|
}
|
|
12
15
|
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated
|
|
18
|
+
*/
|
|
13
19
|
class NgpHeader {
|
|
14
20
|
constructor() {
|
|
15
21
|
/**
|
|
16
22
|
* The id of the header.
|
|
17
23
|
*/
|
|
18
24
|
this.id = input(uniqueId('ngp-header'));
|
|
25
|
+
if (ngDevMode) {
|
|
26
|
+
console.warn(`NgpHeader is deprecated and will be removed in a future version. Please use NgpListboxHeader instead.`);
|
|
27
|
+
}
|
|
19
28
|
}
|
|
20
29
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: NgpHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
21
30
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.11", type: NgpHeader, isStandalone: true, selector: "[ngpHeader]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, properties: { "attr.id": "id()" } }, providers: [{ provide: NgpHeaderToken, useExisting: NgpHeader }], exportAs: ["ngpHeader"], ngImport: i0 }); }
|
|
@@ -31,7 +40,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
|
|
|
31
40
|
'[attr.id]': 'id()',
|
|
32
41
|
},
|
|
33
42
|
}]
|
|
34
|
-
}] });
|
|
43
|
+
}], ctorParameters: () => [] });
|
|
35
44
|
|
|
36
45
|
/**
|
|
37
46
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-primitives-common.mjs","sources":["../../../../packages/ng-primitives/common/src/header/header-token.ts","../../../../packages/ng-primitives/common/src/header/header.ts","../../../../packages/ng-primitives/common/src/ng-primitives-common.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport type { NgpHeader } from './header';\n\nexport const NgpHeaderToken = new InjectionToken<NgpHeader>('NgpHeaderToken');\n\n/**\n * Inject the Header directive instance\n */\nexport function injectHeader(): NgpHeader {\n return inject(NgpHeaderToken);\n}\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { NgpHeaderToken } from './header-token';\n\n@Directive({\n selector: '[ngpHeader]',\n exportAs: 'ngpHeader',\n providers: [{ provide: NgpHeaderToken, useExisting: NgpHeader }],\n host: {\n role: 'presentation',\n '[attr.id]': 'id()',\n },\n})\nexport class NgpHeader {\n /**\n * The id of the header.\n */\n readonly id = input(uniqueId('ngp-header'));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"ng-primitives-common.mjs","sources":["../../../../packages/ng-primitives/common/src/header/header-token.ts","../../../../packages/ng-primitives/common/src/header/header.ts","../../../../packages/ng-primitives/common/src/ng-primitives-common.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport type { NgpHeader } from './header';\n\n/**\n * @deprecated\n */\nexport const NgpHeaderToken = new InjectionToken<NgpHeader>('NgpHeaderToken');\n\n/**\n * Inject the Header directive instance\n */\nexport function injectHeader(): NgpHeader {\n return inject(NgpHeaderToken);\n}\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { NgpHeaderToken } from './header-token';\n\n/**\n * @deprecated\n */\n\n@Directive({\n selector: '[ngpHeader]',\n exportAs: 'ngpHeader',\n providers: [{ provide: NgpHeaderToken, useExisting: NgpHeader }],\n host: {\n role: 'presentation',\n '[attr.id]': 'id()',\n },\n})\nexport class NgpHeader {\n /**\n * The id of the header.\n */\n readonly id = input(uniqueId('ngp-header'));\n\n constructor() {\n if (ngDevMode) {\n console.warn(\n `NgpHeader is deprecated and will be removed in a future version. Please use NgpListboxHeader instead.`,\n );\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAGA;;AAEG;MACU,cAAc,GAAG,IAAI,cAAc,CAAY,gBAAgB;AAE5E;;AAEG;SACa,YAAY,GAAA;AAC1B,IAAA,OAAO,MAAM,CAAC,cAAc,CAAC;AAC/B;;ACTA;;AAEG;MAWU,SAAS,CAAA;AAMpB,IAAA,WAAA,GAAA;AALA;;AAEG;QACM,IAAA,CAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAGzC,IAAI,SAAS,EAAE;AACb,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,qGAAA,CAAuG,CACxG;QACH;IACF;+GAZW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EANT,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAMrD,SAAS,EAAA,UAAA,EAAA,CAAA;kBATrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,WAAW;oBACrB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAA,SAAW,EAAE,CAAC;AAChE,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,cAAc;AACpB,wBAAA,WAAW,EAAE,MAAM;AACpB,qBAAA;AACF,iBAAA;;;AChBD;;AAEG;;;;"}
|
|
@@ -752,12 +752,13 @@ class NgpDatePickerRowRender {
|
|
|
752
752
|
let lastDay = this.dateAdapter.endOfMonth(month);
|
|
753
753
|
// calculate the offset of the first day of the week.
|
|
754
754
|
const firstDayOfWeekOffset = this.getFirstDayOfWeekOffset(firstDay);
|
|
755
|
+
const lastDayOfWeekOffset = this.getLastDayOfWeekOffset(lastDay);
|
|
755
756
|
// find the first and last day of visible in the grid.
|
|
756
757
|
firstDay = this.dateAdapter.subtract(firstDay, {
|
|
757
758
|
days: firstDayOfWeekOffset,
|
|
758
759
|
});
|
|
759
760
|
lastDay = this.dateAdapter.add(lastDay, {
|
|
760
|
-
days:
|
|
761
|
+
days: lastDayOfWeekOffset,
|
|
761
762
|
});
|
|
762
763
|
// collect all the days to display.
|
|
763
764
|
while (firstDay <= lastDay) {
|
|
@@ -834,6 +835,18 @@ class NgpDatePickerRowRender {
|
|
|
834
835
|
return ((DAYS_PER_WEEK + this.dateAdapter.getDay(firstCalendarDay) - this.state().firstDayOfWeek()) %
|
|
835
836
|
DAYS_PER_WEEK);
|
|
836
837
|
}
|
|
838
|
+
/**
|
|
839
|
+
* Get the offset of the last day of the week.
|
|
840
|
+
* @param lastCalendarDay The last day of the calendar without the offset.
|
|
841
|
+
* @returns The offset of the last day of the week.
|
|
842
|
+
*
|
|
843
|
+
* @internal
|
|
844
|
+
*/
|
|
845
|
+
getLastDayOfWeekOffset(lastCalendarDay) {
|
|
846
|
+
const lastDay = this.dateAdapter.getDay(lastCalendarDay);
|
|
847
|
+
const firstDay = this.state().firstDayOfWeek();
|
|
848
|
+
return (DAYS_PER_WEEK + firstDay + DAYS_PER_WEEK - 1 - lastDay) % DAYS_PER_WEEK;
|
|
849
|
+
}
|
|
837
850
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: NgpDatePickerRowRender, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
838
851
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.11", type: NgpDatePickerRowRender, isStandalone: true, selector: "[ngpDatePickerRowRender]", providers: [{ provide: NgpDatePickerRowRenderToken, useExisting: NgpDatePickerRowRender }], exportAs: ["ngpDatePickerRowRender"], ngImport: i0 }); }
|
|
839
852
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-primitives-date-picker.mjs","sources":["../../../../packages/ng-primitives/date-picker/src/config/date-picker-config.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-row-render/date-picker-row-render-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell-render/date-picker-cell-render-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell-render/date-picker-cell-render.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-date-button/date-picker-date-button-token.ts","../../../../packages/ng-primitives/date-picker/src/date-range-picker/date-range-picker-state.ts","../../../../packages/ng-primitives/date-picker/src/date-picker/date-picker-state.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell/date-picker-cell.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-date-button/date-picker-date-button.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-grid/date-picker-grid.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-label/date-picker-label-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-label/date-picker-label.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-next-month/date-picker-next-month.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-previous-month/date-picker-previous-month.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-row-render/date-picker-row-render.ts","../../../../packages/ng-primitives/date-picker/src/date-picker/date-picker-first-day-of-week.ts","../../../../packages/ng-primitives/date-picker/src/date-picker/date-picker.ts","../../../../packages/ng-primitives/date-picker/src/date-range-picker/date-range-picker.ts","../../../../packages/ng-primitives/date-picker/src/ng-primitives-date-picker.ts"],"sourcesContent":["import { InjectionToken, Provider, inject } from '@angular/core';\nimport { NgpDatePickerFirstDayOfWeekNumber } from '../date-picker/date-picker-first-day-of-week';\n\nexport interface NgpDatePickerConfig {\n /**\n * Define the first day of the week for the date picker calendar.\n * @default 7 (Sunday)\n */\n firstDayOfWeek: NgpDatePickerFirstDayOfWeekNumber;\n}\n\nexport const defaultDatePickerConfig: NgpDatePickerConfig = {\n firstDayOfWeek: 7,\n};\n\nexport const NgpDatePickerConfigToken = new InjectionToken<NgpDatePickerConfig>(\n 'NgpDatePickerConfigToken',\n);\n\n/**\n * Provide the default DatePicker / DateRangePicker configuration\n * @param config The DatePicker / DateRangePicker configuration\n * @returns The provider\n */\nexport function provideDatePickerConfig(config: Partial<NgpDatePickerConfig>): Provider[] {\n return [\n {\n provide: NgpDatePickerConfigToken,\n useValue: { ...defaultDatePickerConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the DatePicker / DateRangePicker configuration\n * @returns The global DatePicker / DateRangePicker configuration\n */\nexport function injectDatePickerConfig(): NgpDatePickerConfig {\n return inject(NgpDatePickerConfigToken, { optional: true }) ?? defaultDatePickerConfig;\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerRowRender } from './date-picker-row-render';\n\nexport const NgpDatePickerRowRenderToken = new InjectionToken<NgpDatePickerRowRender<unknown>>(\n 'NgpDatePickerRowRenderToken',\n);\n\n/**\n * Inject the DatePickerRowRender directive instance\n */\nexport function injectDatePickerRowRender<T>(): NgpDatePickerRowRender<T> {\n return inject(NgpDatePickerRowRenderToken) as NgpDatePickerRowRender<T>;\n}\n\nexport const NgpDatePickerWeekToken = new InjectionToken<unknown[]>('NgpDatePickerWeekToken');\n\n/**\n * Inject current week days\n */\nexport function injectDatePickerWeek<T>(): T[] {\n return inject(NgpDatePickerWeekToken) as T[];\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerCellRender } from './date-picker-cell-render';\n\nexport const NgpDatePickerCellRenderToken = new InjectionToken<NgpDatePickerCellRender<unknown>>(\n 'NgpDatePickerCellRenderToken',\n);\n\n/**\n * Inject the DatePickerCell directive instance\n */\nexport function injectDatePickerCellRender<T>(): NgpDatePickerCellRender<T> {\n return inject(NgpDatePickerCellRenderToken) as NgpDatePickerCellRender<T>;\n}\n\nexport const NgpDatePickerCellDateToken = new InjectionToken<unknown>('NgpDatePickerCellDateToken');\n\n/**\n * Inject current cell date\n */\nexport function injectDatePickerCellDate<T>(): T {\n return inject(NgpDatePickerCellDateToken) as T;\n}\n","import {\n Directive,\n EmbeddedViewRef,\n inject,\n Injector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { injectDatePickerWeek } from '../date-picker-row-render/date-picker-row-render-token';\nimport {\n NgpDatePickerCellDateToken,\n NgpDatePickerCellRenderToken,\n} from './date-picker-cell-render-token';\n\n/**\n * A structural directive that renders a cell in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerCellRender]',\n exportAs: 'ngpDatePickerCellRender',\n providers: [{ provide: NgpDatePickerCellRenderToken, useExisting: NgpDatePickerCellRender }],\n})\nexport class NgpDatePickerCellRender<T> implements OnDestroy {\n /**\n * Access the template ref for the cell.\n */\n private readonly templateRef = inject(TemplateRef);\n\n /**\n * Access the view container ref.\n */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /**\n * Access the dates in the week.\n */\n private readonly dates = injectDatePickerWeek<T>();\n\n /**\n * Store the view refs for the dates.\n */\n private readonly viewRefs: EmbeddedViewRef<NgpDatePickerCellContext<T>>[] = [];\n\n // Make sure the template checker knows the type of the context with which the\n // template of this directive will be rendered\n static ngTemplateContextGuard<T>(\n _: NgpDatePickerCellRender<T>,\n context: unknown,\n ): context is NgpDatePickerCellContext<T> {\n return true;\n }\n\n constructor() {\n this.renderDates();\n }\n\n /**\n * Render the dates in the week.\n */\n private renderDates(): void {\n this.viewRefs.forEach(viewRef => viewRef.destroy());\n\n for (const date of this.dates) {\n const viewRef = this.viewContainerRef.createEmbeddedView(\n this.templateRef,\n {\n $implicit: date,\n },\n {\n injector: Injector.create({\n parent: this.viewContainerRef.injector,\n providers: [{ provide: NgpDatePickerCellDateToken, useValue: date }],\n }),\n },\n );\n this.viewRefs.push(viewRef);\n }\n }\n\n /**\n * Destroy the view refs.\n */\n ngOnDestroy(): void {\n this.viewRefs.forEach(viewRef => viewRef.destroy());\n }\n}\n\ninterface NgpDatePickerCellContext<T> {\n $implicit: T;\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerDateButton } from './date-picker-date-button';\n\nexport const NgpDatePickerDateButtonToken = new InjectionToken<NgpDatePickerDateButton<unknown>>(\n 'NgpDatePickerDateButtonToken',\n);\n\n/**\n * Inject the DatePickerDateButton directive instance\n */\nexport function injectDatePickerDateButton<T>(): NgpDatePickerDateButton<T> {\n return inject(NgpDatePickerDateButtonToken) as NgpDatePickerDateButton<T>;\n}\n","import { InjectOptions } from '@angular/core';\nimport {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n InjectedState,\n} from 'ng-primitives/state';\nimport type { NgpDateRangePicker } from './date-range-picker';\n\n/**\n * The state token for the DateRangePicker primitive.\n */\nexport const NgpDateRangePickerStateToken =\n createStateToken<NgpDateRangePicker<unknown>>('DateRangePicker');\n\n/**\n * Provides the DateRangePicker state.\n */\nexport const provideDateRangePickerState = createStateProvider(NgpDateRangePickerStateToken);\n\n/**\n * Injects the DateRangePicker state.\n */\nexport const injectDateRangePickerState = createStateInjector<NgpDateRangePicker<unknown>>(\n NgpDateRangePickerStateToken,\n) as <T>(injectOptions?: InjectOptions) => InjectedState<NgpDateRangePicker<T>>;\n\n/**\n * The DateRangePicker state registration function.\n */\nexport const dateRangePickerState = createState(NgpDateRangePickerStateToken);\n","import { InjectOptions } from '@angular/core';\nimport {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n InjectedState,\n} from 'ng-primitives/state';\nimport { NgpDateRangePicker } from '../date-range-picker/date-range-picker';\nimport { injectDateRangePickerState } from '../date-range-picker/date-range-picker-state';\nimport type { NgpDatePicker } from './date-picker';\n\nexport const NgpDatePickerStateToken = createStateToken<NgpDatePicker<unknown>>('DatePicker');\nexport const provideDatePickerState = createStateProvider(NgpDatePickerStateToken);\nexport const injectDatePickerState = createStateInjector<NgpDatePicker<unknown>>(\n NgpDatePickerStateToken,\n) as <T>(injectOptions?: InjectOptions) => InjectedState<NgpDatePicker<T>>;\nexport const datePickerState = createState(NgpDatePickerStateToken);\n\nexport function injectDateControllerState<T>(): InjectedState<\n NgpDatePicker<T> | NgpDateRangePicker<T>\n> {\n const datePickerState = injectDatePickerState<T>({ optional: true });\n const dateRangePickerState = injectDateRangePickerState<T>({ optional: true });\n\n if (datePickerState()) {\n return datePickerState;\n } else if (dateRangePickerState()) {\n return dateRangePickerState;\n } else {\n throw new Error('No date picker or date range picker state found');\n }\n}\n","import { computed, contentChild, Directive } from '@angular/core';\nimport { NgpDatePickerDateButtonToken } from '../date-picker-date-button/date-picker-date-button-token';\nimport { injectDateControllerState } from '../date-picker/date-picker-state';\n\n/**\n * A cell in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerCell]',\n exportAs: 'ngpDatePickerCell',\n host: {\n role: 'gridcell',\n '[attr.data-selected]': 'datePickerButton()?.selected() ? \"\" : null',\n '[attr.aria-selected]': 'datePickerButton()?.selected()',\n '[attr.aria-disabled]': 'datePickerButton()?.disabled()',\n '[attr.data-disabled]': 'datePickerButton()?.disabled() ? \"\" : null',\n '[attr.aria-labelledby]': 'labelId()',\n },\n})\nexport class NgpDatePickerCell {\n /**\n * Access the date picker.\n */\n private readonly state = injectDateControllerState();\n\n /**\n * Access the child date picker date button.\n */\n protected readonly datePickerButton = contentChild(NgpDatePickerDateButtonToken, {\n descendants: true,\n });\n\n /**\n * Access the label id.\n */\n protected readonly labelId = computed(() => this.state().label()?.id());\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { computed, Directive, ElementRef, HostListener, inject, OnDestroy } from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { setupButton } from 'ng-primitives/internal';\nimport { injectDatePickerCellDate } from '../date-picker-cell-render/date-picker-cell-render-token';\nimport { injectDateControllerState } from '../date-picker/date-picker-state';\nimport { NgpDatePickerDateButtonToken } from './date-picker-date-button-token';\n\n/**\n * A button that represents a date in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerDateButton]',\n exportAs: 'ngpDatePickerDateButton',\n providers: [{ provide: NgpDatePickerDateButtonToken, useExisting: NgpDatePickerDateButton }],\n host: {\n '[attr.role]': '!isButton ? \"button\" : null',\n '[attr.tabindex]': 'focused() ? 0 : -1',\n '[attr.data-selected]': 'selected() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.data-outside-month]': 'outside() ? \"\" : null',\n '[attr.data-today]': 'today() ? \"\" : null',\n '[attr.data-range-start]': 'start() ? \"\" : null',\n '[attr.data-range-end]': 'end() ? \"\" : null',\n '[attr.data-range-between]': 'betweenRange() ? \"\" : null',\n },\n})\nexport class NgpDatePickerDateButton<T> implements OnDestroy {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the focus monitor.\n */\n private readonly focusMonitor = inject(FocusMonitor);\n\n /**\n * Access the date picker state.\n */\n private readonly state = injectDateControllerState<T>();\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * The date this cell represents.\n */\n private readonly date = injectDatePickerCellDate<T>();\n\n /**\n * Determine if this is the focused date.\n */\n protected readonly focused = computed(() =>\n this.dateAdapter.isSameDay(this.date, this.state().focusedDate()),\n );\n\n /**\n * Determine if this is the selected date.\n */\n protected readonly selected = computed(() => this.state().isSelected(this.date));\n\n /**\n * Determine if this is the start date of the range.\n */\n protected readonly start = computed(() => this.state().isStartOfRange(this.date));\n\n /**\n * Determine if this is the end date of the range.\n */\n protected readonly end = computed(() => this.state().isEndOfRange(this.date));\n\n /**\n * Determine if this is between the start and end dates of the range.\n */\n protected readonly betweenRange = computed(() => this.state().isBetweenRange(this.date));\n\n /**\n * Determine if this date is outside the current month.\n */\n protected readonly outside = computed(\n () => !this.dateAdapter.isSameMonth(this.date, this.state().focusedDate()),\n );\n\n /**\n * Determine if this date is today.\n */\n protected readonly today = computed(() =>\n this.dateAdapter.isSameDay(this.date, this.dateAdapter.now()),\n );\n\n /**\n * Determine if this date is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n const min = this.state().min();\n const max = this.state().max();\n\n if (this.state().disabled() || this.state().dateDisabled()(this.date)) {\n return true;\n }\n\n if (min && this.dateAdapter.compare(this.dateAdapter.startOfDay(this.date), min) < 0) {\n return true;\n }\n\n if (max && this.dateAdapter.compare(this.dateAdapter.startOfDay(this.date), max) > 0) {\n return true;\n }\n\n return false;\n });\n\n /**\n * Determine if the element is a button.\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName === 'BUTTON';\n\n constructor() {\n this.state().registerButton(this);\n setupButton({ disabled: this.disabled });\n }\n\n ngOnDestroy(): void {\n this.state().unregisterButton(this);\n }\n\n /**\n * When the button is clicked, select the date.\n */\n @HostListener('click')\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected select(event?: KeyboardEvent): void {\n // if the button is disabled, do nothing.\n if (this.disabled()) {\n return;\n }\n\n // because this may not be a button, we should stop the event from firing twice due to\n // us listening to both the click and the keydown.enter event.\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.state().select(this.date);\n this.state().setFocusedDate(this.date, 'mouse', 'forward');\n }\n\n /**\n * Focus if this is the current focused date.\n * @internal\n */\n focus(): void {\n if (this.dateAdapter.isSameDay(this.date, this.state().focusedDate())) {\n this.focusMonitor.focusVia(this.elementRef, 'keyboard');\n }\n }\n\n /**\n * Focus the previous cell.\n */\n @HostListener('keydown.arrowLeft', ['$event'])\n protected focusPrevious(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n // in rtl, the arrow keys are reversed.\n if (this.getDirection() === 'rtl') {\n this.focusDate(this.dateAdapter.add(this.state().focusedDate(), { days: 1 }), 'forward');\n } else {\n this.focusDate(\n this.dateAdapter.subtract(this.state().focusedDate(), { days: 1 }),\n 'backward',\n );\n }\n }\n\n /**\n * Focus the next cell.\n */\n @HostListener('keydown.arrowRight', ['$event'])\n protected focusNext(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n // in rtl, the arrow keys are reversed.\n if (this.getDirection() === 'rtl') {\n this.focusDate(\n this.dateAdapter.subtract(this.state().focusedDate(), { days: 1 }),\n 'backward',\n );\n } else {\n this.focusDate(this.dateAdapter.add(this.state().focusedDate(), { days: 1 }), 'forward');\n }\n }\n\n /**\n * Focus the above cell.\n */\n @HostListener('keydown.arrowUp', ['$event'])\n protected focusAbove(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.focusDate(this.dateAdapter.subtract(this.state().focusedDate(), { days: 7 }), 'backward');\n }\n\n /**\n * Focus the below cell.\n */\n @HostListener('keydown.arrowDown', ['$event'])\n protected focusBelow(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.focusDate(this.dateAdapter.add(this.state().focusedDate(), { days: 7 }), 'forward');\n }\n\n /**\n * Focus the first date of the month.\n */\n @HostListener('keydown.home', ['$event'])\n protected focusFirst(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.focusDate(this.dateAdapter.startOfMonth(this.state().focusedDate()), 'forward');\n }\n\n /**\n * Focus the last date of the month.\n */\n @HostListener('keydown.end', ['$event'])\n protected focusLast(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.focusDate(this.dateAdapter.endOfMonth(this.state().focusedDate()), 'backward');\n }\n\n /**\n * Focus the same date in the previous month.\n */\n @HostListener('keydown.pageUp', ['$event'])\n protected focusPreviousMonth(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const date = this.dateAdapter.getDate(this.state().focusedDate());\n\n let previousMonthTarget = this.dateAdapter.startOfMonth(this.state().focusedDate());\n previousMonthTarget = this.dateAdapter.subtract(previousMonthTarget, { months: 1 });\n\n const lastDay = this.dateAdapter.endOfMonth(previousMonthTarget);\n\n // if we are on a date that does not exist in the previous month, we should focus the last day of the month.\n if (date > this.dateAdapter.getDate(lastDay)) {\n this.focusDate(lastDay, 'forward');\n return;\n } else {\n this.focusDate(this.dateAdapter.set(previousMonthTarget, { day: date }), 'forward');\n }\n }\n\n /**\n * Focus the same date in the next month.\n */\n @HostListener('keydown.pageDown', ['$event'])\n protected focusNextMonth(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const date = this.dateAdapter.getDate(this.state().focusedDate());\n\n let nextMonthTarget = this.dateAdapter.startOfMonth(this.state().focusedDate());\n nextMonthTarget = this.dateAdapter.add(nextMonthTarget, { months: 1 });\n\n const lastDay = this.dateAdapter.endOfMonth(nextMonthTarget);\n\n // if we are on a date that does not exist in the next month, we should focus the last day of the month.\n if (date > this.dateAdapter.getDate(lastDay)) {\n this.focusDate(lastDay, 'backward');\n return;\n } else {\n this.focusDate(this.dateAdapter.set(nextMonthTarget, { day: date }), 'backward');\n }\n }\n\n private focusDate(date: T, direction: 'forward' | 'backward'): void {\n this.state().setFocusedDate(date, 'keyboard', direction);\n }\n\n /**\n * Get the direction of the element.\n */\n private getDirection(): 'ltr' | 'rtl' {\n return getComputedStyle(this.elementRef.nativeElement).direction === 'rtl' ? 'rtl' : 'ltr';\n }\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectDateControllerState } from '../date-picker/date-picker-state';\n\n/**\n * The grid that contains the days of the month.\n */\n@Directive({\n selector: '[ngpDatePickerGrid]',\n exportAs: 'ngpDatePickerGrid',\n host: {\n role: 'grid',\n '[attr.aria-labelledby]': 'labelId()',\n '[attr.data-disabled]': 'state().disabled() ? \"\" : null',\n },\n})\nexport class NgpDatePickerGrid<T> {\n /**\n * Access the date picker state.\n */\n protected readonly state = injectDateControllerState<T>();\n\n /**\n * Determine the id for the label.\n */\n protected readonly labelId = computed(() => this.state().label()?.id());\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerLabel } from './date-picker-label';\n\nexport const NgpDatePickerLabelToken = new InjectionToken<NgpDatePickerLabel<unknown>>(\n 'NgpDatePickerLabelToken',\n);\n\n/**\n * Inject the DatePickerLabel directive instance\n */\nexport function injectDatePickerLabel<T>(): NgpDatePickerLabel<T> {\n return inject(NgpDatePickerLabelToken) as NgpDatePickerLabel<T>;\n}\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectDateControllerState } from '../date-picker/date-picker-state';\nimport { NgpDatePickerLabelToken } from './date-picker-label-token';\n\n/**\n * The label that displays the current month and year typically in the header of the date picker. This will be announced by screen readers when the date changes.\n */\n@Directive({\n selector: '[ngpDatePickerLabel]',\n exportAs: 'ngpDatePickerLabel',\n providers: [{ provide: NgpDatePickerLabelToken, useExisting: NgpDatePickerLabel }],\n host: {\n '[id]': 'id()',\n '[attr.aria-live]': 'ariaLive()',\n '[attr.data-disabled]': 'state().disabled() ? \"\" : null',\n },\n})\nexport class NgpDatePickerLabel<T> {\n /**\n * Access the date picker.\n */\n protected readonly state = injectDateControllerState<T>();\n\n /**\n * Define a unique id for the label.\n */\n readonly id = input(uniqueId('ngp-date-picker-label'));\n\n /**\n * Define the aria live attribute.\n */\n readonly ariaLive = input('polite', {\n alias: 'aria-live',\n });\n}\n","import { computed, Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { setupButton } from 'ng-primitives/internal';\nimport { injectDateControllerState } from '../date-picker/date-picker-state';\n\n/**\n * A button that navigates to the next month.\n */\n@Directive({\n selector: '[ngpDatePickerNextMonth]',\n exportAs: 'ngpDatePickerNextMonth',\n host: {\n '[attr.aria-disabled]': 'disabled()',\n '[attr.type]': 'isButton ? \"button\" : null',\n },\n})\nexport class NgpDatePickerNextMonth<T> {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker state.\n */\n private readonly state = injectDateControllerState<T>();\n\n /**\n * Determine if this is a button element\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName.toLowerCase() === 'button';\n\n /**\n * Determine if the next month is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n if (this.state().disabled()) {\n return true;\n }\n\n const maxDate = this.state().max();\n const lastDay = this.dateAdapter.set(this.dateAdapter.endOfMonth(this.state().focusedDate()), {\n hour: 23,\n minute: 59,\n second: 59,\n millisecond: 999,\n });\n\n // if there is a max date and it is equal to or before the last day of the month, disable it.\n if (maxDate && this.dateAdapter.compare(maxDate, lastDay) <= 0) {\n return true;\n }\n\n return false;\n });\n\n constructor() {\n setupButton({ disabled: this.disabled });\n }\n\n /**\n * Navigate to the next month.\n */\n @HostListener('click')\n protected navigateToNextMonth(): void {\n if (this.disabled()) {\n return;\n }\n\n // move focus to the first day of the next month.\n let date = this.state().focusedDate();\n date = this.dateAdapter.add(date, { months: 1 });\n date = this.dateAdapter.set(date, {\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n });\n\n this.state().setFocusedDate(date, 'mouse', 'forward');\n }\n}\n","import { computed, Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { setupButton } from 'ng-primitives/internal';\nimport { injectDateControllerState } from '../date-picker/date-picker-state';\n\n/**\n * A button that navigates to the previous month.\n */\n@Directive({\n selector: '[ngpDatePickerPreviousMonth]',\n exportAs: 'ngpDatePickerPreviousMonth',\n host: {\n '[attr.aria-disabled]': 'disabled()',\n '[attr.type]': 'isButton ? \"button\" : null',\n },\n})\nexport class NgpDatePickerPreviousMonth<T> {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker state.\n */\n private readonly state = injectDateControllerState<T>();\n\n /**\n * Determine if this is a button element\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName.toLowerCase() === 'button';\n\n /**\n * Determine if the next month is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n if (this.state().disabled()) {\n return true;\n }\n\n const minDate = this.state().min();\n\n // if the next month is out of bounds, disable it.\n const firstDay = this.dateAdapter.set(\n this.dateAdapter.startOfMonth(this.state().focusedDate()),\n {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n );\n\n // if there is a min date and it is equal to or after the first day of the month, disable it.\n if (minDate && this.dateAdapter.compare(minDate, firstDay) >= 0) {\n return true;\n }\n\n return false;\n });\n\n constructor() {\n setupButton({ disabled: this.disabled });\n }\n\n /**\n * Navigate to the previous month.\n */\n @HostListener('click')\n protected navigateToPreviouMonth(): void {\n if (this.disabled()) {\n return;\n }\n\n // move focus to the first day of the previous month.\n let date = this.state().focusedDate();\n date = this.dateAdapter.subtract(date, { months: 1 });\n date = this.dateAdapter.set(date, {\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n });\n\n this.state().setFocusedDate(date, 'mouse', 'backward');\n }\n}\n","import {\n computed,\n Directive,\n EmbeddedViewRef,\n inject,\n Injector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { explicitEffect } from 'ng-primitives/internal';\nimport { injectDateControllerState } from '../date-picker/date-picker-state';\nimport {\n NgpDatePickerRowRenderToken,\n NgpDatePickerWeekToken,\n} from './date-picker-row-render-token';\n\n/**\n * The number of days in a week.\n * @internal\n */\nconst DAYS_PER_WEEK = 7;\n\n/**\n * A structural directive that renders a row of weekdays in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerRowRender]',\n exportAs: 'ngpDatePickerRowRender',\n providers: [{ provide: NgpDatePickerRowRenderToken, useExisting: NgpDatePickerRowRender }],\n})\nexport class NgpDatePickerRowRender<T> implements OnDestroy {\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker.\n */\n private readonly state = injectDateControllerState<T>();\n\n /**\n * Access the template ref for the cell.\n */\n private readonly templateRef = inject(TemplateRef);\n\n /**\n * Access the view container ref.\n */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /**\n * Get all the days to display, this is the days of the current month\n * and the days of the previous and next month to fill the grid.\n */\n protected readonly days = computed(() => {\n const month = this.state().focusedDate();\n const days: T[] = [];\n\n // Get the first and last day of the month.\n let firstDay = this.dateAdapter.startOfMonth(month);\n let lastDay = this.dateAdapter.endOfMonth(month);\n\n // calculate the offset of the first day of the week.\n const firstDayOfWeekOffset = this.getFirstDayOfWeekOffset(firstDay);\n\n // find the first and last day of visible in the grid.\n firstDay = this.dateAdapter.subtract(firstDay, {\n days: firstDayOfWeekOffset,\n });\n lastDay = this.dateAdapter.add(lastDay, {\n days: 6 - this.dateAdapter.getDay(lastDay),\n });\n\n // collect all the days to display.\n while (firstDay <= lastDay) {\n days.push(firstDay);\n firstDay = this.dateAdapter.add(firstDay, { days: 1 });\n }\n\n return days;\n });\n\n // get the weeks to display.\n protected readonly weeks = computed(() => {\n const days = this.days();\n const weeks = [];\n\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n\n return weeks;\n });\n\n /**\n * Store the embedded view refs of each rendered row.\n */\n private readonly viewRefs: EmbeddedViewRef<void>[] = [];\n\n /**\n * Store the previously rendered month.\n */\n private previousMonth: T | null = null;\n\n constructor() {\n // Wait for the inputs of the containing picker to be initialized.\n explicitEffect([this.state().focusedDate, this.state().firstDayOfWeek], () =>\n this.renderRows(),\n );\n }\n\n ngOnDestroy(): void {\n this.destroyRows();\n }\n\n /**\n * Render the row.\n */\n private renderRows(): void {\n // If the focused date has not changed, do not re-render.\n if (\n this.previousMonth &&\n this.dateAdapter.isSameMonth(this.previousMonth, this.state().focusedDate())\n ) {\n return;\n }\n\n // Store the current focused month.\n this.previousMonth = this.state().focusedDate();\n\n const weeks = this.weeks();\n\n // clear the view container.\n this.destroyRows();\n\n // render the weeks.\n for (const week of weeks) {\n const viewRef = this.viewContainerRef.createEmbeddedView(this.templateRef, null, {\n injector: Injector.create({\n parent: this.viewContainerRef.injector,\n providers: [{ provide: NgpDatePickerWeekToken, useValue: week }],\n }),\n });\n this.viewRefs.push(viewRef);\n }\n }\n\n /**\n * Destroy the row.\n */\n private destroyRows(): void {\n for (const viewRef of this.viewRefs) {\n viewRef.destroy();\n }\n this.viewRefs.length = 0;\n }\n\n /**\n * Get the offset of the first day of the week.\n * @param firstCalendarDay The first day of the calendar without the offset.\n * @returns The offset of the first day of the week.\n *\n * @internal\n */\n getFirstDayOfWeekOffset(firstCalendarDay: T): number {\n return (\n (DAYS_PER_WEEK + this.dateAdapter.getDay(firstCalendarDay) - this.state().firstDayOfWeek()) %\n DAYS_PER_WEEK\n );\n }\n}\n","import { numberAttribute } from '@angular/core';\n\n/**\n * The first day of the week as a number (0-7).\n * - `1` = Monday\n * - `2` = Tuesday\n * - `3` = Wednesday\n * - `4` = Thursday\n * - `5` = Friday\n * - `6` = Saturday\n * - `7` = Sunday\n */\nexport type NgpDatePickerFirstDayOfWeekNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7;\n\n/**\n * The first day of the week as a number (0-7).\n * - `1` = Monday\n * - `2` = Tuesday\n * - `3` = Wednesday\n * - `4` = Thursday\n * - `5` = Friday\n * - `6` = Saturday\n * - `7` = Sunday\n */\nexport type NgpDatePickerFirstDayOfWeekNumberInput =\n | NgpDatePickerFirstDayOfWeekNumber\n | `${NgpDatePickerFirstDayOfWeekNumber}`;\n\n/**\n * Transform the first day of the week input value to a number (0-7) for the start of the week in\n * the calendar.\n * @param firstDayOfWeek The first day of the week input value (number).\n * @returns The first day of the week number.\n */\nexport function transformToFirstDayOfWeekNumber(\n firstDayOfWeek: NgpDatePickerFirstDayOfWeekNumberInput,\n): NgpDatePickerFirstDayOfWeekNumber {\n if (!firstDayOfWeek) {\n return 7;\n }\n return numberAttribute(firstDayOfWeek) as NgpDatePickerFirstDayOfWeekNumber;\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n afterNextRender,\n booleanAttribute,\n contentChild,\n Directive,\n inject,\n Injector,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { injectDatePickerConfig } from '../config/date-picker-config';\nimport type { NgpDatePickerDateButton } from '../date-picker-date-button/date-picker-date-button';\nimport { NgpDatePickerLabelToken } from '../date-picker-label/date-picker-label-token';\nimport { transformToFirstDayOfWeekNumber } from './date-picker-first-day-of-week';\nimport { datePickerState, provideDatePickerState } from './date-picker-state';\n\n/**\n * The outermost container for the date picker.\n */\n@Directive({\n selector: '[ngpDatePicker]',\n exportAs: 'ngpDatePicker',\n providers: [provideDatePickerState()],\n host: {\n '[attr.data-disabled]': 'state.disabled() ? \"\" : null',\n },\n})\nexport class NgpDatePicker<T> {\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker config.\n */\n private readonly config = injectDatePickerConfig();\n\n /**\n * Access the injector.\n */\n private readonly injector = inject(Injector);\n\n /**\n * The minimum date that can be selected.\n */\n readonly min = input<T | undefined>(undefined, {\n alias: 'ngpDatePickerMin',\n });\n\n /**\n * The maximum date that can be selected.\n */\n readonly max = input<T | undefined>(undefined, {\n alias: 'ngpDatePickerMax',\n });\n\n /**\n * Determine if the date picker is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpDatePickerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * A function that is called to determine if a specific date should be disabled.\n */\n readonly dateDisabled = input<(date: T) => boolean>(() => false, {\n alias: 'ngpDatePickerDateDisabled',\n });\n\n /**\n * Sets which day starts the week in the calendar.\n * Accepts 0-7 where 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday, 7=Sunday.\n * Defaults to NgpDatePickerConfig.firstDayOfWeek (default 7 if not overridden).\n * Note: Update calendar header column order when changing from Sunday start.\n * @default 7 (Sunday)\n */\n readonly firstDayOfWeek = input(transformToFirstDayOfWeekNumber(this.config.firstDayOfWeek), {\n alias: 'ngpDatePickerFirstDayOfWeek',\n transform: transformToFirstDayOfWeekNumber,\n });\n\n /**\n * The selected value.\n */\n readonly date = input<T | undefined>(undefined, {\n alias: 'ngpDatePickerDate',\n });\n\n /**\n * Emit when the date changes.\n */\n readonly dateChange = output<T | undefined>({\n alias: 'ngpDatePickerDateChange',\n });\n\n /**\n * The focused value.\n */\n readonly focusedDate = input<T>(this.dateAdapter.now(), {\n alias: 'ngpDatePickerFocusedDate',\n });\n\n /**\n * Emit when the focused date changes.\n */\n readonly focusedDateChange = output<T>({\n alias: 'ngpDatePickerFocusedDateChange',\n });\n\n /**\n * Detect the label element.\n * @internal\n */\n readonly label = contentChild(NgpDatePickerLabelToken, { descendants: true });\n\n /**\n * Access all the date picker buttons\n */\n private readonly buttons = signal<NgpDatePickerDateButton<T>[]>([]);\n\n /**\n * The date picker state.\n */\n protected readonly state = datePickerState<NgpDatePicker<T>>(this);\n\n /**\n * Set the focused date.\n * @param date The date to focus.\n * @internal\n */\n setFocusedDate(date: T, origin: FocusOrigin = 'mouse', direction: 'forward' | 'backward'): void {\n if (this.state.disabled()) {\n return;\n }\n\n const min = this.state.min();\n const max = this.state.max();\n\n if (min && this.dateAdapter.isBefore(date, min)) {\n date = min;\n }\n\n if (max && this.dateAdapter.isAfter(date, max)) {\n date = max;\n }\n\n // if the date is disabled, find the next available date in the specified direction.\n if (this.state.dateDisabled()(date)) {\n let nextDate = this.dateAdapter.add(date, { days: direction === 'forward' ? 1 : -1 });\n\n while (\n this.state.dateDisabled()(nextDate) ||\n (min && this.dateAdapter.isBefore(nextDate, min)) ||\n (max && this.dateAdapter.isAfter(nextDate, max))\n ) {\n nextDate = this.dateAdapter.add(nextDate, { days: direction === 'forward' ? 1 : -1 });\n }\n\n date = nextDate;\n }\n\n this.state.focusedDate.set(date);\n this.focusedDateChange.emit(date);\n\n if (origin === 'keyboard') {\n afterNextRender(\n {\n write: () => this.buttons().forEach(button => button.focus()),\n },\n {\n injector: this.injector,\n },\n );\n }\n }\n\n /**\n * Register a date button.\n * @param button The date button to register.\n * @internal\n */\n registerButton(button: NgpDatePickerDateButton<T>): void {\n this.buttons.update(buttons => [...buttons, button]);\n }\n\n /**\n * Unregister a date button.\n * @param button The date button to unregister.\n * @internal\n */\n unregisterButton(button: NgpDatePickerDateButton<T>): void {\n this.buttons.update(buttons => buttons.filter(b => b !== button));\n }\n\n /**\n * Select a date.\n * @param date The date to select.\n * @internal\n */\n select(date: T): void {\n this.state.date.set(date);\n this.dateChange.emit(date);\n }\n\n /**\n * Determine if a date is selected.\n * @param date The date to check.\n * @returns True if the date is selected, false otherwise.\n * @internal\n */\n isSelected(date: T): boolean {\n const selected = this.state.date();\n if (!selected) {\n return false;\n }\n\n return this.dateAdapter.isSameDay(date, selected);\n }\n\n /**\n * Determine if a date is the start of a range. In a date picker, this is always false.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isStartOfRange(_: T): boolean {\n return false;\n }\n\n /**\n * Determine if a date is the end of a range. In a date picker, this is always false.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isEndOfRange(_: T): boolean {\n return false;\n }\n\n /**\n * Determine if a date is between the start and end dates. In a date picker, this is always false.\n * @param date The date to check.\n * @returns True if the date is between the start and end dates, false otherwise.\n * @internal\n */\n isBetweenRange(_: T): boolean {\n return false;\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n afterNextRender,\n booleanAttribute,\n contentChild,\n Directive,\n inject,\n Injector,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { injectDatePickerConfig } from '../config/date-picker-config';\nimport { NgpDatePickerDateButton } from '../date-picker-date-button/date-picker-date-button';\nimport { NgpDatePickerLabelToken } from '../date-picker-label/date-picker-label-token';\nimport { transformToFirstDayOfWeekNumber } from '../date-picker/date-picker-first-day-of-week';\nimport { dateRangePickerState, provideDateRangePickerState } from './date-range-picker-state';\n\n@Directive({\n selector: '[ngpDateRangePicker]',\n exportAs: 'ngpDateRangePicker',\n providers: [provideDateRangePickerState()],\n host: {\n '[attr.data-disabled]': 'state.disabled() ? \"\" : null',\n },\n})\nexport class NgpDateRangePicker<T> {\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date range picker config.\n */\n private readonly config = injectDatePickerConfig();\n\n /**\n * Access the injector.\n */\n private readonly injector = inject(Injector);\n\n /**\n * The minimum date that can be selected.\n */\n readonly min = input<T | undefined>(undefined, {\n alias: 'ngpDateRangePickerMin',\n });\n\n /**\n * The maximum date that can be selected.\n */\n readonly max = input<T | undefined>(undefined, {\n alias: 'ngpDateRangePickerMax',\n });\n\n /**\n * Determine if the date picker is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpDateRangePickerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * A function that is called to determine if a specific date should be disabled.\n */\n readonly dateDisabled = input<(date: T) => boolean>(() => false, {\n alias: 'ngpDateRangePickerDateDisabled',\n });\n\n /**\n * Sets which day starts the week in the calendar.\n * Accepts 0-7 where 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday, 7=Sunday.\n * Defaults to NgpDatePickerConfig.firstDayOfWeek (default 7 if not overridden).\n * Note: Update calendar header column order when changing from Sunday start.\n * @default 7 (Sunday)\n */\n readonly firstDayOfWeek = input(transformToFirstDayOfWeekNumber(this.config.firstDayOfWeek), {\n alias: 'ngpDateRangePickerFirstDayOfWeek',\n transform: transformToFirstDayOfWeekNumber,\n });\n\n /**\n * The selected start date\n */\n readonly startDate = input<T | undefined>(undefined, {\n alias: 'ngpDateRangePickerStartDate',\n });\n\n /**\n * Emit when the date changes.\n */\n readonly startDateChange = output<T | undefined>({\n alias: 'ngpDateRangePickerStartDateChange',\n });\n\n /**\n * The selected end date\n */\n readonly endDate = input<T | undefined>(undefined, {\n alias: 'ngpDateRangePickerEndDate',\n });\n\n /**\n * Emit when the end date changes.\n */\n readonly endDateChange = output<T | undefined>({\n alias: 'ngpDateRangePickerEndDateChange',\n });\n\n /**\n * The focused value.\n */\n readonly focusedDate = input<T>(this.dateAdapter.now(), {\n alias: 'ngpDateRangePickerFocusedDate',\n });\n\n /**\n * Emit when the focused date changes.\n */\n readonly focusedDateChange = output<T>({\n alias: 'ngpDateRangePickerFocusedDateChange',\n });\n\n /**\n * Detect the label element.\n * @internal\n */\n readonly label = contentChild(NgpDatePickerLabelToken, { descendants: true });\n\n /**\n * Access all the date picker buttons\n */\n private readonly buttons = signal<NgpDatePickerDateButton<T>[]>([]);\n\n /**\n * The date range picker state.\n */\n private readonly state = dateRangePickerState<NgpDateRangePicker<T>>(this);\n\n /**\n * Set the focused date.\n * @param date The date to focus.\n * @internal\n */\n setFocusedDate(date: T, origin: FocusOrigin = 'mouse', direction: 'forward' | 'backward'): void {\n if (this.state.disabled()) {\n return;\n }\n\n const min = this.state.min();\n const max = this.state.max();\n\n if (min && this.dateAdapter.isBefore(date, min)) {\n date = min;\n }\n\n if (max && this.dateAdapter.isAfter(date, max)) {\n date = max;\n }\n\n // if the date is disabled, find the next available date in the specified direction.\n if (this.state.dateDisabled()(date)) {\n let nextDate = this.dateAdapter.add(date, { days: direction === 'forward' ? 1 : -1 });\n\n while (\n this.state.dateDisabled()(nextDate) ||\n (min && this.dateAdapter.isBefore(nextDate, min)) ||\n (max && this.dateAdapter.isAfter(nextDate, max))\n ) {\n nextDate = this.dateAdapter.add(nextDate, { days: direction === 'forward' ? 1 : -1 });\n }\n\n date = nextDate;\n }\n\n this.state.focusedDate.set(date);\n this.focusedDateChange.emit(date);\n\n if (origin === 'keyboard') {\n afterNextRender(\n {\n write: () => this.buttons().forEach(button => button.focus()),\n },\n {\n injector: this.injector,\n },\n );\n }\n }\n\n /**\n * Register a date button.\n * @param button The date button to register.\n * @internal\n */\n registerButton(button: NgpDatePickerDateButton<T>): void {\n this.buttons.update(buttons => [...buttons, button]);\n }\n\n /**\n * Unregister a date button.\n * @param button The date button to unregister.\n * @internal\n */\n unregisterButton(button: NgpDatePickerDateButton<T>): void {\n this.buttons.update(buttons => buttons.filter(b => b !== button));\n }\n\n /**\n * Select a date.\n * @param date The date to select.\n * @internal\n */\n /**\n * Handles the selection of a date within the date range picker.\n *\n * Selection logic:\n * - If neither a start date nor an end date is selected:\n * - Sets the selected date as the start date.\n * - If a start date is selected but no end date:\n * - If the selected date is after the start date, sets it as the end date.\n * - If the selected date is before the start date, sets the selected date as the start date\n * and the previous start date as the end date.\n * - If the selected date is the same as the start date, sets the selected date as the end date\n * to select a single date.\n * - If both start and end dates are already selected:\n * - Resets the selection, setting the selected date as the new start date and clearing the end date.\n *\n * @param date The date to select.\n */\n select(date: T): void {\n const start = this.state.startDate();\n const end = this.state.endDate();\n\n if (!start && !end) {\n this.state.startDate.set(date);\n this.startDateChange.emit(date);\n return;\n }\n\n if (start && !end) {\n if (this.dateAdapter.isAfter(date, start)) {\n this.state.endDate.set(date);\n this.endDateChange.emit(date);\n } else if (this.dateAdapter.isBefore(date, start)) {\n this.state.startDate.set(date);\n this.state.endDate.set(start);\n this.startDateChange.emit(date);\n this.endDateChange.emit(start);\n } else if (this.dateAdapter.isSameDay(date, start)) {\n this.state.endDate.set(date);\n this.endDateChange.emit(date);\n }\n return;\n }\n\n // If both start and end are selected, reset selection\n this.state.startDate.set(date);\n this.startDateChange.emit(date);\n this.state.endDate.set(undefined);\n this.endDateChange.emit(undefined);\n }\n\n /**\n * Determine if a date is selected. A date is selected if it is either the start date or the end date.\n * @param date The date to check.\n * @returns True if the date is selected, false otherwise.\n * @internal\n */\n isSelected(date: T): boolean {\n const start = this.state.startDate();\n const end = this.state.endDate();\n\n if (!start && !end) {\n return false;\n }\n\n const isStartSelected = start ? this.dateAdapter.isSameDay(date, start) : false;\n const isEndSelected = end ? this.dateAdapter.isSameDay(date, end) : false;\n\n return isStartSelected || isEndSelected;\n }\n\n /**\n * Determine if a date is the start of a range.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isStartOfRange(date: T): boolean {\n const start = this.state.startDate();\n return start ? this.dateAdapter.isSameDay(date, start) : false;\n }\n\n /**\n * Determine if a date is the end of a range.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isEndOfRange(date: T): boolean {\n const end = this.state.endDate();\n return end ? this.dateAdapter.isSameDay(date, end) : false;\n }\n\n /**\n * Determine if a date is between the start and end dates.\n * @param date The date to check.\n * @returns True if the date is between the start and end dates, false otherwise.\n * @internal\n */\n isBetweenRange(date: T): boolean {\n const start = this.state.startDate();\n const end = this.state.endDate();\n\n if (!start || !end) {\n return false;\n }\n\n return this.dateAdapter.isAfter(date, start) && this.dateAdapter.isBefore(date, end);\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":"ng-primitives-date-picker.mjs","sources":["../../../../packages/ng-primitives/date-picker/src/config/date-picker-config.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-row-render/date-picker-row-render-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell-render/date-picker-cell-render-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell-render/date-picker-cell-render.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-date-button/date-picker-date-button-token.ts","../../../../packages/ng-primitives/date-picker/src/date-range-picker/date-range-picker-state.ts","../../../../packages/ng-primitives/date-picker/src/date-picker/date-picker-state.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-cell/date-picker-cell.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-date-button/date-picker-date-button.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-grid/date-picker-grid.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-label/date-picker-label-token.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-label/date-picker-label.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-next-month/date-picker-next-month.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-previous-month/date-picker-previous-month.ts","../../../../packages/ng-primitives/date-picker/src/date-picker-row-render/date-picker-row-render.ts","../../../../packages/ng-primitives/date-picker/src/date-picker/date-picker-first-day-of-week.ts","../../../../packages/ng-primitives/date-picker/src/date-picker/date-picker.ts","../../../../packages/ng-primitives/date-picker/src/date-range-picker/date-range-picker.ts","../../../../packages/ng-primitives/date-picker/src/ng-primitives-date-picker.ts"],"sourcesContent":["import { InjectionToken, Provider, inject } from '@angular/core';\nimport { NgpDatePickerFirstDayOfWeekNumber } from '../date-picker/date-picker-first-day-of-week';\n\nexport interface NgpDatePickerConfig {\n /**\n * Define the first day of the week for the date picker calendar.\n * @default 7 (Sunday)\n */\n firstDayOfWeek: NgpDatePickerFirstDayOfWeekNumber;\n}\n\nexport const defaultDatePickerConfig: NgpDatePickerConfig = {\n firstDayOfWeek: 7,\n};\n\nexport const NgpDatePickerConfigToken = new InjectionToken<NgpDatePickerConfig>(\n 'NgpDatePickerConfigToken',\n);\n\n/**\n * Provide the default DatePicker / DateRangePicker configuration\n * @param config The DatePicker / DateRangePicker configuration\n * @returns The provider\n */\nexport function provideDatePickerConfig(config: Partial<NgpDatePickerConfig>): Provider[] {\n return [\n {\n provide: NgpDatePickerConfigToken,\n useValue: { ...defaultDatePickerConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the DatePicker / DateRangePicker configuration\n * @returns The global DatePicker / DateRangePicker configuration\n */\nexport function injectDatePickerConfig(): NgpDatePickerConfig {\n return inject(NgpDatePickerConfigToken, { optional: true }) ?? defaultDatePickerConfig;\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerRowRender } from './date-picker-row-render';\n\nexport const NgpDatePickerRowRenderToken = new InjectionToken<NgpDatePickerRowRender<unknown>>(\n 'NgpDatePickerRowRenderToken',\n);\n\n/**\n * Inject the DatePickerRowRender directive instance\n */\nexport function injectDatePickerRowRender<T>(): NgpDatePickerRowRender<T> {\n return inject(NgpDatePickerRowRenderToken) as NgpDatePickerRowRender<T>;\n}\n\nexport const NgpDatePickerWeekToken = new InjectionToken<unknown[]>('NgpDatePickerWeekToken');\n\n/**\n * Inject current week days\n */\nexport function injectDatePickerWeek<T>(): T[] {\n return inject(NgpDatePickerWeekToken) as T[];\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerCellRender } from './date-picker-cell-render';\n\nexport const NgpDatePickerCellRenderToken = new InjectionToken<NgpDatePickerCellRender<unknown>>(\n 'NgpDatePickerCellRenderToken',\n);\n\n/**\n * Inject the DatePickerCell directive instance\n */\nexport function injectDatePickerCellRender<T>(): NgpDatePickerCellRender<T> {\n return inject(NgpDatePickerCellRenderToken) as NgpDatePickerCellRender<T>;\n}\n\nexport const NgpDatePickerCellDateToken = new InjectionToken<unknown>('NgpDatePickerCellDateToken');\n\n/**\n * Inject current cell date\n */\nexport function injectDatePickerCellDate<T>(): T {\n return inject(NgpDatePickerCellDateToken) as T;\n}\n","import {\n Directive,\n EmbeddedViewRef,\n inject,\n Injector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { injectDatePickerWeek } from '../date-picker-row-render/date-picker-row-render-token';\nimport {\n NgpDatePickerCellDateToken,\n NgpDatePickerCellRenderToken,\n} from './date-picker-cell-render-token';\n\n/**\n * A structural directive that renders a cell in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerCellRender]',\n exportAs: 'ngpDatePickerCellRender',\n providers: [{ provide: NgpDatePickerCellRenderToken, useExisting: NgpDatePickerCellRender }],\n})\nexport class NgpDatePickerCellRender<T> implements OnDestroy {\n /**\n * Access the template ref for the cell.\n */\n private readonly templateRef = inject(TemplateRef);\n\n /**\n * Access the view container ref.\n */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /**\n * Access the dates in the week.\n */\n private readonly dates = injectDatePickerWeek<T>();\n\n /**\n * Store the view refs for the dates.\n */\n private readonly viewRefs: EmbeddedViewRef<NgpDatePickerCellContext<T>>[] = [];\n\n // Make sure the template checker knows the type of the context with which the\n // template of this directive will be rendered\n static ngTemplateContextGuard<T>(\n _: NgpDatePickerCellRender<T>,\n context: unknown,\n ): context is NgpDatePickerCellContext<T> {\n return true;\n }\n\n constructor() {\n this.renderDates();\n }\n\n /**\n * Render the dates in the week.\n */\n private renderDates(): void {\n this.viewRefs.forEach(viewRef => viewRef.destroy());\n\n for (const date of this.dates) {\n const viewRef = this.viewContainerRef.createEmbeddedView(\n this.templateRef,\n {\n $implicit: date,\n },\n {\n injector: Injector.create({\n parent: this.viewContainerRef.injector,\n providers: [{ provide: NgpDatePickerCellDateToken, useValue: date }],\n }),\n },\n );\n this.viewRefs.push(viewRef);\n }\n }\n\n /**\n * Destroy the view refs.\n */\n ngOnDestroy(): void {\n this.viewRefs.forEach(viewRef => viewRef.destroy());\n }\n}\n\ninterface NgpDatePickerCellContext<T> {\n $implicit: T;\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerDateButton } from './date-picker-date-button';\n\nexport const NgpDatePickerDateButtonToken = new InjectionToken<NgpDatePickerDateButton<unknown>>(\n 'NgpDatePickerDateButtonToken',\n);\n\n/**\n * Inject the DatePickerDateButton directive instance\n */\nexport function injectDatePickerDateButton<T>(): NgpDatePickerDateButton<T> {\n return inject(NgpDatePickerDateButtonToken) as NgpDatePickerDateButton<T>;\n}\n","import { InjectOptions } from '@angular/core';\nimport {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n InjectedState,\n} from 'ng-primitives/state';\nimport type { NgpDateRangePicker } from './date-range-picker';\n\n/**\n * The state token for the DateRangePicker primitive.\n */\nexport const NgpDateRangePickerStateToken =\n createStateToken<NgpDateRangePicker<unknown>>('DateRangePicker');\n\n/**\n * Provides the DateRangePicker state.\n */\nexport const provideDateRangePickerState = createStateProvider(NgpDateRangePickerStateToken);\n\n/**\n * Injects the DateRangePicker state.\n */\nexport const injectDateRangePickerState = createStateInjector<NgpDateRangePicker<unknown>>(\n NgpDateRangePickerStateToken,\n) as <T>(injectOptions?: InjectOptions) => InjectedState<NgpDateRangePicker<T>>;\n\n/**\n * The DateRangePicker state registration function.\n */\nexport const dateRangePickerState = createState(NgpDateRangePickerStateToken);\n","import { InjectOptions } from '@angular/core';\nimport {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n InjectedState,\n} from 'ng-primitives/state';\nimport { NgpDateRangePicker } from '../date-range-picker/date-range-picker';\nimport { injectDateRangePickerState } from '../date-range-picker/date-range-picker-state';\nimport type { NgpDatePicker } from './date-picker';\n\nexport const NgpDatePickerStateToken = createStateToken<NgpDatePicker<unknown>>('DatePicker');\nexport const provideDatePickerState = createStateProvider(NgpDatePickerStateToken);\nexport const injectDatePickerState = createStateInjector<NgpDatePicker<unknown>>(\n NgpDatePickerStateToken,\n) as <T>(injectOptions?: InjectOptions) => InjectedState<NgpDatePicker<T>>;\nexport const datePickerState = createState(NgpDatePickerStateToken);\n\nexport function injectDateControllerState<T>(): InjectedState<\n NgpDatePicker<T> | NgpDateRangePicker<T>\n> {\n const datePickerState = injectDatePickerState<T>({ optional: true });\n const dateRangePickerState = injectDateRangePickerState<T>({ optional: true });\n\n if (datePickerState()) {\n return datePickerState;\n } else if (dateRangePickerState()) {\n return dateRangePickerState;\n } else {\n throw new Error('No date picker or date range picker state found');\n }\n}\n","import { computed, contentChild, Directive } from '@angular/core';\nimport { NgpDatePickerDateButtonToken } from '../date-picker-date-button/date-picker-date-button-token';\nimport { injectDateControllerState } from '../date-picker/date-picker-state';\n\n/**\n * A cell in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerCell]',\n exportAs: 'ngpDatePickerCell',\n host: {\n role: 'gridcell',\n '[attr.data-selected]': 'datePickerButton()?.selected() ? \"\" : null',\n '[attr.aria-selected]': 'datePickerButton()?.selected()',\n '[attr.aria-disabled]': 'datePickerButton()?.disabled()',\n '[attr.data-disabled]': 'datePickerButton()?.disabled() ? \"\" : null',\n '[attr.aria-labelledby]': 'labelId()',\n },\n})\nexport class NgpDatePickerCell {\n /**\n * Access the date picker.\n */\n private readonly state = injectDateControllerState();\n\n /**\n * Access the child date picker date button.\n */\n protected readonly datePickerButton = contentChild(NgpDatePickerDateButtonToken, {\n descendants: true,\n });\n\n /**\n * Access the label id.\n */\n protected readonly labelId = computed(() => this.state().label()?.id());\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { computed, Directive, ElementRef, HostListener, inject, OnDestroy } from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { setupButton } from 'ng-primitives/internal';\nimport { injectDatePickerCellDate } from '../date-picker-cell-render/date-picker-cell-render-token';\nimport { injectDateControllerState } from '../date-picker/date-picker-state';\nimport { NgpDatePickerDateButtonToken } from './date-picker-date-button-token';\n\n/**\n * A button that represents a date in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerDateButton]',\n exportAs: 'ngpDatePickerDateButton',\n providers: [{ provide: NgpDatePickerDateButtonToken, useExisting: NgpDatePickerDateButton }],\n host: {\n '[attr.role]': '!isButton ? \"button\" : null',\n '[attr.tabindex]': 'focused() ? 0 : -1',\n '[attr.data-selected]': 'selected() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.data-outside-month]': 'outside() ? \"\" : null',\n '[attr.data-today]': 'today() ? \"\" : null',\n '[attr.data-range-start]': 'start() ? \"\" : null',\n '[attr.data-range-end]': 'end() ? \"\" : null',\n '[attr.data-range-between]': 'betweenRange() ? \"\" : null',\n },\n})\nexport class NgpDatePickerDateButton<T> implements OnDestroy {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the focus monitor.\n */\n private readonly focusMonitor = inject(FocusMonitor);\n\n /**\n * Access the date picker state.\n */\n private readonly state = injectDateControllerState<T>();\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * The date this cell represents.\n */\n private readonly date = injectDatePickerCellDate<T>();\n\n /**\n * Determine if this is the focused date.\n */\n protected readonly focused = computed(() =>\n this.dateAdapter.isSameDay(this.date, this.state().focusedDate()),\n );\n\n /**\n * Determine if this is the selected date.\n */\n protected readonly selected = computed(() => this.state().isSelected(this.date));\n\n /**\n * Determine if this is the start date of the range.\n */\n protected readonly start = computed(() => this.state().isStartOfRange(this.date));\n\n /**\n * Determine if this is the end date of the range.\n */\n protected readonly end = computed(() => this.state().isEndOfRange(this.date));\n\n /**\n * Determine if this is between the start and end dates of the range.\n */\n protected readonly betweenRange = computed(() => this.state().isBetweenRange(this.date));\n\n /**\n * Determine if this date is outside the current month.\n */\n protected readonly outside = computed(\n () => !this.dateAdapter.isSameMonth(this.date, this.state().focusedDate()),\n );\n\n /**\n * Determine if this date is today.\n */\n protected readonly today = computed(() =>\n this.dateAdapter.isSameDay(this.date, this.dateAdapter.now()),\n );\n\n /**\n * Determine if this date is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n const min = this.state().min();\n const max = this.state().max();\n\n if (this.state().disabled() || this.state().dateDisabled()(this.date)) {\n return true;\n }\n\n if (min && this.dateAdapter.compare(this.dateAdapter.startOfDay(this.date), min) < 0) {\n return true;\n }\n\n if (max && this.dateAdapter.compare(this.dateAdapter.startOfDay(this.date), max) > 0) {\n return true;\n }\n\n return false;\n });\n\n /**\n * Determine if the element is a button.\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName === 'BUTTON';\n\n constructor() {\n this.state().registerButton(this);\n setupButton({ disabled: this.disabled });\n }\n\n ngOnDestroy(): void {\n this.state().unregisterButton(this);\n }\n\n /**\n * When the button is clicked, select the date.\n */\n @HostListener('click')\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n protected select(event?: KeyboardEvent): void {\n // if the button is disabled, do nothing.\n if (this.disabled()) {\n return;\n }\n\n // because this may not be a button, we should stop the event from firing twice due to\n // us listening to both the click and the keydown.enter event.\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.state().select(this.date);\n this.state().setFocusedDate(this.date, 'mouse', 'forward');\n }\n\n /**\n * Focus if this is the current focused date.\n * @internal\n */\n focus(): void {\n if (this.dateAdapter.isSameDay(this.date, this.state().focusedDate())) {\n this.focusMonitor.focusVia(this.elementRef, 'keyboard');\n }\n }\n\n /**\n * Focus the previous cell.\n */\n @HostListener('keydown.arrowLeft', ['$event'])\n protected focusPrevious(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n // in rtl, the arrow keys are reversed.\n if (this.getDirection() === 'rtl') {\n this.focusDate(this.dateAdapter.add(this.state().focusedDate(), { days: 1 }), 'forward');\n } else {\n this.focusDate(\n this.dateAdapter.subtract(this.state().focusedDate(), { days: 1 }),\n 'backward',\n );\n }\n }\n\n /**\n * Focus the next cell.\n */\n @HostListener('keydown.arrowRight', ['$event'])\n protected focusNext(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n // in rtl, the arrow keys are reversed.\n if (this.getDirection() === 'rtl') {\n this.focusDate(\n this.dateAdapter.subtract(this.state().focusedDate(), { days: 1 }),\n 'backward',\n );\n } else {\n this.focusDate(this.dateAdapter.add(this.state().focusedDate(), { days: 1 }), 'forward');\n }\n }\n\n /**\n * Focus the above cell.\n */\n @HostListener('keydown.arrowUp', ['$event'])\n protected focusAbove(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.focusDate(this.dateAdapter.subtract(this.state().focusedDate(), { days: 7 }), 'backward');\n }\n\n /**\n * Focus the below cell.\n */\n @HostListener('keydown.arrowDown', ['$event'])\n protected focusBelow(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.focusDate(this.dateAdapter.add(this.state().focusedDate(), { days: 7 }), 'forward');\n }\n\n /**\n * Focus the first date of the month.\n */\n @HostListener('keydown.home', ['$event'])\n protected focusFirst(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.focusDate(this.dateAdapter.startOfMonth(this.state().focusedDate()), 'forward');\n }\n\n /**\n * Focus the last date of the month.\n */\n @HostListener('keydown.end', ['$event'])\n protected focusLast(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.focusDate(this.dateAdapter.endOfMonth(this.state().focusedDate()), 'backward');\n }\n\n /**\n * Focus the same date in the previous month.\n */\n @HostListener('keydown.pageUp', ['$event'])\n protected focusPreviousMonth(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const date = this.dateAdapter.getDate(this.state().focusedDate());\n\n let previousMonthTarget = this.dateAdapter.startOfMonth(this.state().focusedDate());\n previousMonthTarget = this.dateAdapter.subtract(previousMonthTarget, { months: 1 });\n\n const lastDay = this.dateAdapter.endOfMonth(previousMonthTarget);\n\n // if we are on a date that does not exist in the previous month, we should focus the last day of the month.\n if (date > this.dateAdapter.getDate(lastDay)) {\n this.focusDate(lastDay, 'forward');\n return;\n } else {\n this.focusDate(this.dateAdapter.set(previousMonthTarget, { day: date }), 'forward');\n }\n }\n\n /**\n * Focus the same date in the next month.\n */\n @HostListener('keydown.pageDown', ['$event'])\n protected focusNextMonth(event: KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const date = this.dateAdapter.getDate(this.state().focusedDate());\n\n let nextMonthTarget = this.dateAdapter.startOfMonth(this.state().focusedDate());\n nextMonthTarget = this.dateAdapter.add(nextMonthTarget, { months: 1 });\n\n const lastDay = this.dateAdapter.endOfMonth(nextMonthTarget);\n\n // if we are on a date that does not exist in the next month, we should focus the last day of the month.\n if (date > this.dateAdapter.getDate(lastDay)) {\n this.focusDate(lastDay, 'backward');\n return;\n } else {\n this.focusDate(this.dateAdapter.set(nextMonthTarget, { day: date }), 'backward');\n }\n }\n\n private focusDate(date: T, direction: 'forward' | 'backward'): void {\n this.state().setFocusedDate(date, 'keyboard', direction);\n }\n\n /**\n * Get the direction of the element.\n */\n private getDirection(): 'ltr' | 'rtl' {\n return getComputedStyle(this.elementRef.nativeElement).direction === 'rtl' ? 'rtl' : 'ltr';\n }\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectDateControllerState } from '../date-picker/date-picker-state';\n\n/**\n * The grid that contains the days of the month.\n */\n@Directive({\n selector: '[ngpDatePickerGrid]',\n exportAs: 'ngpDatePickerGrid',\n host: {\n role: 'grid',\n '[attr.aria-labelledby]': 'labelId()',\n '[attr.data-disabled]': 'state().disabled() ? \"\" : null',\n },\n})\nexport class NgpDatePickerGrid<T> {\n /**\n * Access the date picker state.\n */\n protected readonly state = injectDateControllerState<T>();\n\n /**\n * Determine the id for the label.\n */\n protected readonly labelId = computed(() => this.state().label()?.id());\n}\n","import { InjectionToken, inject } from '@angular/core';\nimport type { NgpDatePickerLabel } from './date-picker-label';\n\nexport const NgpDatePickerLabelToken = new InjectionToken<NgpDatePickerLabel<unknown>>(\n 'NgpDatePickerLabelToken',\n);\n\n/**\n * Inject the DatePickerLabel directive instance\n */\nexport function injectDatePickerLabel<T>(): NgpDatePickerLabel<T> {\n return inject(NgpDatePickerLabelToken) as NgpDatePickerLabel<T>;\n}\n","import { Directive, input } from '@angular/core';\nimport { uniqueId } from 'ng-primitives/utils';\nimport { injectDateControllerState } from '../date-picker/date-picker-state';\nimport { NgpDatePickerLabelToken } from './date-picker-label-token';\n\n/**\n * The label that displays the current month and year typically in the header of the date picker. This will be announced by screen readers when the date changes.\n */\n@Directive({\n selector: '[ngpDatePickerLabel]',\n exportAs: 'ngpDatePickerLabel',\n providers: [{ provide: NgpDatePickerLabelToken, useExisting: NgpDatePickerLabel }],\n host: {\n '[id]': 'id()',\n '[attr.aria-live]': 'ariaLive()',\n '[attr.data-disabled]': 'state().disabled() ? \"\" : null',\n },\n})\nexport class NgpDatePickerLabel<T> {\n /**\n * Access the date picker.\n */\n protected readonly state = injectDateControllerState<T>();\n\n /**\n * Define a unique id for the label.\n */\n readonly id = input(uniqueId('ngp-date-picker-label'));\n\n /**\n * Define the aria live attribute.\n */\n readonly ariaLive = input('polite', {\n alias: 'aria-live',\n });\n}\n","import { computed, Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { setupButton } from 'ng-primitives/internal';\nimport { injectDateControllerState } from '../date-picker/date-picker-state';\n\n/**\n * A button that navigates to the next month.\n */\n@Directive({\n selector: '[ngpDatePickerNextMonth]',\n exportAs: 'ngpDatePickerNextMonth',\n host: {\n '[attr.aria-disabled]': 'disabled()',\n '[attr.type]': 'isButton ? \"button\" : null',\n },\n})\nexport class NgpDatePickerNextMonth<T> {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker state.\n */\n private readonly state = injectDateControllerState<T>();\n\n /**\n * Determine if this is a button element\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName.toLowerCase() === 'button';\n\n /**\n * Determine if the next month is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n if (this.state().disabled()) {\n return true;\n }\n\n const maxDate = this.state().max();\n const lastDay = this.dateAdapter.set(this.dateAdapter.endOfMonth(this.state().focusedDate()), {\n hour: 23,\n minute: 59,\n second: 59,\n millisecond: 999,\n });\n\n // if there is a max date and it is equal to or before the last day of the month, disable it.\n if (maxDate && this.dateAdapter.compare(maxDate, lastDay) <= 0) {\n return true;\n }\n\n return false;\n });\n\n constructor() {\n setupButton({ disabled: this.disabled });\n }\n\n /**\n * Navigate to the next month.\n */\n @HostListener('click')\n protected navigateToNextMonth(): void {\n if (this.disabled()) {\n return;\n }\n\n // move focus to the first day of the next month.\n let date = this.state().focusedDate();\n date = this.dateAdapter.add(date, { months: 1 });\n date = this.dateAdapter.set(date, {\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n });\n\n this.state().setFocusedDate(date, 'mouse', 'forward');\n }\n}\n","import { computed, Directive, ElementRef, HostListener, inject } from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { setupButton } from 'ng-primitives/internal';\nimport { injectDateControllerState } from '../date-picker/date-picker-state';\n\n/**\n * A button that navigates to the previous month.\n */\n@Directive({\n selector: '[ngpDatePickerPreviousMonth]',\n exportAs: 'ngpDatePickerPreviousMonth',\n host: {\n '[attr.aria-disabled]': 'disabled()',\n '[attr.type]': 'isButton ? \"button\" : null',\n },\n})\nexport class NgpDatePickerPreviousMonth<T> {\n /**\n * Access the element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker state.\n */\n private readonly state = injectDateControllerState<T>();\n\n /**\n * Determine if this is a button element\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName.toLowerCase() === 'button';\n\n /**\n * Determine if the next month is disabled.\n * @internal\n */\n readonly disabled = computed(() => {\n if (this.state().disabled()) {\n return true;\n }\n\n const minDate = this.state().min();\n\n // if the next month is out of bounds, disable it.\n const firstDay = this.dateAdapter.set(\n this.dateAdapter.startOfMonth(this.state().focusedDate()),\n {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n );\n\n // if there is a min date and it is equal to or after the first day of the month, disable it.\n if (minDate && this.dateAdapter.compare(minDate, firstDay) >= 0) {\n return true;\n }\n\n return false;\n });\n\n constructor() {\n setupButton({ disabled: this.disabled });\n }\n\n /**\n * Navigate to the previous month.\n */\n @HostListener('click')\n protected navigateToPreviouMonth(): void {\n if (this.disabled()) {\n return;\n }\n\n // move focus to the first day of the previous month.\n let date = this.state().focusedDate();\n date = this.dateAdapter.subtract(date, { months: 1 });\n date = this.dateAdapter.set(date, {\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n });\n\n this.state().setFocusedDate(date, 'mouse', 'backward');\n }\n}\n","import {\n computed,\n Directive,\n EmbeddedViewRef,\n inject,\n Injector,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { explicitEffect } from 'ng-primitives/internal';\nimport { injectDateControllerState } from '../date-picker/date-picker-state';\nimport {\n NgpDatePickerRowRenderToken,\n NgpDatePickerWeekToken,\n} from './date-picker-row-render-token';\n\n/**\n * The number of days in a week.\n * @internal\n */\nconst DAYS_PER_WEEK = 7;\n\n/**\n * A structural directive that renders a row of weekdays in the date picker grid.\n */\n@Directive({\n selector: '[ngpDatePickerRowRender]',\n exportAs: 'ngpDatePickerRowRender',\n providers: [{ provide: NgpDatePickerRowRenderToken, useExisting: NgpDatePickerRowRender }],\n})\nexport class NgpDatePickerRowRender<T> implements OnDestroy {\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker.\n */\n private readonly state = injectDateControllerState<T>();\n\n /**\n * Access the template ref for the cell.\n */\n private readonly templateRef = inject(TemplateRef);\n\n /**\n * Access the view container ref.\n */\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n /**\n * Get all the days to display, this is the days of the current month\n * and the days of the previous and next month to fill the grid.\n */\n protected readonly days = computed(() => {\n const month = this.state().focusedDate();\n const days: T[] = [];\n\n // Get the first and last day of the month.\n let firstDay = this.dateAdapter.startOfMonth(month);\n let lastDay = this.dateAdapter.endOfMonth(month);\n\n // calculate the offset of the first day of the week.\n const firstDayOfWeekOffset = this.getFirstDayOfWeekOffset(firstDay);\n const lastDayOfWeekOffset = this.getLastDayOfWeekOffset(lastDay);\n\n // find the first and last day of visible in the grid.\n firstDay = this.dateAdapter.subtract(firstDay, {\n days: firstDayOfWeekOffset,\n });\n lastDay = this.dateAdapter.add(lastDay, {\n days: lastDayOfWeekOffset,\n });\n\n // collect all the days to display.\n while (firstDay <= lastDay) {\n days.push(firstDay);\n firstDay = this.dateAdapter.add(firstDay, { days: 1 });\n }\n\n return days;\n });\n\n // get the weeks to display.\n protected readonly weeks = computed(() => {\n const days = this.days();\n const weeks = [];\n\n for (let i = 0; i < days.length; i += 7) {\n weeks.push(days.slice(i, i + 7));\n }\n\n return weeks;\n });\n\n /**\n * Store the embedded view refs of each rendered row.\n */\n private readonly viewRefs: EmbeddedViewRef<void>[] = [];\n\n /**\n * Store the previously rendered month.\n */\n private previousMonth: T | null = null;\n\n constructor() {\n // Wait for the inputs of the containing picker to be initialized.\n explicitEffect([this.state().focusedDate, this.state().firstDayOfWeek], () =>\n this.renderRows(),\n );\n }\n\n ngOnDestroy(): void {\n this.destroyRows();\n }\n\n /**\n * Render the row.\n */\n private renderRows(): void {\n // If the focused date has not changed, do not re-render.\n if (\n this.previousMonth &&\n this.dateAdapter.isSameMonth(this.previousMonth, this.state().focusedDate())\n ) {\n return;\n }\n\n // Store the current focused month.\n this.previousMonth = this.state().focusedDate();\n\n const weeks = this.weeks();\n\n // clear the view container.\n this.destroyRows();\n\n // render the weeks.\n for (const week of weeks) {\n const viewRef = this.viewContainerRef.createEmbeddedView(this.templateRef, null, {\n injector: Injector.create({\n parent: this.viewContainerRef.injector,\n providers: [{ provide: NgpDatePickerWeekToken, useValue: week }],\n }),\n });\n this.viewRefs.push(viewRef);\n }\n }\n\n /**\n * Destroy the row.\n */\n private destroyRows(): void {\n for (const viewRef of this.viewRefs) {\n viewRef.destroy();\n }\n this.viewRefs.length = 0;\n }\n\n /**\n * Get the offset of the first day of the week.\n * @param firstCalendarDay The first day of the calendar without the offset.\n * @returns The offset of the first day of the week.\n *\n * @internal\n */\n getFirstDayOfWeekOffset(firstCalendarDay: T): number {\n return (\n (DAYS_PER_WEEK + this.dateAdapter.getDay(firstCalendarDay) - this.state().firstDayOfWeek()) %\n DAYS_PER_WEEK\n );\n }\n\n /**\n * Get the offset of the last day of the week.\n * @param lastCalendarDay The last day of the calendar without the offset.\n * @returns The offset of the last day of the week.\n *\n * @internal\n */\n getLastDayOfWeekOffset(lastCalendarDay: T): number {\n const lastDay = this.dateAdapter.getDay(lastCalendarDay);\n const firstDay = this.state().firstDayOfWeek();\n\n return (DAYS_PER_WEEK + firstDay + DAYS_PER_WEEK - 1 - lastDay) % DAYS_PER_WEEK;\n }\n}\n","import { numberAttribute } from '@angular/core';\n\n/**\n * The first day of the week as a number (0-7).\n * - `1` = Monday\n * - `2` = Tuesday\n * - `3` = Wednesday\n * - `4` = Thursday\n * - `5` = Friday\n * - `6` = Saturday\n * - `7` = Sunday\n */\nexport type NgpDatePickerFirstDayOfWeekNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7;\n\n/**\n * The first day of the week as a number (0-7).\n * - `1` = Monday\n * - `2` = Tuesday\n * - `3` = Wednesday\n * - `4` = Thursday\n * - `5` = Friday\n * - `6` = Saturday\n * - `7` = Sunday\n */\nexport type NgpDatePickerFirstDayOfWeekNumberInput =\n | NgpDatePickerFirstDayOfWeekNumber\n | `${NgpDatePickerFirstDayOfWeekNumber}`;\n\n/**\n * Transform the first day of the week input value to a number (0-7) for the start of the week in\n * the calendar.\n * @param firstDayOfWeek The first day of the week input value (number).\n * @returns The first day of the week number.\n */\nexport function transformToFirstDayOfWeekNumber(\n firstDayOfWeek: NgpDatePickerFirstDayOfWeekNumberInput,\n): NgpDatePickerFirstDayOfWeekNumber {\n if (!firstDayOfWeek) {\n return 7;\n }\n return numberAttribute(firstDayOfWeek) as NgpDatePickerFirstDayOfWeekNumber;\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n afterNextRender,\n booleanAttribute,\n contentChild,\n Directive,\n inject,\n Injector,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { injectDatePickerConfig } from '../config/date-picker-config';\nimport type { NgpDatePickerDateButton } from '../date-picker-date-button/date-picker-date-button';\nimport { NgpDatePickerLabelToken } from '../date-picker-label/date-picker-label-token';\nimport { transformToFirstDayOfWeekNumber } from './date-picker-first-day-of-week';\nimport { datePickerState, provideDatePickerState } from './date-picker-state';\n\n/**\n * The outermost container for the date picker.\n */\n@Directive({\n selector: '[ngpDatePicker]',\n exportAs: 'ngpDatePicker',\n providers: [provideDatePickerState()],\n host: {\n '[attr.data-disabled]': 'state.disabled() ? \"\" : null',\n },\n})\nexport class NgpDatePicker<T> {\n /**\n * Access the date adapter.\n */\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date picker config.\n */\n private readonly config = injectDatePickerConfig();\n\n /**\n * Access the injector.\n */\n private readonly injector = inject(Injector);\n\n /**\n * The minimum date that can be selected.\n */\n readonly min = input<T | undefined>(undefined, {\n alias: 'ngpDatePickerMin',\n });\n\n /**\n * The maximum date that can be selected.\n */\n readonly max = input<T | undefined>(undefined, {\n alias: 'ngpDatePickerMax',\n });\n\n /**\n * Determine if the date picker is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpDatePickerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * A function that is called to determine if a specific date should be disabled.\n */\n readonly dateDisabled = input<(date: T) => boolean>(() => false, {\n alias: 'ngpDatePickerDateDisabled',\n });\n\n /**\n * Sets which day starts the week in the calendar.\n * Accepts 0-7 where 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday, 7=Sunday.\n * Defaults to NgpDatePickerConfig.firstDayOfWeek (default 7 if not overridden).\n * Note: Update calendar header column order when changing from Sunday start.\n * @default 7 (Sunday)\n */\n readonly firstDayOfWeek = input(transformToFirstDayOfWeekNumber(this.config.firstDayOfWeek), {\n alias: 'ngpDatePickerFirstDayOfWeek',\n transform: transformToFirstDayOfWeekNumber,\n });\n\n /**\n * The selected value.\n */\n readonly date = input<T | undefined>(undefined, {\n alias: 'ngpDatePickerDate',\n });\n\n /**\n * Emit when the date changes.\n */\n readonly dateChange = output<T | undefined>({\n alias: 'ngpDatePickerDateChange',\n });\n\n /**\n * The focused value.\n */\n readonly focusedDate = input<T>(this.dateAdapter.now(), {\n alias: 'ngpDatePickerFocusedDate',\n });\n\n /**\n * Emit when the focused date changes.\n */\n readonly focusedDateChange = output<T>({\n alias: 'ngpDatePickerFocusedDateChange',\n });\n\n /**\n * Detect the label element.\n * @internal\n */\n readonly label = contentChild(NgpDatePickerLabelToken, { descendants: true });\n\n /**\n * Access all the date picker buttons\n */\n private readonly buttons = signal<NgpDatePickerDateButton<T>[]>([]);\n\n /**\n * The date picker state.\n */\n protected readonly state = datePickerState<NgpDatePicker<T>>(this);\n\n /**\n * Set the focused date.\n * @param date The date to focus.\n * @internal\n */\n setFocusedDate(date: T, origin: FocusOrigin = 'mouse', direction: 'forward' | 'backward'): void {\n if (this.state.disabled()) {\n return;\n }\n\n const min = this.state.min();\n const max = this.state.max();\n\n if (min && this.dateAdapter.isBefore(date, min)) {\n date = min;\n }\n\n if (max && this.dateAdapter.isAfter(date, max)) {\n date = max;\n }\n\n // if the date is disabled, find the next available date in the specified direction.\n if (this.state.dateDisabled()(date)) {\n let nextDate = this.dateAdapter.add(date, { days: direction === 'forward' ? 1 : -1 });\n\n while (\n this.state.dateDisabled()(nextDate) ||\n (min && this.dateAdapter.isBefore(nextDate, min)) ||\n (max && this.dateAdapter.isAfter(nextDate, max))\n ) {\n nextDate = this.dateAdapter.add(nextDate, { days: direction === 'forward' ? 1 : -1 });\n }\n\n date = nextDate;\n }\n\n this.state.focusedDate.set(date);\n this.focusedDateChange.emit(date);\n\n if (origin === 'keyboard') {\n afterNextRender(\n {\n write: () => this.buttons().forEach(button => button.focus()),\n },\n {\n injector: this.injector,\n },\n );\n }\n }\n\n /**\n * Register a date button.\n * @param button The date button to register.\n * @internal\n */\n registerButton(button: NgpDatePickerDateButton<T>): void {\n this.buttons.update(buttons => [...buttons, button]);\n }\n\n /**\n * Unregister a date button.\n * @param button The date button to unregister.\n * @internal\n */\n unregisterButton(button: NgpDatePickerDateButton<T>): void {\n this.buttons.update(buttons => buttons.filter(b => b !== button));\n }\n\n /**\n * Select a date.\n * @param date The date to select.\n * @internal\n */\n select(date: T): void {\n this.state.date.set(date);\n this.dateChange.emit(date);\n }\n\n /**\n * Determine if a date is selected.\n * @param date The date to check.\n * @returns True if the date is selected, false otherwise.\n * @internal\n */\n isSelected(date: T): boolean {\n const selected = this.state.date();\n if (!selected) {\n return false;\n }\n\n return this.dateAdapter.isSameDay(date, selected);\n }\n\n /**\n * Determine if a date is the start of a range. In a date picker, this is always false.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isStartOfRange(_: T): boolean {\n return false;\n }\n\n /**\n * Determine if a date is the end of a range. In a date picker, this is always false.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isEndOfRange(_: T): boolean {\n return false;\n }\n\n /**\n * Determine if a date is between the start and end dates. In a date picker, this is always false.\n * @param date The date to check.\n * @returns True if the date is between the start and end dates, false otherwise.\n * @internal\n */\n isBetweenRange(_: T): boolean {\n return false;\n }\n}\n","import { FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n afterNextRender,\n booleanAttribute,\n contentChild,\n Directive,\n inject,\n Injector,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { injectDateAdapter } from 'ng-primitives/date-time';\nimport { injectDatePickerConfig } from '../config/date-picker-config';\nimport { NgpDatePickerDateButton } from '../date-picker-date-button/date-picker-date-button';\nimport { NgpDatePickerLabelToken } from '../date-picker-label/date-picker-label-token';\nimport { transformToFirstDayOfWeekNumber } from '../date-picker/date-picker-first-day-of-week';\nimport { dateRangePickerState, provideDateRangePickerState } from './date-range-picker-state';\n\n@Directive({\n selector: '[ngpDateRangePicker]',\n exportAs: 'ngpDateRangePicker',\n providers: [provideDateRangePickerState()],\n host: {\n '[attr.data-disabled]': 'state.disabled() ? \"\" : null',\n },\n})\nexport class NgpDateRangePicker<T> {\n private readonly dateAdapter = injectDateAdapter<T>();\n\n /**\n * Access the date range picker config.\n */\n private readonly config = injectDatePickerConfig();\n\n /**\n * Access the injector.\n */\n private readonly injector = inject(Injector);\n\n /**\n * The minimum date that can be selected.\n */\n readonly min = input<T | undefined>(undefined, {\n alias: 'ngpDateRangePickerMin',\n });\n\n /**\n * The maximum date that can be selected.\n */\n readonly max = input<T | undefined>(undefined, {\n alias: 'ngpDateRangePickerMax',\n });\n\n /**\n * Determine if the date picker is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n alias: 'ngpDateRangePickerDisabled',\n transform: booleanAttribute,\n });\n\n /**\n * A function that is called to determine if a specific date should be disabled.\n */\n readonly dateDisabled = input<(date: T) => boolean>(() => false, {\n alias: 'ngpDateRangePickerDateDisabled',\n });\n\n /**\n * Sets which day starts the week in the calendar.\n * Accepts 0-7 where 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday, 7=Sunday.\n * Defaults to NgpDatePickerConfig.firstDayOfWeek (default 7 if not overridden).\n * Note: Update calendar header column order when changing from Sunday start.\n * @default 7 (Sunday)\n */\n readonly firstDayOfWeek = input(transformToFirstDayOfWeekNumber(this.config.firstDayOfWeek), {\n alias: 'ngpDateRangePickerFirstDayOfWeek',\n transform: transformToFirstDayOfWeekNumber,\n });\n\n /**\n * The selected start date\n */\n readonly startDate = input<T | undefined>(undefined, {\n alias: 'ngpDateRangePickerStartDate',\n });\n\n /**\n * Emit when the date changes.\n */\n readonly startDateChange = output<T | undefined>({\n alias: 'ngpDateRangePickerStartDateChange',\n });\n\n /**\n * The selected end date\n */\n readonly endDate = input<T | undefined>(undefined, {\n alias: 'ngpDateRangePickerEndDate',\n });\n\n /**\n * Emit when the end date changes.\n */\n readonly endDateChange = output<T | undefined>({\n alias: 'ngpDateRangePickerEndDateChange',\n });\n\n /**\n * The focused value.\n */\n readonly focusedDate = input<T>(this.dateAdapter.now(), {\n alias: 'ngpDateRangePickerFocusedDate',\n });\n\n /**\n * Emit when the focused date changes.\n */\n readonly focusedDateChange = output<T>({\n alias: 'ngpDateRangePickerFocusedDateChange',\n });\n\n /**\n * Detect the label element.\n * @internal\n */\n readonly label = contentChild(NgpDatePickerLabelToken, { descendants: true });\n\n /**\n * Access all the date picker buttons\n */\n private readonly buttons = signal<NgpDatePickerDateButton<T>[]>([]);\n\n /**\n * The date range picker state.\n */\n private readonly state = dateRangePickerState<NgpDateRangePicker<T>>(this);\n\n /**\n * Set the focused date.\n * @param date The date to focus.\n * @internal\n */\n setFocusedDate(date: T, origin: FocusOrigin = 'mouse', direction: 'forward' | 'backward'): void {\n if (this.state.disabled()) {\n return;\n }\n\n const min = this.state.min();\n const max = this.state.max();\n\n if (min && this.dateAdapter.isBefore(date, min)) {\n date = min;\n }\n\n if (max && this.dateAdapter.isAfter(date, max)) {\n date = max;\n }\n\n // if the date is disabled, find the next available date in the specified direction.\n if (this.state.dateDisabled()(date)) {\n let nextDate = this.dateAdapter.add(date, { days: direction === 'forward' ? 1 : -1 });\n\n while (\n this.state.dateDisabled()(nextDate) ||\n (min && this.dateAdapter.isBefore(nextDate, min)) ||\n (max && this.dateAdapter.isAfter(nextDate, max))\n ) {\n nextDate = this.dateAdapter.add(nextDate, { days: direction === 'forward' ? 1 : -1 });\n }\n\n date = nextDate;\n }\n\n this.state.focusedDate.set(date);\n this.focusedDateChange.emit(date);\n\n if (origin === 'keyboard') {\n afterNextRender(\n {\n write: () => this.buttons().forEach(button => button.focus()),\n },\n {\n injector: this.injector,\n },\n );\n }\n }\n\n /**\n * Register a date button.\n * @param button The date button to register.\n * @internal\n */\n registerButton(button: NgpDatePickerDateButton<T>): void {\n this.buttons.update(buttons => [...buttons, button]);\n }\n\n /**\n * Unregister a date button.\n * @param button The date button to unregister.\n * @internal\n */\n unregisterButton(button: NgpDatePickerDateButton<T>): void {\n this.buttons.update(buttons => buttons.filter(b => b !== button));\n }\n\n /**\n * Select a date.\n * @param date The date to select.\n * @internal\n */\n /**\n * Handles the selection of a date within the date range picker.\n *\n * Selection logic:\n * - If neither a start date nor an end date is selected:\n * - Sets the selected date as the start date.\n * - If a start date is selected but no end date:\n * - If the selected date is after the start date, sets it as the end date.\n * - If the selected date is before the start date, sets the selected date as the start date\n * and the previous start date as the end date.\n * - If the selected date is the same as the start date, sets the selected date as the end date\n * to select a single date.\n * - If both start and end dates are already selected:\n * - Resets the selection, setting the selected date as the new start date and clearing the end date.\n *\n * @param date The date to select.\n */\n select(date: T): void {\n const start = this.state.startDate();\n const end = this.state.endDate();\n\n if (!start && !end) {\n this.state.startDate.set(date);\n this.startDateChange.emit(date);\n return;\n }\n\n if (start && !end) {\n if (this.dateAdapter.isAfter(date, start)) {\n this.state.endDate.set(date);\n this.endDateChange.emit(date);\n } else if (this.dateAdapter.isBefore(date, start)) {\n this.state.startDate.set(date);\n this.state.endDate.set(start);\n this.startDateChange.emit(date);\n this.endDateChange.emit(start);\n } else if (this.dateAdapter.isSameDay(date, start)) {\n this.state.endDate.set(date);\n this.endDateChange.emit(date);\n }\n return;\n }\n\n // If both start and end are selected, reset selection\n this.state.startDate.set(date);\n this.startDateChange.emit(date);\n this.state.endDate.set(undefined);\n this.endDateChange.emit(undefined);\n }\n\n /**\n * Determine if a date is selected. A date is selected if it is either the start date or the end date.\n * @param date The date to check.\n * @returns True if the date is selected, false otherwise.\n * @internal\n */\n isSelected(date: T): boolean {\n const start = this.state.startDate();\n const end = this.state.endDate();\n\n if (!start && !end) {\n return false;\n }\n\n const isStartSelected = start ? this.dateAdapter.isSameDay(date, start) : false;\n const isEndSelected = end ? this.dateAdapter.isSameDay(date, end) : false;\n\n return isStartSelected || isEndSelected;\n }\n\n /**\n * Determine if a date is the start of a range.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isStartOfRange(date: T): boolean {\n const start = this.state.startDate();\n return start ? this.dateAdapter.isSameDay(date, start) : false;\n }\n\n /**\n * Determine if a date is the end of a range.\n * @param date The date to check.\n * @returns Always false.\n * @internal\n */\n isEndOfRange(date: T): boolean {\n const end = this.state.endDate();\n return end ? this.dateAdapter.isSameDay(date, end) : false;\n }\n\n /**\n * Determine if a date is between the start and end dates.\n * @param date The date to check.\n * @returns True if the date is between the start and end dates, false otherwise.\n * @internal\n */\n isBetweenRange(date: T): boolean {\n const start = this.state.startDate();\n const end = this.state.endDate();\n\n if (!start || !end) {\n return false;\n }\n\n return this.dateAdapter.isAfter(date, start) && this.dateAdapter.isBefore(date, end);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|