@wzrdev/ngx-datepicker 0.1.2 → 0.1.4

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/README.md CHANGED
@@ -1,63 +1,105 @@
1
1
  # NgxDatepicker
2
2
 
3
- This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 19.2.0.
3
+ This project is still under development and will be released soon.
4
4
 
5
- ## Code scaffolding
5
+ ![demo](https://raw.githubusercontent.com/antonypaquay/ngx-datepicker/refs/heads/develop/projects/ngx-datepicker/src/assets/images/cover.png?token=GHSAT0AAAAAADUF4RXUH27P2XBAHQGVA2HY2MSEPUA)
6
6
 
7
- Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
7
+ ### Compatibility
8
8
 
9
- ```bash
10
- ng generate component component-name
11
- ```
9
+ Angular 19.2.0
10
+
11
+ ## How to install:
12
12
 
13
- For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
13
+ Install the package using npm:
14
14
 
15
15
  ```bash
16
- ng generate --help
16
+ npm install @wzrdev/ngx-datepicker@latest
17
17
  ```
18
18
 
19
- ## Building
19
+ Add the styles to your angular.json file:
20
20
 
21
- To build the library, run:
21
+ ```json
22
+ {
23
+ "styles": [
24
+ "node_modules/@wzrdev/ngx-datepicker/styles/theme.min.css",
25
+ "src/styles.css"
26
+ ]
27
+ }
28
+ ```
22
29
 
23
- ```bash
24
- ng build ngx-datepicker
30
+ The theme.min.css file contains the styles for the standard component. You can customize the styles by overriding the variables in your global styles.css file.
31
+
32
+ ```css
33
+ :root {
34
+ /* Datepicker overrides */
35
+ --ngx-datepicker-accent-color: theme('colors.slate.800');
36
+ --ngx-datepicker-range-color: theme('colors.slate.300');
37
+ }
25
38
  ```
26
39
 
27
- This command will compile your project, and the build artifacts will be placed in the `dist/` directory.
40
+ You can also use classical CSS to customize the styles instead of using Tailwind.
28
41
 
29
- ### Publishing the Library
42
+ ---
30
43
 
31
- Once the project is built, you can publish your library by following these steps:
44
+ ## How to use:
32
45
 
33
- 1. Navigate to the `dist` directory:
34
- ```bash
35
- cd dist/ngx-datepicker
36
- ```
46
+ ### Datepicker
37
47
 
38
- 2. Run the `npm publish` command to publish your library to the npm registry:
39
- ```bash
40
- npm publish
41
- ```
48
+ There are two ways to use the datepicker:
42
49
 
43
- ## Running unit tests
50
+ - using signals
51
+ - using reactive forms
44
52
 
45
- To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
53
+ ---
54
+ Import the basis component in your project:
46
55
 
47
- ```bash
48
- ng test
56
+ ```ts
57
+ import { NgxDatepickerComponent } from "@wzrdev/ngx-datepicker";
49
58
  ```
50
59
 
51
- ## Running end-to-end tests
60
+ ---
52
61
 
53
- For end-to-end (e2e) testing, run:
62
+ #### Using with signals:
54
63
 
55
- ```bash
56
- ng e2e
64
+ ```html
65
+
66
+ <ngx-datepicker
67
+ [label]="'My label"
68
+ [date]="myDate()"
69
+ (selectedDate)="onSelectedDateChange($event)"
70
+ />
57
71
  ```
58
72
 
59
- Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
73
+ #### Using with reactive forms:
74
+
75
+ ```html
76
+
77
+ <ngx-datepicker
78
+ [label]="'My label"
79
+ formControlName="myDate"
80
+ />
81
+ ```
82
+
83
+ #### Defining min and max dates:
84
+
85
+ You can define optional min and max dates for the datepicker simply by passing a date object to the minDate and maxDate properties.
86
+
87
+ ```html
88
+
89
+ <ngx-datepicker
90
+ [label]="'My label"
91
+ [minDate]="minDate()"
92
+ [maxDate]="maxDate()"
93
+ formControlName="myDate"
94
+ />
95
+ ```
96
+ ---
97
+
98
+ ### DateRange picker
99
+
100
+ It depends on what you need, you can use the date range with a combined field or with two separate fields.
60
101
 
61
- ## Additional Resources
102
+ There are two ways to use the date range picker:
62
103
 
63
- For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
104
+ - using signals
105
+ - using reactive forms
@@ -111,18 +111,38 @@ class CalendarComponent {
111
111
  const year = displayDate.getFullYear();
112
112
  const month = displayDate.getMonth();
113
113
  const today = new Date();
114
- const first = new Date(year, month, 1);
115
- const last = new Date(year, month + 1, 0);
114
+ const firstOfMonth = new Date(year, month, 1);
115
+ const lastOfMonth = new Date(year, month + 1, 0);
116
116
  const days = [];
117
- for (let d = new Date(first); d <= last; d.setDate(d.getDate() + 1)) {
118
- const day = {
119
- date: new Date(d),
120
- isDisabled: this.isDisabled(d),
121
- isToday: this.isSame(d, today),
122
- isSelected: this.isSame(d, startDate) || this.isSame(d, endDate),
123
- isInRange: this.isInRange(d),
124
- };
125
- days.push(day);
117
+ const firstDayOfWeek = (firstOfMonth.getDay() + 6) % 7;
118
+ for (let i = 0; i < firstDayOfWeek; i++) {
119
+ days.push({
120
+ date: null,
121
+ isDisabled: true,
122
+ isToday: false,
123
+ isSelected: false,
124
+ isInRange: false,
125
+ });
126
+ }
127
+ for (let d = 1; d <= lastOfMonth.getDate(); d++) {
128
+ const date = new Date(year, month, d);
129
+ days.push({
130
+ date,
131
+ isDisabled: this.isDisabled(date),
132
+ isToday: this.isSame(date, today),
133
+ isSelected: this.isSame(date, startDate) ||
134
+ this.isSame(date, endDate),
135
+ isInRange: this.isInRange(date),
136
+ });
137
+ }
138
+ while (days.length < 35) {
139
+ days.push({
140
+ date: null,
141
+ isDisabled: true,
142
+ isToday: false,
143
+ isSelected: false,
144
+ isInRange: false,
145
+ });
126
146
  }
127
147
  return days;
128
148
  });
@@ -132,7 +152,17 @@ class CalendarComponent {
132
152
  });
133
153
  daysDisabled = computed(() => {
134
154
  const days = this.days();
135
- return days.filter(day => day.isDisabled);
155
+ return days.filter(day => {
156
+ return day.isDisabled && day.date !== null;
157
+ });
158
+ });
159
+ daysSelected = computed(() => {
160
+ const days = this.days();
161
+ return days.filter(day => day.isSelected);
162
+ });
163
+ firstDayInRange = computed(() => {
164
+ const rangeDays = this.daysInRange();
165
+ return rangeDays[0];
136
166
  });
137
167
  latestDayInRange = computed(() => {
138
168
  const rangeDays = this.daysInRange();
@@ -200,6 +230,8 @@ class CalendarComponent {
200
230
  }
201
231
  ;
202
232
  onDaySelect(date) {
233
+ if (!date)
234
+ return;
203
235
  const selectedDays = this.days().filter(day => day.isSelected);
204
236
  const startDate = this.startDate();
205
237
  const endDate = this.endDate();
@@ -229,6 +261,8 @@ class CalendarComponent {
229
261
  this.selectedDaysCount.emit(this.daysInRange().length);
230
262
  }
231
263
  onDayMouseEnter(date) {
264
+ if (!date)
265
+ return;
232
266
  if (!this.enableRange() || (this.startDate() && this.endDate())) {
233
267
  return;
234
268
  }
@@ -279,15 +313,13 @@ class CalendarComponent {
279
313
  this.hoveredDate.set(null);
280
314
  }
281
315
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
282
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: CalendarComponent, isStandalone: true, selector: "ngx-calendar", inputs: { startDate: { classPropertyName: "startDate", publicName: "startDate", isSignal: true, isRequired: false, transformFunction: null }, endDate: { classPropertyName: "endDate", publicName: "endDate", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, enableRange: { classPropertyName: "enableRange", publicName: "enableRange", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { startDate: "startDateChange", endDate: "endDateChange", selectedDate: "selectedDate", selectedDateRange: "selectedDateRange", selectedDaysCount: "selectedDaysCount", hoverDate: "hoverDate" }, host: { listeners: { "keydown": "handleKeyDown($event)" } }, providers: [CalendarService], ngImport: i0, template: "<div\n class=\"ngx:w-65 ngx:bg-white ngx:rounded-md ngx:shadow-lg ngx:p-3\"\n id=\"calendar\"\n role=\"dialog\"\n aria-modal=\"true\">\n\n <div class=\"ngx:flex ngx:items-center ngx:mb-2\">\n <button\n class=\"ngx:cursor-pointer ngx:hover:bg-slate-100 ngx:focus:bg-slate-100 ngx:rounded-full ngx:flex ngx:w-10 ngx:h-10 ngx:justify-center ngx:items-center\"\n (click)=\"prevMonth()\" aria-label=\"Previous month\">\u2039\n </button>\n <p class=\"ngx:grow ngx:text-center ngx:font-medium ngx:text-inherit\">{{ displayDate() | date: 'MMMM yyyy' }}</p>\n <button\n class=\"ngx:cursor-pointer ngx:hover:bg-slate-100 ngx:focus:bg-slate-100 ngx:rounded-full ngx:flex ngx:w-10 ngx:h-10 ngx:justify-center ngx:items-center\"\n (click)=\"nextMonth()\" aria-label=\"Next month\">\u203A\n </button>\n </div>\n\n <!-- Weekdays -->\n <div class=\"ngx:grid ngx:grid-cols-7 ngx:gap-0.5\">\n @for (wd of locale.current.weekdays; track $index) {\n <span class=\"ngx:text-center ngx:py-1 ngx:text-sm ngx:font-medium ngx:text-inherit\">{{ wd }}</span>\n }\n </div>\n\n <div class=\"ngx:grid ngx:grid-cols-7 ngx:gap-y-0.5\">\n @for (day of days(); track $index) {\n <button\n [class]=\"cn(\n 'ngx:relative ngx:cursor-pointer ngx:py-1 ngx:overflow-hidden ngx:text-inherit',\n daysInRange().length < 2 && !day.isDisabled && 'ngx:rounded-full',\n (latestDayInRange() === day || latestDayDisabled() === day) && 'ngx:rounded-r-full',\n day.isDisabled && 'ngx:bg-slate-200 ngx:text-slate-400 ngx:cursor-not-allowed',\n day.isInRange && !day.isDisabled && 'ngx:bg-(--ngx-datepicker-range-color)',\n day.isSelected && !day.isDisabled && 'ngx:bg-(--ngx-datepicker-range-color) ngx:text-(--ngx-datepicker-accent-text-color) ngx:before:absolute ngx:before:top-0 ngx:before:left-0 ngx:before:block ngx:before:w-full ngx:before:h-full ngx:before:z-1 ngx:before:bg-(--ngx-datepicker-accent-color)',\n day.isToday && 'ngx:before:absolute ngx:before:top-0 ngx:before:left-0 ngx:before:block ngx:before:w-full ngx:before:h-full ngx:before:z-1 ngx:before:rounded-full ngx:before:border-2 ngx:before:border-(--ngx-datepicker-accent-color)',\n isSame(day.date, startDate()) && !day.isDisabled && 'ngx:rounded-l-full ngx:before:rounded-full',\n isSame(day.date, endDate()) && 'ngx:rounded-r-full ngx:before:rounded-full'\n )\"\n [attr.aria-selected]=\"isSame(day.date, startDate()) || isSame(day.date, endDate())\"\n [attr.aria-label]=\"locale.current.format(day.date)\"\n [disabled]=\"day.isDisabled\"\n (click)=\"onDaySelect(day.date)\"\n (mouseenter)=\"onDayMouseEnter(day.date)\">\n <span class=\"ngx:relative ngx:z-10\">{{ day.date.getDate() }}</span>\n </button>\n }\n </div>\n</div>\n", dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
316
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: CalendarComponent, isStandalone: true, selector: "ngx-calendar", inputs: { startDate: { classPropertyName: "startDate", publicName: "startDate", isSignal: true, isRequired: false, transformFunction: null }, endDate: { classPropertyName: "endDate", publicName: "endDate", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, enableRange: { classPropertyName: "enableRange", publicName: "enableRange", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { startDate: "startDateChange", endDate: "endDateChange", selectedDate: "selectedDate", selectedDateRange: "selectedDateRange", selectedDaysCount: "selectedDaysCount", hoverDate: "hoverDate" }, host: { listeners: { "keydown": "handleKeyDown($event)" } }, providers: [CalendarService], ngImport: i0, template: "<div\n class=\"ngx:w-65 ngx:bg-white ngx:rounded-md ngx:shadow-lg ngx:p-3\"\n id=\"calendar\"\n role=\"dialog\"\n aria-modal=\"true\">\n\n <div class=\"ngx:flex ngx:items-center ngx:mb-2\">\n <button\n class=\"ngx:cursor-pointer ngx:hover:bg-slate-100 ngx:focus:bg-slate-100 ngx:rounded-full ngx:flex ngx:w-10 ngx:h-10 ngx:justify-center ngx:items-center\"\n (click)=\"prevMonth()\" aria-label=\"Previous month\">\u2039\n </button>\n <p class=\"ngx:grow ngx:text-center ngx:font-medium ngx:text-inherit\">{{ displayDate() | date: 'MMMM yyyy' }}</p>\n <button\n class=\"ngx:cursor-pointer ngx:hover:bg-slate-100 ngx:focus:bg-slate-100 ngx:rounded-full ngx:flex ngx:w-10 ngx:h-10 ngx:justify-center ngx:items-center\"\n (click)=\"nextMonth()\" aria-label=\"Next month\">\u203A\n </button>\n </div>\n\n <div class=\"ngx:grid ngx:grid-cols-7 ngx:gap-0.5\">\n @for (wd of locale.current.weekdays; track $index) {\n <span class=\"ngx:text-center ngx:py-1 ngx:text-sm ngx:font-medium ngx:text-inherit\">{{ wd }}</span>\n }\n </div>\n\n <div class=\"ngx:grid ngx:grid-cols-7 ngx:gap-y-0.5\">\n @for (day of days(); track $index) {\n <button\n [class]=\"cn(\n 'ngx:relative ngx:cursor-pointer ngx:py-1 ngx:overflow-hidden ngx:text-inherit',\n {\n 'ngx:rounded-full': daysInRange().length < 2 && !day.isDisabled,\n 'ngx:rounded-l-full': (firstDayDisabled() === day && day.date !== null) || (firstDayInRange() === day || daysSelected()[0] === day) && day.isSelected && !day.isDisabled,\n 'ngx:rounded-r-full': (latestDayDisabled() === day && day.date !== null) || (latestDayInRange() === day || daysSelected()[1] === day) && !day.isDisabled,\n 'ngx:border-y-2 ngx:border-dashed ngx:border-slate-100 ngx:cursor-auto': day.date === null,\n 'ngx:bg-slate-100 ngx:text-slate-400 ngx:cursor-not-allowed': day.isDisabled && day.date !== null,\n 'ngx:bg-(--ngx-datepicker-range-color)': day.isInRange && !day.isDisabled,\n 'ngx:before:rounded-full ngx:bg-(--ngx-datepicker-range-color) ngx:text-(--ngx-datepicker-accent-text-color) ngx:before:absolute ngx:before:top-0 ngx:before:left-0 ngx:before:block ngx:before:w-full ngx:before:h-full ngx:before:z-1 ngx:before:bg-(--ngx-datepicker-accent-color)': day.isSelected && !day.isDisabled,\n 'ngx:before:absolute ngx:before:top-0 ngx:before:left-0 ngx:before:block ngx:before:w-full ngx:before:h-full ngx:before:z-1 ngx:before:rounded-full ngx:before:border-2 ngx:before:border-(--ngx-datepicker-accent-color)': day.isToday,\n }\n )\"\n [attr.aria-selected]=\"isSame(day.date, startDate()) || isSame(day.date, endDate())\"\n [attr.aria-label]=\"day.date ? locale.current.format(day.date) : undefined\"\n [disabled]=\"day.isDisabled\"\n (click)=\"onDaySelect(day.date)\"\n (mouseenter)=\"onDayMouseEnter(day.date)\">\n @if (day.date) {\n <span class=\"ngx:relative ngx:z-10\">{{ day.date.getDate() }}</span>\n }\n </button>\n }\n </div>\n</div>\n", dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
283
317
  }
284
318
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: CalendarComponent, decorators: [{
285
319
  type: Component,
286
- args: [{ selector: "ngx-calendar", changeDetection: ChangeDetectionStrategy.OnPush, imports: [
287
- DatePipe
288
- ], providers: [CalendarService], host: {
320
+ args: [{ selector: "ngx-calendar", changeDetection: ChangeDetectionStrategy.OnPush, imports: [DatePipe], providers: [CalendarService], host: {
289
321
  "(keydown)": "handleKeyDown($event)"
290
- }, template: "<div\n class=\"ngx:w-65 ngx:bg-white ngx:rounded-md ngx:shadow-lg ngx:p-3\"\n id=\"calendar\"\n role=\"dialog\"\n aria-modal=\"true\">\n\n <div class=\"ngx:flex ngx:items-center ngx:mb-2\">\n <button\n class=\"ngx:cursor-pointer ngx:hover:bg-slate-100 ngx:focus:bg-slate-100 ngx:rounded-full ngx:flex ngx:w-10 ngx:h-10 ngx:justify-center ngx:items-center\"\n (click)=\"prevMonth()\" aria-label=\"Previous month\">\u2039\n </button>\n <p class=\"ngx:grow ngx:text-center ngx:font-medium ngx:text-inherit\">{{ displayDate() | date: 'MMMM yyyy' }}</p>\n <button\n class=\"ngx:cursor-pointer ngx:hover:bg-slate-100 ngx:focus:bg-slate-100 ngx:rounded-full ngx:flex ngx:w-10 ngx:h-10 ngx:justify-center ngx:items-center\"\n (click)=\"nextMonth()\" aria-label=\"Next month\">\u203A\n </button>\n </div>\n\n <!-- Weekdays -->\n <div class=\"ngx:grid ngx:grid-cols-7 ngx:gap-0.5\">\n @for (wd of locale.current.weekdays; track $index) {\n <span class=\"ngx:text-center ngx:py-1 ngx:text-sm ngx:font-medium ngx:text-inherit\">{{ wd }}</span>\n }\n </div>\n\n <div class=\"ngx:grid ngx:grid-cols-7 ngx:gap-y-0.5\">\n @for (day of days(); track $index) {\n <button\n [class]=\"cn(\n 'ngx:relative ngx:cursor-pointer ngx:py-1 ngx:overflow-hidden ngx:text-inherit',\n daysInRange().length < 2 && !day.isDisabled && 'ngx:rounded-full',\n (latestDayInRange() === day || latestDayDisabled() === day) && 'ngx:rounded-r-full',\n day.isDisabled && 'ngx:bg-slate-200 ngx:text-slate-400 ngx:cursor-not-allowed',\n day.isInRange && !day.isDisabled && 'ngx:bg-(--ngx-datepicker-range-color)',\n day.isSelected && !day.isDisabled && 'ngx:bg-(--ngx-datepicker-range-color) ngx:text-(--ngx-datepicker-accent-text-color) ngx:before:absolute ngx:before:top-0 ngx:before:left-0 ngx:before:block ngx:before:w-full ngx:before:h-full ngx:before:z-1 ngx:before:bg-(--ngx-datepicker-accent-color)',\n day.isToday && 'ngx:before:absolute ngx:before:top-0 ngx:before:left-0 ngx:before:block ngx:before:w-full ngx:before:h-full ngx:before:z-1 ngx:before:rounded-full ngx:before:border-2 ngx:before:border-(--ngx-datepicker-accent-color)',\n isSame(day.date, startDate()) && !day.isDisabled && 'ngx:rounded-l-full ngx:before:rounded-full',\n isSame(day.date, endDate()) && 'ngx:rounded-r-full ngx:before:rounded-full'\n )\"\n [attr.aria-selected]=\"isSame(day.date, startDate()) || isSame(day.date, endDate())\"\n [attr.aria-label]=\"locale.current.format(day.date)\"\n [disabled]=\"day.isDisabled\"\n (click)=\"onDaySelect(day.date)\"\n (mouseenter)=\"onDayMouseEnter(day.date)\">\n <span class=\"ngx:relative ngx:z-10\">{{ day.date.getDate() }}</span>\n </button>\n }\n </div>\n</div>\n" }]
322
+ }, template: "<div\n class=\"ngx:w-65 ngx:bg-white ngx:rounded-md ngx:shadow-lg ngx:p-3\"\n id=\"calendar\"\n role=\"dialog\"\n aria-modal=\"true\">\n\n <div class=\"ngx:flex ngx:items-center ngx:mb-2\">\n <button\n class=\"ngx:cursor-pointer ngx:hover:bg-slate-100 ngx:focus:bg-slate-100 ngx:rounded-full ngx:flex ngx:w-10 ngx:h-10 ngx:justify-center ngx:items-center\"\n (click)=\"prevMonth()\" aria-label=\"Previous month\">\u2039\n </button>\n <p class=\"ngx:grow ngx:text-center ngx:font-medium ngx:text-inherit\">{{ displayDate() | date: 'MMMM yyyy' }}</p>\n <button\n class=\"ngx:cursor-pointer ngx:hover:bg-slate-100 ngx:focus:bg-slate-100 ngx:rounded-full ngx:flex ngx:w-10 ngx:h-10 ngx:justify-center ngx:items-center\"\n (click)=\"nextMonth()\" aria-label=\"Next month\">\u203A\n </button>\n </div>\n\n <div class=\"ngx:grid ngx:grid-cols-7 ngx:gap-0.5\">\n @for (wd of locale.current.weekdays; track $index) {\n <span class=\"ngx:text-center ngx:py-1 ngx:text-sm ngx:font-medium ngx:text-inherit\">{{ wd }}</span>\n }\n </div>\n\n <div class=\"ngx:grid ngx:grid-cols-7 ngx:gap-y-0.5\">\n @for (day of days(); track $index) {\n <button\n [class]=\"cn(\n 'ngx:relative ngx:cursor-pointer ngx:py-1 ngx:overflow-hidden ngx:text-inherit',\n {\n 'ngx:rounded-full': daysInRange().length < 2 && !day.isDisabled,\n 'ngx:rounded-l-full': (firstDayDisabled() === day && day.date !== null) || (firstDayInRange() === day || daysSelected()[0] === day) && day.isSelected && !day.isDisabled,\n 'ngx:rounded-r-full': (latestDayDisabled() === day && day.date !== null) || (latestDayInRange() === day || daysSelected()[1] === day) && !day.isDisabled,\n 'ngx:border-y-2 ngx:border-dashed ngx:border-slate-100 ngx:cursor-auto': day.date === null,\n 'ngx:bg-slate-100 ngx:text-slate-400 ngx:cursor-not-allowed': day.isDisabled && day.date !== null,\n 'ngx:bg-(--ngx-datepicker-range-color)': day.isInRange && !day.isDisabled,\n 'ngx:before:rounded-full ngx:bg-(--ngx-datepicker-range-color) ngx:text-(--ngx-datepicker-accent-text-color) ngx:before:absolute ngx:before:top-0 ngx:before:left-0 ngx:before:block ngx:before:w-full ngx:before:h-full ngx:before:z-1 ngx:before:bg-(--ngx-datepicker-accent-color)': day.isSelected && !day.isDisabled,\n 'ngx:before:absolute ngx:before:top-0 ngx:before:left-0 ngx:before:block ngx:before:w-full ngx:before:h-full ngx:before:z-1 ngx:before:rounded-full ngx:before:border-2 ngx:before:border-(--ngx-datepicker-accent-color)': day.isToday,\n }\n )\"\n [attr.aria-selected]=\"isSame(day.date, startDate()) || isSame(day.date, endDate())\"\n [attr.aria-label]=\"day.date ? locale.current.format(day.date) : undefined\"\n [disabled]=\"day.isDisabled\"\n (click)=\"onDaySelect(day.date)\"\n (mouseenter)=\"onDayMouseEnter(day.date)\">\n @if (day.date) {\n <span class=\"ngx:relative ngx:z-10\">{{ day.date.getDate() }}</span>\n }\n </button>\n }\n </div>\n</div>\n" }]
291
323
  }] });
292
324
 
293
325
  class DatePickerWrapperComponent {
@@ -312,23 +344,23 @@ class DatePickerWrapperComponent {
312
344
  this.hoverDate.emit(date);
313
345
  }
314
346
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: DatePickerWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
315
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.18", type: DatePickerWrapperComponent, isStandalone: true, selector: "ngx-date-picker-wrapper", inputs: { date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null }, endDate: { classPropertyName: "endDate", publicName: "endDate", isSignal: true, isRequired: false, transformFunction: null }, hoveredDate: { classPropertyName: "hoveredDate", publicName: "hoveredDate", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, openCalendar: { classPropertyName: "openCalendar", publicName: "openCalendar", isSignal: true, isRequired: false, transformFunction: null }, enableRange: { classPropertyName: "enableRange", publicName: "enableRange", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { selectedDate: "selectedDate", selectedDateRange: "selectedDateRange", hoverDate: "hoverDate" }, ngImport: i0, template: "<div class=\"ngx:inline-block ngx:relative\">\n <div class=\"ngx:inline-flex ngx:flex-col\">\n <label [for]=\"label()\" class=\"ngx:inline-block ngx:text-left ngx:text-xs ngx:font-semibold ngx:mb-1 ngx:text-slate-900\" for=\"datepicker\">{{ label() }}</label>\n <div\n class=\"ngx:inline-flex ngx:w-auto ngx:items-stretch ngx:rounded-md ngx:bg-slate-100 ngx:focus-within:outline-2 ngx:focus-within:outline-(--ngx-datepicker-outline-color) ngx:focus-within:shadow ngx:overflow-hidden\">\n <ng-content></ng-content>\n </div>\n </div>\n <ngx-calendar\n class=\"ngx:absolute ngx:top-full ngx:left-0 ngx:mt-1 ngx:z-100\"\n [class.ngx:hidden]=\"!openCalendar()\"\n [startDate]=\"date()\"\n [endDate]=\"endDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [enableRange]=\"enableRange()\"\n (selectedDate)=\"onSelectDate($event)\"\n (selectedDateRange)=\"onSelectDateRange($event)\"\n (hoverDate)=\"onHoverDate($event)\">\n </ngx-calendar>\n</div>\n", dependencies: [{ kind: "component", type: CalendarComponent, selector: "ngx-calendar", inputs: ["startDate", "endDate", "minDate", "maxDate", "enableRange"], outputs: ["startDateChange", "endDateChange", "selectedDate", "selectedDateRange", "selectedDaysCount", "hoverDate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
347
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.18", type: DatePickerWrapperComponent, isStandalone: true, selector: "ngx-date-picker-wrapper", inputs: { date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null }, endDate: { classPropertyName: "endDate", publicName: "endDate", isSignal: true, isRequired: false, transformFunction: null }, hoveredDate: { classPropertyName: "hoveredDate", publicName: "hoveredDate", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, openCalendar: { classPropertyName: "openCalendar", publicName: "openCalendar", isSignal: true, isRequired: false, transformFunction: null }, enableRange: { classPropertyName: "enableRange", publicName: "enableRange", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { selectedDate: "selectedDate", selectedDateRange: "selectedDateRange", hoverDate: "hoverDate" }, ngImport: i0, template: "<div class=\"ngx:block ngx:relative\">\n <div class=\"ngx:flex ngx:flex-col\">\n <label [for]=\"label()\" class=\"ngx:block ngx:text-left ngx:text-xs ngx:font-semibold ngx:mb-1 ngx:text-slate-900\" for=\"datepicker\">{{ label() }}</label>\n <div\n class=\"ngx:flex ngx:items-stretch ngx:rounded-md ngx:bg-slate-100 ngx:focus-within:outline-2 ngx:focus-within:outline-(--ngx-datepicker-outline-color) ngx:focus-within:shadow ngx:overflow-hidden\">\n <ng-content></ng-content>\n </div>\n </div>\n <ngx-calendar\n class=\"ngx:absolute ngx:top-full ngx:left-0 ngx:mt-1 ngx:z-100\"\n [class.ngx:hidden]=\"!openCalendar()\"\n [startDate]=\"date()\"\n [endDate]=\"endDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [enableRange]=\"enableRange()\"\n (selectedDate)=\"onSelectDate($event)\"\n (selectedDateRange)=\"onSelectDateRange($event)\"\n (hoverDate)=\"onHoverDate($event)\">\n </ngx-calendar>\n</div>\n", dependencies: [{ kind: "component", type: CalendarComponent, selector: "ngx-calendar", inputs: ["startDate", "endDate", "minDate", "maxDate", "enableRange"], outputs: ["startDateChange", "endDateChange", "selectedDate", "selectedDateRange", "selectedDaysCount", "hoverDate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
316
348
  }
317
349
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: DatePickerWrapperComponent, decorators: [{
318
350
  type: Component,
319
- args: [{ selector: 'ngx-date-picker-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CalendarComponent], template: "<div class=\"ngx:inline-block ngx:relative\">\n <div class=\"ngx:inline-flex ngx:flex-col\">\n <label [for]=\"label()\" class=\"ngx:inline-block ngx:text-left ngx:text-xs ngx:font-semibold ngx:mb-1 ngx:text-slate-900\" for=\"datepicker\">{{ label() }}</label>\n <div\n class=\"ngx:inline-flex ngx:w-auto ngx:items-stretch ngx:rounded-md ngx:bg-slate-100 ngx:focus-within:outline-2 ngx:focus-within:outline-(--ngx-datepicker-outline-color) ngx:focus-within:shadow ngx:overflow-hidden\">\n <ng-content></ng-content>\n </div>\n </div>\n <ngx-calendar\n class=\"ngx:absolute ngx:top-full ngx:left-0 ngx:mt-1 ngx:z-100\"\n [class.ngx:hidden]=\"!openCalendar()\"\n [startDate]=\"date()\"\n [endDate]=\"endDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [enableRange]=\"enableRange()\"\n (selectedDate)=\"onSelectDate($event)\"\n (selectedDateRange)=\"onSelectDateRange($event)\"\n (hoverDate)=\"onHoverDate($event)\">\n </ngx-calendar>\n</div>\n" }]
351
+ args: [{ selector: 'ngx-date-picker-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CalendarComponent], template: "<div class=\"ngx:block ngx:relative\">\n <div class=\"ngx:flex ngx:flex-col\">\n <label [for]=\"label()\" class=\"ngx:block ngx:text-left ngx:text-xs ngx:font-semibold ngx:mb-1 ngx:text-slate-900\" for=\"datepicker\">{{ label() }}</label>\n <div\n class=\"ngx:flex ngx:items-stretch ngx:rounded-md ngx:bg-slate-100 ngx:focus-within:outline-2 ngx:focus-within:outline-(--ngx-datepicker-outline-color) ngx:focus-within:shadow ngx:overflow-hidden\">\n <ng-content></ng-content>\n </div>\n </div>\n <ngx-calendar\n class=\"ngx:absolute ngx:top-full ngx:left-0 ngx:mt-1 ngx:z-100\"\n [class.ngx:hidden]=\"!openCalendar()\"\n [startDate]=\"date()\"\n [endDate]=\"endDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [enableRange]=\"enableRange()\"\n (selectedDate)=\"onSelectDate($event)\"\n (selectedDateRange)=\"onSelectDateRange($event)\"\n (hoverDate)=\"onHoverDate($event)\">\n </ngx-calendar>\n</div>\n" }]
320
352
  }] });
321
353
 
322
354
  class InputDirective {
323
355
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: InputDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
324
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: InputDirective, isStandalone: true, selector: "[ngxInput]", host: { classAttribute: "ngx:max-w-[114px] ngx:font-medium ngx:bg-slate-100 ngx:pl-4 ngx:py-3 ngx:border-0 ngx:outline-0 ngx:appearance-none ngx:[&::-webkit-calendar-picker-indicator]:hidden" }, ngImport: i0 });
356
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: InputDirective, isStandalone: true, selector: "[ngxInput]", host: { classAttribute: "ngx:font-medium ngx:bg-slate-100 ngx:pl-4 ngx:py-3 ngx:border-0 ngx:outline-0 ngx:appearance-none ngx:[&::-webkit-calendar-picker-indicator]:hidden" }, ngImport: i0 });
325
357
  }
326
358
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: InputDirective, decorators: [{
327
359
  type: Directive,
328
360
  args: [{
329
361
  selector: '[ngxInput]',
330
362
  host: {
331
- class: 'ngx:max-w-[114px] ngx:font-medium ngx:bg-slate-100 ngx:pl-4 ngx:py-3 ngx:border-0 ngx:outline-0 ngx:appearance-none ngx:[&::-webkit-calendar-picker-indicator]:hidden'
363
+ class: 'ngx:font-medium ngx:bg-slate-100 ngx:pl-4 ngx:py-3 ngx:border-0 ngx:outline-0 ngx:appearance-none ngx:[&::-webkit-calendar-picker-indicator]:hidden'
332
364
  }
333
365
  }]
334
366
  }] });
@@ -433,7 +465,7 @@ class DatepickerComponent extends WithControlValueAccessor(class {
433
465
  useExisting: forwardRef(() => DatepickerComponent),
434
466
  multi: true,
435
467
  },
436
- ], usesInheritance: true, ngImport: i0, template: "<ngx-date-picker-wrapper\n [date]=\"date()\"\n [endDate]=\"dateTo()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [enableRange]=\"range()\"\n [label]=\"label()\"\n [openCalendar]=\"openCalendar()\"\n (selectedDate)=\"onSelectedDateChange($event)\"\n (selectedDateRange)=\"onSelectedDateRangeChange($event)\">\n <input\n ngxInput\n type=\"date\"\n placeholder=\"dd/mm/yyyy\"\n [attr.id]=\"label()\"\n [value]=\"value | date: 'yyyy-MM-dd'\"\n (blur)=\"onBlur()\"\n (change)=\"onInputChange($event)\">\n <button\n class=\"ngx:inline-flex ngx:items-center ngx:justify-center ngx:px-4 ngx:py-3 ngx:cursor-pointer ngx:hover:bg-slate-200 ngx:focus:bg-slate-200 ngx:outline-none\"\n (click)=\"onToggleCalendar()\">\n <svg class=\"ngx:text-slate-900 ngx:w-5 ngx:h-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" />\n </svg>\n </button>\n\n</ngx-date-picker-wrapper>\n", dependencies: [{ kind: "component", type: DatePickerWrapperComponent, selector: "ngx-date-picker-wrapper", inputs: ["date", "endDate", "hoveredDate", "minDate", "maxDate", "label", "openCalendar", "enableRange"], outputs: ["selectedDate", "selectedDateRange", "hoverDate"] }, { kind: "directive", type: InputDirective, selector: "[ngxInput]" }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
468
+ ], usesInheritance: true, ngImport: i0, template: "<ngx-date-picker-wrapper\n [date]=\"date()\"\n [endDate]=\"dateTo()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [enableRange]=\"range()\"\n [label]=\"label()\"\n [openCalendar]=\"openCalendar()\"\n (selectedDate)=\"onSelectedDateChange($event)\"\n (selectedDateRange)=\"onSelectedDateRangeChange($event)\">\n <input\n class=\"ngx:w-full\"\n ngxInput\n type=\"date\"\n placeholder=\"dd/mm/yyyy\"\n [attr.id]=\"label()\"\n [value]=\"value | date: 'yyyy-MM-dd'\"\n (blur)=\"onBlur()\"\n (change)=\"onInputChange($event)\">\n <button\n class=\"ngx:flex ngx:items-center ngx:justify-center ngx:px-4 ngx:py-3 ngx:cursor-pointer ngx:hover:bg-slate-200 ngx:focus:bg-slate-200 ngx:outline-none\"\n (click)=\"onToggleCalendar()\">\n <svg class=\"ngx:text-slate-900 ngx:w-5 ngx:h-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" />\n </svg>\n </button>\n\n</ngx-date-picker-wrapper>\n", dependencies: [{ kind: "component", type: DatePickerWrapperComponent, selector: "ngx-date-picker-wrapper", inputs: ["date", "endDate", "hoveredDate", "minDate", "maxDate", "label", "openCalendar", "enableRange"], outputs: ["selectedDate", "selectedDateRange", "hoverDate"] }, { kind: "directive", type: InputDirective, selector: "[ngxInput]" }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
437
469
  }
438
470
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: DatepickerComponent, decorators: [{
439
471
  type: Component,
@@ -449,7 +481,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
449
481
  useExisting: forwardRef(() => DatepickerComponent),
450
482
  multi: true,
451
483
  },
452
- ], template: "<ngx-date-picker-wrapper\n [date]=\"date()\"\n [endDate]=\"dateTo()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [enableRange]=\"range()\"\n [label]=\"label()\"\n [openCalendar]=\"openCalendar()\"\n (selectedDate)=\"onSelectedDateChange($event)\"\n (selectedDateRange)=\"onSelectedDateRangeChange($event)\">\n <input\n ngxInput\n type=\"date\"\n placeholder=\"dd/mm/yyyy\"\n [attr.id]=\"label()\"\n [value]=\"value | date: 'yyyy-MM-dd'\"\n (blur)=\"onBlur()\"\n (change)=\"onInputChange($event)\">\n <button\n class=\"ngx:inline-flex ngx:items-center ngx:justify-center ngx:px-4 ngx:py-3 ngx:cursor-pointer ngx:hover:bg-slate-200 ngx:focus:bg-slate-200 ngx:outline-none\"\n (click)=\"onToggleCalendar()\">\n <svg class=\"ngx:text-slate-900 ngx:w-5 ngx:h-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" />\n </svg>\n </button>\n\n</ngx-date-picker-wrapper>\n" }]
484
+ ], template: "<ngx-date-picker-wrapper\n [date]=\"date()\"\n [endDate]=\"dateTo()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [enableRange]=\"range()\"\n [label]=\"label()\"\n [openCalendar]=\"openCalendar()\"\n (selectedDate)=\"onSelectedDateChange($event)\"\n (selectedDateRange)=\"onSelectedDateRangeChange($event)\">\n <input\n class=\"ngx:w-full\"\n ngxInput\n type=\"date\"\n placeholder=\"dd/mm/yyyy\"\n [attr.id]=\"label()\"\n [value]=\"value | date: 'yyyy-MM-dd'\"\n (blur)=\"onBlur()\"\n (change)=\"onInputChange($event)\">\n <button\n class=\"ngx:flex ngx:items-center ngx:justify-center ngx:px-4 ngx:py-3 ngx:cursor-pointer ngx:hover:bg-slate-200 ngx:focus:bg-slate-200 ngx:outline-none\"\n (click)=\"onToggleCalendar()\">\n <svg class=\"ngx:text-slate-900 ngx:w-5 ngx:h-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" />\n </svg>\n </button>\n\n</ngx-date-picker-wrapper>\n" }]
453
485
  }], ctorParameters: () => [] });
454
486
 
455
487
  class DateRangePickerComponent {
@@ -502,14 +534,14 @@ class DateRangePickerComponent {
502
534
  }
503
535
  }
504
536
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
505
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.18", type: DateRangePickerComponent, isStandalone: true, selector: "ngx-date-range-picker", inputs: { startDate: { classPropertyName: "startDate", publicName: "startDate", isSignal: true, isRequired: false, transformFunction: null }, endDate: { classPropertyName: "endDate", publicName: "endDate", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, hoveredDate: { classPropertyName: "hoveredDate", publicName: "hoveredDate", isSignal: true, isRequired: false, transformFunction: null }, openCalendar: { classPropertyName: "openCalendar", publicName: "openCalendar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { startDate: "startDateChange", endDate: "endDateChange", hoveredDate: "hoveredDateChange", openCalendar: "openCalendarChange", selectedDateRange: "selectedDateRange" }, host: { listeners: { "document:click": "onCloseCalendar($event)", "keydown.escape": "onEscape()" } }, ngImport: i0, template: "<ngx-date-picker-wrapper\n [date]=\"startDate()\"\n [hoveredDate]=\"hoveredDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [label]=\"label()\"\n [enableRange]=\"true\"\n [openCalendar]=\"openCalendar()\"\n (selectedDateRange)=\"onSelectedDateChange($event)\"\n (hoverDate)=\"onHoverDateChange($event)\">\n <div class=\"ngx:flex ngx:items-center ngx:gap-x-1 ngx:min-w-54 ngx:pl-4\">\n <div class=\"ngx:grow ngx:relative ngx:overflow-hidden ngx:max-w-22.5\">\n <input\n class=\"ngx:font-medium ngx:w-full ngx:h-full ngx:outline-none ngx:p-0 ngx:m-0 ngx:appearance-none\"\n readonly\n type=\"text\"\n role=\"combobox\"\n placeholder=\"dd/mm/yyyy\"\n aria-controls=\"calendar\"\n aria-haspopup=\"dialog\"\n [attr.id]=\"label()\"\n [attr.aria-expanded]=\"openCalendar()\"\n [value]=\"startDate() | date: 'dd/MM/yyyy'\"\n />\n </div>\n <span>-</span>\n <div class=\"ngx:grow ngx:relative ngx:overflow-hidden ngx:max-w-22.5\">\n <input\n class=\"ngx:font-medium ngx:w-full ngx:h-full ngx:outline-none ngx:p-0 ngx:m-0 ngx:appearance-none\"\n readonly\n type=\"text\"\n role=\"combobox\"\n placeholder=\"dd/mm/yyyy\"\n aria-controls=\"calendar\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"openCalendar()\"\n [value]=\"endDate() | date: 'dd/MM/yyyy'\"\n />\n </div>\n </div>\n <button\n class=\"ngx:flex ngx:items-center ngx:justify-center ngx:px-4 ngx:py-3 ngx:cursor-pointer ngx:hover:bg-slate-200 ngx:focus:bg-slate-200 ngx:outline-none\"\n (click)=\"onToggleCalendar()\">\n <svg class=\"ngx:text-slate-900 ngx:w-5 ngx:h-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" />\n </svg>\n </button>\n</ngx-date-picker-wrapper>\n", dependencies: [{ kind: "component", type: DatePickerWrapperComponent, selector: "ngx-date-picker-wrapper", inputs: ["date", "endDate", "hoveredDate", "minDate", "maxDate", "label", "openCalendar", "enableRange"], outputs: ["selectedDate", "selectedDateRange", "hoverDate"] }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
537
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.18", type: DateRangePickerComponent, isStandalone: true, selector: "ngx-date-range-picker", inputs: { startDate: { classPropertyName: "startDate", publicName: "startDate", isSignal: true, isRequired: false, transformFunction: null }, endDate: { classPropertyName: "endDate", publicName: "endDate", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, hoveredDate: { classPropertyName: "hoveredDate", publicName: "hoveredDate", isSignal: true, isRequired: false, transformFunction: null }, openCalendar: { classPropertyName: "openCalendar", publicName: "openCalendar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { startDate: "startDateChange", endDate: "endDateChange", hoveredDate: "hoveredDateChange", openCalendar: "openCalendarChange", selectedDateRange: "selectedDateRange" }, host: { listeners: { "document:click": "onCloseCalendar($event)", "keydown.escape": "onEscape()" } }, ngImport: i0, template: "<ngx-date-picker-wrapper\n [date]=\"startDate()\"\n [hoveredDate]=\"hoveredDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [label]=\"label()\"\n [enableRange]=\"true\"\n [openCalendar]=\"openCalendar()\"\n (selectedDateRange)=\"onSelectedDateChange($event)\"\n (hoverDate)=\"onHoverDateChange($event)\">\n <div class=\"ngx:flex ngx:w-full ngx:items-center ngx:gap-x-1 ngx:min-w-54 ngx:pl-4\">\n <div class=\"ngx:grow ngx:relative ngx:overflow-hidden ngx:max-w-22.5\">\n <input\n class=\"ngx:font-medium ngx:w-full ngx:h-full ngx:outline-none ngx:p-0 ngx:m-0 ngx:appearance-none\"\n readonly\n type=\"text\"\n role=\"combobox\"\n placeholder=\"dd/mm/yyyy\"\n aria-controls=\"calendar\"\n aria-haspopup=\"dialog\"\n [attr.id]=\"label()\"\n [attr.aria-expanded]=\"openCalendar()\"\n [value]=\"startDate() | date: 'dd/MM/yyyy'\"\n />\n </div>\n <span>-</span>\n <div class=\"ngx:grow ngx:relative ngx:overflow-hidden ngx:max-w-22.5\">\n <input\n class=\"ngx:font-medium ngx:w-full ngx:h-full ngx:outline-none ngx:p-0 ngx:m-0 ngx:appearance-none\"\n readonly\n type=\"text\"\n role=\"combobox\"\n placeholder=\"dd/mm/yyyy\"\n aria-controls=\"calendar\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"openCalendar()\"\n [value]=\"endDate() | date: 'dd/MM/yyyy'\"\n />\n </div>\n </div>\n <button\n class=\"ngx:flex ngx:items-center ngx:justify-center ngx:px-4 ngx:py-3 ngx:cursor-pointer ngx:hover:bg-slate-200 ngx:focus:bg-slate-200 ngx:outline-none\"\n (click)=\"onToggleCalendar()\">\n <svg class=\"ngx:text-slate-900 ngx:w-5 ngx:h-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" />\n </svg>\n </button>\n</ngx-date-picker-wrapper>\n", dependencies: [{ kind: "component", type: DatePickerWrapperComponent, selector: "ngx-date-picker-wrapper", inputs: ["date", "endDate", "hoveredDate", "minDate", "maxDate", "label", "openCalendar", "enableRange"], outputs: ["selectedDate", "selectedDateRange", "hoverDate"] }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
506
538
  }
507
539
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: DateRangePickerComponent, decorators: [{
508
540
  type: Component,
509
541
  args: [{ selector: "ngx-date-range-picker", changeDetection: ChangeDetectionStrategy.OnPush, imports: [DatePickerWrapperComponent, DatePipe], host: {
510
542
  "(document:click)": "onCloseCalendar($event)",
511
543
  "(keydown.escape)": "onEscape()",
512
- }, template: "<ngx-date-picker-wrapper\n [date]=\"startDate()\"\n [hoveredDate]=\"hoveredDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [label]=\"label()\"\n [enableRange]=\"true\"\n [openCalendar]=\"openCalendar()\"\n (selectedDateRange)=\"onSelectedDateChange($event)\"\n (hoverDate)=\"onHoverDateChange($event)\">\n <div class=\"ngx:flex ngx:items-center ngx:gap-x-1 ngx:min-w-54 ngx:pl-4\">\n <div class=\"ngx:grow ngx:relative ngx:overflow-hidden ngx:max-w-22.5\">\n <input\n class=\"ngx:font-medium ngx:w-full ngx:h-full ngx:outline-none ngx:p-0 ngx:m-0 ngx:appearance-none\"\n readonly\n type=\"text\"\n role=\"combobox\"\n placeholder=\"dd/mm/yyyy\"\n aria-controls=\"calendar\"\n aria-haspopup=\"dialog\"\n [attr.id]=\"label()\"\n [attr.aria-expanded]=\"openCalendar()\"\n [value]=\"startDate() | date: 'dd/MM/yyyy'\"\n />\n </div>\n <span>-</span>\n <div class=\"ngx:grow ngx:relative ngx:overflow-hidden ngx:max-w-22.5\">\n <input\n class=\"ngx:font-medium ngx:w-full ngx:h-full ngx:outline-none ngx:p-0 ngx:m-0 ngx:appearance-none\"\n readonly\n type=\"text\"\n role=\"combobox\"\n placeholder=\"dd/mm/yyyy\"\n aria-controls=\"calendar\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"openCalendar()\"\n [value]=\"endDate() | date: 'dd/MM/yyyy'\"\n />\n </div>\n </div>\n <button\n class=\"ngx:flex ngx:items-center ngx:justify-center ngx:px-4 ngx:py-3 ngx:cursor-pointer ngx:hover:bg-slate-200 ngx:focus:bg-slate-200 ngx:outline-none\"\n (click)=\"onToggleCalendar()\">\n <svg class=\"ngx:text-slate-900 ngx:w-5 ngx:h-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" />\n </svg>\n </button>\n</ngx-date-picker-wrapper>\n" }]
544
+ }, template: "<ngx-date-picker-wrapper\n [date]=\"startDate()\"\n [hoveredDate]=\"hoveredDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [label]=\"label()\"\n [enableRange]=\"true\"\n [openCalendar]=\"openCalendar()\"\n (selectedDateRange)=\"onSelectedDateChange($event)\"\n (hoverDate)=\"onHoverDateChange($event)\">\n <div class=\"ngx:flex ngx:w-full ngx:items-center ngx:gap-x-1 ngx:min-w-54 ngx:pl-4\">\n <div class=\"ngx:grow ngx:relative ngx:overflow-hidden ngx:max-w-22.5\">\n <input\n class=\"ngx:font-medium ngx:w-full ngx:h-full ngx:outline-none ngx:p-0 ngx:m-0 ngx:appearance-none\"\n readonly\n type=\"text\"\n role=\"combobox\"\n placeholder=\"dd/mm/yyyy\"\n aria-controls=\"calendar\"\n aria-haspopup=\"dialog\"\n [attr.id]=\"label()\"\n [attr.aria-expanded]=\"openCalendar()\"\n [value]=\"startDate() | date: 'dd/MM/yyyy'\"\n />\n </div>\n <span>-</span>\n <div class=\"ngx:grow ngx:relative ngx:overflow-hidden ngx:max-w-22.5\">\n <input\n class=\"ngx:font-medium ngx:w-full ngx:h-full ngx:outline-none ngx:p-0 ngx:m-0 ngx:appearance-none\"\n readonly\n type=\"text\"\n role=\"combobox\"\n placeholder=\"dd/mm/yyyy\"\n aria-controls=\"calendar\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"openCalendar()\"\n [value]=\"endDate() | date: 'dd/MM/yyyy'\"\n />\n </div>\n </div>\n <button\n class=\"ngx:flex ngx:items-center ngx:justify-center ngx:px-4 ngx:py-3 ngx:cursor-pointer ngx:hover:bg-slate-200 ngx:focus:bg-slate-200 ngx:outline-none\"\n (click)=\"onToggleCalendar()\">\n <svg class=\"ngx:text-slate-900 ngx:w-5 ngx:h-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" />\n </svg>\n </button>\n</ngx-date-picker-wrapper>\n" }]
513
545
  }] });
514
546
 
515
547
  /*
@@ -1 +1 @@
1
- {"version":3,"file":"wzrdev-ngx-datepicker.mjs","sources":["../../../projects/ngx-datepicker/src/lib/locale/fr.ts","../../../projects/ngx-datepicker/src/lib/locale/en.ts","../../../projects/ngx-datepicker/src/lib/locale/locale.service.ts","../../../projects/ngx-datepicker/src/lib/utils/cn.ts","../../../projects/ngx-datepicker/src/lib/calendar/calendar.service.ts","../../../projects/ngx-datepicker/src/lib/calendar/calendar.component.ts","../../../projects/ngx-datepicker/src/lib/calendar/calendar.component.html","../../../projects/ngx-datepicker/src/lib/date-picker-wrapper/date-picker-wrapper.component.ts","../../../projects/ngx-datepicker/src/lib/date-picker-wrapper/date-picker-wrapper.component.html","../../../projects/ngx-datepicker/src/lib/shared/directives/input.directive.ts","../../../projects/ngx-datepicker/src/lib/shared/mixins/with-control-value-accessor.ts","../../../projects/ngx-datepicker/src/lib/datepicker/datepicker.component.ts","../../../projects/ngx-datepicker/src/lib/datepicker/datepicker.component.html","../../../projects/ngx-datepicker/src/lib/date-range-picker/date-range-picker.component.ts","../../../projects/ngx-datepicker/src/lib/date-range-picker/date-range-picker.component.html","../../../projects/ngx-datepicker/src/public-api.ts","../../../projects/ngx-datepicker/src/wzrdev-ngx-datepicker.ts"],"sourcesContent":["import { DatePickerLocale } from \"./locale.model\";\n\nconst currentYear = new Date().getFullYear();\n\nexport const FR_LOCALE: DatePickerLocale = {\n code: \"fr\",\n months: [\n \"Janvier\",\n \"Février\",\n \"Mars\",\n \"Avril\",\n \"Mai\",\n \"Juin\",\n \"Juillet\",\n \"Août\",\n \"Septembre\",\n \"Octobre\",\n \"Novembre\",\n \"Décembre\",\n ],\n weekdays: [\"Lu\", \"Ma\", \"Me\", \"Je\", \"Ve\", \"Sa\", \"Di\"],\n weekStartsOn: 1,\n years: Array.from({ length: 200 }, (_, i) => currentYear - 100 + i),\n format: date => date.toLocaleDateString(\"fr-FR\"),\n};\n","import { DatePickerLocale } from \"./locale.model\";\n\nconst currentYear = new Date().getFullYear();\n\nexport const EN_LOCALE: DatePickerLocale = {\n code: \"en\",\n months: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n weekdays: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n weekStartsOn: 0,\n years: Array.from({ length: 200 }, (_, i) => currentYear - 100 + i),\n format: date => date.toLocaleDateString(\"en-US\"),\n};\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { DatePickerLocale } from \"./locale.model\";\nimport { FR_LOCALE } from \"./fr\";\nimport { EN_LOCALE } from \"./en\";\n\n@Injectable({ providedIn: \"root\" })\nexport class DatePickerLocaleService {\n private readonly locales: Record<string, DatePickerLocale> = {\n fr: FR_LOCALE,\n en: EN_LOCALE,\n };\n\n private locale$ = new BehaviorSubject<DatePickerLocale>(FR_LOCALE);\n\n public setLocale(code: string) {\n this.locale$.next(this.locales[code] ?? FR_LOCALE);\n }\n\n public get localeChanges$() {\n return this.locale$.asObservable();\n }\n\n public get current() {\n return this.locale$.value;\n }\n}\n","import { ClassValue, clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst customTwMerge = extendTailwindMerge({\n extend: {\n classGroups: {},\n },\n});\n\nexport const cn = (...inputs: ClassValue[]) => {\n return customTwMerge(clsx(inputs));\n};\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class CalendarService {}\n","import {\n Component,\n inject,\n output,\n input,\n linkedSignal, ChangeDetectionStrategy, computed, signal, model\n} from \"@angular/core\";\nimport { DatePickerLocaleService } from \"../locale/locale.service\";\nimport { cn } from '../utils/cn';\nimport { DatePipe } from '@angular/common';\nimport { DateRange } from '../shared/models/daterange';\nimport { CalendarService } from './calendar.service';\n\ninterface Day {\n date: Date;\n isToday: boolean;\n isDisabled: boolean;\n isSelected: boolean;\n isInRange: boolean;\n}\n\n@Component({\n selector: \"ngx-calendar\",\n templateUrl: \"./calendar.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DatePipe\n ],\n providers: [CalendarService],\n host: {\n \"(keydown)\": \"handleKeyDown($event)\"\n },\n})\nexport class CalendarComponent {\n public readonly locale = inject(DatePickerLocaleService);\n\n public readonly startDate = model<Date | null>();\n public readonly endDate = model<Date | null>();\n public readonly minDate = input<Date | null>();\n public readonly maxDate = input<Date | null>();\n\n public readonly hoveredDate = signal<Date | null>(null);\n public readonly enableRange = input<boolean>(false);\n\n public readonly selectedDate = output<Date>();\n public readonly selectedDateRange = output<DateRange>();\n public readonly selectedDaysCount = output<number>();\n public readonly hoverDate = output<Date>();\n\n public readonly days = linkedSignal(() => {\n const startDate = this.startDate();\n const endDate = this.endDate();\n const displayDate = this.displayDate();\n\n const year = displayDate.getFullYear();\n const month = displayDate.getMonth();\n\n const today = new Date();\n const first = new Date(year, month, 1);\n const last = new Date(year, month + 1, 0);\n\n const days: Day[] = [];\n for (let d = new Date(first); d <= last; d.setDate(d.getDate() + 1)) {\n const day = {\n date: new Date(d),\n isDisabled: this.isDisabled(d),\n isToday: this.isSame(d, today),\n isSelected: this.isSame(d, startDate) || this.isSame(d, endDate),\n isInRange: this.isInRange(d),\n } as Day;\n days.push(day);\n }\n return days;\n });\n\n public daysInRange = computed(() => {\n const days = this.days();\n return days.filter(day => day.isInRange);\n });\n\n public daysDisabled = computed(() => {\n const days = this.days();\n return days.filter(day => day.isDisabled);\n });\n\n public latestDayInRange = computed(() => {\n const rangeDays = this.daysInRange();\n return rangeDays[rangeDays.length - 1];\n });\n\n public latestDayDisabled = computed(() => {\n const daysDisabled = this.daysDisabled();\n return daysDisabled[daysDisabled.length - 1];\n });\n\n public firstDayDisabled = computed(() => {\n const daysDisabled = this.daysDisabled();\n return daysDisabled[0];\n });\n\n public readonly displayDate = linkedSignal(() => {\n const start = this.startDate();\n return start ?? new Date();\n });\n\n public readonly focusedDate = linkedSignal(() => {\n return new Date(this.displayDate());\n });\n\n protected readonly cn = cn;\n\n build() {\n // keep the focusedDate in the current month\n if (this.focusedDate().getMonth() !== this.displayDate().getMonth()) {\n this.focusedDate.set(new Date(this.displayDate().getFullYear(), this.displayDate().getMonth(), 1));\n }\n }\n\n public prevMonth(): void {\n this.displayDate.update((prevState) => {\n return new Date(prevState.getFullYear(), prevState.getMonth() - 1, prevState.getDate());\n })\n }\n\n public nextMonth(): void {\n this.displayDate.update((prevState) => {\n return new Date(prevState.getFullYear(), prevState.getMonth() + 1, prevState.getDate());\n })\n }\n\n public isSame(a?: Date | null, b?: Date | null): boolean {\n if (!a || !b) return false;\n return a.toDateString() === b.toDateString();\n }\n\n public isDisabled(date: Date): boolean {\n const minDate = this.minDate();\n const maxDate = this.maxDate();\n\n const normalize = (d: Date) =>\n new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();\n\n const current = normalize(date);\n\n if (minDate && current < normalize(minDate)) {\n return true;\n }\n\n return !!(maxDate && current > normalize(maxDate));\n\n\n }\n\n public isInRange(d: Date): boolean {\n const start = this.startDate();\n const end = this.endDate();\n const hover = this.hoveredDate();\n\n if (!start || !d) return false;\n if (start && end) return d >= start && d <= end;\n if (start && hover) {\n return d >= start && d <= hover;\n }\n\n return false;\n };\n\n public onDaySelect(date: Date): void {\n const selectedDays = this.days().filter(day => day.isSelected);\n const startDate = this.startDate();\n const endDate = this.endDate();\n\n\n if (this.enableRange()) {\n\n if (selectedDays.length === 2\n || startDate && date < startDate\n || endDate && endDate <= date\n || endDate && date <= endDate) {\n this.resetStartDate(date);\n }\n\n if (!startDate) {\n this.startDate.set(date);\n } else if (startDate && !endDate && startDate < date) {\n this.endDate.set(date);\n }\n\n } else {\n this.resetStartDate(date);\n }\n\n if (this.enableRange()) {\n this.selectedDateRange.emit({ startDate: this.startDate() ?? null, endDate: this.endDate() ?? null });\n } else {\n this.selectedDate.emit(date);\n }\n this.selectedDaysCount.emit(this.daysInRange().length);\n }\n\n public onDayMouseEnter(date: Date): void {\n if (!this.enableRange() || (this.startDate() && this.endDate())) {\n return;\n }\n this.hoveredDate.set(date);\n }\n\n public handleKeyDown(event: KeyboardEvent): void {\n if (!this.focusedDate) return;\n\n const newDate = new Date(this.focusedDate());\n\n switch (event.key) {\n case \"ArrowRight\":\n newDate.setDate(newDate.getDate() + 1);\n break;\n case \"ArrowLeft\":\n newDate.setDate(newDate.getDate() - 1);\n break;\n case \"ArrowDown\":\n newDate.setDate(newDate.getDate() + 7);\n break;\n case \"ArrowUp\":\n newDate.setDate(newDate.getDate() - 7);\n break;\n case \"Enter\":\n case \" \":\n this.selectedDate.emit(this.focusedDate());\n event.preventDefault();\n return;\n default:\n return; // ignorer les autres touches\n }\n\n event.preventDefault();\n this.focusedDate.set(newDate);\n\n // si le focusedDate est hors du mois courant, changer le mois\n if (\n this.focusedDate().getMonth() !== this.displayDate().getMonth() ||\n this.focusedDate().getFullYear() !== this.displayDate().getFullYear()\n ) {\n this.displayDate.set(new Date(this.focusedDate().getFullYear(), this.focusedDate().getMonth(), 1));\n this.build();\n }\n }\n\n // Pour le template : savoir si la date est focusée pour appliquer style\n isFocused(date: Date) {\n return this.focusedDate && this.isSame(date, this.focusedDate());\n }\n\n private resetStartDate(date: Date): void {\n console.log('reset');\n this.startDate.set(date);\n this.endDate.set(null);\n this.hoveredDate.set(null);\n }\n}\n","<div\n class=\"ngx:w-65 ngx:bg-white ngx:rounded-md ngx:shadow-lg ngx:p-3\"\n id=\"calendar\"\n role=\"dialog\"\n aria-modal=\"true\">\n\n <div class=\"ngx:flex ngx:items-center ngx:mb-2\">\n <button\n class=\"ngx:cursor-pointer ngx:hover:bg-slate-100 ngx:focus:bg-slate-100 ngx:rounded-full ngx:flex ngx:w-10 ngx:h-10 ngx:justify-center ngx:items-center\"\n (click)=\"prevMonth()\" aria-label=\"Previous month\">‹\n </button>\n <p class=\"ngx:grow ngx:text-center ngx:font-medium ngx:text-inherit\">{{ displayDate() | date: 'MMMM yyyy' }}</p>\n <button\n class=\"ngx:cursor-pointer ngx:hover:bg-slate-100 ngx:focus:bg-slate-100 ngx:rounded-full ngx:flex ngx:w-10 ngx:h-10 ngx:justify-center ngx:items-center\"\n (click)=\"nextMonth()\" aria-label=\"Next month\">›\n </button>\n </div>\n\n <!-- Weekdays -->\n <div class=\"ngx:grid ngx:grid-cols-7 ngx:gap-0.5\">\n @for (wd of locale.current.weekdays; track $index) {\n <span class=\"ngx:text-center ngx:py-1 ngx:text-sm ngx:font-medium ngx:text-inherit\">{{ wd }}</span>\n }\n </div>\n\n <div class=\"ngx:grid ngx:grid-cols-7 ngx:gap-y-0.5\">\n @for (day of days(); track $index) {\n <button\n [class]=\"cn(\n 'ngx:relative ngx:cursor-pointer ngx:py-1 ngx:overflow-hidden ngx:text-inherit',\n daysInRange().length < 2 && !day.isDisabled && 'ngx:rounded-full',\n (latestDayInRange() === day || latestDayDisabled() === day) && 'ngx:rounded-r-full',\n day.isDisabled && 'ngx:bg-slate-200 ngx:text-slate-400 ngx:cursor-not-allowed',\n day.isInRange && !day.isDisabled && 'ngx:bg-(--ngx-datepicker-range-color)',\n day.isSelected && !day.isDisabled && 'ngx:bg-(--ngx-datepicker-range-color) ngx:text-(--ngx-datepicker-accent-text-color) ngx:before:absolute ngx:before:top-0 ngx:before:left-0 ngx:before:block ngx:before:w-full ngx:before:h-full ngx:before:z-1 ngx:before:bg-(--ngx-datepicker-accent-color)',\n day.isToday && 'ngx:before:absolute ngx:before:top-0 ngx:before:left-0 ngx:before:block ngx:before:w-full ngx:before:h-full ngx:before:z-1 ngx:before:rounded-full ngx:before:border-2 ngx:before:border-(--ngx-datepicker-accent-color)',\n isSame(day.date, startDate()) && !day.isDisabled && 'ngx:rounded-l-full ngx:before:rounded-full',\n isSame(day.date, endDate()) && 'ngx:rounded-r-full ngx:before:rounded-full'\n )\"\n [attr.aria-selected]=\"isSame(day.date, startDate()) || isSame(day.date, endDate())\"\n [attr.aria-label]=\"locale.current.format(day.date)\"\n [disabled]=\"day.isDisabled\"\n (click)=\"onDaySelect(day.date)\"\n (mouseenter)=\"onDayMouseEnter(day.date)\">\n <span class=\"ngx:relative ngx:z-10\">{{ day.date.getDate() }}</span>\n </button>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { CalendarComponent } from '../calendar/calendar.component';\nimport { DateRange } from '../shared/models/daterange';\n\n@Component({\n selector: 'ngx-date-picker-wrapper',\n templateUrl: './date-picker-wrapper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CalendarComponent]\n})\nexport class DatePickerWrapperComponent {\n public readonly date = input<Date | null>();\n public readonly endDate = input<Date | null>();\n public readonly hoveredDate = input<Date | null>();\n public readonly minDate = input<Date | null>();\n public readonly maxDate = input<Date | null>();\n\n public readonly label = input.required<string>();\n public readonly openCalendar = input<boolean>();\n public readonly enableRange = input.required<boolean>();\n\n public readonly selectedDate = output<Date | null>();\n public readonly selectedDateRange = output<DateRange>();\n public readonly hoverDate = output<Date>();\n\n public onSelectDate(date: Date | null): void {\n this.selectedDate.emit(date);\n }\n\n public onSelectDateRange(date: DateRange): void {\n this.selectedDateRange.emit(date);\n }\n\n\n public onHoverDate(date: Date): void {\n this.hoverDate.emit(date);\n }\n}\n","<div class=\"ngx:inline-block ngx:relative\">\n <div class=\"ngx:inline-flex ngx:flex-col\">\n <label [for]=\"label()\" class=\"ngx:inline-block ngx:text-left ngx:text-xs ngx:font-semibold ngx:mb-1 ngx:text-slate-900\" for=\"datepicker\">{{ label() }}</label>\n <div\n class=\"ngx:inline-flex ngx:w-auto ngx:items-stretch ngx:rounded-md ngx:bg-slate-100 ngx:focus-within:outline-2 ngx:focus-within:outline-(--ngx-datepicker-outline-color) ngx:focus-within:shadow ngx:overflow-hidden\">\n <ng-content></ng-content>\n </div>\n </div>\n <ngx-calendar\n class=\"ngx:absolute ngx:top-full ngx:left-0 ngx:mt-1 ngx:z-100\"\n [class.ngx:hidden]=\"!openCalendar()\"\n [startDate]=\"date()\"\n [endDate]=\"endDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [enableRange]=\"enableRange()\"\n (selectedDate)=\"onSelectDate($event)\"\n (selectedDateRange)=\"onSelectDateRange($event)\"\n (hoverDate)=\"onHoverDate($event)\">\n </ngx-calendar>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngxInput]',\n host: {\n class: 'ngx:max-w-[114px] ngx:font-medium ngx:bg-slate-100 ngx:pl-4 ngx:py-3 ngx:border-0 ngx:outline-0 ngx:appearance-none ngx:[&::-webkit-calendar-picker-indicator]:hidden'\n }\n})\nexport class InputDirective {}\n","import { ControlValueAccessor } from '@angular/forms';\nimport { Constructor } from '../models/constructor';\n\nexport function WithControlValueAccessor<TValue, TBase extends Constructor>(Base: TBase) {\n return class extends Base implements ControlValueAccessor {\n public value!: TValue;\n public disabled = false;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onChange = (_: TValue) => { /* empty */ };\n public onTouched = () => { /* empty */ };\n\n public writeValue(value: TValue) {\n this.value = value;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public onInput(value: TValue) {\n this.value = value;\n this.onChange(value);\n }\n\n public onBlur() {\n this.onTouched();\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, effect, ElementRef, forwardRef, inject, input, InputSignal,\n model,\n ModelSignal,\n output,\n OutputEmitterRef,\n} from '@angular/core';\nimport { DatePickerWrapperComponent } from '../date-picker-wrapper/date-picker-wrapper.component';\nimport { InputDirective } from '../shared/directives/input.directive';\nimport { DatePipe } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { WithControlValueAccessor } from '../shared/mixins/with-control-value-accessor';\nimport { DateRange } from '../shared/models/daterange';\n\ninterface DatepickerOption {\n id: InputSignal<string | undefined>;\n date: ModelSignal<Date | null | undefined>;\n openCalendar: ModelSignal<boolean>;\n selectedDate: OutputEmitterRef<Date | null>;\n}\n\n@Component({\n selector: 'ngx-datepicker',\n templateUrl: './datepicker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DatePickerWrapperComponent,\n InputDirective,\n DatePipe\n ],\n host: {\n '(document:click)': 'onClickOutside($event)',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatepickerComponent),\n multi: true,\n },\n ],\n})\nexport class DatepickerComponent extends WithControlValueAccessor<Date, new () => object>(class {}) implements DatepickerOption {\n public readonly id = model<string>();\n public readonly date = model<Date | null>();\n public readonly dateTo = model<Date | null>();\n public readonly minDate = input<Date | null>();\n public readonly maxDate = input<Date | null>();\n public readonly range = input<boolean>(false);\n public readonly isRangeEnd = input<boolean>(false);\n public readonly label = input.required<string>();\n public readonly openCalendar = model<boolean>(false);\n public readonly selectedDate = output<Date | null>();\n public readonly selectedDateRange = output<DateRange | null>();\n\n private readonly el = inject(ElementRef);\n\n constructor() {\n super();\n effect(() => {\n const date = this.date();\n const dateTo = this.dateTo();\n\n if (date) {\n this.updateFormControl(this.isRangeEnd() && dateTo ? dateTo : date);\n }\n });\n }\n\n public onSelectedDateChange(date: Date | null): void {\n if (date) {\n this.updateDate(date);\n }\n if (this.range()) {\n return;\n }\n this.openCalendar.set(false);\n }\n\n public onSelectedDateRangeChange(dateRange: DateRange): void {\n this.selectedDateRange.emit(dateRange);\n if (dateRange.startDate !== null && dateRange.endDate !== null) {\n this.openCalendar.set(false);\n }\n }\n\n public onInputChange(e: Event): void {\n const target = e.target as HTMLInputElement;\n const date = new Date(target.value);\n this.updateDate(date);\n }\n\n public onToggleCalendar(): void {\n this.openCalendar.set(!this.openCalendar());\n }\n\n public onClickOutside(e: Event): void {\n const el = e.target as HTMLElement;\n if (!this.el.nativeElement.contains(el)) {\n this.openCalendar.set(false);\n }\n }\n\n private updateDate(date: Date): void {\n this.date.set(date);\n this.selectedDate.emit(date);\n this.updateFormControl(date);\n }\n\n private updateFormControl(value: Date): void {\n this.value = value;\n this.onChange(value);\n }\n}\n","<ngx-date-picker-wrapper\n [date]=\"date()\"\n [endDate]=\"dateTo()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [enableRange]=\"range()\"\n [label]=\"label()\"\n [openCalendar]=\"openCalendar()\"\n (selectedDate)=\"onSelectedDateChange($event)\"\n (selectedDateRange)=\"onSelectedDateRangeChange($event)\">\n <input\n ngxInput\n type=\"date\"\n placeholder=\"dd/mm/yyyy\"\n [attr.id]=\"label()\"\n [value]=\"value | date: 'yyyy-MM-dd'\"\n (blur)=\"onBlur()\"\n (change)=\"onInputChange($event)\">\n <button\n class=\"ngx:inline-flex ngx:items-center ngx:justify-center ngx:px-4 ngx:py-3 ngx:cursor-pointer ngx:hover:bg-slate-200 ngx:focus:bg-slate-200 ngx:outline-none\"\n (click)=\"onToggleCalendar()\">\n <svg class=\"ngx:text-slate-900 ngx:w-5 ngx:h-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" />\n </svg>\n </button>\n\n</ngx-date-picker-wrapper>\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef,\n inject, input,\n model,\n output,\n} from \"@angular/core\";\nimport { DatePickerLocaleService } from \"../locale/locale.service\";\nimport { DatePickerWrapperComponent } from '../date-picker-wrapper/date-picker-wrapper.component';\nimport { DatePipe } from '@angular/common';\n\nexport interface DateRange {\n startDate: Date | null;\n endDate: Date | null;\n}\n\n@Component({\n selector: \"ngx-date-range-picker\",\n templateUrl: \"./date-range-picker.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DatePickerWrapperComponent, DatePipe],\n host: {\n \"(document:click)\": \"onCloseCalendar($event)\",\n \"(keydown.escape)\": \"onEscape()\",\n },\n})\nexport class DateRangePickerComponent {\n public readonly startDate = model<Date | null>();\n public readonly endDate = model<Date | null>();\n public readonly minDate = input<Date | null>();\n public readonly maxDate = input<Date | null>();\n public readonly label = input.required<string>();\n public readonly hoveredDate = model<Date | null>(null);\n public readonly openCalendar = model<boolean>(false);\n public readonly selectedDateRange = output<DateRange | null>();\n\n private readonly el = inject(ElementRef);\n private readonly locale = inject(DatePickerLocaleService);\n\n public close() {\n this.openCalendar.set(false);\n this.hoveredDate.set(null);\n }\n\n public onEscape() {\n this.close();\n }\n\n public onSelectedDateChange(date: DateRange): void {\n this.updateDateRange(date);\n }\n\n public onHoverDateChange(date: Date): void {\n this.hoveredDate.set(date);\n }\n\n public onToggleCalendar(): void {\n this.openCalendar.set(!this.openCalendar());\n }\n\n public onCloseCalendar(e: Event): void {\n const el = e.target as HTMLElement;\n if (!this.el.nativeElement.contains(el)) {\n this.close();\n }\n }\n\n private updateDateRange(date: DateRange): void {\n const startDate = this.startDate();\n const endDate = this.endDate();\n\n if (!startDate || endDate) {\n\n this.startDate.set(date.startDate);\n this.endDate.set(null);\n\n } else if (date.startDate && date.startDate >= startDate) {\n this.endDate.set(date.endDate);\n this.selectedDateRange.emit({ startDate, endDate: this.endDate() ?? null })\n this.close();\n } else {\n this.startDate.set(date.startDate);\n }\n }\n}\n","<ngx-date-picker-wrapper\n [date]=\"startDate()\"\n [hoveredDate]=\"hoveredDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [label]=\"label()\"\n [enableRange]=\"true\"\n [openCalendar]=\"openCalendar()\"\n (selectedDateRange)=\"onSelectedDateChange($event)\"\n (hoverDate)=\"onHoverDateChange($event)\">\n <div class=\"ngx:flex ngx:items-center ngx:gap-x-1 ngx:min-w-54 ngx:pl-4\">\n <div class=\"ngx:grow ngx:relative ngx:overflow-hidden ngx:max-w-22.5\">\n <input\n class=\"ngx:font-medium ngx:w-full ngx:h-full ngx:outline-none ngx:p-0 ngx:m-0 ngx:appearance-none\"\n readonly\n type=\"text\"\n role=\"combobox\"\n placeholder=\"dd/mm/yyyy\"\n aria-controls=\"calendar\"\n aria-haspopup=\"dialog\"\n [attr.id]=\"label()\"\n [attr.aria-expanded]=\"openCalendar()\"\n [value]=\"startDate() | date: 'dd/MM/yyyy'\"\n />\n </div>\n <span>-</span>\n <div class=\"ngx:grow ngx:relative ngx:overflow-hidden ngx:max-w-22.5\">\n <input\n class=\"ngx:font-medium ngx:w-full ngx:h-full ngx:outline-none ngx:p-0 ngx:m-0 ngx:appearance-none\"\n readonly\n type=\"text\"\n role=\"combobox\"\n placeholder=\"dd/mm/yyyy\"\n aria-controls=\"calendar\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"openCalendar()\"\n [value]=\"endDate() | date: 'dd/MM/yyyy'\"\n />\n </div>\n </div>\n <button\n class=\"ngx:flex ngx:items-center ngx:justify-center ngx:px-4 ngx:py-3 ngx:cursor-pointer ngx:hover:bg-slate-200 ngx:focus:bg-slate-200 ngx:outline-none\"\n (click)=\"onToggleCalendar()\">\n <svg class=\"ngx:text-slate-900 ngx:w-5 ngx:h-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" />\n </svg>\n </button>\n</ngx-date-picker-wrapper>\n","/*\n * Public API Surface of ngx-datepicker\n */\n\nexport * from './lib/datepicker/datepicker.component';\nexport * from './lib/date-range-picker/date-range-picker.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["currentYear"],"mappings":"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"}
1
+ {"version":3,"file":"wzrdev-ngx-datepicker.mjs","sources":["../../../projects/ngx-datepicker/src/lib/locale/fr.ts","../../../projects/ngx-datepicker/src/lib/locale/en.ts","../../../projects/ngx-datepicker/src/lib/locale/locale.service.ts","../../../projects/ngx-datepicker/src/lib/utils/cn.ts","../../../projects/ngx-datepicker/src/lib/calendar/calendar.service.ts","../../../projects/ngx-datepicker/src/lib/calendar/calendar.component.ts","../../../projects/ngx-datepicker/src/lib/calendar/calendar.component.html","../../../projects/ngx-datepicker/src/lib/date-picker-wrapper/date-picker-wrapper.component.ts","../../../projects/ngx-datepicker/src/lib/date-picker-wrapper/date-picker-wrapper.component.html","../../../projects/ngx-datepicker/src/lib/shared/directives/input.directive.ts","../../../projects/ngx-datepicker/src/lib/shared/mixins/with-control-value-accessor.ts","../../../projects/ngx-datepicker/src/lib/datepicker/datepicker.component.ts","../../../projects/ngx-datepicker/src/lib/datepicker/datepicker.component.html","../../../projects/ngx-datepicker/src/lib/date-range-picker/date-range-picker.component.ts","../../../projects/ngx-datepicker/src/lib/date-range-picker/date-range-picker.component.html","../../../projects/ngx-datepicker/src/public-api.ts","../../../projects/ngx-datepicker/src/wzrdev-ngx-datepicker.ts"],"sourcesContent":["import { DatePickerLocale } from \"./locale.model\";\n\nconst currentYear = new Date().getFullYear();\n\nexport const FR_LOCALE: DatePickerLocale = {\n code: \"fr\",\n months: [\n \"Janvier\",\n \"Février\",\n \"Mars\",\n \"Avril\",\n \"Mai\",\n \"Juin\",\n \"Juillet\",\n \"Août\",\n \"Septembre\",\n \"Octobre\",\n \"Novembre\",\n \"Décembre\",\n ],\n weekdays: [\"Lu\", \"Ma\", \"Me\", \"Je\", \"Ve\", \"Sa\", \"Di\"],\n weekStartsOn: 1,\n years: Array.from({ length: 200 }, (_, i) => currentYear - 100 + i),\n format: date => date.toLocaleDateString(\"fr-FR\"),\n};\n","import { DatePickerLocale } from \"./locale.model\";\n\nconst currentYear = new Date().getFullYear();\n\nexport const EN_LOCALE: DatePickerLocale = {\n code: \"en\",\n months: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n weekdays: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n weekStartsOn: 0,\n years: Array.from({ length: 200 }, (_, i) => currentYear - 100 + i),\n format: date => date.toLocaleDateString(\"en-US\"),\n};\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { DatePickerLocale } from \"./locale.model\";\nimport { FR_LOCALE } from \"./fr\";\nimport { EN_LOCALE } from \"./en\";\n\n@Injectable({ providedIn: \"root\" })\nexport class DatePickerLocaleService {\n private readonly locales: Record<string, DatePickerLocale> = {\n fr: FR_LOCALE,\n en: EN_LOCALE,\n };\n\n private locale$ = new BehaviorSubject<DatePickerLocale>(FR_LOCALE);\n\n public setLocale(code: string) {\n this.locale$.next(this.locales[code] ?? FR_LOCALE);\n }\n\n public get localeChanges$() {\n return this.locale$.asObservable();\n }\n\n public get current() {\n return this.locale$.value;\n }\n}\n","import { ClassValue, clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst customTwMerge = extendTailwindMerge({\n extend: {\n classGroups: {},\n },\n});\n\nexport const cn = (...inputs: ClassValue[]) => {\n return customTwMerge(clsx(inputs));\n};\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class CalendarService {}\n","import {\n Component,\n inject,\n output,\n input,\n linkedSignal, ChangeDetectionStrategy, computed, signal, model\n} from \"@angular/core\";\nimport { DatePickerLocaleService } from \"../locale/locale.service\";\nimport { cn } from '../utils/cn';\nimport { DatePipe } from '@angular/common';\nimport { DateRange } from '../shared/models/daterange';\nimport { CalendarService } from './calendar.service';\n\ninterface Day {\n date: Date | null;\n isToday: boolean;\n isDisabled: boolean;\n isSelected: boolean;\n isInRange: boolean;\n}\n\n@Component({\n selector: \"ngx-calendar\",\n templateUrl: \"./calendar.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DatePipe],\n providers: [CalendarService],\n host: {\n \"(keydown)\": \"handleKeyDown($event)\"\n },\n})\nexport class CalendarComponent {\n public readonly locale = inject(DatePickerLocaleService);\n\n public readonly startDate = model<Date | null>();\n public readonly endDate = model<Date | null>();\n public readonly minDate = input<Date | null>();\n public readonly maxDate = input<Date | null>();\n\n public readonly hoveredDate = signal<Date | null>(null);\n public readonly enableRange = input<boolean>(false);\n\n public readonly selectedDate = output<Date>();\n public readonly selectedDateRange = output<DateRange>();\n public readonly selectedDaysCount = output<number>();\n public readonly hoverDate = output<Date>();\n\n public readonly days = linkedSignal(() => {\n const startDate = this.startDate();\n const endDate = this.endDate();\n const displayDate = this.displayDate();\n\n const year = displayDate.getFullYear();\n const month = displayDate.getMonth();\n\n const today = new Date();\n const firstOfMonth = new Date(year, month, 1);\n const lastOfMonth = new Date(year, month + 1, 0);\n\n const days: Day[] = [];\n const firstDayOfWeek = (firstOfMonth.getDay() + 6) % 7;\n\n for (let i = 0; i < firstDayOfWeek; i++) {\n days.push({\n date: null,\n isDisabled: true,\n isToday: false,\n isSelected: false,\n isInRange: false,\n });\n }\n\n for (let d = 1; d <= lastOfMonth.getDate(); d++) {\n const date = new Date(year, month, d);\n days.push({\n date,\n isDisabled: this.isDisabled(date),\n isToday: this.isSame(date, today),\n isSelected:\n this.isSame(date, startDate) ||\n this.isSame(date, endDate),\n isInRange: this.isInRange(date),\n });\n }\n\n while (days.length < 35) {\n days.push({\n date: null,\n isDisabled: true,\n isToday: false,\n isSelected: false,\n isInRange: false,\n });\n }\n\n return days;\n });\n\n public daysInRange = computed(() => {\n const days = this.days();\n return days.filter(day => day.isInRange);\n });\n\n public daysDisabled = computed(() => {\n const days = this.days();\n return days.filter(day => {\n return day.isDisabled && day.date !== null;\n });\n });\n\n public daysSelected = computed(() => {\n const days = this.days();\n return days.filter(day => day.isSelected);\n });\n\n public firstDayInRange = computed(() => {\n const rangeDays = this.daysInRange();\n return rangeDays[0];\n });\n\n public latestDayInRange = computed(() => {\n const rangeDays = this.daysInRange();\n return rangeDays[rangeDays.length - 1];\n });\n\n public latestDayDisabled = computed(() => {\n const daysDisabled = this.daysDisabled();\n return daysDisabled[daysDisabled.length - 1];\n });\n\n public firstDayDisabled = computed(() => {\n const daysDisabled = this.daysDisabled();\n return daysDisabled[0];\n });\n\n public readonly displayDate = linkedSignal(() => {\n const start = this.startDate();\n return start ?? new Date();\n });\n\n public readonly focusedDate = linkedSignal(() => {\n return new Date(this.displayDate());\n });\n\n protected readonly cn = cn;\n\n build() {\n // keep the focusedDate in the current month\n if (this.focusedDate().getMonth() !== this.displayDate().getMonth()) {\n this.focusedDate.set(new Date(this.displayDate().getFullYear(), this.displayDate().getMonth(), 1));\n }\n }\n\n public prevMonth(): void {\n this.displayDate.update((prevState) => {\n return new Date(prevState.getFullYear(), prevState.getMonth() - 1, prevState.getDate());\n })\n }\n\n public nextMonth(): void {\n this.displayDate.update((prevState) => {\n return new Date(prevState.getFullYear(), prevState.getMonth() + 1, prevState.getDate());\n })\n }\n\n public isSame(a?: Date | null, b?: Date | null): boolean {\n if (!a || !b) return false;\n return a.toDateString() === b.toDateString();\n }\n\n public isDisabled(date: Date): boolean {\n const minDate = this.minDate();\n const maxDate = this.maxDate();\n\n const normalize = (d: Date) =>\n new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();\n\n const current = normalize(date);\n\n if (minDate && current < normalize(minDate)) {\n return true;\n }\n\n return !!(maxDate && current > normalize(maxDate));\n\n\n }\n\n public isInRange(d: Date): boolean {\n const start = this.startDate();\n const end = this.endDate();\n const hover = this.hoveredDate();\n\n if (!start || !d) return false;\n if (start && end) return d >= start && d <= end;\n if (start && hover) {\n return d >= start && d <= hover;\n }\n\n return false;\n };\n\n public onDaySelect(date: Date | null): void {\n if (!date) return;\n\n const selectedDays = this.days().filter(day => day.isSelected);\n const startDate = this.startDate();\n const endDate = this.endDate();\n\n\n if (this.enableRange()) {\n\n if (selectedDays.length === 2\n || startDate && date < startDate\n || endDate && endDate <= date\n || endDate && date <= endDate) {\n this.resetStartDate(date);\n }\n\n if (!startDate) {\n this.startDate.set(date);\n } else if (startDate && !endDate && startDate < date) {\n this.endDate.set(date);\n }\n\n } else {\n this.resetStartDate(date);\n }\n\n if (this.enableRange()) {\n this.selectedDateRange.emit({ startDate: this.startDate() ?? null, endDate: this.endDate() ?? null });\n } else {\n this.selectedDate.emit(date);\n }\n this.selectedDaysCount.emit(this.daysInRange().length);\n }\n\n public onDayMouseEnter(date: Date | null): void {\n if (!date) return;\n if (!this.enableRange() || (this.startDate() && this.endDate())) {\n return;\n }\n this.hoveredDate.set(date);\n }\n\n public handleKeyDown(event: KeyboardEvent): void {\n if (!this.focusedDate) return;\n\n const newDate = new Date(this.focusedDate());\n\n switch (event.key) {\n case \"ArrowRight\":\n newDate.setDate(newDate.getDate() + 1);\n break;\n case \"ArrowLeft\":\n newDate.setDate(newDate.getDate() - 1);\n break;\n case \"ArrowDown\":\n newDate.setDate(newDate.getDate() + 7);\n break;\n case \"ArrowUp\":\n newDate.setDate(newDate.getDate() - 7);\n break;\n case \"Enter\":\n case \" \":\n this.selectedDate.emit(this.focusedDate());\n event.preventDefault();\n return;\n default:\n return; // ignorer les autres touches\n }\n\n event.preventDefault();\n this.focusedDate.set(newDate);\n\n // si le focusedDate est hors du mois courant, changer le mois\n if (\n this.focusedDate().getMonth() !== this.displayDate().getMonth() ||\n this.focusedDate().getFullYear() !== this.displayDate().getFullYear()\n ) {\n this.displayDate.set(new Date(this.focusedDate().getFullYear(), this.focusedDate().getMonth(), 1));\n this.build();\n }\n }\n\n // Pour le template : savoir si la date est focusée pour appliquer style\n isFocused(date: Date) {\n return this.focusedDate && this.isSame(date, this.focusedDate());\n }\n\n private resetStartDate(date: Date): void {\n console.log('reset');\n this.startDate.set(date);\n this.endDate.set(null);\n this.hoveredDate.set(null);\n }\n}\n","<div\n class=\"ngx:w-65 ngx:bg-white ngx:rounded-md ngx:shadow-lg ngx:p-3\"\n id=\"calendar\"\n role=\"dialog\"\n aria-modal=\"true\">\n\n <div class=\"ngx:flex ngx:items-center ngx:mb-2\">\n <button\n class=\"ngx:cursor-pointer ngx:hover:bg-slate-100 ngx:focus:bg-slate-100 ngx:rounded-full ngx:flex ngx:w-10 ngx:h-10 ngx:justify-center ngx:items-center\"\n (click)=\"prevMonth()\" aria-label=\"Previous month\">‹\n </button>\n <p class=\"ngx:grow ngx:text-center ngx:font-medium ngx:text-inherit\">{{ displayDate() | date: 'MMMM yyyy' }}</p>\n <button\n class=\"ngx:cursor-pointer ngx:hover:bg-slate-100 ngx:focus:bg-slate-100 ngx:rounded-full ngx:flex ngx:w-10 ngx:h-10 ngx:justify-center ngx:items-center\"\n (click)=\"nextMonth()\" aria-label=\"Next month\">›\n </button>\n </div>\n\n <div class=\"ngx:grid ngx:grid-cols-7 ngx:gap-0.5\">\n @for (wd of locale.current.weekdays; track $index) {\n <span class=\"ngx:text-center ngx:py-1 ngx:text-sm ngx:font-medium ngx:text-inherit\">{{ wd }}</span>\n }\n </div>\n\n <div class=\"ngx:grid ngx:grid-cols-7 ngx:gap-y-0.5\">\n @for (day of days(); track $index) {\n <button\n [class]=\"cn(\n 'ngx:relative ngx:cursor-pointer ngx:py-1 ngx:overflow-hidden ngx:text-inherit',\n {\n 'ngx:rounded-full': daysInRange().length < 2 && !day.isDisabled,\n 'ngx:rounded-l-full': (firstDayDisabled() === day && day.date !== null) || (firstDayInRange() === day || daysSelected()[0] === day) && day.isSelected && !day.isDisabled,\n 'ngx:rounded-r-full': (latestDayDisabled() === day && day.date !== null) || (latestDayInRange() === day || daysSelected()[1] === day) && !day.isDisabled,\n 'ngx:border-y-2 ngx:border-dashed ngx:border-slate-100 ngx:cursor-auto': day.date === null,\n 'ngx:bg-slate-100 ngx:text-slate-400 ngx:cursor-not-allowed': day.isDisabled && day.date !== null,\n 'ngx:bg-(--ngx-datepicker-range-color)': day.isInRange && !day.isDisabled,\n 'ngx:before:rounded-full ngx:bg-(--ngx-datepicker-range-color) ngx:text-(--ngx-datepicker-accent-text-color) ngx:before:absolute ngx:before:top-0 ngx:before:left-0 ngx:before:block ngx:before:w-full ngx:before:h-full ngx:before:z-1 ngx:before:bg-(--ngx-datepicker-accent-color)': day.isSelected && !day.isDisabled,\n 'ngx:before:absolute ngx:before:top-0 ngx:before:left-0 ngx:before:block ngx:before:w-full ngx:before:h-full ngx:before:z-1 ngx:before:rounded-full ngx:before:border-2 ngx:before:border-(--ngx-datepicker-accent-color)': day.isToday,\n }\n )\"\n [attr.aria-selected]=\"isSame(day.date, startDate()) || isSame(day.date, endDate())\"\n [attr.aria-label]=\"day.date ? locale.current.format(day.date) : undefined\"\n [disabled]=\"day.isDisabled\"\n (click)=\"onDaySelect(day.date)\"\n (mouseenter)=\"onDayMouseEnter(day.date)\">\n @if (day.date) {\n <span class=\"ngx:relative ngx:z-10\">{{ day.date.getDate() }}</span>\n }\n </button>\n }\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { CalendarComponent } from '../calendar/calendar.component';\nimport { DateRange } from '../shared/models/daterange';\n\n@Component({\n selector: 'ngx-date-picker-wrapper',\n templateUrl: './date-picker-wrapper.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CalendarComponent]\n})\nexport class DatePickerWrapperComponent {\n public readonly date = input<Date | null>();\n public readonly endDate = input<Date | null>();\n public readonly hoveredDate = input<Date | null>();\n public readonly minDate = input<Date | null>();\n public readonly maxDate = input<Date | null>();\n\n public readonly label = input.required<string>();\n public readonly openCalendar = input<boolean>();\n public readonly enableRange = input.required<boolean>();\n\n public readonly selectedDate = output<Date | null>();\n public readonly selectedDateRange = output<DateRange>();\n public readonly hoverDate = output<Date>();\n\n public onSelectDate(date: Date | null): void {\n this.selectedDate.emit(date);\n }\n\n public onSelectDateRange(date: DateRange): void {\n this.selectedDateRange.emit(date);\n }\n\n\n public onHoverDate(date: Date): void {\n this.hoverDate.emit(date);\n }\n}\n","<div class=\"ngx:block ngx:relative\">\n <div class=\"ngx:flex ngx:flex-col\">\n <label [for]=\"label()\" class=\"ngx:block ngx:text-left ngx:text-xs ngx:font-semibold ngx:mb-1 ngx:text-slate-900\" for=\"datepicker\">{{ label() }}</label>\n <div\n class=\"ngx:flex ngx:items-stretch ngx:rounded-md ngx:bg-slate-100 ngx:focus-within:outline-2 ngx:focus-within:outline-(--ngx-datepicker-outline-color) ngx:focus-within:shadow ngx:overflow-hidden\">\n <ng-content></ng-content>\n </div>\n </div>\n <ngx-calendar\n class=\"ngx:absolute ngx:top-full ngx:left-0 ngx:mt-1 ngx:z-100\"\n [class.ngx:hidden]=\"!openCalendar()\"\n [startDate]=\"date()\"\n [endDate]=\"endDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [enableRange]=\"enableRange()\"\n (selectedDate)=\"onSelectDate($event)\"\n (selectedDateRange)=\"onSelectDateRange($event)\"\n (hoverDate)=\"onHoverDate($event)\">\n </ngx-calendar>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngxInput]',\n host: {\n class: 'ngx:font-medium ngx:bg-slate-100 ngx:pl-4 ngx:py-3 ngx:border-0 ngx:outline-0 ngx:appearance-none ngx:[&::-webkit-calendar-picker-indicator]:hidden'\n }\n})\nexport class InputDirective {}\n","import { ControlValueAccessor } from '@angular/forms';\nimport { Constructor } from '../models/constructor';\n\nexport function WithControlValueAccessor<TValue, TBase extends Constructor>(Base: TBase) {\n return class extends Base implements ControlValueAccessor {\n public value!: TValue;\n public disabled = false;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public onChange = (_: TValue) => { /* empty */ };\n public onTouched = () => { /* empty */ };\n\n public writeValue(value: TValue) {\n this.value = value;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public onInput(value: TValue) {\n this.value = value;\n this.onChange(value);\n }\n\n public onBlur() {\n this.onTouched();\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, effect, ElementRef, forwardRef, inject, input, InputSignal,\n model,\n ModelSignal,\n output,\n OutputEmitterRef,\n} from '@angular/core';\nimport { DatePickerWrapperComponent } from '../date-picker-wrapper/date-picker-wrapper.component';\nimport { InputDirective } from '../shared/directives/input.directive';\nimport { DatePipe } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { WithControlValueAccessor } from '../shared/mixins/with-control-value-accessor';\nimport { DateRange } from '../shared/models/daterange';\n\ninterface DatepickerOption {\n id: InputSignal<string | undefined>;\n date: ModelSignal<Date | null | undefined>;\n openCalendar: ModelSignal<boolean>;\n selectedDate: OutputEmitterRef<Date | null>;\n}\n\n@Component({\n selector: 'ngx-datepicker',\n templateUrl: './datepicker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DatePickerWrapperComponent,\n InputDirective,\n DatePipe\n ],\n host: {\n '(document:click)': 'onClickOutside($event)',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatepickerComponent),\n multi: true,\n },\n ],\n})\nexport class DatepickerComponent extends WithControlValueAccessor<Date, new () => object>(class {}) implements DatepickerOption {\n public readonly id = model<string>();\n public readonly date = model<Date | null>();\n public readonly dateTo = model<Date | null>();\n public readonly minDate = input<Date | null>();\n public readonly maxDate = input<Date | null>();\n public readonly range = input<boolean>(false);\n public readonly isRangeEnd = input<boolean>(false);\n public readonly label = input.required<string>();\n public readonly openCalendar = model<boolean>(false);\n public readonly selectedDate = output<Date | null>();\n public readonly selectedDateRange = output<DateRange | null>();\n\n private readonly el = inject(ElementRef);\n\n constructor() {\n super();\n effect(() => {\n const date = this.date();\n const dateTo = this.dateTo();\n\n if (date) {\n this.updateFormControl(this.isRangeEnd() && dateTo ? dateTo : date);\n }\n });\n }\n\n public onSelectedDateChange(date: Date | null): void {\n if (date) {\n this.updateDate(date);\n }\n if (this.range()) {\n return;\n }\n this.openCalendar.set(false);\n }\n\n public onSelectedDateRangeChange(dateRange: DateRange): void {\n this.selectedDateRange.emit(dateRange);\n if (dateRange.startDate !== null && dateRange.endDate !== null) {\n this.openCalendar.set(false);\n }\n }\n\n public onInputChange(e: Event): void {\n const target = e.target as HTMLInputElement;\n const date = new Date(target.value);\n this.updateDate(date);\n }\n\n public onToggleCalendar(): void {\n this.openCalendar.set(!this.openCalendar());\n }\n\n public onClickOutside(e: Event): void {\n const el = e.target as HTMLElement;\n if (!this.el.nativeElement.contains(el)) {\n this.openCalendar.set(false);\n }\n }\n\n private updateDate(date: Date): void {\n this.date.set(date);\n this.selectedDate.emit(date);\n this.updateFormControl(date);\n }\n\n private updateFormControl(value: Date): void {\n this.value = value;\n this.onChange(value);\n }\n}\n","<ngx-date-picker-wrapper\n [date]=\"date()\"\n [endDate]=\"dateTo()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [enableRange]=\"range()\"\n [label]=\"label()\"\n [openCalendar]=\"openCalendar()\"\n (selectedDate)=\"onSelectedDateChange($event)\"\n (selectedDateRange)=\"onSelectedDateRangeChange($event)\">\n <input\n class=\"ngx:w-full\"\n ngxInput\n type=\"date\"\n placeholder=\"dd/mm/yyyy\"\n [attr.id]=\"label()\"\n [value]=\"value | date: 'yyyy-MM-dd'\"\n (blur)=\"onBlur()\"\n (change)=\"onInputChange($event)\">\n <button\n class=\"ngx:flex ngx:items-center ngx:justify-center ngx:px-4 ngx:py-3 ngx:cursor-pointer ngx:hover:bg-slate-200 ngx:focus:bg-slate-200 ngx:outline-none\"\n (click)=\"onToggleCalendar()\">\n <svg class=\"ngx:text-slate-900 ngx:w-5 ngx:h-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" />\n </svg>\n </button>\n\n</ngx-date-picker-wrapper>\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef,\n inject, input,\n model,\n output,\n} from \"@angular/core\";\nimport { DatePickerLocaleService } from \"../locale/locale.service\";\nimport { DatePickerWrapperComponent } from '../date-picker-wrapper/date-picker-wrapper.component';\nimport { DatePipe } from '@angular/common';\n\nexport interface DateRange {\n startDate: Date | null;\n endDate: Date | null;\n}\n\n@Component({\n selector: \"ngx-date-range-picker\",\n templateUrl: \"./date-range-picker.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [DatePickerWrapperComponent, DatePipe],\n host: {\n \"(document:click)\": \"onCloseCalendar($event)\",\n \"(keydown.escape)\": \"onEscape()\",\n },\n})\nexport class DateRangePickerComponent {\n public readonly startDate = model<Date | null>();\n public readonly endDate = model<Date | null>();\n public readonly minDate = input<Date | null>();\n public readonly maxDate = input<Date | null>();\n public readonly label = input.required<string>();\n public readonly hoveredDate = model<Date | null>(null);\n public readonly openCalendar = model<boolean>(false);\n public readonly selectedDateRange = output<DateRange | null>();\n\n private readonly el = inject(ElementRef);\n private readonly locale = inject(DatePickerLocaleService);\n\n public close() {\n this.openCalendar.set(false);\n this.hoveredDate.set(null);\n }\n\n public onEscape() {\n this.close();\n }\n\n public onSelectedDateChange(date: DateRange): void {\n this.updateDateRange(date);\n }\n\n public onHoverDateChange(date: Date): void {\n this.hoveredDate.set(date);\n }\n\n public onToggleCalendar(): void {\n this.openCalendar.set(!this.openCalendar());\n }\n\n public onCloseCalendar(e: Event): void {\n const el = e.target as HTMLElement;\n if (!this.el.nativeElement.contains(el)) {\n this.close();\n }\n }\n\n private updateDateRange(date: DateRange): void {\n const startDate = this.startDate();\n const endDate = this.endDate();\n\n if (!startDate || endDate) {\n\n this.startDate.set(date.startDate);\n this.endDate.set(null);\n\n } else if (date.startDate && date.startDate >= startDate) {\n this.endDate.set(date.endDate);\n this.selectedDateRange.emit({ startDate, endDate: this.endDate() ?? null })\n this.close();\n } else {\n this.startDate.set(date.startDate);\n }\n }\n}\n","<ngx-date-picker-wrapper\n [date]=\"startDate()\"\n [hoveredDate]=\"hoveredDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [label]=\"label()\"\n [enableRange]=\"true\"\n [openCalendar]=\"openCalendar()\"\n (selectedDateRange)=\"onSelectedDateChange($event)\"\n (hoverDate)=\"onHoverDateChange($event)\">\n <div class=\"ngx:flex ngx:w-full ngx:items-center ngx:gap-x-1 ngx:min-w-54 ngx:pl-4\">\n <div class=\"ngx:grow ngx:relative ngx:overflow-hidden ngx:max-w-22.5\">\n <input\n class=\"ngx:font-medium ngx:w-full ngx:h-full ngx:outline-none ngx:p-0 ngx:m-0 ngx:appearance-none\"\n readonly\n type=\"text\"\n role=\"combobox\"\n placeholder=\"dd/mm/yyyy\"\n aria-controls=\"calendar\"\n aria-haspopup=\"dialog\"\n [attr.id]=\"label()\"\n [attr.aria-expanded]=\"openCalendar()\"\n [value]=\"startDate() | date: 'dd/MM/yyyy'\"\n />\n </div>\n <span>-</span>\n <div class=\"ngx:grow ngx:relative ngx:overflow-hidden ngx:max-w-22.5\">\n <input\n class=\"ngx:font-medium ngx:w-full ngx:h-full ngx:outline-none ngx:p-0 ngx:m-0 ngx:appearance-none\"\n readonly\n type=\"text\"\n role=\"combobox\"\n placeholder=\"dd/mm/yyyy\"\n aria-controls=\"calendar\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"openCalendar()\"\n [value]=\"endDate() | date: 'dd/MM/yyyy'\"\n />\n </div>\n </div>\n <button\n class=\"ngx:flex ngx:items-center ngx:justify-center ngx:px-4 ngx:py-3 ngx:cursor-pointer ngx:hover:bg-slate-200 ngx:focus:bg-slate-200 ngx:outline-none\"\n (click)=\"onToggleCalendar()\">\n <svg class=\"ngx:text-slate-900 ngx:w-5 ngx:h-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" />\n </svg>\n </button>\n</ngx-date-picker-wrapper>\n","/*\n * Public API Surface of ngx-datepicker\n */\n\nexport * from './lib/datepicker/datepicker.component';\nexport * from './lib/date-range-picker/date-range-picker.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["currentYear"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { DatePickerLocaleService } from "../locale/locale.service";
2
2
  import { DateRange } from '../shared/models/daterange';
3
3
  import * as i0 from "@angular/core";
4
4
  interface Day {
5
- date: Date;
5
+ date: Date | null;
6
6
  isToday: boolean;
7
7
  isDisabled: boolean;
8
8
  isSelected: boolean;
@@ -23,6 +23,8 @@ export declare class CalendarComponent {
23
23
  readonly days: import("@angular/core").WritableSignal<Day[]>;
24
24
  daysInRange: import("@angular/core").Signal<Day[]>;
25
25
  daysDisabled: import("@angular/core").Signal<Day[]>;
26
+ daysSelected: import("@angular/core").Signal<Day[]>;
27
+ firstDayInRange: import("@angular/core").Signal<Day>;
26
28
  latestDayInRange: import("@angular/core").Signal<Day>;
27
29
  latestDayDisabled: import("@angular/core").Signal<Day>;
28
30
  firstDayDisabled: import("@angular/core").Signal<Day>;
@@ -35,8 +37,8 @@ export declare class CalendarComponent {
35
37
  isSame(a?: Date | null, b?: Date | null): boolean;
36
38
  isDisabled(date: Date): boolean;
37
39
  isInRange(d: Date): boolean;
38
- onDaySelect(date: Date): void;
39
- onDayMouseEnter(date: Date): void;
40
+ onDaySelect(date: Date | null): void;
41
+ onDayMouseEnter(date: Date | null): void;
40
42
  handleKeyDown(event: KeyboardEvent): void;
41
43
  isFocused(date: Date): boolean;
42
44
  private resetStartDate;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wzrdev/ngx-datepicker",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.2.0",
6
6
  "@angular/core": "^19.2.0"
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
2
- @import "https://fonts.googleapis.com/css2?family=Montserrat+Alternates:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap";@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-text-shadow-color:initial;--tw-text-shadow-alpha:100%;--tw-content:""}}}@layer theme{:root,:host{--ngx-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--ngx-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ngx-color-slate-100:oklch(96.8% .007 247.896);--ngx-color-slate-200:oklch(92.9% .013 255.508);--ngx-color-slate-400:oklch(70.4% .04 256.788);--ngx-color-slate-900:oklch(20.8% .042 265.755);--ngx-color-white:#fff;--ngx-spacing:.25rem;--ngx-text-xs:.75rem;--ngx-text-xs--line-height:calc(1/.75);--ngx-text-sm:.875rem;--ngx-text-sm--line-height:calc(1.25/.875);--ngx-text-4xl:2.25rem;--ngx-text-4xl--line-height:calc(2.5/2.25);--ngx-font-weight-medium:500;--ngx-font-weight-semibold:600;--ngx-font-weight-bold:700;--ngx-radius-md:.375rem;--ngx-default-font-family:var(--ngx-font-sans);--ngx-default-mono-font-family:var(--ngx-font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--ngx-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--ngx-default-font-feature-settings,normal);font-variation-settings:var(--ngx-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--ngx-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--ngx-default-mono-font-feature-settings,normal);font-variation-settings:var(--ngx-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.ngx\:absolute{position:absolute}.ngx\:relative{position:relative}.ngx\:top-full{top:100%}.ngx\:left-0{left:calc(var(--ngx-spacing)*0)}.ngx\:z-10{z-index:10}.ngx\:z-100{z-index:100}.ngx\:m-0{margin:calc(var(--ngx-spacing)*0)}.ngx\:mx-auto{margin-inline:auto}.ngx\:mt-1{margin-top:calc(var(--ngx-spacing)*1)}.ngx\:mt-2{margin-top:calc(var(--ngx-spacing)*2)}.ngx\:mt-4{margin-top:calc(var(--ngx-spacing)*4)}.ngx\:mt-10{margin-top:calc(var(--ngx-spacing)*10)}.ngx\:mb-1{margin-bottom:calc(var(--ngx-spacing)*1)}.ngx\:mb-2{margin-bottom:calc(var(--ngx-spacing)*2)}.ngx\:flex{display:flex}.ngx\:grid{display:grid}.ngx\:hidden{display:none}.ngx\:inline-block{display:inline-block}.ngx\:inline-flex{display:inline-flex}.ngx\:h-5{height:calc(var(--ngx-spacing)*5)}.ngx\:h-10{height:calc(var(--ngx-spacing)*10)}.ngx\:h-full{height:100%}.ngx\:w-5{width:calc(var(--ngx-spacing)*5)}.ngx\:w-10{width:calc(var(--ngx-spacing)*10)}.ngx\:w-65{width:calc(var(--ngx-spacing)*65)}.ngx\:w-auto{width:auto}.ngx\:w-full{width:100%}.ngx\:max-w-22\.5{max-width:calc(var(--ngx-spacing)*22.5)}.ngx\:max-w-300{max-width:calc(var(--ngx-spacing)*300)}.ngx\:max-w-\[114px\]{max-width:114px}.ngx\:min-w-54{min-width:calc(var(--ngx-spacing)*54)}.ngx\:grow{flex-grow:1}.ngx\:cursor-not-allowed{cursor:not-allowed}.ngx\:cursor-pointer{cursor:pointer}.ngx\:appearance-none{appearance:none}.ngx\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.ngx\:flex-col{flex-direction:column}.ngx\:items-center{align-items:center}.ngx\:items-stretch{align-items:stretch}.ngx\:justify-center{justify-content:center}.ngx\:gap-0\.5{gap:calc(var(--ngx-spacing)*.5)}.ngx\:gap-4{gap:calc(var(--ngx-spacing)*4)}.ngx\:gap-x-1{column-gap:calc(var(--ngx-spacing)*1)}.ngx\:gap-x-2{column-gap:calc(var(--ngx-spacing)*2)}.ngx\:gap-x-4{column-gap:calc(var(--ngx-spacing)*4)}.ngx\:gap-y-0\.5{row-gap:calc(var(--ngx-spacing)*.5)}.ngx\:overflow-hidden{overflow:hidden}.ngx\:rounded-full{border-radius:3.40282e38px}.ngx\:rounded-md{border-radius:var(--ngx-radius-md)}.ngx\:rounded-l-full{border-top-left-radius:3.40282e38px;border-bottom-left-radius:3.40282e38px}.ngx\:rounded-r-full{border-top-right-radius:3.40282e38px;border-bottom-right-radius:3.40282e38px}.ngx\:border{border-style:var(--tw-border-style);border-width:1px}.ngx\:border-0{border-style:var(--tw-border-style);border-width:0}.ngx\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.ngx\:border-slate-200{border-color:var(--ngx-color-slate-200)}.ngx\:bg-\(--ngx-datepicker-range-color\){background-color:var(--ngx-datepicker-range-color)}.ngx\:bg-slate-100{background-color:var(--ngx-color-slate-100)}.ngx\:bg-slate-200{background-color:var(--ngx-color-slate-200)}.ngx\:bg-white{background-color:var(--ngx-color-white)}.ngx\:p-0{padding:calc(var(--ngx-spacing)*0)}.ngx\:p-3{padding:calc(var(--ngx-spacing)*3)}.ngx\:p-4{padding:calc(var(--ngx-spacing)*4)}.ngx\:px-4{padding-inline:calc(var(--ngx-spacing)*4)}.ngx\:px-5{padding-inline:calc(var(--ngx-spacing)*5)}.ngx\:py-1{padding-block:calc(var(--ngx-spacing)*1)}.ngx\:py-3{padding-block:calc(var(--ngx-spacing)*3)}.ngx\:py-10{padding-block:calc(var(--ngx-spacing)*10)}.ngx\:pl-4{padding-left:calc(var(--ngx-spacing)*4)}.ngx\:text-center{text-align:center}.ngx\:text-left{text-align:left}.ngx\:text-4xl{font-size:var(--ngx-text-4xl);line-height:var(--tw-leading,var(--ngx-text-4xl--line-height))}.ngx\:text-sm{font-size:var(--ngx-text-sm);line-height:var(--tw-leading,var(--ngx-text-sm--line-height))}.ngx\:text-xs{font-size:var(--ngx-text-xs);line-height:var(--tw-leading,var(--ngx-text-xs--line-height))}.ngx\:font-bold{--tw-font-weight:var(--ngx-font-weight-bold);font-weight:var(--ngx-font-weight-bold)}.ngx\:font-medium{--tw-font-weight:var(--ngx-font-weight-medium);font-weight:var(--ngx-font-weight-medium)}.ngx\:font-semibold{--tw-font-weight:var(--ngx-font-weight-semibold);font-weight:var(--ngx-font-weight-semibold)}.ngx\:text-\(--ngx-datepicker-accent-text-color\){color:var(--ngx-datepicker-accent-text-color)}.ngx\:text-inherit{color:inherit}.ngx\:text-slate-400{color:var(--ngx-color-slate-400)}.ngx\:text-slate-900{color:var(--ngx-color-slate-900)}.ngx\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ngx\:outline-0{outline-style:var(--tw-outline-style);outline-width:0}.ngx\:outline-none{--tw-outline-style:none;outline-style:none}.ngx\:text-shadow-slate-900{--tw-text-shadow-color:var(--ngx-color-slate-900)}@supports (color:color-mix(in lab, red, red)){.ngx\:text-shadow-slate-900{--tw-text-shadow-color:color-mix(in oklab,var(--ngx-color-slate-900)var(--tw-text-shadow-alpha),transparent)}}.ngx\:before\:absolute:before{content:var(--tw-content);position:absolute}.ngx\:before\:top-0:before{content:var(--tw-content);top:calc(var(--ngx-spacing)*0)}.ngx\:before\:left-0:before{content:var(--tw-content);left:calc(var(--ngx-spacing)*0)}.ngx\:before\:z-1:before{content:var(--tw-content);z-index:1}.ngx\:before\:block:before{content:var(--tw-content);display:block}.ngx\:before\:h-full:before{content:var(--tw-content);height:100%}.ngx\:before\:w-full:before{content:var(--tw-content);width:100%}.ngx\:before\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.ngx\:before\:border-2:before{content:var(--tw-content);border-style:var(--tw-border-style);border-width:2px}.ngx\:before\:border-\(--ngx-datepicker-accent-color\):before{content:var(--tw-content);border-color:var(--ngx-datepicker-accent-color)}.ngx\:before\:bg-\(--ngx-datepicker-accent-color\):before{content:var(--tw-content);background-color:var(--ngx-datepicker-accent-color)}.ngx\:focus-within\:shadow:focus-within{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ngx\:focus-within\:outline-2:focus-within{outline-style:var(--tw-outline-style);outline-width:2px}.ngx\:focus-within\:outline-\(--ngx-datepicker-outline-color\):focus-within{outline-color:var(--ngx-datepicker-outline-color)}@media (hover:hover){.ngx\:hover\:bg-slate-100:hover{background-color:var(--ngx-color-slate-100)}.ngx\:hover\:bg-slate-200:hover{background-color:var(--ngx-color-slate-200)}}.ngx\:focus\:bg-slate-100:focus{background-color:var(--ngx-color-slate-100)}.ngx\:focus\:bg-slate-200:focus{background-color:var(--ngx-color-slate-200)}.ngx\:\[\&\:\:-webkit-calendar-picker-indicator\]\:hidden::-webkit-calendar-picker-indicator{display:none}}.gh-dark-code{color:#c9d1d9;background:#0d1117;border:1px solid #30363d;border-radius:8px;padding:16px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.5;display:block;overflow-x:auto}.gh-dark-code pre{flex-direction:column;gap:6px;margin:0;display:flex}.gh-dark-code span{color:#79c0ff}.gh-dark-code strong{color:#ffa657;font-weight:600}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Montserrat Alternates,serif}:root{--ngx-datepicker-outline-color:oklch(54.6% .245 262.881);--ngx-datepicker-accent-color:oklch(54.6% .245 262.881);--ngx-datepicker-accent-text-color:#fff;--ngx-datepicker-range-color:oklch(88.2% .059 254.128)}input[type=date]::-webkit-calendar-picker-indicator{margin:0;padding:0}input[type=date]{appearance:none;min-width:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-text-shadow-color{syntax:"*";inherits:false}@property --tw-text-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-content{syntax:"*";inherits:false;initial-value:""}
2
+ @import "https://fonts.googleapis.com/css2?family=Montserrat+Alternates:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap";@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-text-shadow-color:initial;--tw-text-shadow-alpha:100%;--tw-content:""}}}@layer theme{:root,:host{--ngx-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--ngx-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ngx-color-slate-100:oklch(96.8% .007 247.896);--ngx-color-slate-200:oklch(92.9% .013 255.508);--ngx-color-slate-400:oklch(70.4% .04 256.788);--ngx-color-slate-900:oklch(20.8% .042 265.755);--ngx-color-white:#fff;--ngx-spacing:.25rem;--ngx-text-xs:.75rem;--ngx-text-xs--line-height:calc(1/.75);--ngx-text-sm:.875rem;--ngx-text-sm--line-height:calc(1.25/.875);--ngx-text-4xl:2.25rem;--ngx-text-4xl--line-height:calc(2.5/2.25);--ngx-font-weight-medium:500;--ngx-font-weight-semibold:600;--ngx-font-weight-bold:700;--ngx-radius-md:.375rem;--ngx-default-font-family:var(--ngx-font-sans);--ngx-default-mono-font-family:var(--ngx-font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--ngx-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--ngx-default-font-feature-settings,normal);font-variation-settings:var(--ngx-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--ngx-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--ngx-default-mono-font-feature-settings,normal);font-variation-settings:var(--ngx-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.ngx\:absolute{position:absolute}.ngx\:relative{position:relative}.ngx\:top-full{top:100%}.ngx\:left-0{left:calc(var(--ngx-spacing)*0)}.ngx\:z-10{z-index:10}.ngx\:z-100{z-index:100}.ngx\:m-0{margin:calc(var(--ngx-spacing)*0)}.ngx\:mx-auto{margin-inline:auto}.ngx\:my-2{margin-block:calc(var(--ngx-spacing)*2)}.ngx\:mt-1{margin-top:calc(var(--ngx-spacing)*1)}.ngx\:mt-2{margin-top:calc(var(--ngx-spacing)*2)}.ngx\:mt-4{margin-top:calc(var(--ngx-spacing)*4)}.ngx\:mt-10{margin-top:calc(var(--ngx-spacing)*10)}.ngx\:mb-1{margin-bottom:calc(var(--ngx-spacing)*1)}.ngx\:mb-2{margin-bottom:calc(var(--ngx-spacing)*2)}.ngx\:block{display:block}.ngx\:flex{display:flex}.ngx\:grid{display:grid}.ngx\:hidden{display:none}.ngx\:inline-block{display:inline-block}.ngx\:h-5{height:calc(var(--ngx-spacing)*5)}.ngx\:h-10{height:calc(var(--ngx-spacing)*10)}.ngx\:h-full{height:100%}.ngx\:w-5{width:calc(var(--ngx-spacing)*5)}.ngx\:w-10{width:calc(var(--ngx-spacing)*10)}.ngx\:w-65{width:calc(var(--ngx-spacing)*65)}.ngx\:w-auto{width:auto}.ngx\:w-full{width:100%}.ngx\:max-w-22\.5{max-width:calc(var(--ngx-spacing)*22.5)}.ngx\:max-w-300{max-width:calc(var(--ngx-spacing)*300)}.ngx\:min-w-54{min-width:calc(var(--ngx-spacing)*54)}.ngx\:grow{flex-grow:1}.ngx\:cursor-auto{cursor:auto}.ngx\:cursor-not-allowed{cursor:not-allowed}.ngx\:cursor-pointer{cursor:pointer}.ngx\:appearance-none{appearance:none}.ngx\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.ngx\:flex-col{flex-direction:column}.ngx\:items-center{align-items:center}.ngx\:items-stretch{align-items:stretch}.ngx\:justify-center{justify-content:center}.ngx\:gap-0\.5{gap:calc(var(--ngx-spacing)*.5)}.ngx\:gap-4{gap:calc(var(--ngx-spacing)*4)}.ngx\:gap-x-1{column-gap:calc(var(--ngx-spacing)*1)}.ngx\:gap-x-2{column-gap:calc(var(--ngx-spacing)*2)}.ngx\:gap-x-4{column-gap:calc(var(--ngx-spacing)*4)}.ngx\:gap-y-0\.5{row-gap:calc(var(--ngx-spacing)*.5)}.ngx\:overflow-hidden{overflow:hidden}.ngx\:rounded-full{border-radius:3.40282e38px}.ngx\:rounded-md{border-radius:var(--ngx-radius-md)}.ngx\:rounded-l-full{border-top-left-radius:3.40282e38px;border-bottom-left-radius:3.40282e38px}.ngx\:rounded-r-full{border-top-right-radius:3.40282e38px;border-bottom-right-radius:3.40282e38px}.ngx\:border{border-style:var(--tw-border-style);border-width:1px}.ngx\:border-0{border-style:var(--tw-border-style);border-width:0}.ngx\:border-y-2{border-block-style:var(--tw-border-style);border-block-width:2px}.ngx\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.ngx\:border-dashed{--tw-border-style:dashed;border-style:dashed}.ngx\:border-slate-100{border-color:var(--ngx-color-slate-100)}.ngx\:border-slate-200{border-color:var(--ngx-color-slate-200)}.ngx\:bg-\(--ngx-datepicker-range-color\){background-color:var(--ngx-datepicker-range-color)}.ngx\:bg-slate-100{background-color:var(--ngx-color-slate-100)}.ngx\:bg-white{background-color:var(--ngx-color-white)}.ngx\:p-0{padding:calc(var(--ngx-spacing)*0)}.ngx\:p-3{padding:calc(var(--ngx-spacing)*3)}.ngx\:p-4{padding:calc(var(--ngx-spacing)*4)}.ngx\:px-4{padding-inline:calc(var(--ngx-spacing)*4)}.ngx\:px-5{padding-inline:calc(var(--ngx-spacing)*5)}.ngx\:py-1{padding-block:calc(var(--ngx-spacing)*1)}.ngx\:py-3{padding-block:calc(var(--ngx-spacing)*3)}.ngx\:py-10{padding-block:calc(var(--ngx-spacing)*10)}.ngx\:pb-2{padding-bottom:calc(var(--ngx-spacing)*2)}.ngx\:pl-4{padding-left:calc(var(--ngx-spacing)*4)}.ngx\:text-center{text-align:center}.ngx\:text-left{text-align:left}.ngx\:text-4xl{font-size:var(--ngx-text-4xl);line-height:var(--tw-leading,var(--ngx-text-4xl--line-height))}.ngx\:text-sm{font-size:var(--ngx-text-sm);line-height:var(--tw-leading,var(--ngx-text-sm--line-height))}.ngx\:text-xs{font-size:var(--ngx-text-xs);line-height:var(--tw-leading,var(--ngx-text-xs--line-height))}.ngx\:font-bold{--tw-font-weight:var(--ngx-font-weight-bold);font-weight:var(--ngx-font-weight-bold)}.ngx\:font-medium{--tw-font-weight:var(--ngx-font-weight-medium);font-weight:var(--ngx-font-weight-medium)}.ngx\:font-semibold{--tw-font-weight:var(--ngx-font-weight-semibold);font-weight:var(--ngx-font-weight-semibold)}.ngx\:text-\(--ngx-datepicker-accent-text-color\){color:var(--ngx-datepicker-accent-text-color)}.ngx\:text-inherit{color:inherit}.ngx\:text-slate-400{color:var(--ngx-color-slate-400)}.ngx\:text-slate-900{color:var(--ngx-color-slate-900)}.ngx\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ngx\:outline-0{outline-style:var(--tw-outline-style);outline-width:0}.ngx\:outline-none{--tw-outline-style:none;outline-style:none}.ngx\:text-shadow-slate-900{--tw-text-shadow-color:var(--ngx-color-slate-900)}@supports (color:color-mix(in lab, red, red)){.ngx\:text-shadow-slate-900{--tw-text-shadow-color:color-mix(in oklab,var(--ngx-color-slate-900)var(--tw-text-shadow-alpha),transparent)}}.ngx\:before\:absolute:before{content:var(--tw-content);position:absolute}.ngx\:before\:top-0:before{content:var(--tw-content);top:calc(var(--ngx-spacing)*0)}.ngx\:before\:left-0:before{content:var(--tw-content);left:calc(var(--ngx-spacing)*0)}.ngx\:before\:z-1:before{content:var(--tw-content);z-index:1}.ngx\:before\:block:before{content:var(--tw-content);display:block}.ngx\:before\:h-full:before{content:var(--tw-content);height:100%}.ngx\:before\:w-full:before{content:var(--tw-content);width:100%}.ngx\:before\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.ngx\:before\:border-2:before{content:var(--tw-content);border-style:var(--tw-border-style);border-width:2px}.ngx\:before\:border-\(--ngx-datepicker-accent-color\):before{content:var(--tw-content);border-color:var(--ngx-datepicker-accent-color)}.ngx\:before\:bg-\(--ngx-datepicker-accent-color\):before{content:var(--tw-content);background-color:var(--ngx-datepicker-accent-color)}.ngx\:focus-within\:shadow:focus-within{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ngx\:focus-within\:outline-2:focus-within{outline-style:var(--tw-outline-style);outline-width:2px}.ngx\:focus-within\:outline-\(--ngx-datepicker-outline-color\):focus-within{outline-color:var(--ngx-datepicker-outline-color)}@media (hover:hover){.ngx\:hover\:bg-slate-100:hover{background-color:var(--ngx-color-slate-100)}.ngx\:hover\:bg-slate-200:hover{background-color:var(--ngx-color-slate-200)}}.ngx\:focus\:bg-slate-100:focus{background-color:var(--ngx-color-slate-100)}.ngx\:focus\:bg-slate-200:focus{background-color:var(--ngx-color-slate-200)}.ngx\:\[\&\:\:-webkit-calendar-picker-indicator\]\:hidden::-webkit-calendar-picker-indicator{display:none}}.gh-dark-code{color:#c9d1d9;background:#0d1117;border:1px solid #30363d;border-radius:8px;padding:16px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.5;display:block;overflow-x:auto}.gh-dark-code pre{flex-direction:column;gap:6px;margin:0;display:flex}.gh-dark-code span{color:#79c0ff}.gh-dark-code strong{color:#ffa657;font-weight:600}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Montserrat Alternates,serif}:root{--ngx-datepicker-outline-color:oklch(54.6% .245 262.881);--ngx-datepicker-accent-color:oklch(54.6% .245 262.881);--ngx-datepicker-accent-text-color:#fff;--ngx-datepicker-range-color:oklch(88.2% .059 254.128)}input[type=date]::-webkit-calendar-picker-indicator{margin:0;padding:0}input[type=date]{appearance:none;min-width:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-text-shadow-color{syntax:"*";inherits:false}@property --tw-text-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-content{syntax:"*";inherits:false;initial-value:""}