@tzslot/angular 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@tzslot/angular",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "description": "Angular components for DST-safe date and time selection: signals, forms, no design system.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "dependencies": {
8
- "@tzslot/core": "^1.1.0",
9
- "@tzslot/dom": "^1.1.0",
8
+ "@tzslot/core": "^1.3.0",
9
+ "@tzslot/dom": "^1.3.0",
10
10
  "tslib": "^2.3.0"
11
11
  },
12
12
  "peerDependencies": {
@@ -2,9 +2,16 @@ import * as temporal_spec from 'temporal-spec';
2
2
  import * as _angular_core from '@angular/core';
3
3
  import { InjectionToken, AfterViewInit, OnDestroy } from '@angular/core';
4
4
  import { ControlValueAccessor } from '@angular/forms';
5
- import { ValueShape, Slot, Weekday, Instant, PlainDate, DateLike, DurationLike, ShiftOption, InstantLike, PresetName, PlainTime, ShiftStep, DailyWindowsSummary } from '@tzslot/core';
6
- import { SlotChoice, TzslotMessages, CalendarView, RenderCell, CalendarButton, YearMonth, FieldMode, TimeLayout, RangeFieldValue, RangePreset, DateRangeValue, DateTimeRangeValue, DailyRangeValue } from '@tzslot/dom';
5
+ import { TzslotMessages, SlotChoice, CalendarView, RenderCell, CalendarButton, YearMonth, FieldMode, TimeLayout, RangeFieldValue, RangePreset, DateRangeValue, DateTimeRangeValue, DailyRangeValue } from '@tzslot/dom';
7
6
  export { CalendarButton, CalendarView, CellRender, DailyRangeValue, DateRangeValue, DateTimeRangeValue, DayCellInfo, EN, FR, FieldMode, RangeFieldValue, RangePreset, RenderCell, SlotChoice, TimeLayout, TzslotMessages } from '@tzslot/dom';
7
+ import { ValueShape, Slot, Weekday, Instant, PlainDate, DateLike, DurationLike, ShiftOption, InstantLike, PresetName, PlainTime, ShiftStep, DailyWindowsSummary } from '@tzslot/core';
8
+
9
+ declare const TZSLOT_MESSAGES: InjectionToken<TzslotMessages>;
10
+ /** `providers: [provideTzslotMessages(FR)]` */
11
+ declare function provideTzslotMessages(messages: TzslotMessages): {
12
+ provide: InjectionToken<TzslotMessages>;
13
+ useValue: TzslotMessages;
14
+ };
8
15
 
9
16
  /**
10
17
  * `<tz-time-slots>` — the slot list from @tzslot/dom, spoken in Angular.
@@ -46,7 +53,17 @@ declare class TimeSlotPicker implements ControlValueAccessor {
46
53
  /** The rows listed, one per selectable moment: an ambiguous time gives two. */
47
54
  readonly choices: _angular_core.Signal<SlotChoice[]>;
48
55
  protected readonly formDisabled: _angular_core.WritableSignal<boolean>;
49
- private readonly messages;
56
+ /**
57
+ * The words the widget says itself — not the month names, which come from
58
+ * `locale`.
59
+ *
60
+ * An application speaks one language, so the usual place to say it once is
61
+ * `provideTzslotMessages(FR)` or `provideTzslot({ messages: FR })`, and that
62
+ * is what this falls back to. Written on the tag it wins, which is what a
63
+ * screen switching language while it runs needs: an injected value is read
64
+ * once and never changes again.
65
+ */
66
+ readonly messages: _angular_core.InputSignal<TzslotMessages>;
50
67
  private readonly settings;
51
68
  /**
52
69
  * Created empty: `date` and `timeZone` are required inputs, which cannot be
@@ -64,16 +81,9 @@ declare class TimeSlotPicker implements ControlValueAccessor {
64
81
  registerOnTouched(fn: () => void): void;
65
82
  setDisabledState(isDisabled: boolean): void;
66
83
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimeSlotPicker, never>;
67
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimeSlotPicker, "tz-time-slots", never, { "valueAs": { "alias": "valueAs"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": true; "isSignal": true; }; "timeZone": { "alias": "timeZone"; "required": false; "isSignal": true; }; "stepMinutes": { "alias": "stepMinutes"; "required": false; "isSignal": true; }; "minTime": { "alias": "minTime"; "required": false; "isSignal": true; }; "maxTime": { "alias": "maxTime"; "required": false; "isSignal": true; }; "isDisabled": { "alias": "isDisabled"; "required": false; "isSignal": true; }; "skipNonExistent": { "alias": "skipNonExistent"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "missingLabel": { "alias": "missingLabel"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
84
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimeSlotPicker, "tz-time-slots", never, { "valueAs": { "alias": "valueAs"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": true; "isSignal": true; }; "timeZone": { "alias": "timeZone"; "required": false; "isSignal": true; }; "stepMinutes": { "alias": "stepMinutes"; "required": false; "isSignal": true; }; "minTime": { "alias": "minTime"; "required": false; "isSignal": true; }; "maxTime": { "alias": "maxTime"; "required": false; "isSignal": true; }; "isDisabled": { "alias": "isDisabled"; "required": false; "isSignal": true; }; "skipNonExistent": { "alias": "skipNonExistent"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "missingLabel": { "alias": "missingLabel"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
68
85
  }
69
86
 
70
- declare const TZSLOT_MESSAGES: InjectionToken<TzslotMessages>;
71
- /** `providers: [provideTzslotMessages(FR)]` */
72
- declare function provideTzslotMessages(messages: TzslotMessages): {
73
- provide: InjectionToken<TzslotMessages>;
74
- useValue: TzslotMessages;
75
- };
76
-
77
87
  /**
78
88
  * The conventions an application settles once.
79
89
  *
@@ -191,7 +201,17 @@ declare class Calendar implements ControlValueAccessor, AfterViewInit, OnDestroy
191
201
  /** Buttons under the grid: `['today', 'clear']`. None by default. */
192
202
  readonly buttons: _angular_core.InputSignal<readonly CalendarButton[]>;
193
203
  private readonly host;
194
- private readonly messages;
204
+ /**
205
+ * The words the widget says itself — not the month names, which come from
206
+ * `locale`.
207
+ *
208
+ * An application speaks one language, so the usual place to say it once is
209
+ * `provideTzslotMessages(FR)` or `provideTzslot({ messages: FR })`, and that
210
+ * is what this falls back to. Written on the tag it wins, which is what a
211
+ * screen switching language while it runs needs: an injected value is read
212
+ * once and never changes again.
213
+ */
214
+ readonly messages: _angular_core.InputSignal<TzslotMessages>;
195
215
  private readonly prevSlot;
196
216
  private readonly nextSlot;
197
217
  protected readonly formDisabled: _angular_core.WritableSignal<boolean>;
@@ -219,7 +239,7 @@ declare class Calendar implements ControlValueAccessor, AfterViewInit, OnDestroy
219
239
  registerOnTouched(fn: () => void): void;
220
240
  setDisabledState(isDisabled: boolean): void;
221
241
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Calendar, never>;
222
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Calendar, "tz-calendar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "valueAs": { "alias": "valueAs"; "required": false; "isSignal": true; }; "valueTimeZone": { "alias": "valueTimeZone"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "minView": { "alias": "minView"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "view": "viewChange"; }, never, ["[tzPrev]", "[tzNext]"], true, never>;
242
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Calendar, "tz-calendar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "valueAs": { "alias": "valueAs"; "required": false; "isSignal": true; }; "valueTimeZone": { "alias": "valueTimeZone"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "minView": { "alias": "minView"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "view": "viewChange"; }, never, ["[tzPrev]", "[tzNext]"], true, never>;
223
243
  }
224
244
 
225
245
  /**
@@ -272,7 +292,17 @@ declare class DateField implements ControlValueAccessor, AfterViewInit {
272
292
  /** Set while the component is being destroyed, so no output fires after it. */
273
293
  private gone;
274
294
  private readonly host;
275
- private readonly messages;
295
+ /**
296
+ * The words the widget says itself — not the month names, which come from
297
+ * `locale`.
298
+ *
299
+ * An application speaks one language, so the usual place to say it once is
300
+ * `provideTzslotMessages(FR)` or `provideTzslot({ messages: FR })`, and that
301
+ * is what this falls back to. Written on the tag it wins, which is what a
302
+ * screen switching language while it runs needs: an injected value is read
303
+ * once and never changes again.
304
+ */
305
+ readonly messages: _angular_core.InputSignal<TzslotMessages>;
276
306
  private readonly iconSlot;
277
307
  private readonly settings;
278
308
  private readonly field;
@@ -295,7 +325,7 @@ declare class DateField implements ControlValueAccessor, AfterViewInit {
295
325
  registerOnTouched(fn: () => void): void;
296
326
  setDisabledState(isDisabled: boolean): void;
297
327
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateField, never>;
298
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateField, "tz-date-field", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "valueAs": { "alias": "valueAs"; "required": false; "isSignal": true; }; "valueTimeZone": { "alias": "valueTimeZone"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "opened": "opened"; "closed": "closed"; }, never, ["[tzIcon]"], true, never>;
328
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateField, "tz-date-field", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "valueAs": { "alias": "valueAs"; "required": false; "isSignal": true; }; "valueTimeZone": { "alias": "valueTimeZone"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "opened": "opened"; "closed": "closed"; }, never, ["[tzIcon]"], true, never>;
299
329
  }
300
330
 
301
331
  /**
@@ -384,7 +414,17 @@ declare class DateTimeField implements ControlValueAccessor, AfterViewInit {
384
414
  /** Set while the component is being destroyed, so no output fires after it. */
385
415
  private gone;
386
416
  private readonly host;
387
- private readonly messages;
417
+ /**
418
+ * The words the widget says itself — not the month names, which come from
419
+ * `locale`.
420
+ *
421
+ * An application speaks one language, so the usual place to say it once is
422
+ * `provideTzslotMessages(FR)` or `provideTzslot({ messages: FR })`, and that
423
+ * is what this falls back to. Written on the tag it wins, which is what a
424
+ * screen switching language while it runs needs: an injected value is read
425
+ * once and never changes again.
426
+ */
427
+ readonly messages: _angular_core.InputSignal<TzslotMessages>;
388
428
  private readonly iconSlot;
389
429
  private readonly settings;
390
430
  /** Created before the required timeZone is bound; the first change detection fills it in. */
@@ -404,7 +444,7 @@ declare class DateTimeField implements ControlValueAccessor, AfterViewInit {
404
444
  registerOnTouched(fn: () => void): void;
405
445
  setDisabledState(isDisabled: boolean): void;
406
446
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateTimeField, never>;
407
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateTimeField, "tz-datetime-field", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "timeZone": { "alias": "timeZone"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; "timeLayout": { "alias": "timeLayout"; "required": false; "isSignal": true; }; "snapMinutes": { "alias": "snapMinutes"; "required": false; "isSignal": true; }; "shift": { "alias": "shift"; "required": false; "isSignal": true; }; "showStep": { "alias": "showStep"; "required": false; "isSignal": true; }; "stepMinutes": { "alias": "stepMinutes"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "minTime": { "alias": "minTime"; "required": false; "isSignal": true; }; "maxTime": { "alias": "maxTime"; "required": false; "isSignal": true; }; "isSlotDisabled": { "alias": "isSlotDisabled"; "required": false; "isSignal": true; }; "hour12": { "alias": "hour12"; "required": false; "isSignal": true; }; "defaultTime": { "alias": "defaultTime"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "mask": { "alias": "mask"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "dateStyle": { "alias": "dateStyle"; "required": false; "isSignal": true; }; "timeStyle": { "alias": "timeStyle"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; "valueAs": { "alias": "valueAs"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "opened": "opened"; "closed": "closed"; }, never, ["[tzIcon]"], true, never>;
447
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateTimeField, "tz-datetime-field", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "timeZone": { "alias": "timeZone"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; "timeLayout": { "alias": "timeLayout"; "required": false; "isSignal": true; }; "snapMinutes": { "alias": "snapMinutes"; "required": false; "isSignal": true; }; "shift": { "alias": "shift"; "required": false; "isSignal": true; }; "showStep": { "alias": "showStep"; "required": false; "isSignal": true; }; "stepMinutes": { "alias": "stepMinutes"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "minTime": { "alias": "minTime"; "required": false; "isSignal": true; }; "maxTime": { "alias": "maxTime"; "required": false; "isSignal": true; }; "isSlotDisabled": { "alias": "isSlotDisabled"; "required": false; "isSignal": true; }; "hour12": { "alias": "hour12"; "required": false; "isSignal": true; }; "defaultTime": { "alias": "defaultTime"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "mask": { "alias": "mask"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "dateStyle": { "alias": "dateStyle"; "required": false; "isSignal": true; }; "timeStyle": { "alias": "timeStyle"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; "valueAs": { "alias": "valueAs"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "opened": "opened"; "closed": "closed"; }, never, ["[tzIcon]"], true, never>;
408
448
  }
409
449
 
410
450
  /**
@@ -540,7 +580,17 @@ declare class RangeField implements ControlValueAccessor {
540
580
  readonly isOpen: _angular_core.WritableSignal<boolean>;
541
581
  protected readonly formDisabled: _angular_core.WritableSignal<boolean>;
542
582
  private gone;
543
- private readonly messages;
583
+ /**
584
+ * The words the widget says itself — not the month names, which come from
585
+ * `locale`.
586
+ *
587
+ * An application speaks one language, so the usual place to say it once is
588
+ * `provideTzslotMessages(FR)` or `provideTzslot({ messages: FR })`, and that
589
+ * is what this falls back to. Written on the tag it wins, which is what a
590
+ * screen switching language while it runs needs: an injected value is read
591
+ * once and never changes again.
592
+ */
593
+ readonly messages: _angular_core.InputSignal<TzslotMessages>;
544
594
  private readonly settings;
545
595
  /** Created before the required timeZone is bound; the first change detection fills it in. */
546
596
  private readonly field;
@@ -562,7 +612,7 @@ declare class RangeField implements ControlValueAccessor {
562
612
  registerOnTouched(fn: () => void): void;
563
613
  setDisabledState(isDisabled: boolean): void;
564
614
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RangeField, never>;
565
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RangeField, "tz-range-field", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "valueAs": { "alias": "valueAs"; "required": false; "isSignal": true; }; "timeZone": { "alias": "timeZone"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "openEnded": { "alias": "openEnded"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "timeLayout": { "alias": "timeLayout"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; "defaultTimes": { "alias": "defaultTimes"; "required": false; "isSignal": true; }; "stepMinutes": { "alias": "stepMinutes"; "required": false; "isSignal": true; }; "snapMinutes": { "alias": "snapMinutes"; "required": false; "isSignal": true; }; "maxSpan": { "alias": "maxSpan"; "required": false; "isSignal": true; }; "minSpan": { "alias": "minSpan"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "confirm": { "alias": "confirm"; "required": false; "isSignal": true; }; "shift": { "alias": "shift"; "required": false; "isSignal": true; }; "showPresets": { "alias": "showPresets"; "required": false; "isSignal": true; }; "showStep": { "alias": "showStep"; "required": false; "isSignal": true; }; "singleDay": { "alias": "singleDay"; "required": false; "isSignal": true; }; "months": { "alias": "months"; "required": false; "isSignal": true; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "now": { "alias": "now"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "fieldIcon": { "alias": "fieldIcon"; "required": false; "isSignal": true; }; "fieldIconSide": { "alias": "fieldIconSide"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "mask": { "alias": "mask"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
615
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RangeField, "tz-range-field", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "valueAs": { "alias": "valueAs"; "required": false; "isSignal": true; }; "timeZone": { "alias": "timeZone"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "openEnded": { "alias": "openEnded"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "timeLayout": { "alias": "timeLayout"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; "defaultTimes": { "alias": "defaultTimes"; "required": false; "isSignal": true; }; "stepMinutes": { "alias": "stepMinutes"; "required": false; "isSignal": true; }; "snapMinutes": { "alias": "snapMinutes"; "required": false; "isSignal": true; }; "maxSpan": { "alias": "maxSpan"; "required": false; "isSignal": true; }; "minSpan": { "alias": "minSpan"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "confirm": { "alias": "confirm"; "required": false; "isSignal": true; }; "shift": { "alias": "shift"; "required": false; "isSignal": true; }; "showPresets": { "alias": "showPresets"; "required": false; "isSignal": true; }; "showStep": { "alias": "showStep"; "required": false; "isSignal": true; }; "singleDay": { "alias": "singleDay"; "required": false; "isSignal": true; }; "months": { "alias": "months"; "required": false; "isSignal": true; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "now": { "alias": "now"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "fieldIcon": { "alias": "fieldIcon"; "required": false; "isSignal": true; }; "fieldIconSide": { "alias": "fieldIconSide"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "mask": { "alias": "mask"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
566
616
  }
567
617
 
568
618
  /** `<tz-date-range>` — the range from @tzslot/dom, spoken in Angular. */
@@ -590,7 +640,17 @@ declare class DateRange implements ControlValueAccessor, AfterViewInit {
590
640
  readonly rangeSpansBlockedMessage: _angular_core.InputSignal<string | undefined>;
591
641
  protected readonly formDisabled: _angular_core.WritableSignal<boolean>;
592
642
  private readonly host;
593
- private readonly messages;
643
+ /**
644
+ * The words the widget says itself — not the month names, which come from
645
+ * `locale`.
646
+ *
647
+ * An application speaks one language, so the usual place to say it once is
648
+ * `provideTzslotMessages(FR)` or `provideTzslot({ messages: FR })`, and that
649
+ * is what this falls back to. Written on the tag it wins, which is what a
650
+ * screen switching language while it runs needs: an injected value is read
651
+ * once and never changes again.
652
+ */
653
+ readonly messages: _angular_core.InputSignal<TzslotMessages>;
594
654
  private readonly prevSlot;
595
655
  private readonly nextSlot;
596
656
  private readonly settings;
@@ -606,7 +666,7 @@ declare class DateRange implements ControlValueAccessor, AfterViewInit {
606
666
  registerOnTouched(fn: () => void): void;
607
667
  setDisabledState(isDisabled: boolean): void;
608
668
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateRange, never>;
609
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateRange, "tz-date-range", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "blockAcrossDisabled": { "alias": "blockAcrossDisabled"; "required": false; "isSignal": true; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; "isSignal": true; }; "months": { "alias": "months"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "rangeSpansBlockedMessage": { "alias": "rangeSpansBlockedMessage"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, ["[tzPrev]", "[tzNext]"], true, never>;
669
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateRange, "tz-date-range", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "blockAcrossDisabled": { "alias": "blockAcrossDisabled"; "required": false; "isSignal": true; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; "isSignal": true; }; "months": { "alias": "months"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "rangeSpansBlockedMessage": { "alias": "rangeSpansBlockedMessage"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, ["[tzPrev]", "[tzNext]"], true, never>;
610
670
  }
611
671
 
612
672
  /**
@@ -674,7 +734,17 @@ declare class DateTimeRange implements ControlValueAccessor {
674
734
  readonly endLabel: _angular_core.InputSignal<string | undefined>;
675
735
  readonly endBeforeStartMessage: _angular_core.InputSignal<string | undefined>;
676
736
  protected readonly formDisabled: _angular_core.WritableSignal<boolean>;
677
- private readonly messages;
737
+ /**
738
+ * The words the widget says itself — not the month names, which come from
739
+ * `locale`.
740
+ *
741
+ * An application speaks one language, so the usual place to say it once is
742
+ * `provideTzslotMessages(FR)` or `provideTzslot({ messages: FR })`, and that
743
+ * is what this falls back to. Written on the tag it wins, which is what a
744
+ * screen switching language while it runs needs: an injected value is read
745
+ * once and never changes again.
746
+ */
747
+ readonly messages: _angular_core.InputSignal<TzslotMessages>;
678
748
  private readonly settings;
679
749
  /** Created before the required timeZone is bound; the first change detection fills it in. */
680
750
  private readonly range;
@@ -692,7 +762,7 @@ declare class DateTimeRange implements ControlValueAccessor {
692
762
  registerOnTouched(fn: () => void): void;
693
763
  setDisabledState(isDisabled: boolean): void;
694
764
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateTimeRange, never>;
695
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateTimeRange, "tz-datetime-range", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "timeZone": { "alias": "timeZone"; "required": false; "isSignal": true; }; "valueAs": { "alias": "valueAs"; "required": false; "isSignal": true; }; "allDay": { "alias": "allDay"; "required": false; "isSignal": true; }; "allDaySwitch": { "alias": "allDaySwitch"; "required": false; "isSignal": true; }; "openEnded": { "alias": "openEnded"; "required": false; "isSignal": true; }; "timeLayout": { "alias": "timeLayout"; "required": false; "isSignal": true; }; "stepMinutes": { "alias": "stepMinutes"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "hour12": { "alias": "hour12"; "required": false; "isSignal": true; }; "defaultTime": { "alias": "defaultTime"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; "minTime": { "alias": "minTime"; "required": false; "isSignal": true; }; "maxTime": { "alias": "maxTime"; "required": false; "isSignal": true; }; "isSlotDisabled": { "alias": "isSlotDisabled"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "startLabel": { "alias": "startLabel"; "required": false; "isSignal": true; }; "endLabel": { "alias": "endLabel"; "required": false; "isSignal": true; }; "endBeforeStartMessage": { "alias": "endBeforeStartMessage"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "allDay": "allDayChange"; }, never, never, true, never>;
765
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateTimeRange, "tz-datetime-range", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "timeZone": { "alias": "timeZone"; "required": false; "isSignal": true; }; "valueAs": { "alias": "valueAs"; "required": false; "isSignal": true; }; "allDay": { "alias": "allDay"; "required": false; "isSignal": true; }; "allDaySwitch": { "alias": "allDaySwitch"; "required": false; "isSignal": true; }; "openEnded": { "alias": "openEnded"; "required": false; "isSignal": true; }; "timeLayout": { "alias": "timeLayout"; "required": false; "isSignal": true; }; "stepMinutes": { "alias": "stepMinutes"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "hour12": { "alias": "hour12"; "required": false; "isSignal": true; }; "defaultTime": { "alias": "defaultTime"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; "minTime": { "alias": "minTime"; "required": false; "isSignal": true; }; "maxTime": { "alias": "maxTime"; "required": false; "isSignal": true; }; "isSlotDisabled": { "alias": "isSlotDisabled"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "startLabel": { "alias": "startLabel"; "required": false; "isSignal": true; }; "endLabel": { "alias": "endLabel"; "required": false; "isSignal": true; }; "endBeforeStartMessage": { "alias": "endBeforeStartMessage"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "allDay": "allDayChange"; }, never, never, true, never>;
696
766
  }
697
767
 
698
768
  /**
@@ -732,7 +802,17 @@ declare class DailyRange implements ControlValueAccessor {
732
802
  /** Every day's window and the real total, once all four parts are chosen. */
733
803
  readonly summary: _angular_core.WritableSignal<DailyWindowsSummary | null>;
734
804
  protected readonly formDisabled: _angular_core.WritableSignal<boolean>;
735
- private readonly messages;
805
+ /**
806
+ * The words the widget says itself — not the month names, which come from
807
+ * `locale`.
808
+ *
809
+ * An application speaks one language, so the usual place to say it once is
810
+ * `provideTzslotMessages(FR)` or `provideTzslot({ messages: FR })`, and that
811
+ * is what this falls back to. Written on the tag it wins, which is what a
812
+ * screen switching language while it runs needs: an injected value is read
813
+ * once and never changes again.
814
+ */
815
+ readonly messages: _angular_core.InputSignal<TzslotMessages>;
736
816
  private readonly settings;
737
817
  /** Created before the required timeZone is bound; the first change detection fills it in. */
738
818
  private readonly range;
@@ -751,7 +831,7 @@ declare class DailyRange implements ControlValueAccessor {
751
831
  registerOnTouched(fn: () => void): void;
752
832
  setDisabledState(isDisabled: boolean): void;
753
833
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DailyRange, never>;
754
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DailyRange, "tz-daily-range", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "timeZone": { "alias": "timeZone"; "required": false; "isSignal": true; }; "stepMinutes": { "alias": "stepMinutes"; "required": false; "isSignal": true; }; "timeLayout": { "alias": "timeLayout"; "required": false; "isSignal": true; }; "hour12": { "alias": "hour12"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "minTime": { "alias": "minTime"; "required": false; "isSignal": true; }; "maxTime": { "alias": "maxTime"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
834
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DailyRange, "tz-daily-range", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "timeZone": { "alias": "timeZone"; "required": false; "isSignal": true; }; "stepMinutes": { "alias": "stepMinutes"; "required": false; "isSignal": true; }; "timeLayout": { "alias": "timeLayout"; "required": false; "isSignal": true; }; "hour12": { "alias": "hour12"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "minTime": { "alias": "minTime"; "required": false; "isSignal": true; }; "maxTime": { "alias": "maxTime"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
755
835
  }
756
836
 
757
837
  /**
@@ -784,7 +864,17 @@ declare class MultiDate implements ControlValueAccessor, AfterViewInit {
784
864
  readonly valueTimeZone: _angular_core.InputSignal<string>;
785
865
  protected readonly formDisabled: _angular_core.WritableSignal<boolean>;
786
866
  private readonly host;
787
- private readonly messages;
867
+ /**
868
+ * The words the widget says itself — not the month names, which come from
869
+ * `locale`.
870
+ *
871
+ * An application speaks one language, so the usual place to say it once is
872
+ * `provideTzslotMessages(FR)` or `provideTzslot({ messages: FR })`, and that
873
+ * is what this falls back to. Written on the tag it wins, which is what a
874
+ * screen switching language while it runs needs: an injected value is read
875
+ * once and never changes again.
876
+ */
877
+ readonly messages: _angular_core.InputSignal<TzslotMessages>;
788
878
  private readonly prevSlot;
789
879
  private readonly nextSlot;
790
880
  private readonly settings;
@@ -802,8 +892,141 @@ declare class MultiDate implements ControlValueAccessor, AfterViewInit {
802
892
  registerOnTouched(fn: () => void): void;
803
893
  setDisabledState(isDisabled: boolean): void;
804
894
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MultiDate, never>;
805
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<MultiDate, "tz-multi-date", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "maxDates": { "alias": "maxDates"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; "valueAs": { "alias": "valueAs"; "required": false; "isSignal": true; }; "valueTimeZone": { "alias": "valueTimeZone"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "view": "viewChange"; }, never, ["[tzPrev]", "[tzNext]"], true, never>;
895
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MultiDate, "tz-multi-date", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "maxDates": { "alias": "maxDates"; "required": false; "isSignal": true; }; "firstDayOfWeek": { "alias": "firstDayOfWeek"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "isDateDisabled": { "alias": "isDateDisabled"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "renderCell": { "alias": "renderCell"; "required": false; "isSignal": true; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; "isSignal": true; }; "buttons": { "alias": "buttons"; "required": false; "isSignal": true; }; "valueAs": { "alias": "valueAs"; "required": false; "isSignal": true; }; "valueTimeZone": { "alias": "valueTimeZone"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "view": "viewChange"; }, never, ["[tzPrev]", "[tzNext]"], true, never>;
896
+ }
897
+
898
+ /**
899
+ * `<tz-time-select>` — an hour menu and a minute menu, spoken in Angular.
900
+ *
901
+ * What it holds is a `PlainTime`: a clock face, with no day and no zone. Give
902
+ * it `date` and `timeZone` and the menus show that day as the zone really has
903
+ * it — the hour that is skipped is absent, the hour that happens twice is
904
+ * offered twice — and `offsetChange` says which of the two was taken.
905
+ *
906
+ * A screen that fills two of these from a list built by hand is the screen
907
+ * this replaces: walking a day hour by hand and guessing the transitions is
908
+ * where the two mornings a year go wrong.
909
+ */
910
+ declare class TimeSelect implements ControlValueAccessor {
911
+ /** Set once for the application with provideTzslot(); a binding still wins. */
912
+ private readonly defaults;
913
+ /** The clock face chosen. */
914
+ readonly value: _angular_core.ModelSignal<temporal_spec.Temporal.PlainTime | null>;
915
+ /**
916
+ * Which reading of an ambiguous time is held, as `+02:00` or `+01:00`.
917
+ *
918
+ * It means nothing on an ordinary hour and is ignored there. On the morning
919
+ * an hour happens twice it is the difference between two moments an hour
920
+ * apart, so a screen that stores instants has to carry it.
921
+ */
922
+ readonly offset: _angular_core.ModelSignal<string | null>;
923
+ /**
924
+ * The day the menus stand on. Without it they are a plain clock face; with
925
+ * it they are that day as the zone has it.
926
+ */
927
+ readonly date: _angular_core.InputSignal<string | temporal_spec.Temporal.PlainDate | null>;
928
+ /** An IANA identifier. Left out, `provideTzslot` answers. */
929
+ readonly timeZone: _angular_core.InputSignal<string | undefined>;
930
+ /** Minutes between the options of the minute menu. */
931
+ readonly minuteStep: _angular_core.InputSignal<number>;
932
+ /** Hours between the options of the hour menu. */
933
+ readonly hourStep: _angular_core.InputSignal<number>;
934
+ /** Twelve-hour menus with an AM/PM one beside them; the locale decides when unset. */
935
+ readonly hour12: _angular_core.InputSignal<boolean | undefined>;
936
+ /** The first and last times offered. */
937
+ readonly minTime: _angular_core.InputSignal<string | temporal_spec.Temporal.PlainTime | undefined>;
938
+ readonly maxTime: _angular_core.InputSignal<string | temporal_spec.Temporal.PlainTime | undefined>;
939
+ /**
940
+ * How the repeated hour is shown: `'named'` writes it once and names the
941
+ * reading in force underneath, `'marked'` puts both in the menu as `02` and
942
+ * `02*`.
943
+ */
944
+ readonly readingStyle: _angular_core.InputSignal<"named" | "marked">;
945
+ /** A BCP-47 tag. Decides twelve or twenty-four hours, and nothing else here. */
946
+ readonly locale: _angular_core.InputSignal<string | undefined>;
947
+ readonly disabled: _angular_core.InputSignal<boolean>;
948
+ /**
949
+ * The words the widget says itself — not the figures, which are the locale's.
950
+ *
951
+ * An application speaks one language, so the usual place to say it once is
952
+ * `provideTzslotMessages(FR)` or `provideTzslot({ messages: FR })`, and that
953
+ * is what this falls back to. Written on the tag it wins, which is what a
954
+ * screen switching language while it runs needs.
955
+ */
956
+ readonly messages: _angular_core.InputSignal<TzslotMessages>;
957
+ protected readonly formDisabled: _angular_core.WritableSignal<boolean>;
958
+ private readonly settings;
959
+ private readonly menus;
960
+ constructor();
961
+ private onChange;
962
+ protected onTouched: () => void;
963
+ /** Typed `unknown`: a form holds what the application put there. */
964
+ writeValue(value: unknown): void;
965
+ registerOnChange(fn: (value: unknown) => void): void;
966
+ registerOnTouched(fn: () => void): void;
967
+ setDisabledState(isDisabled: boolean): void;
968
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimeSelect, never>;
969
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimeSelect, "tz-time-select", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": false; "isSignal": true; }; "timeZone": { "alias": "timeZone"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "hourStep": { "alias": "hourStep"; "required": false; "isSignal": true; }; "hour12": { "alias": "hour12"; "required": false; "isSignal": true; }; "minTime": { "alias": "minTime"; "required": false; "isSignal": true; }; "maxTime": { "alias": "maxTime"; "required": false; "isSignal": true; }; "readingStyle": { "alias": "readingStyle"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "offset": "offsetChange"; }, never, never, true, never>;
970
+ }
971
+
972
+ /**
973
+ * `<tz-time-input>` — the compact time field, spoken in Angular.
974
+ *
975
+ * Arrows, the wheel, the up and down keys, and typing. It holds a `PlainTime`:
976
+ * a clock face, with no day and no zone. Given `date` and `timeZone` it knows
977
+ * which day it stands on, so the arrows step over an hour that does not happen
978
+ * and a time typed into the gap settles on the first moment that does.
979
+ */
980
+ declare class TimeInput implements ControlValueAccessor {
981
+ /** Set once for the application with provideTzslot(); a binding still wins. */
982
+ private readonly defaults;
983
+ /** The clock face chosen. */
984
+ readonly value: _angular_core.ModelSignal<temporal_spec.Temporal.PlainTime | null>;
985
+ /** What one press of an arrow, or the wheel, moves the minutes by. */
986
+ readonly stepMinutes: _angular_core.InputSignal<number>;
987
+ /** A twelve-hour field with AM/PM beside it; the locale decides when unset. */
988
+ readonly hour12: _angular_core.InputSignal<boolean | undefined>;
989
+ /** The window the arrows and the typing stay inside. */
990
+ readonly minTime: _angular_core.InputSignal<string | temporal_spec.Temporal.PlainTime | undefined>;
991
+ readonly maxTime: _angular_core.InputSignal<string | temporal_spec.Temporal.PlainTime | undefined>;
992
+ /** A BCP-47 tag. Decides twelve or twenty-four hours, and nothing else here. */
993
+ readonly locale: _angular_core.InputSignal<string | undefined>;
994
+ /**
995
+ * The day the field stands on. Without it it is a clock face and nothing
996
+ * more; with it the two mornings a year stop being ordinary.
997
+ */
998
+ readonly date: _angular_core.InputSignal<string | temporal_spec.Temporal.PlainDate | null>;
999
+ /** An IANA identifier. Left out, `provideTzslot` answers. */
1000
+ readonly timeZone: _angular_core.InputSignal<string | undefined>;
1001
+ /**
1002
+ * `'boxed'` is a bordered field. `'bare'` drops the box and stacks the
1003
+ * arrows above and below the figures, which is how a panel draws it.
1004
+ */
1005
+ readonly variant: _angular_core.InputSignal<"boxed" | "bare">;
1006
+ readonly disabled: _angular_core.InputSignal<boolean>;
1007
+ /**
1008
+ * The words the widget says itself — not the figures, which are the locale's.
1009
+ *
1010
+ * An application speaks one language, so the usual place to say it once is
1011
+ * `provideTzslotMessages(FR)` or `provideTzslot({ messages: FR })`, and that
1012
+ * is what this falls back to. Written on the tag it wins, which is what a
1013
+ * screen switching language while it runs needs.
1014
+ */
1015
+ readonly messages: _angular_core.InputSignal<TzslotMessages>;
1016
+ protected readonly formDisabled: _angular_core.WritableSignal<boolean>;
1017
+ private readonly settings;
1018
+ private readonly field;
1019
+ constructor();
1020
+ private onChange;
1021
+ protected onTouched: () => void;
1022
+ /** Typed `unknown`: a form holds what the application put there. */
1023
+ writeValue(value: unknown): void;
1024
+ registerOnChange(fn: (value: unknown) => void): void;
1025
+ registerOnTouched(fn: () => void): void;
1026
+ setDisabledState(isDisabled: boolean): void;
1027
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimeInput, never>;
1028
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimeInput, "tz-time-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "stepMinutes": { "alias": "stepMinutes"; "required": false; "isSignal": true; }; "hour12": { "alias": "hour12"; "required": false; "isSignal": true; }; "minTime": { "alias": "minTime"; "required": false; "isSignal": true; }; "maxTime": { "alias": "maxTime"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "date": { "alias": "date"; "required": false; "isSignal": true; }; "timeZone": { "alias": "timeZone"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
806
1029
  }
807
1030
 
808
- export { Calendar, DailyRange, DateField, DateRange, DateTimeField, DateTimeRange, MultiDate, RangeField, TZSLOT_DEFAULTS, TZSLOT_MESSAGES, TimeSlotPicker, pairIn, pairOut, provideTzslot, provideTzslotMessages };
1031
+ export { Calendar, DailyRange, DateField, DateRange, DateTimeField, DateTimeRange, MultiDate, RangeField, TZSLOT_DEFAULTS, TZSLOT_MESSAGES, TimeInput, TimeSelect, TimeSlotPicker, pairIn, pairOut, provideTzslot, provideTzslotMessages };
809
1032
  export type { MomentPair, TzslotDefaults };