@cdevhub/ngx-tw 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/README.md +264 -49
  2. package/fesm2022/cdevhub-ngx-tw-accordion.mjs +11 -7
  3. package/fesm2022/cdevhub-ngx-tw-accordion.mjs.map +1 -1
  4. package/fesm2022/cdevhub-ngx-tw-alert.mjs +43 -29
  5. package/fesm2022/cdevhub-ngx-tw-alert.mjs.map +1 -1
  6. package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs +103 -0
  7. package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs.map +1 -0
  8. package/fesm2022/cdevhub-ngx-tw-avatar.mjs +56 -31
  9. package/fesm2022/cdevhub-ngx-tw-avatar.mjs.map +1 -1
  10. package/fesm2022/cdevhub-ngx-tw-badge.mjs +61 -35
  11. package/fesm2022/cdevhub-ngx-tw-badge.mjs.map +1 -1
  12. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs +154 -93
  13. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs.map +1 -1
  14. package/fesm2022/cdevhub-ngx-tw-button.mjs +24 -15
  15. package/fesm2022/cdevhub-ngx-tw-button.mjs.map +1 -1
  16. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs +3 -3
  17. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs.map +1 -1
  18. package/fesm2022/cdevhub-ngx-tw-calendar.mjs +408 -215
  19. package/fesm2022/cdevhub-ngx-tw-calendar.mjs.map +1 -1
  20. package/fesm2022/cdevhub-ngx-tw-card.mjs +33 -24
  21. package/fesm2022/cdevhub-ngx-tw-card.mjs.map +1 -1
  22. package/fesm2022/cdevhub-ngx-tw-carousel.mjs +144 -79
  23. package/fesm2022/cdevhub-ngx-tw-carousel.mjs.map +1 -1
  24. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs +99 -47
  25. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs.map +1 -1
  26. package/fesm2022/cdevhub-ngx-tw-code-block.mjs +34 -20
  27. package/fesm2022/cdevhub-ngx-tw-code-block.mjs.map +1 -1
  28. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs +46 -29
  29. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs.map +1 -1
  30. package/fesm2022/cdevhub-ngx-tw-combobox.mjs +195 -110
  31. package/fesm2022/cdevhub-ngx-tw-combobox.mjs.map +1 -1
  32. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs +140 -73
  33. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs.map +1 -1
  34. package/fesm2022/cdevhub-ngx-tw-core.mjs +16 -11
  35. package/fesm2022/cdevhub-ngx-tw-core.mjs.map +1 -1
  36. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs +393 -149
  37. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs.map +1 -1
  38. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs +305 -150
  39. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs.map +1 -1
  40. package/fesm2022/cdevhub-ngx-tw-dialog.mjs +56 -43
  41. package/fesm2022/cdevhub-ngx-tw-dialog.mjs.map +1 -1
  42. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs +51 -33
  43. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs.map +1 -1
  44. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs +905 -0
  45. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs.map +1 -0
  46. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs +49 -26
  47. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs.map +1 -1
  48. package/fesm2022/cdevhub-ngx-tw-form-field.mjs +133 -74
  49. package/fesm2022/cdevhub-ngx-tw-form-field.mjs.map +1 -1
  50. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs +2 -2
  51. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs.map +1 -1
  52. package/fesm2022/cdevhub-ngx-tw-icon.mjs +28 -17
  53. package/fesm2022/cdevhub-ngx-tw-icon.mjs.map +1 -1
  54. package/fesm2022/cdevhub-ngx-tw-input.mjs +37 -21
  55. package/fesm2022/cdevhub-ngx-tw-input.mjs.map +1 -1
  56. package/fesm2022/cdevhub-ngx-tw-item.mjs +33 -24
  57. package/fesm2022/cdevhub-ngx-tw-item.mjs.map +1 -1
  58. package/fesm2022/cdevhub-ngx-tw-menu.mjs +63 -48
  59. package/fesm2022/cdevhub-ngx-tw-menu.mjs.map +1 -1
  60. package/fesm2022/cdevhub-ngx-tw-number-input.mjs +622 -0
  61. package/fesm2022/cdevhub-ngx-tw-number-input.mjs.map +1 -0
  62. package/fesm2022/cdevhub-ngx-tw-paginator.mjs +137 -71
  63. package/fesm2022/cdevhub-ngx-tw-paginator.mjs.map +1 -1
  64. package/fesm2022/cdevhub-ngx-tw-popover.mjs +101 -46
  65. package/fesm2022/cdevhub-ngx-tw-popover.mjs.map +1 -1
  66. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs +57 -30
  67. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs.map +1 -1
  68. package/fesm2022/cdevhub-ngx-tw-radio.mjs +108 -57
  69. package/fesm2022/cdevhub-ngx-tw-radio.mjs.map +1 -1
  70. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs +46 -26
  71. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs.map +1 -1
  72. package/fesm2022/cdevhub-ngx-tw-select.mjs +217 -122
  73. package/fesm2022/cdevhub-ngx-tw-select.mjs.map +1 -1
  74. package/fesm2022/cdevhub-ngx-tw-separator.mjs +21 -12
  75. package/fesm2022/cdevhub-ngx-tw-separator.mjs.map +1 -1
  76. package/fesm2022/cdevhub-ngx-tw-sheet.mjs +58 -44
  77. package/fesm2022/cdevhub-ngx-tw-sheet.mjs.map +1 -1
  78. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs +25 -14
  79. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs.map +1 -1
  80. package/fesm2022/cdevhub-ngx-tw-slider.mjs +155 -79
  81. package/fesm2022/cdevhub-ngx-tw-slider.mjs.map +1 -1
  82. package/fesm2022/cdevhub-ngx-tw-sort.mjs +44 -25
  83. package/fesm2022/cdevhub-ngx-tw-sort.mjs.map +1 -1
  84. package/fesm2022/cdevhub-ngx-tw-spinner.mjs +29 -16
  85. package/fesm2022/cdevhub-ngx-tw-spinner.mjs.map +1 -1
  86. package/fesm2022/cdevhub-ngx-tw-split.mjs +72 -42
  87. package/fesm2022/cdevhub-ngx-tw-split.mjs.map +1 -1
  88. package/fesm2022/cdevhub-ngx-tw-stat.mjs +107 -64
  89. package/fesm2022/cdevhub-ngx-tw-stat.mjs.map +1 -1
  90. package/fesm2022/cdevhub-ngx-tw-stepper.mjs +113 -47
  91. package/fesm2022/cdevhub-ngx-tw-stepper.mjs.map +1 -1
  92. package/fesm2022/cdevhub-ngx-tw-switch.mjs +61 -32
  93. package/fesm2022/cdevhub-ngx-tw-switch.mjs.map +1 -1
  94. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs +88 -42
  95. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs.map +1 -1
  96. package/fesm2022/cdevhub-ngx-tw-table.mjs +266 -118
  97. package/fesm2022/cdevhub-ngx-tw-table.mjs.map +1 -1
  98. package/fesm2022/cdevhub-ngx-tw-tabs.mjs +101 -51
  99. package/fesm2022/cdevhub-ngx-tw-tabs.mjs.map +1 -1
  100. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs +798 -0
  101. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs.map +1 -0
  102. package/fesm2022/cdevhub-ngx-tw-textarea.mjs +11 -7
  103. package/fesm2022/cdevhub-ngx-tw-textarea.mjs.map +1 -1
  104. package/fesm2022/cdevhub-ngx-tw-theme.mjs +22 -14
  105. package/fesm2022/cdevhub-ngx-tw-theme.mjs.map +1 -1
  106. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs +243 -95
  107. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs.map +1 -1
  108. package/fesm2022/cdevhub-ngx-tw-timeline.mjs +149 -82
  109. package/fesm2022/cdevhub-ngx-tw-timeline.mjs.map +1 -1
  110. package/fesm2022/cdevhub-ngx-tw-toast.mjs +89 -55
  111. package/fesm2022/cdevhub-ngx-tw-toast.mjs.map +1 -1
  112. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs +50 -28
  113. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs.map +1 -1
  114. package/fesm2022/cdevhub-ngx-tw-transfer.mjs +1129 -0
  115. package/fesm2022/cdevhub-ngx-tw-transfer.mjs.map +1 -0
  116. package/fesm2022/cdevhub-ngx-tw-tree.mjs +554 -0
  117. package/fesm2022/cdevhub-ngx-tw-tree.mjs.map +1 -0
  118. package/fesm2022/cdevhub-ngx-tw.mjs +7 -0
  119. package/fesm2022/cdevhub-ngx-tw.mjs.map +1 -1
  120. package/index.json +1 -0
  121. package/package.json +45 -20
  122. package/theme/index.css +10 -2
  123. package/types/cdevhub-ngx-tw-aspect-ratio.d.ts +40 -0
  124. package/types/cdevhub-ngx-tw-calendar.d.ts +39 -8
  125. package/types/cdevhub-ngx-tw-command-palette.d.ts +7 -0
  126. package/types/cdevhub-ngx-tw-date-picker.d.ts +36 -10
  127. package/types/cdevhub-ngx-tw-file-upload.d.ts +250 -0
  128. package/types/cdevhub-ngx-tw-form-field.d.ts +22 -3
  129. package/types/cdevhub-ngx-tw-icon-lucide.d.ts +21 -3
  130. package/types/cdevhub-ngx-tw-number-input.d.ts +130 -0
  131. package/types/cdevhub-ngx-tw-popover.d.ts +8 -0
  132. package/types/cdevhub-ngx-tw-stepper.d.ts +30 -2
  133. package/types/cdevhub-ngx-tw-tab-nav.d.ts +8 -0
  134. package/types/cdevhub-ngx-tw-table.d.ts +30 -1
  135. package/types/cdevhub-ngx-tw-tabs.d.ts +8 -0
  136. package/types/cdevhub-ngx-tw-tags-input.d.ts +217 -0
  137. package/types/cdevhub-ngx-tw-time-picker.d.ts +31 -6
  138. package/types/cdevhub-ngx-tw-transfer.d.ts +330 -0
  139. package/types/cdevhub-ngx-tw-tree.d.ts +189 -0
  140. package/types/cdevhub-ngx-tw.d.ts +7 -0
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, output, computed, ChangeDetectionStrategy, Component, Injectable, InjectionToken, viewChild, inject, signal, afterEveryRender, Directive, viewChildren, ElementRef, Injector, DestroyRef, LOCALE_ID, runInInjectionContext, model, linkedSignal, untracked, effect, isDevMode, forwardRef, makeEnvironmentProviders } from '@angular/core';
2
+ import { input, output, computed, ChangeDetectionStrategy, Component, Injectable, InjectionToken, viewChild, inject, signal, afterEveryRender, Directive, viewChildren, ElementRef, Injector, DestroyRef, LOCALE_ID, runInInjectionContext, linkedSignal, untracked, effect, isDevMode, forwardRef, model, makeEnvironmentProviders } from '@angular/core';
3
3
  import { LiveAnnouncer } from '@angular/cdk/a11y';
4
4
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
5
  import { Validators, NgControl, FormResetEvent, NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
@@ -21,22 +21,29 @@ const headerVariants = tv({
21
21
  */
22
22
  class CalendarHeaderComponent {
23
23
  /** Display text for the period button (e.g. "January 2026"). */
24
- periodLabel = input.required(...(ngDevMode ? [{ debugName: "periodLabel" }] : /* istanbul ignore next */ []));
24
+ periodLabel = input.required(/* @ts-ignore */
25
+ ...(ngDevMode ? [{ debugName: "periodLabel" }] : /* istanbul ignore next */ []));
25
26
  /** Accessible label for the period button. */
26
- periodAriaLabel = input.required(...(ngDevMode ? [{ debugName: "periodAriaLabel" }] : /* istanbul ignore next */ []));
27
+ periodAriaLabel = input.required(/* @ts-ignore */
28
+ ...(ngDevMode ? [{ debugName: "periodAriaLabel" }] : /* istanbul ignore next */ []));
27
29
  /** Accessible label for the previous button. */
28
- prevAriaLabel = input.required(...(ngDevMode ? [{ debugName: "prevAriaLabel" }] : /* istanbul ignore next */ []));
30
+ prevAriaLabel = input.required(/* @ts-ignore */
31
+ ...(ngDevMode ? [{ debugName: "prevAriaLabel" }] : /* istanbul ignore next */ []));
29
32
  /** Accessible label for the next button. */
30
- nextAriaLabel = input.required(...(ngDevMode ? [{ debugName: "nextAriaLabel" }] : /* istanbul ignore next */ []));
33
+ nextAriaLabel = input.required(/* @ts-ignore */
34
+ ...(ngDevMode ? [{ debugName: "nextAriaLabel" }] : /* istanbul ignore next */ []));
31
35
  /** Disables the previous button. */
32
- prevDisabled = input(false, ...(ngDevMode ? [{ debugName: "prevDisabled" }] : /* istanbul ignore next */ []));
36
+ prevDisabled = input(false, /* @ts-ignore */
37
+ ...(ngDevMode ? [{ debugName: "prevDisabled" }] : /* istanbul ignore next */ []));
33
38
  /** Disables the next button. */
34
- nextDisabled = input(false, ...(ngDevMode ? [{ debugName: "nextDisabled" }] : /* istanbul ignore next */ []));
39
+ nextDisabled = input(false, /* @ts-ignore */
40
+ ...(ngDevMode ? [{ debugName: "nextDisabled" }] : /* istanbul ignore next */ []));
35
41
  /** When false, the period button is disabled (e.g. when already at the top view). */
36
42
  // TRUE-default: the period button is the calendar header's primary drill-up
37
43
  // affordance; disabling it is reserved for the top view where there's nowhere
38
44
  // to drill up to.
39
- canSwitchView = input(true, ...(ngDevMode ? [{ debugName: "canSwitchView" }] : /* istanbul ignore next */ []));
45
+ canSwitchView = input(true, /* @ts-ignore */
46
+ ...(ngDevMode ? [{ debugName: "canSwitchView" }] : /* istanbul ignore next */ []));
40
47
  /** Fires on previous button click. */
41
48
  prevClicked = output();
42
49
  /** Fires on next button click. */
@@ -46,13 +53,14 @@ class CalendarHeaderComponent {
46
53
  classes = computed(() => {
47
54
  const v = headerVariants();
48
55
  return { root: v.root(), navButton: v.navButton(), periodButton: v.periodButton() };
49
- }, ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
56
+ }, /* @ts-ignore */
57
+ ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
50
58
  onPeriodClick() {
51
59
  if (this.canSwitchView())
52
60
  this.periodClicked.emit();
53
61
  }
54
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.14", type: CalendarHeaderComponent, isStandalone: true, selector: "tw-calendar-header", inputs: { periodLabel: { classPropertyName: "periodLabel", publicName: "periodLabel", isSignal: true, isRequired: true, transformFunction: null }, periodAriaLabel: { classPropertyName: "periodAriaLabel", publicName: "periodAriaLabel", isSignal: true, isRequired: true, transformFunction: null }, prevAriaLabel: { classPropertyName: "prevAriaLabel", publicName: "prevAriaLabel", isSignal: true, isRequired: true, transformFunction: null }, nextAriaLabel: { classPropertyName: "nextAriaLabel", publicName: "nextAriaLabel", isSignal: true, isRequired: true, transformFunction: null }, prevDisabled: { classPropertyName: "prevDisabled", publicName: "prevDisabled", isSignal: true, isRequired: false, transformFunction: null }, nextDisabled: { classPropertyName: "nextDisabled", publicName: "nextDisabled", isSignal: true, isRequired: false, transformFunction: null }, canSwitchView: { classPropertyName: "canSwitchView", publicName: "canSwitchView", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { prevClicked: "prevClicked", nextClicked: "nextClicked", periodClicked: "periodClicked" }, host: { classAttribute: "block" }, ngImport: i0, template: `
62
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.7", type: CalendarHeaderComponent, isStandalone: true, selector: "tw-calendar-header", inputs: { periodLabel: { classPropertyName: "periodLabel", publicName: "periodLabel", isSignal: true, isRequired: true, transformFunction: null }, periodAriaLabel: { classPropertyName: "periodAriaLabel", publicName: "periodAriaLabel", isSignal: true, isRequired: true, transformFunction: null }, prevAriaLabel: { classPropertyName: "prevAriaLabel", publicName: "prevAriaLabel", isSignal: true, isRequired: true, transformFunction: null }, nextAriaLabel: { classPropertyName: "nextAriaLabel", publicName: "nextAriaLabel", isSignal: true, isRequired: true, transformFunction: null }, prevDisabled: { classPropertyName: "prevDisabled", publicName: "prevDisabled", isSignal: true, isRequired: false, transformFunction: null }, nextDisabled: { classPropertyName: "nextDisabled", publicName: "nextDisabled", isSignal: true, isRequired: false, transformFunction: null }, canSwitchView: { classPropertyName: "canSwitchView", publicName: "canSwitchView", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { prevClicked: "prevClicked", nextClicked: "nextClicked", periodClicked: "periodClicked" }, host: { classAttribute: "block" }, ngImport: i0, template: `
56
64
  <div [class]="classes().root">
57
65
  <button
58
66
  type="button"
@@ -112,7 +120,7 @@ class CalendarHeaderComponent {
112
120
  </div>
113
121
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
114
122
  }
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarHeaderComponent, decorators: [{
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarHeaderComponent, decorators: [{
116
124
  type: Component,
117
125
  args: [{
118
126
  selector: 'tw-calendar-header',
@@ -378,10 +386,10 @@ class CalendarIntl {
378
386
  'Use Home and End to jump to the start or end of the week.',
379
387
  'Press Escape to close the calendar.',
380
388
  ].join(' ');
381
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
382
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarIntl });
389
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
390
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarIntl });
383
391
  }
384
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarIntl, decorators: [{
392
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarIntl, decorators: [{
385
393
  type: Injectable
386
394
  }] });
387
395
  /**
@@ -974,17 +982,23 @@ const cellVariants = tv({
974
982
  * emits events for clicks, keyboard navigation, mouse hover, and focus.
975
983
  */
976
984
  class CalendarCellComponent {
977
- buttonRef = viewChild('cellButton', ...(ngDevMode ? [{ debugName: "buttonRef" }] : /* istanbul ignore next */ []));
985
+ buttonRef = viewChild('cellButton', /* @ts-ignore */
986
+ ...(ngDevMode ? [{ debugName: "buttonRef" }] : /* istanbul ignore next */ []));
978
987
  /** The cell data object to render. */
979
- cell = input.required(...(ngDevMode ? [{ debugName: "cell" }] : /* istanbul ignore next */ []));
988
+ cell = input.required(/* @ts-ignore */
989
+ ...(ngDevMode ? [{ debugName: "cell" }] : /* istanbul ignore next */ []));
980
990
  /** The active calendar view — drives cell dimensions and radius. */
981
- view = input('day', ...(ngDevMode ? [{ debugName: "view" }] : /* istanbul ignore next */ []));
991
+ view = input('day', /* @ts-ignore */
992
+ ...(ngDevMode ? [{ debugName: "view" }] : /* istanbul ignore next */ []));
982
993
  /** `true` when the cell's date is outside the currently displayed month. */
983
- outside = input(false, ...(ngDevMode ? [{ debugName: "outside" }] : /* istanbul ignore next */ []));
994
+ outside = input(false, /* @ts-ignore */
995
+ ...(ngDevMode ? [{ debugName: "outside" }] : /* istanbul ignore next */ []));
984
996
  /** Tab index for roving focus (`0` for the active cell, `-1` otherwise). */
985
- tabindex = input(-1, ...(ngDevMode ? [{ debugName: "tabindex" }] : /* istanbul ignore next */ []));
997
+ tabindex = input(-1, /* @ts-ignore */
998
+ ...(ngDevMode ? [{ debugName: "tabindex" }] : /* istanbul ignore next */ []));
986
999
  /** Optional template rendered inside the button — receives `{ $implicit: CalendarCell<D> }`. */
987
- cellTemplate = input(null, ...(ngDevMode ? [{ debugName: "cellTemplate" }] : /* istanbul ignore next */ []));
1000
+ cellTemplate = input(null, /* @ts-ignore */
1001
+ ...(ngDevMode ? [{ debugName: "cellTemplate" }] : /* istanbul ignore next */ []));
988
1002
  /** Emitted when the user activates the cell (click, Enter, or Space). */
989
1003
  selected = output();
990
1004
  /** Emitted when the cell gains focus. */
@@ -1014,7 +1028,8 @@ class CalendarCellComponent {
1014
1028
  if (c.isToday)
1015
1029
  return 'today';
1016
1030
  return 'default';
1017
- }, ...(ngDevMode ? [{ debugName: "cellState" }] : /* istanbul ignore next */ []));
1031
+ }, /* @ts-ignore */
1032
+ ...(ngDevMode ? [{ debugName: "cellState" }] : /* istanbul ignore next */ []));
1018
1033
  wrapperRange = computed(() => {
1019
1034
  const c = this.cell();
1020
1035
  if (c.isRangeStart && c.isRangeEnd)
@@ -1026,19 +1041,23 @@ class CalendarCellComponent {
1026
1041
  if (c.isRangeMiddle)
1027
1042
  return 'middle';
1028
1043
  return 'none';
1029
- }, ...(ngDevMode ? [{ debugName: "wrapperRange" }] : /* istanbul ignore next */ []));
1044
+ }, /* @ts-ignore */
1045
+ ...(ngDevMode ? [{ debugName: "wrapperRange" }] : /* istanbul ignore next */ []));
1030
1046
  variantResult = computed(() => cellVariants({
1031
1047
  view: this.view(),
1032
1048
  state: this.cellState(),
1033
1049
  outside: this.outside(),
1034
1050
  range: this.wrapperRange(),
1035
- }), ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
1036
- wrapperClasses = computed(() => this.variantResult().wrapper(), ...(ngDevMode ? [{ debugName: "wrapperClasses" }] : /* istanbul ignore next */ []));
1051
+ }), /* @ts-ignore */
1052
+ ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
1053
+ wrapperClasses = computed(() => this.variantResult().wrapper(), /* @ts-ignore */
1054
+ ...(ngDevMode ? [{ debugName: "wrapperClasses" }] : /* istanbul ignore next */ []));
1037
1055
  buttonClasses = computed(() => {
1038
1056
  const base = this.variantResult().button();
1039
1057
  const extra = this.cell().cssClasses;
1040
1058
  return extra ? `${base} ${extra}` : base;
1041
- }, ...(ngDevMode ? [{ debugName: "buttonClasses" }] : /* istanbul ignore next */ []));
1059
+ }, /* @ts-ignore */
1060
+ ...(ngDevMode ? [{ debugName: "buttonClasses" }] : /* istanbul ignore next */ []));
1042
1061
  onClick() {
1043
1062
  const c = this.cell();
1044
1063
  if (c.enabled)
@@ -1078,8 +1097,8 @@ class CalendarCellComponent {
1078
1097
  focusButton() {
1079
1098
  this.buttonRef()?.nativeElement.focus();
1080
1099
  }
1081
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1082
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: CalendarCellComponent, isStandalone: true, selector: "tw-calendar-cell", inputs: { cell: { classPropertyName: "cell", publicName: "cell", isSignal: true, isRequired: true, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, outside: { classPropertyName: "outside", publicName: "outside", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null }, cellTemplate: { classPropertyName: "cellTemplate", publicName: "cellTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected", focused: "focused", previewed: "previewed", keyNav: "keyNav" }, host: { attributes: { "role": "gridcell" }, properties: { "attr.data-state-today": "cell().isToday ? '' : null", "attr.data-state-selected": "cell().isSelected && !cell().isRangeStart && !cell().isRangeEnd && !cell().isRangeMiddle ? '' : null", "attr.data-state-range-start": "cell().isRangeStart ? '' : null", "attr.data-state-range-end": "cell().isRangeEnd ? '' : null", "attr.data-state-in-range": "cell().isRangeMiddle ? '' : null", "attr.data-state-range-preview-start": "cell().isPreviewStart ? '' : null", "attr.data-state-range-preview-end": "cell().isPreviewEnd ? '' : null", "attr.data-state-in-range-preview": "cell().isPreviewMiddle ? '' : null", "attr.data-state-invalid-preview": "cell().isInvalidPreview ? '' : null", "attr.data-state-invalid-flash": "cell().isInvalidFlash ? '' : null", "attr.data-state-disabled": "!cell().enabled ? '' : null", "attr.data-state-out-of-month": "outside() ? '' : null", "attr.data-state-weekend": "cell().isWeekend ? '' : null", "attr.data-state-focused": "tabindex() === 0 ? '' : null" } }, viewQueries: [{ propertyName: "buttonRef", first: true, predicate: ["cellButton"], descendants: true, isSignal: true }], ngImport: i0, template: `
1100
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1101
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: CalendarCellComponent, isStandalone: true, selector: "tw-calendar-cell", inputs: { cell: { classPropertyName: "cell", publicName: "cell", isSignal: true, isRequired: true, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, outside: { classPropertyName: "outside", publicName: "outside", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null }, cellTemplate: { classPropertyName: "cellTemplate", publicName: "cellTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected", focused: "focused", previewed: "previewed", keyNav: "keyNav" }, host: { attributes: { "role": "gridcell" }, properties: { "attr.data-state-today": "cell().isToday ? '' : null", "attr.data-state-selected": "cell().isSelected && !cell().isRangeStart && !cell().isRangeEnd && !cell().isRangeMiddle ? '' : null", "attr.data-state-range-start": "cell().isRangeStart ? '' : null", "attr.data-state-range-end": "cell().isRangeEnd ? '' : null", "attr.data-state-in-range": "cell().isRangeMiddle ? '' : null", "attr.data-state-range-preview-start": "cell().isPreviewStart ? '' : null", "attr.data-state-range-preview-end": "cell().isPreviewEnd ? '' : null", "attr.data-state-in-range-preview": "cell().isPreviewMiddle ? '' : null", "attr.data-state-invalid-preview": "cell().isInvalidPreview ? '' : null", "attr.data-state-invalid-flash": "cell().isInvalidFlash ? '' : null", "attr.data-state-disabled": "!cell().enabled ? '' : null", "attr.data-state-out-of-month": "outside() ? '' : null", "attr.data-state-weekend": "cell().isWeekend ? '' : null", "attr.data-state-focused": "tabindex() === 0 ? '' : null" } }, viewQueries: [{ propertyName: "buttonRef", first: true, predicate: ["cellButton"], descendants: true, isSignal: true }], ngImport: i0, template: `
1083
1102
  <div [class]="wrapperClasses()">
1084
1103
  <button
1085
1104
  #cellButton
@@ -1108,7 +1127,7 @@ class CalendarCellComponent {
1108
1127
  </div>
1109
1128
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1110
1129
  }
1111
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarCellComponent, decorators: [{
1130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarCellComponent, decorators: [{
1112
1131
  type: Component,
1113
1132
  args: [{
1114
1133
  selector: 'tw-calendar-cell',
@@ -1174,33 +1193,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
1174
1193
  class CalendarViewBase {
1175
1194
  dateAdapter = inject(DATE_ADAPTER);
1176
1195
  /** The date that anchors the grid being rendered. */
1177
- activeDate = input.required(...(ngDevMode ? [{ debugName: "activeDate" }] : /* istanbul ignore next */ []));
1196
+ activeDate = input.required(/* @ts-ignore */
1197
+ ...(ngDevMode ? [{ debugName: "activeDate" }] : /* istanbul ignore next */ []));
1178
1198
  /** Current selection — scalar, array (multi), or range. */
1179
- selected = input(null, ...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
1199
+ selected = input(null, /* @ts-ignore */
1200
+ ...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
1180
1201
  /** Minimum selectable date. */
1181
- minDate = input(null, ...(ngDevMode ? [{ debugName: "minDate" }] : /* istanbul ignore next */ []));
1202
+ minDate = input(null, /* @ts-ignore */
1203
+ ...(ngDevMode ? [{ debugName: "minDate" }] : /* istanbul ignore next */ []));
1182
1204
  /** Maximum selectable date. */
1183
- maxDate = input(null, ...(ngDevMode ? [{ debugName: "maxDate" }] : /* istanbul ignore next */ []));
1205
+ maxDate = input(null, /* @ts-ignore */
1206
+ ...(ngDevMode ? [{ debugName: "maxDate" }] : /* istanbul ignore next */ []));
1184
1207
  /** Per-date predicate — return `false` to disable. */
1185
- dateFilter = input(null, ...(ngDevMode ? [{ debugName: "dateFilter" }] : /* istanbul ignore next */ []));
1208
+ dateFilter = input(null, /* @ts-ignore */
1209
+ ...(ngDevMode ? [{ debugName: "dateFilter" }] : /* istanbul ignore next */ []));
1186
1210
  /** Explicitly disabled dates — array (compared via `adapter.sameDate`) or predicate (returns `true` for disabled). */
1187
- disabledDates = input(null, ...(ngDevMode ? [{ debugName: "disabledDates" }] : /* istanbul ignore next */ []));
1211
+ disabledDates = input(null, /* @ts-ignore */
1212
+ ...(ngDevMode ? [{ debugName: "disabledDates" }] : /* istanbul ignore next */ []));
1188
1213
  /** Days of the week to disable (0=Sun … 6=Sat). Empty array = no day-of-week disabling. */
1189
- disabledDaysOfWeek = input([], ...(ngDevMode ? [{ debugName: "disabledDaysOfWeek" }] : /* istanbul ignore next */ []));
1214
+ disabledDaysOfWeek = input([], /* @ts-ignore */
1215
+ ...(ngDevMode ? [{ debugName: "disabledDaysOfWeek" }] : /* istanbul ignore next */ []));
1190
1216
  /** Per-cell class override. */
1191
- dateClass = input(null, ...(ngDevMode ? [{ debugName: "dateClass" }] : /* istanbul ignore next */ []));
1217
+ dateClass = input(null, /* @ts-ignore */
1218
+ ...(ngDevMode ? [{ debugName: "dateClass" }] : /* istanbul ignore next */ []));
1192
1219
  /** Hover-preview start (set while user is mid-range pick). */
1193
- previewStart = input(null, ...(ngDevMode ? [{ debugName: "previewStart" }] : /* istanbul ignore next */ []));
1220
+ previewStart = input(null, /* @ts-ignore */
1221
+ ...(ngDevMode ? [{ debugName: "previewStart" }] : /* istanbul ignore next */ []));
1194
1222
  /** Hover-preview end. */
1195
- previewEnd = input(null, ...(ngDevMode ? [{ debugName: "previewEnd" }] : /* istanbul ignore next */ []));
1223
+ previewEnd = input(null, /* @ts-ignore */
1224
+ ...(ngDevMode ? [{ debugName: "previewEnd" }] : /* istanbul ignore next */ []));
1196
1225
  /** Phase 6 — date that briefly flashes as invalid (rejected commit). Cleared by the orchestrator. */
1197
- invalidFlashDate = input(null, ...(ngDevMode ? [{ debugName: "invalidFlashDate" }] : /* istanbul ignore next */ []));
1226
+ invalidFlashDate = input(null, /* @ts-ignore */
1227
+ ...(ngDevMode ? [{ debugName: "invalidFlashDate" }] : /* istanbul ignore next */ []));
1198
1228
  /** `true` when the parent calendar allows more than one cell to be selected at once. Drives `aria-multiselectable` on the grid host. */
1199
- multiSelectable = input(false, ...(ngDevMode ? [{ debugName: "multiSelectable" }] : /* istanbul ignore next */ []));
1229
+ multiSelectable = input(false, /* @ts-ignore */
1230
+ ...(ngDevMode ? [{ debugName: "multiSelectable" }] : /* istanbul ignore next */ []));
1200
1231
  /** `true` when the parent calendar is in read-only mode. Drives `aria-readonly` on the grid host. */
1201
- readonlyGrid = input(false, ...(ngDevMode ? [{ debugName: "readonlyGrid" }] : /* istanbul ignore next */ []));
1232
+ readonlyGrid = input(false, /* @ts-ignore */
1233
+ ...(ngDevMode ? [{ debugName: "readonlyGrid" }] : /* istanbul ignore next */ []));
1202
1234
  /** Optional cell-content override. */
1203
- cellTemplate = input(null, ...(ngDevMode ? [{ debugName: "cellTemplate" }] : /* istanbul ignore next */ []));
1235
+ cellTemplate = input(null, /* @ts-ignore */
1236
+ ...(ngDevMode ? [{ debugName: "cellTemplate" }] : /* istanbul ignore next */ []));
1204
1237
  /** Fires when the user activates an enabled cell (click, Enter, or Space). Payload is the activated cell's date. */
1205
1238
  selectedChange = output();
1206
1239
  /** Fires when keyboard navigation or programmatic focus moves the roving cursor to a new cell. Payload is the new active date. */
@@ -1208,9 +1241,11 @@ class CalendarViewBase {
1208
1241
  /** Fires on pointer hover with the hovered date, and again with `null` when the pointer leaves the grid. The parent orchestrator drives any range-preview state from this stream. */
1209
1242
  previewChange = output();
1210
1243
  /** Cell that should own the roving-tabindex cursor. `null` means "use `activeDate`". */
1211
- focusedCellValue = signal(null, ...(ngDevMode ? [{ debugName: "focusedCellValue" }] : /* istanbul ignore next */ []));
1244
+ focusedCellValue = signal(null, /* @ts-ignore */
1245
+ ...(ngDevMode ? [{ debugName: "focusedCellValue" }] : /* istanbul ignore next */ []));
1212
1246
  /** Pending focus target — drained after the next render. */
1213
- focusPending = signal(null, ...(ngDevMode ? [{ debugName: "focusPending" }] : /* istanbul ignore next */ []));
1247
+ focusPending = signal(null, /* @ts-ignore */
1248
+ ...(ngDevMode ? [{ debugName: "focusPending" }] : /* istanbul ignore next */ []));
1214
1249
  constructor() {
1215
1250
  afterEveryRender(() => {
1216
1251
  const pending = this.focusPending();
@@ -1222,7 +1257,8 @@ class CalendarViewBase {
1222
1257
  });
1223
1258
  }
1224
1259
  /** Today's date — memoized per view instance. */
1225
- today = computed(() => this.dateAdapter.today(), ...(ngDevMode ? [{ debugName: "today" }] : /* istanbul ignore next */ []));
1260
+ today = computed(() => this.dateAdapter.today(), /* @ts-ignore */
1261
+ ...(ngDevMode ? [{ debugName: "today" }] : /* istanbul ignore next */ []));
1226
1262
  /** True when `date` is part of the committed selection. */
1227
1263
  isSelected(date) {
1228
1264
  const sel = this.selected();
@@ -1313,10 +1349,10 @@ class CalendarViewBase {
1313
1349
  const target = this.focusedCellValue() ?? this.getActiveCompareValue();
1314
1350
  this.focusCell(target);
1315
1351
  }
1316
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarViewBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1317
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: CalendarViewBase, isStandalone: true, inputs: { activeDate: { classPropertyName: "activeDate", publicName: "activeDate", isSignal: true, isRequired: true, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, dateFilter: { classPropertyName: "dateFilter", publicName: "dateFilter", isSignal: true, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, disabledDaysOfWeek: { classPropertyName: "disabledDaysOfWeek", publicName: "disabledDaysOfWeek", isSignal: true, isRequired: false, transformFunction: null }, dateClass: { classPropertyName: "dateClass", publicName: "dateClass", isSignal: true, isRequired: false, transformFunction: null }, previewStart: { classPropertyName: "previewStart", publicName: "previewStart", isSignal: true, isRequired: false, transformFunction: null }, previewEnd: { classPropertyName: "previewEnd", publicName: "previewEnd", isSignal: true, isRequired: false, transformFunction: null }, invalidFlashDate: { classPropertyName: "invalidFlashDate", publicName: "invalidFlashDate", isSignal: true, isRequired: false, transformFunction: null }, multiSelectable: { classPropertyName: "multiSelectable", publicName: "multiSelectable", isSignal: true, isRequired: false, transformFunction: null }, readonlyGrid: { classPropertyName: "readonlyGrid", publicName: "readonlyGrid", isSignal: true, isRequired: false, transformFunction: null }, cellTemplate: { classPropertyName: "cellTemplate", publicName: "cellTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedChange: "selectedChange", activeDateChange: "activeDateChange", previewChange: "previewChange" }, ngImport: i0 });
1352
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarViewBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1353
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: CalendarViewBase, isStandalone: true, inputs: { activeDate: { classPropertyName: "activeDate", publicName: "activeDate", isSignal: true, isRequired: true, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, dateFilter: { classPropertyName: "dateFilter", publicName: "dateFilter", isSignal: true, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, disabledDaysOfWeek: { classPropertyName: "disabledDaysOfWeek", publicName: "disabledDaysOfWeek", isSignal: true, isRequired: false, transformFunction: null }, dateClass: { classPropertyName: "dateClass", publicName: "dateClass", isSignal: true, isRequired: false, transformFunction: null }, previewStart: { classPropertyName: "previewStart", publicName: "previewStart", isSignal: true, isRequired: false, transformFunction: null }, previewEnd: { classPropertyName: "previewEnd", publicName: "previewEnd", isSignal: true, isRequired: false, transformFunction: null }, invalidFlashDate: { classPropertyName: "invalidFlashDate", publicName: "invalidFlashDate", isSignal: true, isRequired: false, transformFunction: null }, multiSelectable: { classPropertyName: "multiSelectable", publicName: "multiSelectable", isSignal: true, isRequired: false, transformFunction: null }, readonlyGrid: { classPropertyName: "readonlyGrid", publicName: "readonlyGrid", isSignal: true, isRequired: false, transformFunction: null }, cellTemplate: { classPropertyName: "cellTemplate", publicName: "cellTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedChange: "selectedChange", activeDateChange: "activeDateChange", previewChange: "previewChange" }, ngImport: i0 });
1318
1354
  }
1319
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarViewBase, decorators: [{
1355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarViewBase, decorators: [{
1320
1356
  type: Directive
1321
1357
  }], ctorParameters: () => [], propDecorators: { activeDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeDate", required: true }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], minDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "minDate", required: false }] }], maxDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDate", required: false }] }], dateFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateFilter", required: false }] }], disabledDates: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledDates", required: false }] }], disabledDaysOfWeek: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledDaysOfWeek", required: false }] }], dateClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateClass", required: false }] }], previewStart: [{ type: i0.Input, args: [{ isSignal: true, alias: "previewStart", required: false }] }], previewEnd: [{ type: i0.Input, args: [{ isSignal: true, alias: "previewEnd", required: false }] }], invalidFlashDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalidFlashDate", required: false }] }], multiSelectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiSelectable", required: false }] }], readonlyGrid: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonlyGrid", required: false }] }], cellTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "cellTemplate", required: false }] }], selectedChange: [{ type: i0.Output, args: ["selectedChange"] }], activeDateChange: [{ type: i0.Output, args: ["activeDateChange"] }], previewChange: [{ type: i0.Output, args: ["previewChange"] }] } });
1322
1358
 
@@ -1327,14 +1363,20 @@ const TOTAL_CELLS = DAYS_PER_WEEK * WEEKS_PER_MONTH;
1327
1363
  */
1328
1364
  class MonthViewComponent extends CalendarViewBase {
1329
1365
  view = 'day';
1330
- cellComponents = viewChildren(CalendarCellComponent, ...(ngDevMode ? [{ debugName: "cellComponents" }] : /* istanbul ignore next */ []));
1366
+ cellComponents = viewChildren(CalendarCellComponent, /* @ts-ignore */
1367
+ ...(ngDevMode ? [{ debugName: "cellComponents" }] : /* istanbul ignore next */ []));
1331
1368
  /** Override first day of week (0=Sun, 1=Mon). */
1332
- firstDayOfWeek = input(0, ...(ngDevMode ? [{ debugName: "firstDayOfWeek" }] : /* istanbul ignore next */ []));
1369
+ firstDayOfWeek = input(0, /* @ts-ignore */
1370
+ ...(ngDevMode ? [{ debugName: "firstDayOfWeek" }] : /* istanbul ignore next */ []));
1333
1371
  /** Index within a multi-month row (0=left, 1+=right) — used by the orchestrator to disambiguate focus. */
1334
- gridIndex = input(0, ...(ngDevMode ? [{ debugName: "gridIndex" }] : /* istanbul ignore next */ []));
1335
- weekdayHeaders = computed(() => getWeekdayHeaders(this.dateAdapter, 'long', this.firstDayOfWeek()), ...(ngDevMode ? [{ debugName: "weekdayHeaders" }] : /* istanbul ignore next */ []));
1336
- displayMonth = computed(() => this.dateAdapter.getMonth(this.activeDate()), ...(ngDevMode ? [{ debugName: "displayMonth" }] : /* istanbul ignore next */ []));
1337
- displayYear = computed(() => this.dateAdapter.getYear(this.activeDate()), ...(ngDevMode ? [{ debugName: "displayYear" }] : /* istanbul ignore next */ []));
1372
+ gridIndex = input(0, /* @ts-ignore */
1373
+ ...(ngDevMode ? [{ debugName: "gridIndex" }] : /* istanbul ignore next */ []));
1374
+ weekdayHeaders = computed(() => getWeekdayHeaders(this.dateAdapter, 'long', this.firstDayOfWeek()), /* @ts-ignore */
1375
+ ...(ngDevMode ? [{ debugName: "weekdayHeaders" }] : /* istanbul ignore next */ []));
1376
+ displayMonth = computed(() => this.dateAdapter.getMonth(this.activeDate()), /* @ts-ignore */
1377
+ ...(ngDevMode ? [{ debugName: "displayMonth" }] : /* istanbul ignore next */ []));
1378
+ displayYear = computed(() => this.dateAdapter.getYear(this.activeDate()), /* @ts-ignore */
1379
+ ...(ngDevMode ? [{ debugName: "displayYear" }] : /* istanbul ignore next */ []));
1338
1380
  cells = computed(() => {
1339
1381
  const active = this.activeDate();
1340
1382
  const firstOfMonth = getFirstDayOfMonth(active, this.dateAdapter);
@@ -1380,11 +1422,13 @@ class MonthViewComponent extends CalendarViewBase {
1380
1422
  days.push(cell);
1381
1423
  }
1382
1424
  return createGrid(days, DAYS_PER_WEEK);
1383
- }, ...(ngDevMode ? [{ debugName: "cells" }] : /* istanbul ignore next */ []));
1425
+ }, /* @ts-ignore */
1426
+ ...(ngDevMode ? [{ debugName: "cells" }] : /* istanbul ignore next */ []));
1384
1427
  gridLabel = computed(() => {
1385
1428
  const months = this.dateAdapter.getMonthNames('long');
1386
1429
  return `${months[this.displayMonth()]} ${this.displayYear()}`;
1387
- }, ...(ngDevMode ? [{ debugName: "gridLabel" }] : /* istanbul ignore next */ []));
1430
+ }, /* @ts-ignore */
1431
+ ...(ngDevMode ? [{ debugName: "gridLabel" }] : /* istanbul ignore next */ []));
1388
1432
  getActiveCompareValue() {
1389
1433
  const d = this.activeDate();
1390
1434
  return (this.dateAdapter.getYear(d) * 10000 +
@@ -1445,8 +1489,8 @@ class MonthViewComponent extends CalendarViewBase {
1445
1489
  this.activeDateChange.emit(newDate);
1446
1490
  }
1447
1491
  }
1448
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MonthViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1449
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: MonthViewComponent, isStandalone: true, selector: "tw-calendar-month-view", inputs: { firstDayOfWeek: { classPropertyName: "firstDayOfWeek", publicName: "firstDayOfWeek", isSignal: true, isRequired: false, transformFunction: null }, gridIndex: { classPropertyName: "gridIndex", publicName: "gridIndex", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block" }, viewQueries: [{ propertyName: "cellComponents", predicate: CalendarCellComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
1492
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MonthViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1493
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MonthViewComponent, isStandalone: true, selector: "tw-calendar-month-view", inputs: { firstDayOfWeek: { classPropertyName: "firstDayOfWeek", publicName: "firstDayOfWeek", isSignal: true, isRequired: false, transformFunction: null }, gridIndex: { classPropertyName: "gridIndex", publicName: "gridIndex", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block" }, viewQueries: [{ propertyName: "cellComponents", predicate: CalendarCellComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
1450
1494
  <div
1451
1495
  role="grid"
1452
1496
  [attr.aria-label]="gridLabel()"
@@ -1487,7 +1531,7 @@ class MonthViewComponent extends CalendarViewBase {
1487
1531
  </div>
1488
1532
  `, isInline: true, dependencies: [{ kind: "component", type: CalendarCellComponent, selector: "tw-calendar-cell", inputs: ["cell", "view", "outside", "tabindex", "cellTemplate"], outputs: ["selected", "focused", "previewed", "keyNav"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1489
1533
  }
1490
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MonthViewComponent, decorators: [{
1534
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MonthViewComponent, decorators: [{
1491
1535
  type: Component,
1492
1536
  args: [{
1493
1537
  selector: 'tw-calendar-month-view',
@@ -1543,8 +1587,10 @@ const MONTHS_PER_YEAR = 12;
1543
1587
  */
1544
1588
  class YearViewComponent extends CalendarViewBase {
1545
1589
  view = 'month';
1546
- cellComponents = viewChildren(CalendarCellComponent, ...(ngDevMode ? [{ debugName: "cellComponents" }] : /* istanbul ignore next */ []));
1547
- displayYear = computed(() => this.dateAdapter.getYear(this.activeDate()), ...(ngDevMode ? [{ debugName: "displayYear" }] : /* istanbul ignore next */ []));
1590
+ cellComponents = viewChildren(CalendarCellComponent, /* @ts-ignore */
1591
+ ...(ngDevMode ? [{ debugName: "cellComponents" }] : /* istanbul ignore next */ []));
1592
+ displayYear = computed(() => this.dateAdapter.getYear(this.activeDate()), /* @ts-ignore */
1593
+ ...(ngDevMode ? [{ debugName: "displayYear" }] : /* istanbul ignore next */ []));
1548
1594
  cells = computed(() => {
1549
1595
  const year = this.displayYear();
1550
1596
  const monthNames = this.dateAdapter.getMonthNames('short');
@@ -1577,8 +1623,10 @@ class YearViewComponent extends CalendarViewBase {
1577
1623
  months.push(cell);
1578
1624
  }
1579
1625
  return createGrid(months, MONTHS_PER_ROW);
1580
- }, ...(ngDevMode ? [{ debugName: "cells" }] : /* istanbul ignore next */ []));
1581
- gridLabel = computed(() => `${this.displayYear()}`, ...(ngDevMode ? [{ debugName: "gridLabel" }] : /* istanbul ignore next */ []));
1626
+ }, /* @ts-ignore */
1627
+ ...(ngDevMode ? [{ debugName: "cells" }] : /* istanbul ignore next */ []));
1628
+ gridLabel = computed(() => `${this.displayYear()}`, /* @ts-ignore */
1629
+ ...(ngDevMode ? [{ debugName: "gridLabel" }] : /* istanbul ignore next */ []));
1582
1630
  getActiveCompareValue() {
1583
1631
  return this.dateAdapter.getMonth(this.activeDate());
1584
1632
  }
@@ -1693,8 +1741,8 @@ class YearViewComponent extends CalendarViewBase {
1693
1741
  return (this.dateAdapter.compare(monthDate, startMonth) > 0 &&
1694
1742
  this.dateAdapter.compare(monthDate, endMonth) < 0);
1695
1743
  }
1696
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: YearViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1697
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: YearViewComponent, isStandalone: true, selector: "tw-calendar-year-view", host: { classAttribute: "block" }, viewQueries: [{ propertyName: "cellComponents", predicate: CalendarCellComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
1744
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: YearViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1745
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: YearViewComponent, isStandalone: true, selector: "tw-calendar-year-view", host: { classAttribute: "block" }, viewQueries: [{ propertyName: "cellComponents", predicate: CalendarCellComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
1698
1746
  <div
1699
1747
  role="grid"
1700
1748
  [attr.aria-label]="gridLabel()"
@@ -1721,7 +1769,7 @@ class YearViewComponent extends CalendarViewBase {
1721
1769
  </div>
1722
1770
  `, isInline: true, dependencies: [{ kind: "component", type: CalendarCellComponent, selector: "tw-calendar-cell", inputs: ["cell", "view", "outside", "tabindex", "cellTemplate"], outputs: ["selected", "focused", "previewed", "keyNav"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1723
1771
  }
1724
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: YearViewComponent, decorators: [{
1772
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: YearViewComponent, decorators: [{
1725
1773
  type: Component,
1726
1774
  args: [{
1727
1775
  selector: 'tw-calendar-year-view',
@@ -1766,9 +1814,12 @@ const yearsPerPage = YEARS_PER_PAGE;
1766
1814
  */
1767
1815
  class YearsViewComponent extends CalendarViewBase {
1768
1816
  view = 'year';
1769
- cellComponents = viewChildren(CalendarCellComponent, ...(ngDevMode ? [{ debugName: "cellComponents" }] : /* istanbul ignore next */ []));
1770
- startYear = computed(() => getMultiYearStartingYear(this.dateAdapter.getYear(this.activeDate()), YEARS_PER_PAGE), ...(ngDevMode ? [{ debugName: "startYear" }] : /* istanbul ignore next */ []));
1771
- endYear = computed(() => this.startYear() + YEARS_PER_PAGE - 1, ...(ngDevMode ? [{ debugName: "endYear" }] : /* istanbul ignore next */ []));
1817
+ cellComponents = viewChildren(CalendarCellComponent, /* @ts-ignore */
1818
+ ...(ngDevMode ? [{ debugName: "cellComponents" }] : /* istanbul ignore next */ []));
1819
+ startYear = computed(() => getMultiYearStartingYear(this.dateAdapter.getYear(this.activeDate()), YEARS_PER_PAGE), /* @ts-ignore */
1820
+ ...(ngDevMode ? [{ debugName: "startYear" }] : /* istanbul ignore next */ []));
1821
+ endYear = computed(() => this.startYear() + YEARS_PER_PAGE - 1, /* @ts-ignore */
1822
+ ...(ngDevMode ? [{ debugName: "endYear" }] : /* istanbul ignore next */ []));
1772
1823
  cells = computed(() => {
1773
1824
  const start = this.startYear();
1774
1825
  const today = this.today();
@@ -1800,8 +1851,10 @@ class YearsViewComponent extends CalendarViewBase {
1800
1851
  years.push(cell);
1801
1852
  }
1802
1853
  return createGrid(years, YEARS_PER_ROW);
1803
- }, ...(ngDevMode ? [{ debugName: "cells" }] : /* istanbul ignore next */ []));
1804
- gridLabel = computed(() => `${this.startYear()} – ${this.endYear()}`, ...(ngDevMode ? [{ debugName: "gridLabel" }] : /* istanbul ignore next */ []));
1854
+ }, /* @ts-ignore */
1855
+ ...(ngDevMode ? [{ debugName: "cells" }] : /* istanbul ignore next */ []));
1856
+ gridLabel = computed(() => `${this.startYear()} – ${this.endYear()}`, /* @ts-ignore */
1857
+ ...(ngDevMode ? [{ debugName: "gridLabel" }] : /* istanbul ignore next */ []));
1805
1858
  getActiveCompareValue() {
1806
1859
  return this.dateAdapter.getYear(this.activeDate());
1807
1860
  }
@@ -1906,8 +1959,8 @@ class YearsViewComponent extends CalendarViewBase {
1906
1959
  return false;
1907
1960
  return year > this.dateAdapter.getYear(s) && year < this.dateAdapter.getYear(e);
1908
1961
  }
1909
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: YearsViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1910
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: YearsViewComponent, isStandalone: true, selector: "tw-calendar-years-view", host: { classAttribute: "block" }, viewQueries: [{ propertyName: "cellComponents", predicate: CalendarCellComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
1962
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: YearsViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1963
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: YearsViewComponent, isStandalone: true, selector: "tw-calendar-years-view", host: { classAttribute: "block" }, viewQueries: [{ propertyName: "cellComponents", predicate: CalendarCellComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
1911
1964
  <div
1912
1965
  role="grid"
1913
1966
  [attr.aria-label]="gridLabel()"
@@ -1934,7 +1987,7 @@ class YearsViewComponent extends CalendarViewBase {
1934
1987
  </div>
1935
1988
  `, isInline: true, dependencies: [{ kind: "component", type: CalendarCellComponent, selector: "tw-calendar-cell", inputs: ["cell", "view", "outside", "tabindex", "cellTemplate"], outputs: ["selected", "focused", "previewed", "keyNav"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1936
1989
  }
1937
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: YearsViewComponent, decorators: [{
1990
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: YearsViewComponent, decorators: [{
1938
1991
  type: Component,
1939
1992
  args: [{
1940
1993
  selector: 'tw-calendar-years-view',
@@ -2009,10 +2062,10 @@ class SingleSelectionStrategy extends CalendarSelectionStrategy {
2009
2062
  isRangeMiddle(_date, _current) {
2010
2063
  return false;
2011
2064
  }
2012
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SingleSelectionStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2013
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SingleSelectionStrategy });
2065
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SingleSelectionStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2066
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SingleSelectionStrategy });
2014
2067
  }
2015
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SingleSelectionStrategy, decorators: [{
2068
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SingleSelectionStrategy, decorators: [{
2016
2069
  type: Injectable
2017
2070
  }] });
2018
2071
 
@@ -2081,10 +2134,10 @@ class RangeSelectionStrategy extends CalendarSelectionStrategy {
2081
2134
  !this.isRangeStart(date, current) &&
2082
2135
  !this.isRangeEnd(date, current));
2083
2136
  }
2084
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RangeSelectionStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2085
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RangeSelectionStrategy });
2137
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RangeSelectionStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2138
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RangeSelectionStrategy });
2086
2139
  }
2087
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RangeSelectionStrategy, decorators: [{
2140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: RangeSelectionStrategy, decorators: [{
2088
2141
  type: Injectable
2089
2142
  }] });
2090
2143
 
@@ -2120,10 +2173,10 @@ class MultiSelectionStrategy extends CalendarSelectionStrategy {
2120
2173
  isRangeMiddle(_date, _current) {
2121
2174
  return false;
2122
2175
  }
2123
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MultiSelectionStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2124
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MultiSelectionStrategy });
2176
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MultiSelectionStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2177
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MultiSelectionStrategy });
2125
2178
  }
2126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MultiSelectionStrategy, decorators: [{
2179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MultiSelectionStrategy, decorators: [{
2127
2180
  type: Injectable
2128
2181
  }] });
2129
2182
 
@@ -2177,10 +2230,10 @@ class WeekSelectionStrategy extends CalendarSelectionStrategy {
2177
2230
  const end = this.dateAdapter.addDays(start, 6);
2178
2231
  return { start, end };
2179
2232
  }
2180
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WeekSelectionStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2181
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WeekSelectionStrategy });
2233
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: WeekSelectionStrategy, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
2234
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: WeekSelectionStrategy });
2182
2235
  }
2183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WeekSelectionStrategy, decorators: [{
2236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: WeekSelectionStrategy, decorators: [{
2184
2237
  type: Injectable
2185
2238
  }] });
2186
2239
 
@@ -2260,7 +2313,8 @@ class CalendarComponent {
2260
2313
  injectedStrategy = inject(CALENDAR_SELECTION_STRATEGY, {
2261
2314
  optional: true,
2262
2315
  });
2263
- monthViews = viewChildren(MonthViewComponent, ...(ngDevMode ? [{ debugName: "monthViews" }] : /* istanbul ignore next */ []));
2316
+ monthViews = viewChildren(MonthViewComponent, /* @ts-ignore */
2317
+ ...(ngDevMode ? [{ debugName: "monthViews" }] : /* istanbul ignore next */ []));
2264
2318
  /**
2265
2319
  * Built-in strategies instantiated lazily in the host's injection context so
2266
2320
  * `inject(DATE_ADAPTER)` calls inside each strategy resolve. Range state will
@@ -2276,28 +2330,38 @@ class CalendarComponent {
2276
2330
  // Public inputs (§33.1)
2277
2331
  // ---------------------------------------------------------------------------
2278
2332
  /** Selection mode (§5). Changing this at runtime clears the value and emits `modeChange`. */
2279
- mode = model('single', ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
2333
+ modeInput = input('single', { ...(ngDevMode ? { debugName: "modeInput" } : /* istanbul ignore next */ {}), alias: 'mode' });
2334
+ mode = linkedSignal(this.modeInput, /* @ts-ignore */
2335
+ ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
2280
2336
  /**
2281
2337
  * Consumer-bound value. Shape narrows by `M`: `D | null` for single,
2282
2338
  * `D[]` for multiple, `{ start; end }` for range.
2283
2339
  */
2284
- value = model(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
2340
+ valueInput = input(null, { ...(ngDevMode ? { debugName: "valueInput" } : /* istanbul ignore next */ {}), alias: 'value' });
2341
+ value = linkedSignal(this.valueInput, /* @ts-ignore */
2342
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
2285
2343
  /** Anchor date for the displayed view. Defaults to today on mount. */
2286
- startAt = input(null, ...(ngDevMode ? [{ debugName: "startAt" }] : /* istanbul ignore next */ []));
2344
+ startAt = input(null, /* @ts-ignore */
2345
+ ...(ngDevMode ? [{ debugName: "startAt" }] : /* istanbul ignore next */ []));
2287
2346
  /** Minimum selectable date. */
2288
- minDate = input(null, ...(ngDevMode ? [{ debugName: "minDate" }] : /* istanbul ignore next */ []));
2347
+ minDate = input(null, /* @ts-ignore */
2348
+ ...(ngDevMode ? [{ debugName: "minDate" }] : /* istanbul ignore next */ []));
2289
2349
  /** Maximum selectable date. */
2290
- maxDate = input(null, ...(ngDevMode ? [{ debugName: "maxDate" }] : /* istanbul ignore next */ []));
2350
+ maxDate = input(null, /* @ts-ignore */
2351
+ ...(ngDevMode ? [{ debugName: "maxDate" }] : /* istanbul ignore next */ []));
2291
2352
  /** Per-date predicate — return `false` to disable. */
2292
- dateFilter = input(null, ...(ngDevMode ? [{ debugName: "dateFilter" }] : /* istanbul ignore next */ []));
2353
+ dateFilter = input(null, /* @ts-ignore */
2354
+ ...(ngDevMode ? [{ debugName: "dateFilter" }] : /* istanbul ignore next */ []));
2293
2355
  /**
2294
2356
  * Explicitly disabled dates (§10.1). Either an array (each entry compared via
2295
2357
  * `adapter.sameDate`) or a predicate returning `true` for disabled dates.
2296
2358
  * OR-combined with `dateFilter`, `disabledDaysOfWeek`, and `[minDate, maxDate]`.
2297
2359
  */
2298
- disabledDates = input(null, ...(ngDevMode ? [{ debugName: "disabledDates" }] : /* istanbul ignore next */ []));
2360
+ disabledDates = input(null, /* @ts-ignore */
2361
+ ...(ngDevMode ? [{ debugName: "disabledDates" }] : /* istanbul ignore next */ []));
2299
2362
  /** Days of the week to disable (0=Sun … 6=Sat). Empty array = no day-of-week disabling. */
2300
- disabledDaysOfWeek = input([], ...(ngDevMode ? [{ debugName: "disabledDaysOfWeek" }] : /* istanbul ignore next */ []));
2363
+ disabledDaysOfWeek = input([], /* @ts-ignore */
2364
+ ...(ngDevMode ? [{ debugName: "disabledDaysOfWeek" }] : /* istanbul ignore next */ []));
2301
2365
  /**
2302
2366
  * Bundle of date constraints (§10.1). Lets a consumer pass `minDate`, `maxDate`,
2303
2367
  * `disabledDates`, `disabledDaysOfWeek`, and `dateFilter` as a single object —
@@ -2306,67 +2370,86 @@ class CalendarComponent {
2306
2370
  * `disabledDaysOfWeek`, `dateFilter`) take precedence over fields here when both
2307
2371
  * are set non-null.
2308
2372
  */
2309
- constraints = input(null, ...(ngDevMode ? [{ debugName: "constraints" }] : /* istanbul ignore next */ []));
2373
+ constraints = input(null, /* @ts-ignore */
2374
+ ...(ngDevMode ? [{ debugName: "constraints" }] : /* istanbul ignore next */ []));
2310
2375
  /** Minimum range length in days, inclusive (`mode: 'range'` only). `null` = no minimum. */
2311
- minRangeLength = input(null, ...(ngDevMode ? [{ debugName: "minRangeLength" }] : /* istanbul ignore next */ []));
2376
+ minRangeLength = input(null, /* @ts-ignore */
2377
+ ...(ngDevMode ? [{ debugName: "minRangeLength" }] : /* istanbul ignore next */ []));
2312
2378
  /** Maximum range length in days, inclusive (`mode: 'range'` only). `null` = no maximum. */
2313
- maxRangeLength = input(null, ...(ngDevMode ? [{ debugName: "maxRangeLength" }] : /* istanbul ignore next */ []));
2379
+ maxRangeLength = input(null, /* @ts-ignore */
2380
+ ...(ngDevMode ? [{ debugName: "maxRangeLength" }] : /* istanbul ignore next */ []));
2314
2381
  /** Maximum number of selections in `mode: 'multiple'`. `null` = unlimited. */
2315
- maxSelections = input(null, ...(ngDevMode ? [{ debugName: "maxSelections" }] : /* istanbul ignore next */ []));
2382
+ maxSelections = input(null, /* @ts-ignore */
2383
+ ...(ngDevMode ? [{ debugName: "maxSelections" }] : /* istanbul ignore next */ []));
2316
2384
  /**
2317
2385
  * What happens when the user tries to select past `maxSelections` (§10.1).
2318
2386
  * `'emit-limit-reached'` (default) emits `selectionLimitReached` and ignores
2319
2387
  * the click; `'replace-oldest'` drops the first entry; `'ignore'` is silent.
2320
2388
  */
2321
- maxSelectionBehavior = input('emit-limit-reached', ...(ngDevMode ? [{ debugName: "maxSelectionBehavior" }] : /* istanbul ignore next */ []));
2389
+ maxSelectionBehavior = input('emit-limit-reached', /* @ts-ignore */
2390
+ ...(ngDevMode ? [{ debugName: "maxSelectionBehavior" }] : /* istanbul ignore next */ []));
2322
2391
  /**
2323
2392
  * IDREF list for the form-error live region (§28.3). When set, the calendar
2324
2393
  * root carries `aria-describedby="<value>"` so screen readers read consumer-
2325
2394
  * rendered error messages alongside the focused cell announcement.
2326
2395
  */
2327
- errorAriaDescribedBy = input(null, ...(ngDevMode ? [{ debugName: "errorAriaDescribedBy" }] : /* istanbul ignore next */ []));
2396
+ errorAriaDescribedBy = input(null, /* @ts-ignore */
2397
+ ...(ngDevMode ? [{ debugName: "errorAriaDescribedBy" }] : /* istanbul ignore next */ []));
2328
2398
  /**
2329
2399
  * How `mode: 'range'` reacts to a click after a complete range (§21.2):
2330
2400
  * - `'restart'` (default): start a new range with the clicked cell, emit `selectionRestart`.
2331
2401
  * - `'nearest-edge'`: move the closer endpoint (start vs end) to the clicked date and re-commit (§21.3); emits `selectionComplete({reason: 'nearest-edge'})`.
2332
2402
  * - `'require-clear'`: ignore the click + flash the cell as invalid (`data-state-invalid-flash`); user must call `clear()` first.
2333
2403
  */
2334
- rangeClickBehavior = input('restart', ...(ngDevMode ? [{ debugName: "rangeClickBehavior" }] : /* istanbul ignore next */ []));
2404
+ rangeClickBehavior = input('restart', /* @ts-ignore */
2405
+ ...(ngDevMode ? [{ debugName: "rangeClickBehavior" }] : /* istanbul ignore next */ []));
2335
2406
  /**
2336
2407
  * Range-mode behavior knobs. Accepts a partial object — unset fields use the
2337
2408
  * defaults documented on each property of `RangeBehaviorConfig`. Defaults:
2338
2409
  * `{ allowSingleDayRange: true, persistPartialRange: true, allowBackwardRange: false, disableRangesCrossingDisabledDates: false }`.
2339
2410
  */
2340
- rangeBehavior = input({}, ...(ngDevMode ? [{ debugName: "rangeBehavior" }] : /* istanbul ignore next */ []));
2411
+ rangeBehavior = input({}, /* @ts-ignore */
2412
+ ...(ngDevMode ? [{ debugName: "rangeBehavior" }] : /* istanbul ignore next */ []));
2341
2413
  /** Function producing per-cell CSS classes. */
2342
- dateClass = input(null, ...(ngDevMode ? [{ debugName: "dateClass" }] : /* istanbul ignore next */ []));
2414
+ dateClass = input(null, /* @ts-ignore */
2415
+ ...(ngDevMode ? [{ debugName: "dateClass" }] : /* istanbul ignore next */ []));
2343
2416
  /** When `true`, the calendar renders with a border and a soft shadow. */
2344
- bordered = input(true, ...(ngDevMode ? [{ debugName: "bordered" }] : /* istanbul ignore next */ []));
2417
+ bordered = input(true, /* @ts-ignore */
2418
+ ...(ngDevMode ? [{ debugName: "bordered" }] : /* istanbul ignore next */ []));
2345
2419
  /** Which view opens first. Defaults to `'day'`. Phase 8 will derive the default from `rangeGranularity`. */
2346
- startView = input('day', ...(ngDevMode ? [{ debugName: "startView" }] : /* istanbul ignore next */ []));
2420
+ startView = input('day', /* @ts-ignore */
2421
+ ...(ngDevMode ? [{ debugName: "startView" }] : /* istanbul ignore next */ []));
2347
2422
  /** Override first day of week (0=Sun, 1=Mon). Falls back to the adapter's default. */
2348
- firstDayOfWeek = input(null, ...(ngDevMode ? [{ debugName: "firstDayOfWeek" }] : /* istanbul ignore next */ []));
2423
+ firstDayOfWeek = input(null, /* @ts-ignore */
2424
+ ...(ngDevMode ? [{ debugName: "firstDayOfWeek" }] : /* istanbul ignore next */ []));
2349
2425
  /**
2350
2426
  * Number of months to display side-by-side (1 or 2). Phase 9 replaces this with a
2351
2427
  * full `numberOfMonths: 1..12+` surface (§23).
2352
2428
  */
2353
- monthColumns = input(1, ...(ngDevMode ? [{ debugName: "monthColumns" }] : /* istanbul ignore next */ []));
2429
+ monthColumns = input(1, /* @ts-ignore */
2430
+ ...(ngDevMode ? [{ debugName: "monthColumns" }] : /* istanbul ignore next */ []));
2354
2431
  /** Disabled state. Merged with any `setDisabledState` call from a bound form control via `effectiveDisabled`. */
2355
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
2432
+ disabled = input(false, /* @ts-ignore */
2433
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
2356
2434
  /** Read-only state (§33.1). When `true`, focus and keyboard navigation still work but selections cannot be committed. */
2357
- readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
2435
+ readonly = input(false, /* @ts-ignore */
2436
+ ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
2358
2437
  /** How a form reset restores internal state (§6.5). `'full'` (default) also restores view + active-date; `'value-only'` clears the draft but leaves navigation where the user left it. */
2359
- resetBehavior = input('full', ...(ngDevMode ? [{ debugName: "resetBehavior" }] : /* istanbul ignore next */ []));
2438
+ resetBehavior = input('full', /* @ts-ignore */
2439
+ ...(ngDevMode ? [{ debugName: "resetBehavior" }] : /* istanbul ignore next */ []));
2360
2440
  /** Optional cell-content template. */
2361
- cellTemplate = input(null, ...(ngDevMode ? [{ debugName: "cellTemplate" }] : /* istanbul ignore next */ []));
2441
+ cellTemplate = input(null, /* @ts-ignore */
2442
+ ...(ngDevMode ? [{ debugName: "cellTemplate" }] : /* istanbul ignore next */ []));
2362
2443
  /** Per-instance locale override. Falls back to Angular `LOCALE_ID` when `null` (§19.1). */
2363
- locale = input(null, ...(ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []));
2444
+ locale = input(null, /* @ts-ignore */
2445
+ ...(ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []));
2364
2446
  /**
2365
2447
  * Per-instance `CalendarIntl` override (§19.4). Per-field merge — unspecified
2366
2448
  * fields inherit the DI-provided default. Pass a partial bag (e.g. one of the
2367
2449
  * shipped locale packs `de`, `fr`, `es`, `pt`, `ja`) or a full custom instance.
2368
2450
  */
2369
- intl = input(null, ...(ngDevMode ? [{ debugName: "intl" }] : /* istanbul ignore next */ []));
2451
+ intl = input(null, /* @ts-ignore */
2452
+ ...(ngDevMode ? [{ debugName: "intl" }] : /* istanbul ignore next */ []));
2370
2453
  // ---------------------------------------------------------------------------
2371
2454
  // Public outputs (§33.2). Outputs reachable only in overlay mode (opened/closed)
2372
2455
  // or through constraint-aware preview (rangePreview `invalidPreview`) are declared
@@ -2406,37 +2489,50 @@ class CalendarComponent {
2406
2489
  // Internal writable state (§8.1)
2407
2490
  // ---------------------------------------------------------------------------
2408
2491
  /** In-flight draft during range SELECTING. `null` in other states (§8.1). */
2409
- internalDraftValue = signal(null, ...(ngDevMode ? [{ debugName: "internalDraftValue" }] : /* istanbul ignore next */ []));
2492
+ internalDraftValue = signal(null, /* @ts-ignore */
2493
+ ...(ngDevMode ? [{ debugName: "internalDraftValue" }] : /* istanbul ignore next */ []));
2410
2494
  /** Current selection lifecycle state. */
2411
- _selectionState = signal('EMPTY', ...(ngDevMode ? [{ debugName: "_selectionState" }] : /* istanbul ignore next */ []));
2495
+ _selectionState = signal('EMPTY', /* @ts-ignore */
2496
+ ...(ngDevMode ? [{ debugName: "_selectionState" }] : /* istanbul ignore next */ []));
2412
2497
  /** Current view (writable for drill). Tracks `startView` until the user drills. */
2413
- _viewState = linkedSignal(() => this.startView(), ...(ngDevMode ? [{ debugName: "_viewState" }] : /* istanbul ignore next */ []));
2498
+ _viewState = linkedSignal(() => this.startView(), /* @ts-ignore */
2499
+ ...(ngDevMode ? [{ debugName: "_viewState" }] : /* istanbul ignore next */ []));
2414
2500
  /**
2415
2501
  * Active (focused) date. `linkedSignal` so changes to `startAt` at runtime update
2416
2502
  * the anchor, but internal navigation can still write it independently.
2417
2503
  */
2418
- _activeDate = linkedSignal(() => this.startAt() ?? this.dateAdapter.today(), ...(ngDevMode ? [{ debugName: "_activeDate" }] : /* istanbul ignore next */ []));
2504
+ _activeDate = linkedSignal(() => this.startAt() ?? this.dateAdapter.today(), /* @ts-ignore */
2505
+ ...(ngDevMode ? [{ debugName: "_activeDate" }] : /* istanbul ignore next */ []));
2419
2506
  /** Pointer-hover date (desktop only). */
2420
- _hoveredDate = signal(null, ...(ngDevMode ? [{ debugName: "_hoveredDate" }] : /* istanbul ignore next */ []));
2507
+ _hoveredDate = signal(null, /* @ts-ignore */
2508
+ ...(ngDevMode ? [{ debugName: "_hoveredDate" }] : /* istanbul ignore next */ []));
2421
2509
  /** Overlay state. Always `'closed'` in inline mode until Phase 10 wires the lifecycle. */
2422
- _overlayState = signal('closed', ...(ngDevMode ? [{ debugName: "_overlayState" }] : /* istanbul ignore next */ []));
2510
+ _overlayState = signal('closed', /* @ts-ignore */
2511
+ ...(ngDevMode ? [{ debugName: "_overlayState" }] : /* istanbul ignore next */ []));
2423
2512
  /** Preset selection id. Phase 12 writes this. */
2424
- _selectedPresetId = signal(null, ...(ngDevMode ? [{ debugName: "_selectedPresetId" }] : /* istanbul ignore next */ []));
2513
+ _selectedPresetId = signal(null, /* @ts-ignore */
2514
+ ...(ngDevMode ? [{ debugName: "_selectedPresetId" }] : /* istanbul ignore next */ []));
2425
2515
  /** Raw `TOut` retained when `fromForm` throws (§7.6, Phase 14). `null` otherwise. */
2426
- _lastInvalidFormValue = signal(null, ...(ngDevMode ? [{ debugName: "_lastInvalidFormValue" }] : /* istanbul ignore next */ []));
2516
+ _lastInvalidFormValue = signal(null, /* @ts-ignore */
2517
+ ...(ngDevMode ? [{ debugName: "_lastInvalidFormValue" }] : /* istanbul ignore next */ []));
2427
2518
  // ---------------------------------------------------------------------------
2428
2519
  // Public readonly signals (§33.3)
2429
2520
  // ---------------------------------------------------------------------------
2430
2521
  /** Overlay lifecycle. `null` until `interaction: 'overlay'` lands in Phase 10; until then the implementation signal is exposed as `'closed'`. */
2431
- overlayState = computed(() => this._overlayState(), ...(ngDevMode ? [{ debugName: "overlayState" }] : /* istanbul ignore next */ []));
2522
+ overlayState = computed(() => this._overlayState(), /* @ts-ignore */
2523
+ ...(ngDevMode ? [{ debugName: "overlayState" }] : /* istanbul ignore next */ []));
2432
2524
  /** Selection lifecycle per §8. */
2433
- selectionState = computed(() => this._selectionState(), ...(ngDevMode ? [{ debugName: "selectionState" }] : /* istanbul ignore next */ []));
2525
+ selectionState = computed(() => this._selectionState(), /* @ts-ignore */
2526
+ ...(ngDevMode ? [{ debugName: "selectionState" }] : /* istanbul ignore next */ []));
2434
2527
  /** Active (focused) cell. `null` when the overlay is closed and no inline focus is established; in inline mode this is always the current anchor. */
2435
- activeDate = computed(() => this._activeDate(), ...(ngDevMode ? [{ debugName: "activeDate" }] : /* istanbul ignore next */ []));
2528
+ activeDate = computed(() => this._activeDate(), /* @ts-ignore */
2529
+ ...(ngDevMode ? [{ debugName: "activeDate" }] : /* istanbul ignore next */ []));
2436
2530
  /** Currently selected preset id. */
2437
- selectedPresetId = computed(() => this._selectedPresetId(), ...(ngDevMode ? [{ debugName: "selectedPresetId" }] : /* istanbul ignore next */ []));
2531
+ selectedPresetId = computed(() => this._selectedPresetId(), /* @ts-ignore */
2532
+ ...(ngDevMode ? [{ debugName: "selectedPresetId" }] : /* istanbul ignore next */ []));
2438
2533
  /** Current view state (day / month / year). */
2439
- viewState = computed(() => this._viewState(), ...(ngDevMode ? [{ debugName: "viewState" }] : /* istanbul ignore next */ []));
2534
+ viewState = computed(() => this._viewState(), /* @ts-ignore */
2535
+ ...(ngDevMode ? [{ debugName: "viewState" }] : /* istanbul ignore next */ []));
2440
2536
  /** Months currently rendered. Phase 9 extends this to the full responsive count. */
2441
2537
  displayedMonths = computed(() => {
2442
2538
  const active = this._activeDate();
@@ -2454,9 +2550,11 @@ class CalendarComponent {
2454
2550
  month: this.dateAdapter.getMonth(secondary),
2455
2551
  },
2456
2552
  ];
2457
- }, ...(ngDevMode ? [{ debugName: "displayedMonths" }] : /* istanbul ignore next */ []));
2553
+ }, /* @ts-ignore */
2554
+ ...(ngDevMode ? [{ debugName: "displayedMonths" }] : /* istanbul ignore next */ []));
2458
2555
  /** Raw form value rejected by the transformer's `fromForm` (§7.6, §33.3). */
2459
- lastInvalidFormValue = computed(() => this._lastInvalidFormValue(), ...(ngDevMode ? [{ debugName: "lastInvalidFormValue" }] : /* istanbul ignore next */ []));
2556
+ lastInvalidFormValue = computed(() => this._lastInvalidFormValue(), /* @ts-ignore */
2557
+ ...(ngDevMode ? [{ debugName: "lastInvalidFormValue" }] : /* istanbul ignore next */ []));
2460
2558
  // ---------------------------------------------------------------------------
2461
2559
  // ControlValueAccessor + Validator (Phase 3)
2462
2560
  // ---------------------------------------------------------------------------
@@ -2468,16 +2566,20 @@ class CalendarComponent {
2468
2566
  * by the Signal Forms mode directives. OR-merged with the public `disabled`
2469
2567
  * input into `effectiveDisabled`.
2470
2568
  */
2471
- cvaDisabled = signal(false, ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []));
2569
+ cvaDisabled = signal(false, /* @ts-ignore */
2570
+ ...(ngDevMode ? [{ debugName: "cvaDisabled" }] : /* istanbul ignore next */ []));
2472
2571
  /**
2473
2572
  * @internal Read-only state set by the Signal Forms mode directives. OR-merged
2474
2573
  * with the public `readonly` input into `effectiveReadonly`.
2475
2574
  */
2476
- cvaReadonly = signal(false, ...(ngDevMode ? [{ debugName: "cvaReadonly" }] : /* istanbul ignore next */ []));
2575
+ cvaReadonly = signal(false, /* @ts-ignore */
2576
+ ...(ngDevMode ? [{ debugName: "cvaReadonly" }] : /* istanbul ignore next */ []));
2477
2577
  /** Effective disabled state — public `disabled` input OR any form-bound disabled flip. Drives `aria-disabled`. */
2478
- effectiveDisabled = computed(() => this.disabled() || this.cvaDisabled(), ...(ngDevMode ? [{ debugName: "effectiveDisabled" }] : /* istanbul ignore next */ []));
2578
+ effectiveDisabled = computed(() => this.disabled() || this.cvaDisabled(), /* @ts-ignore */
2579
+ ...(ngDevMode ? [{ debugName: "effectiveDisabled" }] : /* istanbul ignore next */ []));
2479
2580
  /** Effective read-only state — public `readonly` input OR any form-bound readonly flip. Drives `aria-readonly`. */
2480
- effectiveReadonly = computed(() => this.readonly() || this.cvaReadonly(), ...(ngDevMode ? [{ debugName: "effectiveReadonly" }] : /* istanbul ignore next */ []));
2581
+ effectiveReadonly = computed(() => this.readonly() || this.cvaReadonly(), /* @ts-ignore */
2582
+ ...(ngDevMode ? [{ debugName: "effectiveReadonly" }] : /* istanbul ignore next */ []));
2481
2583
  /**
2482
2584
  * @internal Resolved range-behavior config. Merges the consumer-supplied
2483
2585
  * `Partial<RangeBehaviorConfig>` over the documented defaults so internal
@@ -2489,7 +2591,8 @@ class CalendarComponent {
2489
2591
  persistPartialRange: true,
2490
2592
  disableRangesCrossingDisabledDates: false,
2491
2593
  ...this.rangeBehavior(),
2492
- }), ...(ngDevMode ? [{ debugName: "_resolvedRangeBehavior" }] : /* istanbul ignore next */ []));
2594
+ }), /* @ts-ignore */
2595
+ ...(ngDevMode ? [{ debugName: "_resolvedRangeBehavior" }] : /* istanbul ignore next */ []));
2493
2596
  /** @internal Dev-mode warning guard so each mismatched write warns only once per instance. */
2494
2597
  _warnedShapeMismatch = false;
2495
2598
  /** @internal Set by `writeValue`; read by the `FormResetEvent` handler so it can emit `selectionCleared({reason: 'reset'})` only when a non-empty value was on the control before the reset cleared it. */
@@ -2702,9 +2805,11 @@ class CalendarComponent {
2702
2805
  const merged = Object.create(Object.getPrototypeOf(this.injectedIntl));
2703
2806
  Object.assign(merged, this.injectedIntl, override);
2704
2807
  return merged;
2705
- }, ...(ngDevMode ? [{ debugName: "effectiveIntl" }] : /* istanbul ignore next */ []));
2808
+ }, /* @ts-ignore */
2809
+ ...(ngDevMode ? [{ debugName: "effectiveIntl" }] : /* istanbul ignore next */ []));
2706
2810
  /** Effective locale — `locale` input wins, otherwise Angular `LOCALE_ID`. */
2707
- effectiveLocale = computed(() => this.locale() ?? this.platformLocale, ...(ngDevMode ? [{ debugName: "effectiveLocale" }] : /* istanbul ignore next */ []));
2811
+ effectiveLocale = computed(() => this.locale() ?? this.platformLocale, /* @ts-ignore */
2812
+ ...(ngDevMode ? [{ debugName: "effectiveLocale" }] : /* istanbul ignore next */ []));
2708
2813
  /**
2709
2814
  * Active strategy for single/multiple/range. Injected strategies (custom) win.
2710
2815
  * Range state will migrate into this component in Phase 6; for now we reuse
@@ -2719,28 +2824,33 @@ class CalendarComponent {
2719
2824
  if (m === 'multiple')
2720
2825
  return this.localStrategies.multiple;
2721
2826
  return this.localStrategies.single;
2722
- }, ...(ngDevMode ? [{ debugName: "selectionStrategy" }] : /* istanbul ignore next */ []));
2827
+ }, /* @ts-ignore */
2828
+ ...(ngDevMode ? [{ debugName: "selectionStrategy" }] : /* istanbul ignore next */ []));
2723
2829
  /** Computed first-day-of-week (input override wins over adapter default). */
2724
2830
  computedFirstDayOfWeek = computed(() => {
2725
2831
  const override = this.firstDayOfWeek();
2726
2832
  if (override !== null && override >= 0 && override <= 6)
2727
2833
  return override;
2728
2834
  return this.dateAdapter.getFirstDayOfWeek();
2729
- }, ...(ngDevMode ? [{ debugName: "computedFirstDayOfWeek" }] : /* istanbul ignore next */ []));
2835
+ }, /* @ts-ignore */
2836
+ ...(ngDevMode ? [{ debugName: "computedFirstDayOfWeek" }] : /* istanbul ignore next */ []));
2730
2837
  /** Resolves the configured `monthColumns` value. Range-mode consumers pass `2` explicitly. */
2731
- effectiveMonthColumns = computed(() => this.monthColumns(), ...(ngDevMode ? [{ debugName: "effectiveMonthColumns" }] : /* istanbul ignore next */ []));
2838
+ effectiveMonthColumns = computed(() => this.monthColumns(), /* @ts-ignore */
2839
+ ...(ngDevMode ? [{ debugName: "effectiveMonthColumns" }] : /* istanbul ignore next */ []));
2732
2840
  /**
2733
2841
  * @internal Drives `aria-multiselectable` on every view grid. `true` when the
2734
2842
  * current `mode` allows more than one cell to be selected at a time
2735
2843
  * (`'multiple'` or `'range'`); `false` for `'single'`.
2736
2844
  */
2737
- multiSelectable = computed(() => this.mode() !== 'single', ...(ngDevMode ? [{ debugName: "multiSelectable" }] : /* istanbul ignore next */ []));
2845
+ multiSelectable = computed(() => this.mode() !== 'single', /* @ts-ignore */
2846
+ ...(ngDevMode ? [{ debugName: "multiSelectable" }] : /* istanbul ignore next */ []));
2738
2847
  /** Secondary anchor for the right-hand grid in multi-column mode. */
2739
2848
  secondaryActiveDate = computed(() => {
2740
2849
  if (this.effectiveMonthColumns() < 2)
2741
2850
  return null;
2742
2851
  return this.dateAdapter.addMonths(this._activeDate(), 1);
2743
- }, ...(ngDevMode ? [{ debugName: "secondaryActiveDate" }] : /* istanbul ignore next */ []));
2852
+ }, /* @ts-ignore */
2853
+ ...(ngDevMode ? [{ debugName: "secondaryActiveDate" }] : /* istanbul ignore next */ []));
2744
2854
  /**
2745
2855
  * Phase 6 — preview cursor. Pointer hover wins; falls back to `activeDate`
2746
2856
  * when SELECTING so keyboard arrow-key moves drive the same preview path
@@ -2754,7 +2864,8 @@ class CalendarComponent {
2754
2864
  if (this._selectionState() === 'SELECTING')
2755
2865
  return this._activeDate();
2756
2866
  return null;
2757
- }, ...(ngDevMode ? [{ debugName: "previewCursor" }] : /* istanbul ignore next */ []));
2867
+ }, /* @ts-ignore */
2868
+ ...(ngDevMode ? [{ debugName: "previewCursor" }] : /* istanbul ignore next */ []));
2758
2869
  /**
2759
2870
  * Preview range. Driven by the strategy and the `previewCursor` (hover or
2760
2871
  * keyboard active-date during SELECTING).
@@ -2764,7 +2875,8 @@ class CalendarComponent {
2764
2875
  const cursor = this.previewCursor();
2765
2876
  const source = this.strategySelection();
2766
2877
  return strategy.createPreview(cursor, source);
2767
- }, ...(ngDevMode ? [{ debugName: "previewRange" }] : /* istanbul ignore next */ []));
2878
+ }, /* @ts-ignore */
2879
+ ...(ngDevMode ? [{ debugName: "previewRange" }] : /* istanbul ignore next */ []));
2768
2880
  /**
2769
2881
  * Adapter-compatible view of the current selection.
2770
2882
  * For range: a `{ start, end }` view of either the committed value or the in-flight draft.
@@ -2783,18 +2895,24 @@ class CalendarComponent {
2783
2895
  return v ?? null;
2784
2896
  }
2785
2897
  return v;
2786
- }, ...(ngDevMode ? [{ debugName: "strategySelection" }] : /* istanbul ignore next */ []));
2898
+ }, /* @ts-ignore */
2899
+ ...(ngDevMode ? [{ debugName: "strategySelection" }] : /* istanbul ignore next */ []));
2787
2900
  /** Adapter-compatible view exposed to the view components. */
2788
- legacySelected = computed(() => this.strategySelection(), ...(ngDevMode ? [{ debugName: "legacySelected" }] : /* istanbul ignore next */ []));
2901
+ legacySelected = computed(() => this.strategySelection(), /* @ts-ignore */
2902
+ ...(ngDevMode ? [{ debugName: "legacySelected" }] : /* istanbul ignore next */ []));
2789
2903
  variantResult = computed(() => calendarVariants({
2790
2904
  bordered: this.bordered(),
2791
2905
  columns: (this.effectiveMonthColumns() >= 2 ? 2 : 1),
2792
- }), ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
2906
+ }), /* @ts-ignore */
2907
+ ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
2793
2908
  /** @internal */
2794
- rootClasses = computed(() => this.variantResult().root(), ...(ngDevMode ? [{ debugName: "rootClasses" }] : /* istanbul ignore next */ []));
2909
+ rootClasses = computed(() => this.variantResult().root(), /* @ts-ignore */
2910
+ ...(ngDevMode ? [{ debugName: "rootClasses" }] : /* istanbul ignore next */ []));
2795
2911
  /** @internal */
2796
- monthsClasses = computed(() => this.variantResult().months(), ...(ngDevMode ? [{ debugName: "monthsClasses" }] : /* istanbul ignore next */ []));
2797
- monthNames = computed(() => this.dateAdapter.getMonthNames('long'), ...(ngDevMode ? [{ debugName: "monthNames" }] : /* istanbul ignore next */ []));
2912
+ monthsClasses = computed(() => this.variantResult().months(), /* @ts-ignore */
2913
+ ...(ngDevMode ? [{ debugName: "monthsClasses" }] : /* istanbul ignore next */ []));
2914
+ monthNames = computed(() => this.dateAdapter.getMonthNames('long'), /* @ts-ignore */
2915
+ ...(ngDevMode ? [{ debugName: "monthNames" }] : /* istanbul ignore next */ []));
2798
2916
  /** @internal */
2799
2917
  periodLabel = computed(() => {
2800
2918
  const date = this._activeDate();
@@ -2822,7 +2940,8 @@ class CalendarComponent {
2822
2940
  return `${startYear} – ${startYear + YEARS_PER_PAGE - 1}`;
2823
2941
  }
2824
2942
  }
2825
- }, ...(ngDevMode ? [{ debugName: "periodLabel" }] : /* istanbul ignore next */ []));
2943
+ }, /* @ts-ignore */
2944
+ ...(ngDevMode ? [{ debugName: "periodLabel" }] : /* istanbul ignore next */ []));
2826
2945
  /** @internal */
2827
2946
  periodAriaLabel = computed(() => {
2828
2947
  const view = this._viewState();
@@ -2836,7 +2955,8 @@ class CalendarComponent {
2836
2955
  case 'year':
2837
2956
  return label;
2838
2957
  }
2839
- }, ...(ngDevMode ? [{ debugName: "periodAriaLabel" }] : /* istanbul ignore next */ []));
2958
+ }, /* @ts-ignore */
2959
+ ...(ngDevMode ? [{ debugName: "periodAriaLabel" }] : /* istanbul ignore next */ []));
2840
2960
  /** @internal */
2841
2961
  prevAriaLabel = computed(() => {
2842
2962
  const intl = this.effectiveIntl();
@@ -2848,7 +2968,8 @@ class CalendarComponent {
2848
2968
  case 'year':
2849
2969
  return intl.previousYearsLabel(YEARS_PER_PAGE);
2850
2970
  }
2851
- }, ...(ngDevMode ? [{ debugName: "prevAriaLabel" }] : /* istanbul ignore next */ []));
2971
+ }, /* @ts-ignore */
2972
+ ...(ngDevMode ? [{ debugName: "prevAriaLabel" }] : /* istanbul ignore next */ []));
2852
2973
  /** @internal */
2853
2974
  nextAriaLabel = computed(() => {
2854
2975
  const intl = this.effectiveIntl();
@@ -2860,7 +2981,8 @@ class CalendarComponent {
2860
2981
  case 'year':
2861
2982
  return intl.nextYearsLabel(YEARS_PER_PAGE);
2862
2983
  }
2863
- }, ...(ngDevMode ? [{ debugName: "nextAriaLabel" }] : /* istanbul ignore next */ []));
2984
+ }, /* @ts-ignore */
2985
+ ...(ngDevMode ? [{ debugName: "nextAriaLabel" }] : /* istanbul ignore next */ []));
2864
2986
  /** @internal */
2865
2987
  prevDisabled = computed(() => {
2866
2988
  const date = this._activeDate();
@@ -2883,7 +3005,8 @@ class CalendarComponent {
2883
3005
  return isYearDisabled(startYear - 1, minDate, null, this.dateAdapter);
2884
3006
  }
2885
3007
  }
2886
- }, ...(ngDevMode ? [{ debugName: "prevDisabled" }] : /* istanbul ignore next */ []));
3008
+ }, /* @ts-ignore */
3009
+ ...(ngDevMode ? [{ debugName: "prevDisabled" }] : /* istanbul ignore next */ []));
2887
3010
  /** @internal */
2888
3011
  nextDisabled = computed(() => {
2889
3012
  const date = this._activeDate();
@@ -2906,7 +3029,8 @@ class CalendarComponent {
2906
3029
  return isYearDisabled(startYear + YEARS_PER_PAGE, null, maxDate, this.dateAdapter);
2907
3030
  }
2908
3031
  }
2909
- }, ...(ngDevMode ? [{ debugName: "nextDisabled" }] : /* istanbul ignore next */ []));
3032
+ }, /* @ts-ignore */
3033
+ ...(ngDevMode ? [{ debugName: "nextDisabled" }] : /* istanbul ignore next */ []));
2910
3034
  // ---------------------------------------------------------------------------
2911
3035
  // Public methods (§33.4)
2912
3036
  // ---------------------------------------------------------------------------
@@ -2965,21 +3089,58 @@ class CalendarComponent {
2965
3089
  this._viewState.set(this.startView());
2966
3090
  this._activeDate.set(this.startAt() ?? this.dateAdapter.today());
2967
3091
  }
2968
- /** Revalidates constraints + cell filters (Phase 4 wires it). */
3092
+ /**
3093
+ * Re-runs validation against the current constraints and cell filters.
3094
+ *
3095
+ * Call this after mutating a constraint imperatively (rather than through an
3096
+ * input binding), so the bound control's errors reflect the new rules.
3097
+ */
2969
3098
  revalidate() {
2970
- // No-op until Phase 4 introduces the validator.
3099
+ // The comment this replaced claimed the validator did not exist yet. It
3100
+ // does — `validate()` emits the constraint codes — so the method was a
3101
+ // documented no-op sitting next to a working validator.
3102
+ this.validatorOnChange();
2971
3103
  }
2972
- /** Opens the overlay. Phase 10 wires the CDK overlay; inline mode is a no-op. */
3104
+ /**
3105
+ * Opens the overlay.
3106
+ *
3107
+ * @deprecated Not implemented. `tw-calendar` is inline-only today; the overlay
3108
+ * is part of the phased v1 cutover. Use `tw-date-picker` or
3109
+ * `tw-date-range-picker` for an overlay-mounted calendar. Throws in dev mode.
3110
+ */
2973
3111
  open() {
2974
- // Phase 10.
3112
+ this.warnOverlayUnsupported('open');
2975
3113
  }
2976
- /** Closes the overlay. */
3114
+ /**
3115
+ * Closes the overlay.
3116
+ *
3117
+ * @deprecated Not implemented — see {@link open}. Throws in dev mode.
3118
+ */
2977
3119
  close() {
2978
- // Phase 10.
3120
+ this.warnOverlayUnsupported('close');
2979
3121
  }
2980
- /** Toggles the overlay. */
3122
+ /**
3123
+ * Toggles the overlay.
3124
+ *
3125
+ * @deprecated Not implemented — see {@link open}. Throws in dev mode.
3126
+ */
2981
3127
  toggle() {
2982
- // Phase 10.
3128
+ this.warnOverlayUnsupported('toggle');
3129
+ }
3130
+ /**
3131
+ * Fails loudly in development for the unimplemented overlay API.
3132
+ *
3133
+ * These three shipped as silent no-ops with JSDoc that described them as
3134
+ * working ("Closes the overlay."), which Compodoc rendered straight into the
3135
+ * published API table. A consumer calling `calendar.open()` got no overlay, no
3136
+ * error, and no clue. Dev-mode throw turns that into an immediate, explainable
3137
+ * failure while leaving production builds untouched.
3138
+ */
3139
+ warnOverlayUnsupported(method) {
3140
+ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
3141
+ throw new Error(`[ngx-tw] CalendarComponent.${method}() is not implemented — tw-calendar is inline-only. ` +
3142
+ `Use tw-date-picker or tw-date-range-picker for an overlay-mounted calendar.`);
3143
+ }
2983
3144
  }
2984
3145
  /** Imperatively focuses the currently active cell. */
2985
3146
  focusActiveCell() {
@@ -3138,20 +3299,25 @@ class CalendarComponent {
3138
3299
  * else `null`. Used by every internal min-date reader so the shorthand input is
3139
3300
  * transparent to the rest of the component.
3140
3301
  */
3141
- resolvedMinDate = computed(() => this.minDate() ?? this.constraints()?.minDate ?? null, ...(ngDevMode ? [{ debugName: "resolvedMinDate" }] : /* istanbul ignore next */ []));
3302
+ resolvedMinDate = computed(() => this.minDate() ?? this.constraints()?.minDate ?? null, /* @ts-ignore */
3303
+ ...(ngDevMode ? [{ debugName: "resolvedMinDate" }] : /* istanbul ignore next */ []));
3142
3304
  /** Resolved `maxDate` — individual input wins, then `constraints.maxDate`, else `null`. */
3143
- resolvedMaxDate = computed(() => this.maxDate() ?? this.constraints()?.maxDate ?? null, ...(ngDevMode ? [{ debugName: "resolvedMaxDate" }] : /* istanbul ignore next */ []));
3305
+ resolvedMaxDate = computed(() => this.maxDate() ?? this.constraints()?.maxDate ?? null, /* @ts-ignore */
3306
+ ...(ngDevMode ? [{ debugName: "resolvedMaxDate" }] : /* istanbul ignore next */ []));
3144
3307
  /** Resolved `disabledDates` — individual input wins, then `constraints.disabledDates`, else `null`. */
3145
- resolvedDisabledDates = computed(() => this.disabledDates() ?? this.constraints()?.disabledDates ?? null, ...(ngDevMode ? [{ debugName: "resolvedDisabledDates" }] : /* istanbul ignore next */ []));
3308
+ resolvedDisabledDates = computed(() => this.disabledDates() ?? this.constraints()?.disabledDates ?? null, /* @ts-ignore */
3309
+ ...(ngDevMode ? [{ debugName: "resolvedDisabledDates" }] : /* istanbul ignore next */ []));
3146
3310
  /** Resolved `disabledDaysOfWeek` — individual input wins (when non-empty), then `constraints.disabledDaysOfWeek`, else `[]`. */
3147
3311
  resolvedDisabledDaysOfWeek = computed(() => {
3148
3312
  const own = this.disabledDaysOfWeek();
3149
3313
  if (own.length > 0)
3150
3314
  return own;
3151
3315
  return this.constraints()?.disabledDaysOfWeek ?? [];
3152
- }, ...(ngDevMode ? [{ debugName: "resolvedDisabledDaysOfWeek" }] : /* istanbul ignore next */ []));
3316
+ }, /* @ts-ignore */
3317
+ ...(ngDevMode ? [{ debugName: "resolvedDisabledDaysOfWeek" }] : /* istanbul ignore next */ []));
3153
3318
  /** Resolved `dateFilter` — individual input wins, then `constraints.dateFilter`, else `null`. */
3154
- resolvedDateFilter = computed(() => this.dateFilter() ?? this.constraints()?.dateFilter ?? null, ...(ngDevMode ? [{ debugName: "resolvedDateFilter" }] : /* istanbul ignore next */ []));
3319
+ resolvedDateFilter = computed(() => this.dateFilter() ?? this.constraints()?.dateFilter ?? null, /* @ts-ignore */
3320
+ ...(ngDevMode ? [{ debugName: "resolvedDateFilter" }] : /* istanbul ignore next */ []));
3155
3321
  /** Aggregated, resolved constraint inputs — passed to the resolver and validator. */
3156
3322
  resolvedConstraints = computed(() => ({
3157
3323
  minDate: this.resolvedMinDate(),
@@ -3159,7 +3325,8 @@ class CalendarComponent {
3159
3325
  disabledDates: this.resolvedDisabledDates(),
3160
3326
  disabledDaysOfWeek: this.resolvedDisabledDaysOfWeek(),
3161
3327
  dateFilter: this.resolvedDateFilter(),
3162
- }), ...(ngDevMode ? [{ debugName: "resolvedConstraints" }] : /* istanbul ignore next */ []));
3328
+ }), /* @ts-ignore */
3329
+ ...(ngDevMode ? [{ debugName: "resolvedConstraints" }] : /* istanbul ignore next */ []));
3163
3330
  /** @internal — month-view cell activation (drill-down to day). */
3164
3331
  onMonthSelected(date) {
3165
3332
  this._activeDate.set(date);
@@ -3213,9 +3380,11 @@ class CalendarComponent {
3213
3380
  // 'require-clear' → no-op + invalid-flash on the clicked cell
3214
3381
  // ---------------------------------------------------------------------------
3215
3382
  /** @internal Last invalidly-clicked date, cleared after ~200ms — drives `data-state-invalid-flash`. */
3216
- _invalidFlashDate = signal(null, ...(ngDevMode ? [{ debugName: "_invalidFlashDate" }] : /* istanbul ignore next */ []));
3383
+ _invalidFlashDate = signal(null, /* @ts-ignore */
3384
+ ...(ngDevMode ? [{ debugName: "_invalidFlashDate" }] : /* istanbul ignore next */ []));
3217
3385
  /** Public read of the transient invalid-flash anchor. Views consume this and tag the matching cell. */
3218
- invalidFlashDate = computed(() => this._invalidFlashDate(), ...(ngDevMode ? [{ debugName: "invalidFlashDate" }] : /* istanbul ignore next */ []));
3386
+ invalidFlashDate = computed(() => this._invalidFlashDate(), /* @ts-ignore */
3387
+ ...(ngDevMode ? [{ debugName: "invalidFlashDate" }] : /* istanbul ignore next */ []));
3219
3388
  commitRangeClick(date) {
3220
3389
  const draft = this.internalDraftValue();
3221
3390
  const state = this._selectionState();
@@ -3500,8 +3669,8 @@ class CalendarComponent {
3500
3669
  formatDate(date) {
3501
3670
  return this.dateAdapter.format(date, { dateTimeFormat: { dateStyle: 'full' } });
3502
3671
  }
3503
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3504
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: CalendarComponent, isStandalone: true, selector: "tw-calendar", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, startAt: { classPropertyName: "startAt", publicName: "startAt", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, dateFilter: { classPropertyName: "dateFilter", publicName: "dateFilter", isSignal: true, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, disabledDaysOfWeek: { classPropertyName: "disabledDaysOfWeek", publicName: "disabledDaysOfWeek", isSignal: true, isRequired: false, transformFunction: null }, constraints: { classPropertyName: "constraints", publicName: "constraints", isSignal: true, isRequired: false, transformFunction: null }, minRangeLength: { classPropertyName: "minRangeLength", publicName: "minRangeLength", isSignal: true, isRequired: false, transformFunction: null }, maxRangeLength: { classPropertyName: "maxRangeLength", publicName: "maxRangeLength", isSignal: true, isRequired: false, transformFunction: null }, maxSelections: { classPropertyName: "maxSelections", publicName: "maxSelections", isSignal: true, isRequired: false, transformFunction: null }, maxSelectionBehavior: { classPropertyName: "maxSelectionBehavior", publicName: "maxSelectionBehavior", isSignal: true, isRequired: false, transformFunction: null }, errorAriaDescribedBy: { classPropertyName: "errorAriaDescribedBy", publicName: "errorAriaDescribedBy", isSignal: true, isRequired: false, transformFunction: null }, rangeClickBehavior: { classPropertyName: "rangeClickBehavior", publicName: "rangeClickBehavior", isSignal: true, isRequired: false, transformFunction: null }, rangeBehavior: { classPropertyName: "rangeBehavior", publicName: "rangeBehavior", isSignal: true, isRequired: false, transformFunction: null }, dateClass: { classPropertyName: "dateClass", publicName: "dateClass", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, startView: { classPropertyName: "startView", publicName: "startView", isSignal: true, isRequired: false, transformFunction: null }, firstDayOfWeek: { classPropertyName: "firstDayOfWeek", publicName: "firstDayOfWeek", isSignal: true, isRequired: false, transformFunction: null }, monthColumns: { classPropertyName: "monthColumns", publicName: "monthColumns", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, resetBehavior: { classPropertyName: "resetBehavior", publicName: "resetBehavior", isSignal: true, isRequired: false, transformFunction: null }, cellTemplate: { classPropertyName: "cellTemplate", publicName: "cellTemplate", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, intl: { classPropertyName: "intl", publicName: "intl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mode: "modeChange", value: "valueChange", valueChange: "valueChange", selectionStart: "selectionStart", rangePreview: "rangePreview", selectionComplete: "selectionComplete", selectionRestart: "selectionRestart", selectionCleared: "selectionCleared", selectionLimitReached: "selectionLimitReached", presetChange: "presetChange", viewChange: "viewChange", activeDateChange: "activeDateChange", monthChange: "monthChange", yearChange: "yearChange", cellClick: "cellClick", cellHover: "cellHover", modeChange: "modeChange" }, host: { listeners: { "focusout": "onBlur($event)" }, properties: { "attr.aria-disabled": "effectiveDisabled() || null", "attr.aria-readonly": "effectiveReadonly() || null", "attr.aria-describedby": "errorAriaDescribedBy() || null" }, classAttribute: "block" }, providers: [
3672
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3673
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: CalendarComponent, isStandalone: true, selector: "tw-calendar", inputs: { modeInput: { classPropertyName: "modeInput", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, valueInput: { classPropertyName: "valueInput", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, startAt: { classPropertyName: "startAt", publicName: "startAt", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, dateFilter: { classPropertyName: "dateFilter", publicName: "dateFilter", isSignal: true, isRequired: false, transformFunction: null }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, disabledDaysOfWeek: { classPropertyName: "disabledDaysOfWeek", publicName: "disabledDaysOfWeek", isSignal: true, isRequired: false, transformFunction: null }, constraints: { classPropertyName: "constraints", publicName: "constraints", isSignal: true, isRequired: false, transformFunction: null }, minRangeLength: { classPropertyName: "minRangeLength", publicName: "minRangeLength", isSignal: true, isRequired: false, transformFunction: null }, maxRangeLength: { classPropertyName: "maxRangeLength", publicName: "maxRangeLength", isSignal: true, isRequired: false, transformFunction: null }, maxSelections: { classPropertyName: "maxSelections", publicName: "maxSelections", isSignal: true, isRequired: false, transformFunction: null }, maxSelectionBehavior: { classPropertyName: "maxSelectionBehavior", publicName: "maxSelectionBehavior", isSignal: true, isRequired: false, transformFunction: null }, errorAriaDescribedBy: { classPropertyName: "errorAriaDescribedBy", publicName: "errorAriaDescribedBy", isSignal: true, isRequired: false, transformFunction: null }, rangeClickBehavior: { classPropertyName: "rangeClickBehavior", publicName: "rangeClickBehavior", isSignal: true, isRequired: false, transformFunction: null }, rangeBehavior: { classPropertyName: "rangeBehavior", publicName: "rangeBehavior", isSignal: true, isRequired: false, transformFunction: null }, dateClass: { classPropertyName: "dateClass", publicName: "dateClass", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, startView: { classPropertyName: "startView", publicName: "startView", isSignal: true, isRequired: false, transformFunction: null }, firstDayOfWeek: { classPropertyName: "firstDayOfWeek", publicName: "firstDayOfWeek", isSignal: true, isRequired: false, transformFunction: null }, monthColumns: { classPropertyName: "monthColumns", publicName: "monthColumns", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, resetBehavior: { classPropertyName: "resetBehavior", publicName: "resetBehavior", isSignal: true, isRequired: false, transformFunction: null }, cellTemplate: { classPropertyName: "cellTemplate", publicName: "cellTemplate", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, intl: { classPropertyName: "intl", publicName: "intl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", selectionStart: "selectionStart", rangePreview: "rangePreview", selectionComplete: "selectionComplete", selectionRestart: "selectionRestart", selectionCleared: "selectionCleared", selectionLimitReached: "selectionLimitReached", presetChange: "presetChange", viewChange: "viewChange", activeDateChange: "activeDateChange", monthChange: "monthChange", yearChange: "yearChange", cellClick: "cellClick", cellHover: "cellHover", modeChange: "modeChange" }, host: { listeners: { "focusout": "onBlur($event)" }, properties: { "attr.aria-disabled": "effectiveDisabled() || null", "attr.aria-readonly": "effectiveReadonly() || null", "attr.aria-describedby": "errorAriaDescribedBy() || null" }, classAttribute: "block" }, providers: [
3505
3674
  {
3506
3675
  provide: NG_VALUE_ACCESSOR,
3507
3676
  useExisting: forwardRef(() => CalendarComponent),
@@ -3620,7 +3789,7 @@ class CalendarComponent {
3620
3789
  </div>
3621
3790
  `, isInline: true, dependencies: [{ kind: "component", type: CalendarHeaderComponent, selector: "tw-calendar-header", inputs: ["periodLabel", "periodAriaLabel", "prevAriaLabel", "nextAriaLabel", "prevDisabled", "nextDisabled", "canSwitchView"], outputs: ["prevClicked", "nextClicked", "periodClicked"] }, { kind: "component", type: MonthViewComponent, selector: "tw-calendar-month-view", inputs: ["firstDayOfWeek", "gridIndex"] }, { kind: "component", type: YearViewComponent, selector: "tw-calendar-year-view" }, { kind: "component", type: YearsViewComponent, selector: "tw-calendar-years-view" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3622
3791
  }
3623
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarComponent, decorators: [{
3792
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarComponent, decorators: [{
3624
3793
  type: Component,
3625
3794
  args: [{
3626
3795
  selector: 'tw-calendar',
@@ -3758,7 +3927,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3758
3927
  </div>
3759
3928
  `,
3760
3929
  }]
3761
- }], ctorParameters: () => [], propDecorators: { monthViews: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => MonthViewComponent), { isSignal: true }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }, { type: i0.Output, args: ["modeChange"] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], startAt: [{ type: i0.Input, args: [{ isSignal: true, alias: "startAt", required: false }] }], minDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "minDate", required: false }] }], maxDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDate", required: false }] }], dateFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateFilter", required: false }] }], disabledDates: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledDates", required: false }] }], disabledDaysOfWeek: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledDaysOfWeek", required: false }] }], constraints: [{ type: i0.Input, args: [{ isSignal: true, alias: "constraints", required: false }] }], minRangeLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "minRangeLength", required: false }] }], maxRangeLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxRangeLength", required: false }] }], maxSelections: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxSelections", required: false }] }], maxSelectionBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxSelectionBehavior", required: false }] }], errorAriaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorAriaDescribedBy", required: false }] }], rangeClickBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "rangeClickBehavior", required: false }] }], rangeBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "rangeBehavior", required: false }] }], dateClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateClass", required: false }] }], bordered: [{ type: i0.Input, args: [{ isSignal: true, alias: "bordered", required: false }] }], startView: [{ type: i0.Input, args: [{ isSignal: true, alias: "startView", required: false }] }], firstDayOfWeek: [{ type: i0.Input, args: [{ isSignal: true, alias: "firstDayOfWeek", required: false }] }], monthColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "monthColumns", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], resetBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "resetBehavior", required: false }] }], cellTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "cellTemplate", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], intl: [{ type: i0.Input, args: [{ isSignal: true, alias: "intl", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], selectionStart: [{ type: i0.Output, args: ["selectionStart"] }], rangePreview: [{ type: i0.Output, args: ["rangePreview"] }], selectionComplete: [{ type: i0.Output, args: ["selectionComplete"] }], selectionRestart: [{ type: i0.Output, args: ["selectionRestart"] }], selectionCleared: [{ type: i0.Output, args: ["selectionCleared"] }], selectionLimitReached: [{ type: i0.Output, args: ["selectionLimitReached"] }], presetChange: [{ type: i0.Output, args: ["presetChange"] }], viewChange: [{ type: i0.Output, args: ["viewChange"] }], activeDateChange: [{ type: i0.Output, args: ["activeDateChange"] }], monthChange: [{ type: i0.Output, args: ["monthChange"] }], yearChange: [{ type: i0.Output, args: ["yearChange"] }], cellClick: [{ type: i0.Output, args: ["cellClick"] }], cellHover: [{ type: i0.Output, args: ["cellHover"] }], modeChange: [{ type: i0.Output, args: ["modeChange"] }] } });
3930
+ }], ctorParameters: () => [], propDecorators: { monthViews: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => MonthViewComponent), { isSignal: true }] }], modeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], valueInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], startAt: [{ type: i0.Input, args: [{ isSignal: true, alias: "startAt", required: false }] }], minDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "minDate", required: false }] }], maxDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDate", required: false }] }], dateFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateFilter", required: false }] }], disabledDates: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledDates", required: false }] }], disabledDaysOfWeek: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledDaysOfWeek", required: false }] }], constraints: [{ type: i0.Input, args: [{ isSignal: true, alias: "constraints", required: false }] }], minRangeLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "minRangeLength", required: false }] }], maxRangeLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxRangeLength", required: false }] }], maxSelections: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxSelections", required: false }] }], maxSelectionBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxSelectionBehavior", required: false }] }], errorAriaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorAriaDescribedBy", required: false }] }], rangeClickBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "rangeClickBehavior", required: false }] }], rangeBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "rangeBehavior", required: false }] }], dateClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateClass", required: false }] }], bordered: [{ type: i0.Input, args: [{ isSignal: true, alias: "bordered", required: false }] }], startView: [{ type: i0.Input, args: [{ isSignal: true, alias: "startView", required: false }] }], firstDayOfWeek: [{ type: i0.Input, args: [{ isSignal: true, alias: "firstDayOfWeek", required: false }] }], monthColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "monthColumns", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], resetBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "resetBehavior", required: false }] }], cellTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "cellTemplate", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], intl: [{ type: i0.Input, args: [{ isSignal: true, alias: "intl", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], selectionStart: [{ type: i0.Output, args: ["selectionStart"] }], rangePreview: [{ type: i0.Output, args: ["rangePreview"] }], selectionComplete: [{ type: i0.Output, args: ["selectionComplete"] }], selectionRestart: [{ type: i0.Output, args: ["selectionRestart"] }], selectionCleared: [{ type: i0.Output, args: ["selectionCleared"] }], selectionLimitReached: [{ type: i0.Output, args: ["selectionLimitReached"] }], presetChange: [{ type: i0.Output, args: ["presetChange"] }], viewChange: [{ type: i0.Output, args: ["viewChange"] }], activeDateChange: [{ type: i0.Output, args: ["activeDateChange"] }], monthChange: [{ type: i0.Output, args: ["monthChange"] }], yearChange: [{ type: i0.Output, args: ["yearChange"] }], cellClick: [{ type: i0.Output, args: ["cellClick"] }], cellHover: [{ type: i0.Output, args: ["cellHover"] }], modeChange: [{ type: i0.Output, args: ["modeChange"] }] } });
3762
3931
 
3763
3932
  function wireSignalFormsInputs(host, api) {
3764
3933
  // Mirror Signal Forms flags onto the component. Effects run in the
@@ -3788,28 +3957,36 @@ class CalendarSingleDirective {
3788
3957
  /** Two-way value, forwarded to the hosting `CalendarComponent`. Signal Forms `Field` binds against this. */
3789
3958
  value = this.host.value;
3790
3959
  /** Mirrors the bound field's disabled flag. */
3791
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
3960
+ disabled = input(false, /* @ts-ignore */
3961
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
3792
3962
  /** Mirrors the bound field's readonly flag. */
3793
- readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
3963
+ readonly = input(false, /* @ts-ignore */
3964
+ ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
3794
3965
  /** Mirrors the bound field's required flag. */
3795
- required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
3966
+ required = input(false, /* @ts-ignore */
3967
+ ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
3796
3968
  /** Mirrors the bound field's invalid flag. */
3797
- invalid = input(false, ...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
3969
+ invalid = input(false, /* @ts-ignore */
3970
+ ...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
3798
3971
  /** Mirrors the bound field's hidden flag. */
3799
- hidden = input(false, ...(ngDevMode ? [{ debugName: "hidden" }] : /* istanbul ignore next */ []));
3972
+ hidden = input(false, /* @ts-ignore */
3973
+ ...(ngDevMode ? [{ debugName: "hidden" }] : /* istanbul ignore next */ []));
3800
3974
  /** Mirrors the bound field's errors. */
3801
- errors = input([], ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
3975
+ errors = input([], /* @ts-ignore */
3976
+ ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
3802
3977
  /** Mirrors the bound field's disablement reasons. */
3803
- disabledReasons = input([], ...(ngDevMode ? [{ debugName: "disabledReasons" }] : /* istanbul ignore next */ []));
3978
+ disabledReasons = input([], /* @ts-ignore */
3979
+ ...(ngDevMode ? [{ debugName: "disabledReasons" }] : /* istanbul ignore next */ []));
3804
3980
  /** Two-way `touched` flag — drives and reflects the field's touched state. */
3805
- touched = model(false, ...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
3981
+ touched = model(false, /* @ts-ignore */
3982
+ ...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
3806
3983
  constructor() {
3807
3984
  wireSignalFormsInputs(this.host, this);
3808
3985
  }
3809
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarSingleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3810
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: CalendarSingleDirective, isStandalone: true, selector: "tw-calendar[mode=\"single\"]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, disabledReasons: { classPropertyName: "disabledReasons", publicName: "disabledReasons", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { touched: "touchedChange" }, exportAs: ["twCalendarSingle"], ngImport: i0 });
3986
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarSingleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3987
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: CalendarSingleDirective, isStandalone: true, selector: "tw-calendar[mode=\"single\"]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, disabledReasons: { classPropertyName: "disabledReasons", publicName: "disabledReasons", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { touched: "touchedChange" }, exportAs: ["twCalendarSingle"], ngImport: i0 });
3811
3988
  }
3812
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarSingleDirective, decorators: [{
3989
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarSingleDirective, decorators: [{
3813
3990
  type: Directive,
3814
3991
  args: [{
3815
3992
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -3827,28 +4004,36 @@ class CalendarMultipleDirective {
3827
4004
  /** Two-way value, forwarded to the hosting `CalendarComponent`. Signal Forms `Field` binds against this. */
3828
4005
  value = this.host.value;
3829
4006
  /** Mirrors the bound field's disabled flag. */
3830
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
4007
+ disabled = input(false, /* @ts-ignore */
4008
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
3831
4009
  /** Mirrors the bound field's readonly flag. */
3832
- readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
4010
+ readonly = input(false, /* @ts-ignore */
4011
+ ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
3833
4012
  /** Mirrors the bound field's required flag. */
3834
- required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
4013
+ required = input(false, /* @ts-ignore */
4014
+ ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
3835
4015
  /** Mirrors the bound field's invalid flag. */
3836
- invalid = input(false, ...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
4016
+ invalid = input(false, /* @ts-ignore */
4017
+ ...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
3837
4018
  /** Mirrors the bound field's hidden flag. */
3838
- hidden = input(false, ...(ngDevMode ? [{ debugName: "hidden" }] : /* istanbul ignore next */ []));
4019
+ hidden = input(false, /* @ts-ignore */
4020
+ ...(ngDevMode ? [{ debugName: "hidden" }] : /* istanbul ignore next */ []));
3839
4021
  /** Mirrors the bound field's errors. */
3840
- errors = input([], ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
4022
+ errors = input([], /* @ts-ignore */
4023
+ ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
3841
4024
  /** Mirrors the bound field's disablement reasons. */
3842
- disabledReasons = input([], ...(ngDevMode ? [{ debugName: "disabledReasons" }] : /* istanbul ignore next */ []));
4025
+ disabledReasons = input([], /* @ts-ignore */
4026
+ ...(ngDevMode ? [{ debugName: "disabledReasons" }] : /* istanbul ignore next */ []));
3843
4027
  /** Two-way `touched` flag — drives and reflects the field's touched state. */
3844
- touched = model(false, ...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
4028
+ touched = model(false, /* @ts-ignore */
4029
+ ...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
3845
4030
  constructor() {
3846
4031
  wireSignalFormsInputs(this.host, this);
3847
4032
  }
3848
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarMultipleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3849
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: CalendarMultipleDirective, isStandalone: true, selector: "tw-calendar[mode=\"multiple\"]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, disabledReasons: { classPropertyName: "disabledReasons", publicName: "disabledReasons", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { touched: "touchedChange" }, exportAs: ["twCalendarMultiple"], ngImport: i0 });
4033
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarMultipleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4034
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: CalendarMultipleDirective, isStandalone: true, selector: "tw-calendar[mode=\"multiple\"]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, disabledReasons: { classPropertyName: "disabledReasons", publicName: "disabledReasons", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { touched: "touchedChange" }, exportAs: ["twCalendarMultiple"], ngImport: i0 });
3850
4035
  }
3851
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarMultipleDirective, decorators: [{
4036
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarMultipleDirective, decorators: [{
3852
4037
  type: Directive,
3853
4038
  args: [{
3854
4039
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -3866,28 +4051,36 @@ class CalendarRangeDirective {
3866
4051
  /** Two-way value, forwarded to the hosting `CalendarComponent`. Signal Forms `Field` binds against this. */
3867
4052
  value = this.host.value;
3868
4053
  /** Mirrors the bound field's disabled flag. */
3869
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
4054
+ disabled = input(false, /* @ts-ignore */
4055
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
3870
4056
  /** Mirrors the bound field's readonly flag. */
3871
- readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
4057
+ readonly = input(false, /* @ts-ignore */
4058
+ ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
3872
4059
  /** Mirrors the bound field's required flag. */
3873
- required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
4060
+ required = input(false, /* @ts-ignore */
4061
+ ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
3874
4062
  /** Mirrors the bound field's invalid flag. */
3875
- invalid = input(false, ...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
4063
+ invalid = input(false, /* @ts-ignore */
4064
+ ...(ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []));
3876
4065
  /** Mirrors the bound field's hidden flag. */
3877
- hidden = input(false, ...(ngDevMode ? [{ debugName: "hidden" }] : /* istanbul ignore next */ []));
4066
+ hidden = input(false, /* @ts-ignore */
4067
+ ...(ngDevMode ? [{ debugName: "hidden" }] : /* istanbul ignore next */ []));
3878
4068
  /** Mirrors the bound field's errors. */
3879
- errors = input([], ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
4069
+ errors = input([], /* @ts-ignore */
4070
+ ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
3880
4071
  /** Mirrors the bound field's disablement reasons. */
3881
- disabledReasons = input([], ...(ngDevMode ? [{ debugName: "disabledReasons" }] : /* istanbul ignore next */ []));
4072
+ disabledReasons = input([], /* @ts-ignore */
4073
+ ...(ngDevMode ? [{ debugName: "disabledReasons" }] : /* istanbul ignore next */ []));
3882
4074
  /** Two-way `touched` flag — drives and reflects the field's touched state. */
3883
- touched = model(false, ...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
4075
+ touched = model(false, /* @ts-ignore */
4076
+ ...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
3884
4077
  constructor() {
3885
4078
  wireSignalFormsInputs(this.host, this);
3886
4079
  }
3887
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarRangeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3888
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: CalendarRangeDirective, isStandalone: true, selector: "tw-calendar[mode=\"range\"]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, disabledReasons: { classPropertyName: "disabledReasons", publicName: "disabledReasons", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { touched: "touchedChange" }, exportAs: ["twCalendarRange"], ngImport: i0 });
4080
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarRangeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4081
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: CalendarRangeDirective, isStandalone: true, selector: "tw-calendar[mode=\"range\"]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, disabledReasons: { classPropertyName: "disabledReasons", publicName: "disabledReasons", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { touched: "touchedChange" }, exportAs: ["twCalendarRange"], ngImport: i0 });
3889
4082
  }
3890
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarRangeDirective, decorators: [{
4083
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarRangeDirective, decorators: [{
3891
4084
  type: Directive,
3892
4085
  args: [{
3893
4086
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -3902,10 +4095,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3902
4095
  * with `<ng-content select="[twCalendarPresets]">`.
3903
4096
  */
3904
4097
  class CalendarPresetsDirective {
3905
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarPresetsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3906
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: CalendarPresetsDirective, isStandalone: true, selector: "[twCalendarPresets]", host: { classAttribute: "flex flex-wrap items-center gap-1.5 px-2 pb-2" }, ngImport: i0 });
4098
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarPresetsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4099
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: CalendarPresetsDirective, isStandalone: true, selector: "[twCalendarPresets]", host: { classAttribute: "flex flex-wrap items-center gap-1.5 px-2 pb-2" }, ngImport: i0 });
3907
4100
  }
3908
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CalendarPresetsDirective, decorators: [{
4101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: CalendarPresetsDirective, decorators: [{
3909
4102
  type: Directive,
3910
4103
  args: [{
3911
4104
  selector: '[twCalendarPresets]',
@@ -4429,10 +4622,10 @@ class NativeDateAdapter extends DateAdapter {
4429
4622
  String(date.getDate()).padStart(2, '0'),
4430
4623
  ].join('-');
4431
4624
  }
4432
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NativeDateAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
4433
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NativeDateAdapter });
4625
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: NativeDateAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
4626
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: NativeDateAdapter });
4434
4627
  }
4435
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: NativeDateAdapter, decorators: [{
4628
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: NativeDateAdapter, decorators: [{
4436
4629
  type: Injectable
4437
4630
  }] });
4438
4631
  /** Provides the default `Date`-based adapter. */