@tzslot/angular 1.0.0 → 1.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.
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@tzslot/angular",
3
- "version": "1.0.0",
3
+ "version": "1.2.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.0.0",
9
- "@tzslot/dom": "^1.0.0",
8
+ "@tzslot/core": "^1.2.0",
9
+ "@tzslot/dom": "^1.2.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
  /**
@@ -345,6 +375,8 @@ declare class DateTimeField implements ControlValueAccessor, AfterViewInit {
345
375
  * Counted on the zone's clocks, so a day is 23 or 25 hours when they change.
346
376
  */
347
377
  readonly shift: _angular_core.InputSignal<false | DurationLike | readonly ShiftOption[]>;
378
+ /** Whether the step sits between the arrows, to be read and pressed. */
379
+ readonly showStep: _angular_core.InputSignal<boolean>;
348
380
  readonly stepMinutes: _angular_core.InputSignal<number>;
349
381
  /** With timeLayout 'select': minutes between the options. Every minute by default. */
350
382
  readonly minuteStep: _angular_core.InputSignal<number>;
@@ -382,7 +414,17 @@ declare class DateTimeField implements ControlValueAccessor, AfterViewInit {
382
414
  /** Set while the component is being destroyed, so no output fires after it. */
383
415
  private gone;
384
416
  private readonly host;
385
- 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>;
386
428
  private readonly iconSlot;
387
429
  private readonly settings;
388
430
  /** Created before the required timeZone is bound; the first change detection fills it in. */
@@ -402,7 +444,7 @@ declare class DateTimeField implements ControlValueAccessor, AfterViewInit {
402
444
  registerOnTouched(fn: () => void): void;
403
445
  setDisabledState(isDisabled: boolean): void;
404
446
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateTimeField, never>;
405
- 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; }; "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>;
406
448
  }
407
449
 
408
450
  /**
@@ -473,11 +515,20 @@ declare class RangeField implements ControlValueAccessor {
473
515
  /** Nothing is reported until Apply is pressed. */
474
516
  readonly confirm: _angular_core.InputSignal<boolean>;
475
517
  /**
476
- * Arrows that step the whole period without opening the panel. `false` —
477
- * the default — draws none. `'auto'` moves by what is selected; a duration
478
- * such as `{ months: 3 }` imposes the step.
518
+ * Arrows that step the whole period without opening the panel.
519
+ *
520
+ * `false` — the default — draws none. `true` draws them and follows what is
521
+ * being chosen: an hour for a period, a day when `singleDay` says it is one
522
+ * date. A duration such as `{ months: 3 }` or `'45mn'` imposes the step; a
523
+ * list offers several and lets the reader pick.
479
524
  */
480
- readonly shift: _angular_core.InputSignal<false | readonly ShiftOption[] | ShiftStep>;
525
+ readonly shift: _angular_core.InputSignal<boolean | readonly ShiftOption[] | ShiftStep>;
526
+ /** Whether the column of shortcuts is drawn. The list itself is kept. */
527
+ readonly showPresets: _angular_core.InputSignal<boolean>;
528
+ /** Whether the step sits between the arrows, to be read and pressed. */
529
+ readonly showStep: _angular_core.InputSignal<boolean>;
530
+ /** One field instead of two; a click means that whole day. */
531
+ readonly singleDay: _angular_core.InputSignal<boolean>;
481
532
  readonly months: _angular_core.InputSignal<number>;
482
533
  readonly weekNumbers: _angular_core.InputSignal<boolean>;
483
534
  /** Left out, the locale decides — see `provideTzslot` to settle it once. */
@@ -529,7 +580,17 @@ declare class RangeField implements ControlValueAccessor {
529
580
  readonly isOpen: _angular_core.WritableSignal<boolean>;
530
581
  protected readonly formDisabled: _angular_core.WritableSignal<boolean>;
531
582
  private gone;
532
- 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>;
533
594
  private readonly settings;
534
595
  /** Created before the required timeZone is bound; the first change detection fills it in. */
535
596
  private readonly field;
@@ -551,7 +612,7 @@ declare class RangeField implements ControlValueAccessor {
551
612
  registerOnTouched(fn: () => void): void;
552
613
  setDisabledState(isDisabled: boolean): void;
553
614
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RangeField, never>;
554
- 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; }; "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>;
555
616
  }
556
617
 
557
618
  /** `<tz-date-range>` — the range from @tzslot/dom, spoken in Angular. */
@@ -579,7 +640,17 @@ declare class DateRange implements ControlValueAccessor, AfterViewInit {
579
640
  readonly rangeSpansBlockedMessage: _angular_core.InputSignal<string | undefined>;
580
641
  protected readonly formDisabled: _angular_core.WritableSignal<boolean>;
581
642
  private readonly host;
582
- 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>;
583
654
  private readonly prevSlot;
584
655
  private readonly nextSlot;
585
656
  private readonly settings;
@@ -595,7 +666,7 @@ declare class DateRange implements ControlValueAccessor, AfterViewInit {
595
666
  registerOnTouched(fn: () => void): void;
596
667
  setDisabledState(isDisabled: boolean): void;
597
668
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateRange, never>;
598
- 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>;
599
670
  }
600
671
 
601
672
  /**
@@ -663,7 +734,17 @@ declare class DateTimeRange implements ControlValueAccessor {
663
734
  readonly endLabel: _angular_core.InputSignal<string | undefined>;
664
735
  readonly endBeforeStartMessage: _angular_core.InputSignal<string | undefined>;
665
736
  protected readonly formDisabled: _angular_core.WritableSignal<boolean>;
666
- 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>;
667
748
  private readonly settings;
668
749
  /** Created before the required timeZone is bound; the first change detection fills it in. */
669
750
  private readonly range;
@@ -681,7 +762,7 @@ declare class DateTimeRange implements ControlValueAccessor {
681
762
  registerOnTouched(fn: () => void): void;
682
763
  setDisabledState(isDisabled: boolean): void;
683
764
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateTimeRange, never>;
684
- 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>;
685
766
  }
686
767
 
687
768
  /**
@@ -721,7 +802,17 @@ declare class DailyRange implements ControlValueAccessor {
721
802
  /** Every day's window and the real total, once all four parts are chosen. */
722
803
  readonly summary: _angular_core.WritableSignal<DailyWindowsSummary | null>;
723
804
  protected readonly formDisabled: _angular_core.WritableSignal<boolean>;
724
- 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>;
725
816
  private readonly settings;
726
817
  /** Created before the required timeZone is bound; the first change detection fills it in. */
727
818
  private readonly range;
@@ -740,7 +831,7 @@ declare class DailyRange implements ControlValueAccessor {
740
831
  registerOnTouched(fn: () => void): void;
741
832
  setDisabledState(isDisabled: boolean): void;
742
833
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DailyRange, never>;
743
- 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>;
744
835
  }
745
836
 
746
837
  /**
@@ -773,7 +864,17 @@ declare class MultiDate implements ControlValueAccessor, AfterViewInit {
773
864
  readonly valueTimeZone: _angular_core.InputSignal<string>;
774
865
  protected readonly formDisabled: _angular_core.WritableSignal<boolean>;
775
866
  private readonly host;
776
- 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>;
777
878
  private readonly prevSlot;
778
879
  private readonly nextSlot;
779
880
  private readonly settings;
@@ -791,8 +892,141 @@ declare class MultiDate implements ControlValueAccessor, AfterViewInit {
791
892
  registerOnTouched(fn: () => void): void;
792
893
  setDisabledState(isDisabled: boolean): void;
793
894
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MultiDate, never>;
794
- 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>;
795
1029
  }
796
1030
 
797
- 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 };
798
1032
  export type { MomentPair, TzslotDefaults };