ngx-kit 6.0.2 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +3 -3
  2. package/angle-selector/README.md +34 -34
  3. package/box-shadow/README.md +33 -33
  4. package/color-picker/README.md +49 -49
  5. package/data-table/README.md +113 -113
  6. package/date-picker/README.md +69 -69
  7. package/dialog/README.md +92 -92
  8. package/drawer-menu/README.md +77 -77
  9. package/dropzone/README.md +422 -60
  10. package/fesm2022/ngx-kit-angle-selector.mjs +2 -2
  11. package/fesm2022/ngx-kit-angle-selector.mjs.map +1 -1
  12. package/fesm2022/ngx-kit-box-shadow.mjs +2 -2
  13. package/fesm2022/ngx-kit-box-shadow.mjs.map +1 -1
  14. package/fesm2022/ngx-kit-color-picker.mjs +4 -4
  15. package/fesm2022/ngx-kit-color-picker.mjs.map +1 -1
  16. package/fesm2022/ngx-kit-data-table.mjs +2 -2
  17. package/fesm2022/ngx-kit-data-table.mjs.map +1 -1
  18. package/fesm2022/ngx-kit-date-picker.mjs +1322 -200
  19. package/fesm2022/ngx-kit-date-picker.mjs.map +1 -1
  20. package/fesm2022/ngx-kit-dialog.mjs +2 -2
  21. package/fesm2022/ngx-kit-dialog.mjs.map +1 -1
  22. package/fesm2022/ngx-kit-drawer-menu.mjs +2 -2
  23. package/fesm2022/ngx-kit-drawer-menu.mjs.map +1 -1
  24. package/fesm2022/ngx-kit-dropzone.mjs +273 -28
  25. package/fesm2022/ngx-kit-dropzone.mjs.map +1 -1
  26. package/fesm2022/ngx-kit-form-field.mjs.map +1 -1
  27. package/fesm2022/ngx-kit-gallery.mjs +2 -2
  28. package/fesm2022/ngx-kit-gallery.mjs.map +1 -1
  29. package/fesm2022/ngx-kit-gradient-picker.mjs.map +1 -1
  30. package/fesm2022/ngx-kit-image-editor.mjs +101 -14
  31. package/fesm2022/ngx-kit-image-editor.mjs.map +1 -1
  32. package/fesm2022/ngx-kit-menu.mjs +8 -8
  33. package/fesm2022/ngx-kit-menu.mjs.map +1 -1
  34. package/fesm2022/ngx-kit-message.mjs +5 -0
  35. package/fesm2022/ngx-kit-message.mjs.map +1 -1
  36. package/fesm2022/ngx-kit-notify.mjs.map +1 -1
  37. package/fesm2022/ngx-kit-shared.mjs +2 -2
  38. package/fesm2022/ngx-kit-shared.mjs.map +1 -1
  39. package/fesm2022/ngx-kit-time-picker.mjs +2 -2
  40. package/fesm2022/ngx-kit-time-picker.mjs.map +1 -1
  41. package/gallery/README.md +71 -71
  42. package/gradient-picker/README.md +41 -41
  43. package/menu/README.md +85 -85
  44. package/message/README.md +70 -70
  45. package/notify/README.md +58 -58
  46. package/package.json +1 -1
  47. package/shared/README.md +117 -117
  48. package/time-picker/README.md +95 -95
  49. package/types/ngx-kit-date-picker.d.ts +302 -36
  50. package/types/ngx-kit-dropzone.d.ts +129 -18
  51. package/types/ngx-kit-image-editor.d.ts +50 -5
@@ -1,95 +1,95 @@
1
- # ngx-kit/time-picker
2
-
3
- An analog clock time picker (MUI-style), usable either inline or as a popup attached to a text input, with 12h/24h format support and a configurable minute step.
4
-
5
- ## Install
6
-
7
- ```bash
8
- npm install ngx-kit
9
- ```
10
-
11
- ## Setup (optional)
12
-
13
- ```ts
14
- // app.config.ts
15
- import { provideTimePicker } from 'ngx-kit/time-picker';
16
-
17
- export const appConfig: ApplicationConfig = {
18
- providers: [
19
- provideTimePicker({
20
- format: '24',
21
- minuteStep: 5,
22
- confirmButtonText: 'Done',
23
- }),
24
- ],
25
- };
26
- ```
27
-
28
- `provideTimePicker` only needs the fields you want to override — everything else falls back to the defaults (`confirmButtonText: 'Ok'`, `cancelButtonText: 'Cancel'`, `amText: 'AM'`, `pmText: 'PM'`, `format: '12'`, `minuteStep: 1`, `autoSwitchToMinute: true`).
29
-
30
- ## Usage — popup attached to an input
31
-
32
- ```html
33
- <input
34
- type="text"
35
- formControlName="time"
36
- ngxInputTimePicker
37
- #dp="ngxInputTimePicker"
38
- />
39
- <button (click)="dp.toggle()">Open</button>
40
- ```
41
-
42
- `[ngxInputTimePicker]` is a full `ControlValueAccessor` + `Validator`, so it works with `ngModel`/`formControl`/`formControlName`. The value is always a string in `HH:MM` (24h) form, e.g. `'14:35'`.
43
-
44
- If the typed text isn't a valid time, the control gets a `{ invalid: true }` error (in addition to whatever built-in validators like `Validators.required` you add yourself):
45
-
46
- ```html
47
- @if (form.get('time')?.hasError('invalid')) {
48
- <div class="text-danger">Invalid time</div>
49
- }
50
- @if (form.get('time')?.hasError('required')) {
51
- <div class="text-danger">Time is required</div>
52
- }
53
- ```
54
-
55
- ## Usage — inline (always visible)
56
-
57
- ```html
58
- <ngx-time-picker format="24" [(value)]="time" (change)="onTimeChange($event)"></ngx-time-picker>
59
- ```
60
-
61
- ## API
62
-
63
- ### `[ngxInputTimePicker]`
64
-
65
- | Input | Type | Default | Description |
66
- | --- | --- | --- | --- |
67
- | `openOnCLick` | `boolean` | `true` | Open the popup when the input itself is clicked |
68
- | `format` | `'12' \| '24'` | from config | |
69
-
70
- | Output | Type | Description |
71
- | --- | --- | --- |
72
- | `change` | `EventEmitter<string \| null>` | Emitted when the user confirms a time |
73
-
74
- | Member | Description |
75
- | --- | --- |
76
- | `toggle()` | Opens the popup if closed, closes it if open |
77
-
78
- ### `<ngx-time-picker>`
79
-
80
- | Input | Type | Default | Description |
81
- | --- | --- | --- | --- |
82
- | `value` (model, two-way) | `string` | `'12:00'` | Bind with `[(value)]` |
83
- | `format` | `'12' \| '24'` | from config | |
84
- | `minuteStep` | `number` | from config | |
85
- | `disabled` | `boolean` | `false` | |
86
- | `autoSwitchToMinute` | `boolean` | from config | Switch to minute-selection mode right after picking the hour |
87
-
88
- | Output | Type | Description |
89
- | --- | --- | --- |
90
- | `change` | `EventEmitter<string \| null>` | Emitted when "OK" is pressed |
91
- | `cancel` | `EventEmitter<void>` | Emitted when "Cancel" is pressed |
92
-
93
- ## Dark mode and RTL
94
-
95
- Supported automatically.
1
+ # ngx-kit/time-picker
2
+
3
+ An analog clock time picker (MUI-style), usable either inline or as a popup attached to a text input, with 12h/24h format support and a configurable minute step.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install ngx-kit
9
+ ```
10
+
11
+ ## Setup (optional)
12
+
13
+ ```ts
14
+ // app.config.ts
15
+ import { provideTimePicker } from 'ngx-kit/time-picker';
16
+
17
+ export const appConfig: ApplicationConfig = {
18
+ providers: [
19
+ provideTimePicker({
20
+ format: '24',
21
+ minuteStep: 5,
22
+ confirmButtonText: 'Done',
23
+ }),
24
+ ],
25
+ };
26
+ ```
27
+
28
+ `provideTimePicker` only needs the fields you want to override — everything else falls back to the defaults (`confirmButtonText: 'Ok'`, `cancelButtonText: 'Cancel'`, `amText: 'AM'`, `pmText: 'PM'`, `format: '12'`, `minuteStep: 1`, `autoSwitchToMinute: true`).
29
+
30
+ ## Usage — popup attached to an input
31
+
32
+ ```html
33
+ <input
34
+ type="text"
35
+ formControlName="time"
36
+ ngxInputTimePicker
37
+ #dp="ngxInputTimePicker"
38
+ />
39
+ <button (click)="dp.toggle()">Open</button>
40
+ ```
41
+
42
+ `[ngxInputTimePicker]` is a full `ControlValueAccessor` + `Validator`, so it works with `ngModel`/`formControl`/`formControlName`. The value is always a string in `HH:MM` (24h) form, e.g. `'14:35'`.
43
+
44
+ If the typed text isn't a valid time, the control gets a `{ invalid: true }` error (in addition to whatever built-in validators like `Validators.required` you add yourself):
45
+
46
+ ```html
47
+ @if (form.get('time')?.hasError('invalid')) {
48
+ <div class="text-danger">Invalid time</div>
49
+ }
50
+ @if (form.get('time')?.hasError('required')) {
51
+ <div class="text-danger">Time is required</div>
52
+ }
53
+ ```
54
+
55
+ ## Usage — inline (always visible)
56
+
57
+ ```html
58
+ <ngx-time-picker format="24" [(value)]="time" (change)="onTimeChange($event)"></ngx-time-picker>
59
+ ```
60
+
61
+ ## API
62
+
63
+ ### `[ngxInputTimePicker]`
64
+
65
+ | Input | Type | Default | Description |
66
+ | --- | --- | --- | --- |
67
+ | `openOnCLick` | `boolean` | `true` | Open the popup when the input itself is clicked |
68
+ | `format` | `'12' \| '24'` | from config | |
69
+
70
+ | Output | Type | Description |
71
+ | --- | --- | --- |
72
+ | `change` | `EventEmitter<string \| null>` | Emitted when the user confirms a time |
73
+
74
+ | Member | Description |
75
+ | --- | --- |
76
+ | `toggle()` | Opens the popup if closed, closes it if open |
77
+
78
+ ### `<ngx-time-picker>`
79
+
80
+ | Input | Type | Default | Description |
81
+ | --- | --- | --- | --- |
82
+ | `value` (model, two-way) | `string` | `'12:00'` | Bind with `[(value)]` |
83
+ | `format` | `'12' \| '24'` | from config | |
84
+ | `minuteStep` | `number` | from config | |
85
+ | `disabled` | `boolean` | `false` | |
86
+ | `autoSwitchToMinute` | `boolean` | from config | Switch to minute-selection mode right after picking the hour |
87
+
88
+ | Output | Type | Description |
89
+ | --- | --- | --- |
90
+ | `change` | `EventEmitter<string \| null>` | Emitted when "OK" is pressed |
91
+ | `cancel` | `EventEmitter<void>` | Emitted when "Cancel" is pressed |
92
+
93
+ ## Dark mode and RTL
94
+
95
+ Supported automatically.
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { TemplateRef, InjectionToken, Type, EventEmitter, ElementRef, OnInit, AfterViewInit, Provider } from '@angular/core';
2
+ import { TemplateRef, InjectionToken, Type, EventEmitter, ElementRef, OnInit, Provider, ViewContainerRef, Renderer2 } from '@angular/core';
3
3
  import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
4
4
  import * as ngx_kit_date_picker from 'ngx-kit/date-picker';
5
- import { BrowserService } from 'ngx-kit/shared';
5
+ import { OverlayService } from 'ngx-kit/shared';
6
6
 
7
7
  declare class NgxDatePickerConfig {
8
8
  previousButtonTemplate?: TemplateRef<any>;
@@ -10,8 +10,6 @@ declare class NgxDatePickerConfig {
10
10
  caretDownIconTemplate?: TemplateRef<any>;
11
11
  todayButton: boolean;
12
12
  clearButton: boolean;
13
- clearButtonText: string;
14
- todayButtonText: string;
15
13
  }
16
14
 
17
15
  declare type DatePickerView = 'year' | 'month' | 'day';
@@ -35,7 +33,13 @@ interface IDateAdapter {
35
33
  get narrowDays(): string[];
36
34
  get shortDays(): string[];
37
35
  get longDays(): string[];
36
+ /** Display index used by existing month-grid APIs. */
38
37
  startOfWeek: number;
38
+ /** Native JavaScript weekday (0=Sunday ... 6=Saturday) where a week starts. */
39
+ weekStartDay: number;
40
+ /** Returns the real Gregorian Date at the start/end of the locale week. */
41
+ getStartOfWeek(date: Date): Date;
42
+ getEndOfWeek(date: Date): Date;
39
43
  /** convert js date to locale */
40
44
  toLocale(date: Date): CalendarDate;
41
45
  /** get today of localy */
@@ -92,7 +96,6 @@ declare class DateAdapterRegistry {
92
96
  declare class NgxInputDatePicker implements ControlValueAccessor, Validator {
93
97
  private el;
94
98
  protected readonly dateAdapterRegistry: DateAdapterRegistry;
95
- theme: 'light' | 'dark' | 'auto';
96
99
  openOnCLick: i0.InputSignal<boolean>;
97
100
  change: EventEmitter<Date>;
98
101
  private value?;
@@ -137,13 +140,34 @@ declare class NgxInputDatePicker implements ControlValueAccessor, Validator {
137
140
  /** Formats a value and sets it on the input element. */
138
141
  protected _formatValue(value: Date | null, setChange?: boolean): void;
139
142
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxInputDatePicker, never>;
140
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgxInputDatePicker, "[ngxInputDatePicker]", ["ngxInputDatePicker"], { "theme": { "alias": "theme"; "required": false; }; "openOnCLick": { "alias": "openOnCLick"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; }; "displayFormat": { "alias": "displayFormat"; "required": false; }; "setMin": { "alias": "min"; "required": false; }; "setMax": { "alias": "max"; "required": false; }; "setConfig": { "alias": "config"; "required": false; }; }, { "change": "change"; }, never, never, true, never>;
143
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgxInputDatePicker, "[ngxInputDatePicker]", ["ngxInputDatePicker"], { "openOnCLick": { "alias": "openOnCLick"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; }; "displayFormat": { "alias": "displayFormat"; "required": false; }; "setMin": { "alias": "min"; "required": false; }; "setMax": { "alias": "max"; "required": false; }; "setConfig": { "alias": "config"; "required": false; }; }, { "change": "change"; }, never, never, true, never>;
141
144
  }
142
145
 
143
- declare class MsEvents<DateInput = Date> {
146
+ /**
147
+ * Calendar event model.
148
+ *
149
+ * `end` is inclusive for day based calendar rendering.
150
+ * `color` is used as the event accent color and can be overridden by
151
+ * `backgroundColor`, `borderColor` and `textColor`.
152
+ */
153
+ interface MsEvents<DateInput = Date> {
154
+ id?: string | number;
144
155
  title?: string;
145
156
  start: DateInput;
146
157
  end?: DateInput;
158
+ allDay?: boolean;
159
+ color?: string;
160
+ backgroundColor?: string;
161
+ borderColor?: string;
162
+ textColor?: string;
163
+ className?: string | string[];
164
+ data?: unknown;
165
+ }
166
+ interface MsEventViewer<DateInput = Date> extends MsEvents<DateInput> {
167
+ continuesBefore?: boolean;
168
+ continuesAfter?: boolean;
169
+ isStart?: boolean;
170
+ isEnd?: boolean;
147
171
  }
148
172
 
149
173
  declare class DateModel<InputDate = Date> {
@@ -161,13 +185,45 @@ declare class DateViewMonth extends DateModel {
161
185
  }
162
186
  declare class DateViewDay extends DateModel {
163
187
  day: number;
164
- events?: MsEvents[];
188
+ events?: MsEventViewer[];
189
+ inRange?: boolean;
190
+ rangeStart?: boolean;
191
+ rangeEnd?: boolean;
192
+ inRangePreview?: boolean;
165
193
  }
166
194
  declare class DateViewWeek extends DateModel {
167
195
  time: number;
168
196
  weeks: string[];
169
197
  displayTime: string;
170
198
  }
199
+ interface CalendarMonthEventSegment extends MsEventViewer {
200
+ start: Date;
201
+ end: Date;
202
+ row: number;
203
+ startColumn: number;
204
+ endColumn: number;
205
+ lane: number;
206
+ continuesBefore: boolean;
207
+ continuesAfter: boolean;
208
+ isStart: boolean;
209
+ isEnd: boolean;
210
+ }
211
+ interface CalendarDayColumn {
212
+ date: Date;
213
+ label: string;
214
+ dayNumber: string;
215
+ isToday: boolean;
216
+ events: CalendarTimedEvent[];
217
+ }
218
+ interface CalendarTimedEvent extends MsEventViewer {
219
+ start: Date;
220
+ end: Date;
221
+ top: number;
222
+ height: number;
223
+ allDay: boolean;
224
+ column: number;
225
+ columnCount: number;
226
+ }
171
227
 
172
228
  declare abstract class NgxDatePickerBase {
173
229
  protected _locale: string;
@@ -185,16 +241,30 @@ declare abstract class NgxDatePickerBase {
185
241
  displayMonth: string;
186
242
  minDate: Date | null;
187
243
  maxDate: Date | null;
188
- renderCalendar(view: CalendarView | DatePickerView, selected?: CalendarDate, events?: MsEvents[], callback?: Function): void;
244
+ renderCalendar(view: CalendarView, selected?: CalendarDate, events?: MsEvents[], callback?: Function): void;
245
+ renderِDatePicker(view: DatePickerView, selected?: CalendarDate, events?: MsEvents[], callback?: Function): void;
189
246
  renderYear(): void;
190
247
  renderMonth(): void;
191
- /** only in calendar view */
192
- renderWeek(): void;
193
- renderDay(selected?: CalendarDate, _events?: MsEvents[]): void;
248
+ renderWeek(anchorDate?: Date): void;
249
+ /** Returns the seven real dates belonging to the locale's week. */
250
+ getWeekDates(anchor: Date): Date[];
251
+ getEventsForDate(date: Date, events?: MsEvents[]): MsEventViewer[];
252
+ protected normalizeEvent(event: MsEvents): {
253
+ event: MsEvents;
254
+ start: Date;
255
+ end: Date;
256
+ };
257
+ /**
258
+ * Renders a 6-row month grid and attaches events to every visible day.
259
+ *
260
+ * The event list is normalized to MsEventViewer so the template can draw
261
+ * continuation edges similar to FullCalendar's month view.
262
+ */
263
+ renderDay(selected?: CalendarDate, events?: MsEvents[]): void;
194
264
  checkActiveDate(date: Date): boolean;
195
265
  checkActiveMonth(year: number, month: number): boolean;
196
266
  checkActiveYear(year: number): boolean;
197
- private getEvents;
267
+ protected getEvents(date: Date, events?: MsEvents[]): MsEventViewer[];
198
268
  }
199
269
 
200
270
  interface ISelectedEvent {
@@ -202,48 +272,139 @@ interface ISelectedEvent {
202
272
  event: MsEvents;
203
273
  }
204
274
 
205
- declare class NgxCalendarComponent extends NgxDatePickerBase implements OnInit, AfterViewInit {
206
- protected readonly browserService: BrowserService;
207
- theme: 'light' | 'dark';
208
- set setTheme(val: 'light' | 'dark' | 'auto');
275
+ type CalendarEventInteractionType = 'move' | 'resize-start' | 'resize-end';
276
+ interface CalendarEventChange {
277
+ event: MsEvents;
278
+ previousEvent: MsEvents;
279
+ interaction: CalendarEventInteractionType;
280
+ deltaDays: number;
281
+ deltaMinutes: number;
282
+ }
283
+
284
+ declare class NgxCalendarLocalization {
285
+ clear: string;
286
+ today: string;
287
+ /** Range picker labels. */
288
+ rangeStart: string;
289
+ rangeEnd: string;
290
+ day: string;
291
+ month: string;
292
+ week: string;
293
+ year: string;
294
+ event: string;
295
+ }
296
+
297
+ interface EventInteractionState {
298
+ type: CalendarEventInteractionType;
299
+ source: MsEvents;
300
+ previousEvent: MsEvents;
301
+ pointerId: number;
302
+ startX: number;
303
+ startY: number;
304
+ originColumn: number;
305
+ originRow: number;
306
+ preview: MsEvents;
307
+ deltaDays: number;
308
+ deltaMinutes: number;
309
+ active: boolean;
310
+ surface: 'month' | 'timed' | 'all-day';
311
+ }
312
+ declare class NgxCalendarComponent extends NgxDatePickerBase implements OnInit {
313
+ defaultLocalization: NgxCalendarLocalization;
314
+ localize: i0.InputSignal<NgxCalendarLocalization>;
209
315
  _config: NgxDatePickerConfig;
210
316
  set config(val: NgxDatePickerConfig);
211
317
  set locale(val: string);
212
- /** The minimum valid date. */
213
318
  set setMin(value: Date | null | undefined);
214
- /** The maximum valid date. */
215
319
  set setMax(value: Date | null | undefined);
216
320
  view: CalendarView;
217
- _events: MsEvents[];
321
+ private _events;
218
322
  set events(val: MsEvents[]);
323
+ get events(): MsEvents[];
219
324
  dateChange: EventEmitter<DateViewDay>;
220
325
  selectEvent: EventEmitter<ISelectedEvent>;
221
- defaultHeight: number;
222
- minHeight: number;
326
+ eventChange: EventEmitter<CalendarEventChange>;
327
+ eventsChange: EventEmitter<MsEvents<Date>[]>;
223
328
  selected?: Date;
329
+ anchorDate: Date;
330
+ eventViewItems: {
331
+ event: MsEventViewer;
332
+ start: Date;
333
+ end: Date;
334
+ }[];
335
+ monthEventSegments: CalendarMonthEventSegment[];
336
+ monthEventRows: CalendarMonthEventSegment[][];
337
+ weekDays: CalendarDayColumn[];
338
+ allDayByColumn: CalendarTimedEvent[][];
339
+ timeSlots: number[];
340
+ readonly hourHeight = 64;
341
+ readonly timeColumnWidth = 64;
224
342
  calendarWrapper: i0.Signal<ElementRef<HTMLElement> | undefined>;
343
+ protected interaction: EventInteractionState | null;
225
344
  constructor();
226
345
  ngOnInit(): void;
227
- ngAfterViewInit(): void;
228
- onResize(ev: Event): void;
346
+ onResize(): void;
347
+ onDocumentPointerMove(event: PointerEvent): void;
348
+ onDocumentPointerUp(event: PointerEvent): void;
349
+ onDocumentPointerCancel(event: PointerEvent): void;
229
350
  calcCellSize(): void;
230
351
  renderCalendar(view: CalendarView): void;
352
+ private get renderEvents();
353
+ private syncAnchorToLocale;
354
+ private renderTimedView;
355
+ /**
356
+ * Builds a collision layout per overlap cluster. Each cluster gets its own
357
+ * column count, which prevents a short 09:00 event from being unnecessarily
358
+ * squeezed because another event overlaps at 15:00.
359
+ */
360
+ private buildTimedEventsForDay;
361
+ private buildAllDayEventsForDay;
362
+ /** Creates FullCalendar-style horizontal segments for the six visible month rows. */
363
+ private buildMonthEventSegments;
364
+ private dayIndexInMonthGrid;
365
+ private normalizedEvents;
366
+ private renderEventSources;
367
+ private renderEventView;
368
+ get headerText(): string;
369
+ formatDateRange(start: Date, end: Date): string;
370
+ formatEventDate(date: Date): string;
371
+ formatTime(minutes: number): string;
231
372
  changeView(v: CalendarView): void;
232
373
  gotoToday(): void;
233
374
  selectDay(ev: Event, item: DateViewDay): void;
234
- selectMonth(ev: Event, item: DateViewMonth): void;
235
- selectYear(ev: Event, item: DateViewYear): void;
236
375
  next(): void;
237
376
  previous(): void;
238
- onclickEvent(item: DateViewDay, event: MsEvents): void;
377
+ private navigate;
378
+ onclickEvent(ev: Event, item: DateViewDay, event: MsEvents): void;
379
+ onTimedEventClick(ev: Event, event: MsEvents, date: Date): void;
380
+ startMonthEventInteraction(ev: PointerEvent, segment: CalendarMonthEventSegment, type?: CalendarEventInteractionType): void;
381
+ startTimedEventInteraction(ev: PointerEvent, event: CalendarTimedEvent, type?: CalendarEventInteractionType): void;
382
+ private beginInteraction;
383
+ private updateEventInteraction;
384
+ private finishEventInteraction;
385
+ private cancelEventInteraction;
386
+ private monthPointerDelta;
387
+ private allDayPointerDelta;
388
+ private timedPointerDelta;
389
+ private columnAtPoint;
390
+ private snapMinutes;
391
+ private applyEventDelta;
392
+ private addDays;
393
+ private addMinutes;
394
+ private isWithinBounds;
395
+ private sameEvent;
396
+ private sameEventValue;
397
+ private startOfDay;
398
+ private endOfDay;
399
+ private readonly defaultHeight;
400
+ minHeight: number;
239
401
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxCalendarComponent, never>;
240
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxCalendarComponent, "ngx-calendar", never, { "setTheme": { "alias": "theme"; "required": false; }; "config": { "alias": "config"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "setMin": { "alias": "min"; "required": false; }; "setMax": { "alias": "max"; "required": false; }; "view": { "alias": "view"; "required": false; }; "events": { "alias": "events"; "required": false; }; }, { "dateChange": "dateChange"; "selectEvent": "selectEvent"; }, never, never, true, never>;
402
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxCalendarComponent, "ngx-calendar", never, { "localize": { "alias": "localize"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "setMin": { "alias": "min"; "required": false; }; "setMax": { "alias": "max"; "required": false; }; "view": { "alias": "view"; "required": false; }; "events": { "alias": "events"; "required": false; }; }, { "dateChange": "dateChange"; "selectEvent": "selectEvent"; "eventChange": "eventChange"; "eventsChange": "eventsChange"; }, never, never, true, never>;
241
403
  }
242
404
 
243
405
  declare class NgxInputDatePickerComponent extends NgxDatePickerBase implements ControlValueAccessor, Validator, OnInit {
244
- protected readonly browserService: BrowserService;
245
- theme: 'light' | 'dark';
246
- set setTheme(val: 'light' | 'dark' | 'auto');
406
+ defaultLocalization: NgxCalendarLocalization;
407
+ localize: i0.InputSignal<NgxCalendarLocalization>;
247
408
  config: NgxDatePickerConfig;
248
409
  set setConfig(val: NgxDatePickerConfig);
249
410
  set locale(val: string);
@@ -253,7 +414,6 @@ declare class NgxInputDatePickerComponent extends NgxDatePickerBase implements C
253
414
  set setMax(value: Date | null | undefined);
254
415
  view: DatePickerView;
255
416
  change: EventEmitter<Date | null>;
256
- wrapperWidth: number;
257
417
  selected?: CalendarDate;
258
418
  calendarHeader: string;
259
419
  isDisabled: boolean;
@@ -274,7 +434,7 @@ declare class NgxInputDatePickerComponent extends NgxDatePickerBase implements C
274
434
  registerOnTouched(fn: any): void;
275
435
  registerOnValidatorChange?(fn: () => void): void;
276
436
  setDisabledState(disabled: boolean): void;
277
- renderCalendar(view: 'year' | 'month' | 'day'): void;
437
+ renderِDatePicker(view: DatePickerView): void;
278
438
  gotoToday(): void;
279
439
  changeView(v: DatePickerView): void;
280
440
  next(): void;
@@ -285,10 +445,116 @@ declare class NgxInputDatePickerComponent extends NgxDatePickerBase implements C
285
445
  clear(): void;
286
446
  stopPagination(ev: Event): void;
287
447
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxInputDatePickerComponent, never>;
288
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxInputDatePickerComponent, "ngx-date-picker", never, { "setTheme": { "alias": "theme"; "required": false; }; "setConfig": { "alias": "config"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "setMin": { "alias": "min"; "required": false; }; "setMax": { "alias": "max"; "required": false; }; "view": { "alias": "view"; "required": false; }; }, { "change": "change"; }, never, never, true, never>;
448
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxInputDatePickerComponent, "ngx-date-picker", never, { "localize": { "alias": "localize"; "required": false; "isSignal": true; }; "setConfig": { "alias": "config"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "setMin": { "alias": "min"; "required": false; }; "setMax": { "alias": "max"; "required": false; }; "view": { "alias": "view"; "required": false; }; }, { "change": "change"; }, never, never, true, never>;
289
449
  }
290
450
 
291
451
  declare function provideDateAdapters(...additional: DateAdapterRegistration[]): Provider[];
292
452
 
293
- export { DATE_ADAPTERS, DEFAULT_DATE_ADAPTERS, NgxCalendarComponent, NgxDatePickerConfig, NgxInputDatePicker, NgxInputDatePickerComponent, getLocals, provideDateAdapters };
294
- export type { CalendarDate, DateAdapterRegistration, IDateAdapter };
453
+ /**
454
+ * A date range used by ngx-kit date range picker.
455
+ *
456
+ * `end` is null while the user is selecting the second date.
457
+ */
458
+ interface NgxDateRange<T = Date> {
459
+ start: T | null;
460
+ end: T | null;
461
+ }
462
+ declare function createDateRange<T = Date>(start?: T | null, end?: T | null): NgxDateRange<T>;
463
+
464
+ declare function normalizeDateRange(value: NgxDateRange<Date> | readonly [Date | null, Date | null] | null | undefined): NgxDateRange<Date>;
465
+ declare function isCompleteDateRange(range: NgxDateRange<Date>): boolean;
466
+ declare function isDateInRange(date: Date, range: NgxDateRange<Date>): boolean;
467
+ declare function isDateInPreviewRange(date: Date, start: Date | null, previewEnd: Date | null): boolean;
468
+
469
+ declare class NgxDateRangePickerComponent extends NgxDatePickerBase implements ControlValueAccessor, Validator, OnInit {
470
+ defaultLocalization: NgxCalendarLocalization;
471
+ localize: i0.InputSignal<NgxCalendarLocalization>;
472
+ config: NgxDatePickerConfig;
473
+ set locale(value: string);
474
+ set min(value: Date | null | undefined);
475
+ set max(value: Date | null | undefined);
476
+ view: DatePickerView;
477
+ rangeChange: EventEmitter<NgxDateRange<Date>>;
478
+ change: EventEmitter<NgxDateRange<Date>>;
479
+ range: NgxDateRange<Date>;
480
+ hoverDate: Date | null;
481
+ weekDays: {
482
+ min: string;
483
+ name: string;
484
+ }[];
485
+ calendarHeader: string;
486
+ protected _onChange: (_value: NgxDateRange<Date>) => void;
487
+ protected _onTouched: () => void;
488
+ protected _validatorOnChange: () => void;
489
+ isDisabled: boolean;
490
+ ngOnInit(): void;
491
+ updateConfig(value: NgxDatePickerConfig): void;
492
+ writeValue(value: NgxDateRange<Date> | readonly [Date | null, Date | null] | null): void;
493
+ registerOnChange(fn: (value: NgxDateRange<Date>) => void): void;
494
+ registerOnTouched(fn: () => void): void;
495
+ registerOnValidatorChange(fn: () => void): void;
496
+ setDisabledState(disabled: boolean): void;
497
+ validate(_control: AbstractControl): ValidationErrors | null;
498
+ renderِDatePicker(view: DatePickerView): void;
499
+ private init;
500
+ changeView(view: DatePickerView): void;
501
+ gotoToday(): void;
502
+ next(): void;
503
+ previous(): void;
504
+ selectDay(event: Event, item: DateViewDay): void;
505
+ selectMonth(event: Event, item: DateViewMonth): void;
506
+ selectYear(event: Event, item: DateViewYear): void;
507
+ onDayEnter(item: DateViewDay): void;
508
+ onDayLeave(): void;
509
+ clear(): void;
510
+ private applyRangeState;
511
+ private emitValue;
512
+ stopPagination(event: Event): void;
513
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxDateRangePickerComponent, never>;
514
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxDateRangePickerComponent, "ngx-date-range-picker", never, { "localize": { "alias": "localize"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "view": { "alias": "view"; "required": false; }; }, { "rangeChange": "rangeChange"; "change": "change"; }, never, never, true, never>;
515
+ }
516
+
517
+ declare class NgxInputDateRangePicker implements ControlValueAccessor, Validator {
518
+ private readonly el;
519
+ protected readonly dateAdapterRegistry: DateAdapterRegistry;
520
+ protected readonly overlayService: OverlayService;
521
+ protected readonly viewContainerRef: ViewContainerRef;
522
+ protected readonly renderer: Renderer2;
523
+ openOnClick: boolean;
524
+ displayFormat: string;
525
+ rangeSeparator: string;
526
+ private _locale;
527
+ set locale(value: string);
528
+ get locale(): string;
529
+ set setMin(value: Date | null | undefined);
530
+ set setMax(value: Date | null | undefined);
531
+ config: NgxDatePickerConfig;
532
+ change: EventEmitter<NgxDateRange<Date>>;
533
+ private min;
534
+ private max;
535
+ private value;
536
+ private pickerRef?;
537
+ private isDisabled;
538
+ private adapter;
539
+ private _onChange;
540
+ private _onTouched;
541
+ private _validatorOnChange;
542
+ constructor(el: ElementRef<HTMLInputElement>);
543
+ ngOnChanges(): void;
544
+ onClick(event: Event): void;
545
+ onBlur(): void;
546
+ writeValue(value: NgxDateRange<Date> | readonly [Date | null, Date | null] | null): void;
547
+ registerOnChange(fn: (value: NgxDateRange<Date>) => void): void;
548
+ registerOnTouched(fn: () => void): void;
549
+ registerOnValidatorChange(fn: () => void): void;
550
+ setDisabledState(disabled: boolean): void;
551
+ toggle(): void;
552
+ validate(_control: AbstractControl): ValidationErrors | null;
553
+ private formatValue;
554
+ private destroyDatePicker;
555
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxInputDateRangePicker, never>;
556
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgxInputDateRangePicker, "input[ngxInputDateRangePicker]", ["ngxInputDateRangePicker"], { "openOnClick": { "alias": "openOnClick"; "required": false; }; "displayFormat": { "alias": "displayFormat"; "required": false; }; "rangeSeparator": { "alias": "rangeSeparator"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "setMin": { "alias": "min"; "required": false; }; "setMax": { "alias": "max"; "required": false; }; "config": { "alias": "config"; "required": false; }; }, { "change": "change"; }, never, never, true, never>;
557
+ }
558
+
559
+ export { DATE_ADAPTERS, DEFAULT_DATE_ADAPTERS, DateModel, DateViewDay, DateViewMonth, DateViewWeek, DateViewYear, NgxCalendarComponent, NgxDatePickerConfig, NgxDateRangePickerComponent, NgxInputDatePicker, NgxInputDatePickerComponent, NgxInputDateRangePicker, createDateRange, getLocals, isCompleteDateRange, isDateInPreviewRange, isDateInRange, normalizeDateRange, provideDateAdapters };
560
+ export type { CalendarDate, CalendarDayColumn, CalendarEventChange, CalendarEventInteractionType, CalendarMonthEventSegment, CalendarTimedEvent, DateAdapterRegistration, IDateAdapter, MsEventViewer, MsEvents, NgxDateRange };