@slotted/angular 0.1.0-beta.3 → 0.1.0-beta.5

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 (120) hide show
  1. package/docs/AGENTS.snippet.md +2 -0
  2. package/docs/app-shell.examples.md +1 -1
  3. package/docs/app-shell.json +4 -4
  4. package/docs/app-shell.md +2 -2
  5. package/docs/calendar.json +7 -0
  6. package/docs/calendar.md +1 -0
  7. package/docs/date-field.json +8 -1
  8. package/docs/date-field.md +2 -1
  9. package/docs/date-picker.examples.md +36 -0
  10. package/docs/date-picker.json +20 -5
  11. package/docs/date-picker.md +5 -4
  12. package/docs/guidelines/README.md +2 -2
  13. package/docs/guidelines/composition.md +10 -0
  14. package/docs/guidelines/index.md +3 -1
  15. package/docs/guidelines/list-pages.md +12 -1
  16. package/docs/guidelines/own-elements.md +1 -1
  17. package/docs/page-header.json +1 -0
  18. package/docs/page-header.md +1 -1
  19. package/docs/page.json +1 -0
  20. package/docs/page.md +1 -0
  21. package/docs/skills/build-own-element/SKILL.md +6 -6
  22. package/docs/skills/compose-screen/SKILL.md +13 -6
  23. package/docs/skills/review-screen/SKILL.md +6 -6
  24. package/docs/skills/theme-app/SKILL.md +1 -1
  25. package/docs/skills/waiting-states/SKILL.md +2 -2
  26. package/docs/table.json +13 -0
  27. package/docs/table.md +3 -1
  28. package/docs/tabs.json +13 -3
  29. package/docs/tabs.md +3 -2
  30. package/docs/text-field.json +1 -1
  31. package/docs/text-field.md +1 -1
  32. package/fesm2022/slotted-angular-app-shell.mjs +15 -9
  33. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  34. package/fesm2022/slotted-angular-calendar.mjs +158 -33
  35. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  36. package/fesm2022/slotted-angular-cascader.mjs +7 -1
  37. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  38. package/fesm2022/slotted-angular-chart.mjs +13 -3
  39. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  40. package/fesm2022/slotted-angular-combobox.mjs +25 -4
  41. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  42. package/fesm2022/slotted-angular-data-grid.mjs +2 -2
  43. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  44. package/fesm2022/slotted-angular-date-field.mjs +35 -12
  45. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  46. package/fesm2022/slotted-angular-date-picker.mjs +95 -33
  47. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  48. package/fesm2022/slotted-angular-date-range-picker.mjs +5 -7
  49. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  50. package/fesm2022/slotted-angular-datetime-picker.mjs +5 -7
  51. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  52. package/fesm2022/slotted-angular-datetime-range-picker.mjs +5 -7
  53. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  54. package/fesm2022/slotted-angular-entity-picker.mjs +7 -1
  55. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
  56. package/fesm2022/slotted-angular-filter-bar.mjs +1 -1
  57. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  58. package/fesm2022/slotted-angular-import-export-center.mjs +1 -1
  59. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  60. package/fesm2022/slotted-angular-multi-select.mjs +24 -3
  61. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  62. package/fesm2022/slotted-angular-page-header.mjs +2 -2
  63. package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
  64. package/fesm2022/slotted-angular-page.mjs +20 -1
  65. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  66. package/fesm2022/slotted-angular-popover.mjs +7 -1
  67. package/fesm2022/slotted-angular-popover.mjs.map +1 -1
  68. package/fesm2022/slotted-angular-scroll-area.mjs +6 -2
  69. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
  70. package/fesm2022/slotted-angular-select.mjs +49 -17
  71. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  72. package/fesm2022/slotted-angular-stat-card.mjs +2 -2
  73. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  74. package/fesm2022/slotted-angular-table.mjs +24 -6
  75. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  76. package/fesm2022/slotted-angular-tabs.mjs +13 -6
  77. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  78. package/fesm2022/slotted-angular-time-picker.mjs +4 -6
  79. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
  80. package/fesm2022/slotted-angular-time-range-picker.mjs +4 -6
  81. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
  82. package/fesm2022/slotted-angular-tooltip.mjs +7 -1
  83. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
  84. package/package.json +3 -3
  85. package/types/slotted-angular-app-shell.d.ts +5 -3
  86. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  87. package/types/slotted-angular-calendar.d.ts +28 -2
  88. package/types/slotted-angular-calendar.d.ts.map +1 -1
  89. package/types/slotted-angular-cascader.d.ts.map +1 -1
  90. package/types/slotted-angular-chart.d.ts +1 -0
  91. package/types/slotted-angular-chart.d.ts.map +1 -1
  92. package/types/slotted-angular-combobox.d.ts +4 -0
  93. package/types/slotted-angular-combobox.d.ts.map +1 -1
  94. package/types/slotted-angular-date-field.d.ts +11 -1
  95. package/types/slotted-angular-date-field.d.ts.map +1 -1
  96. package/types/slotted-angular-date-picker.d.ts +38 -12
  97. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  98. package/types/slotted-angular-date-range-picker.d.ts +0 -1
  99. package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
  100. package/types/slotted-angular-datetime-picker.d.ts +0 -1
  101. package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
  102. package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
  103. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
  104. package/types/slotted-angular-entity-picker.d.ts.map +1 -1
  105. package/types/slotted-angular-multi-select.d.ts +4 -0
  106. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  107. package/types/slotted-angular-page.d.ts.map +1 -1
  108. package/types/slotted-angular-popover.d.ts.map +1 -1
  109. package/types/slotted-angular-scroll-area.d.ts.map +1 -1
  110. package/types/slotted-angular-select.d.ts +12 -2
  111. package/types/slotted-angular-select.d.ts.map +1 -1
  112. package/types/slotted-angular-table.d.ts +17 -2
  113. package/types/slotted-angular-table.d.ts.map +1 -1
  114. package/types/slotted-angular-tabs.d.ts +3 -4
  115. package/types/slotted-angular-tabs.d.ts.map +1 -1
  116. package/types/slotted-angular-time-picker.d.ts +0 -1
  117. package/types/slotted-angular-time-picker.d.ts.map +1 -1
  118. package/types/slotted-angular-time-range-picker.d.ts +0 -1
  119. package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
  120. package/types/slotted-angular-tooltip.d.ts.map +1 -1
@@ -185,6 +185,9 @@ class SlCalendar {
185
185
  ...(ngDevMode ? [{ debugName: "view" }] : /* istanbul ignore next */ []));
186
186
  defaultView = input(undefined, /* @ts-ignore */
187
187
  ...(ngDevMode ? [{ debugName: "defaultView" }] : /* istanbul ignore next */ []));
188
+ /** What a choice is: a day, or a month of a year. Defaults to `day`. */
189
+ granularity = input(undefined, /* @ts-ignore */
190
+ ...(ngDevMode ? [{ debugName: "granularity" }] : /* istanbul ignore next */ []));
188
191
  weekNumbers = input(undefined, { ...(ngDevMode ? { debugName: "weekNumbers" } : /* istanbul ignore next */ {}), transform: (value) => (value === undefined ? undefined : booleanAttribute(value)) });
189
192
  fixedWeeks = input(undefined, { ...(ngDevMode ? { debugName: "fixedWeeks" } : /* istanbul ignore next */ {}), transform: (value) => (value === undefined ? undefined : booleanAttribute(value)) });
190
193
  outsideDays = input(undefined, /* @ts-ignore */
@@ -248,8 +251,18 @@ class SlCalendar {
248
251
  ...(ngDevMode ? [{ debugName: "held" }] : /* istanbul ignore next */ []));
249
252
  focused = computed(() => this.focusedDate() ?? this.ownFocused(), /* @ts-ignore */
250
253
  ...(ngDevMode ? [{ debugName: "focused" }] : /* istanbul ignore next */ []));
254
+ /**
255
+ * Under `granularity="month"` the months of a year are where a choice is
256
+ * made: the calendar opens there and never goes below it, so a view asked
257
+ * for as `day` is read as `month`.
258
+ */
259
+ monthly = computed(() => this.granularity() === 'month', /* @ts-ignore */
260
+ ...(ngDevMode ? [{ debugName: "monthly" }] : /* istanbul ignore next */ []));
251
261
  /** Which grid is showing. Public, so a template reaches it through `exportAs`. */
252
- currentView = computed(() => this.view() ?? this.ownView(), /* @ts-ignore */
262
+ currentView = computed(() => {
263
+ const asked = this.view() ?? this.ownView();
264
+ return this.monthly() && asked === 'day' ? 'month' : asked;
265
+ }, /* @ts-ignore */
253
266
  ...(ngDevMode ? [{ debugName: "currentView" }] : /* istanbul ignore next */ []));
254
267
  resolvedMonths = computed(() => Math.max(1, this.months() ?? this.defaults.months), /* @ts-ignore */
255
268
  ...(ngDevMode ? [{ debugName: "resolvedMonths" }] : /* istanbul ignore next */ []));
@@ -339,7 +352,7 @@ class SlCalendar {
339
352
  }
340
353
  ngOnInit() {
341
354
  this.ownValue.set(this.defaultValue() ?? null);
342
- this.ownView.set(this.defaultView() ?? 'day');
355
+ this.ownView.set(this.defaultView() ?? (this.monthly() ? 'month' : 'day'));
343
356
  this.today.set(todayIn(this.timeZone() ?? this.defaults.timeZone));
344
357
  const start = this.startingDate();
345
358
  this.ownFocused.set(start);
@@ -347,7 +360,9 @@ class SlCalendar {
347
360
  }
348
361
  /** Puts focus on the cell holding the roving tab stop. */
349
362
  focus() {
350
- this.element.querySelector('[data-part="day"][tabindex="0"]')?.focus();
363
+ this.element
364
+ .querySelector('[data-part="day"][tabindex="0"], [data-part="period"][tabindex="0"]')
365
+ ?.focus();
351
366
  }
352
367
  /** Moves the reader to a date, paging the grid to reach it. */
353
368
  focusDate(date) {
@@ -430,6 +445,36 @@ class SlCalendar {
430
445
  this.requestValue(nextValue(date, this.held(), this.selectionMode()), reason, source);
431
446
  this.requestFocused(date, reason, source);
432
447
  }
448
+ /** A month cell's name: the month and the year, which the cell alone does not say. */
449
+ monthLabel(month) {
450
+ return this.format().monthYear(plainDate(this.focused().year, month, 1));
451
+ }
452
+ /** Whether the value's month is this cell of the year on screen. */
453
+ heldMonth(month) {
454
+ const held = this.held();
455
+ if (held === null || Array.isArray(held) || isRange(held))
456
+ return false;
457
+ return held.year === this.focused().year && held.month === month;
458
+ }
459
+ /**
460
+ * A month the bounds leave no day of. The bounds are days, so a month is
461
+ * refused only when it ends before `min` or starts after `max`.
462
+ */
463
+ monthUnavailable(month, year = this.focused().year) {
464
+ const at = year * 12 + month;
465
+ const min = this.min();
466
+ const max = this.max();
467
+ return ((min !== undefined && at < min.year * 12 + min.month) ||
468
+ (max !== undefined && at > max.year * 12 + max.month));
469
+ }
470
+ /** The value of a month cell is the first day of the month. */
471
+ selectMonth(year, month, reason, source) {
472
+ if (!this.editable() || this.monthUnavailable(month, year))
473
+ return;
474
+ const date = plainDate(year, month, 1);
475
+ this.requestValue(date, reason, source);
476
+ this.requestFocused(date, reason, source);
477
+ }
433
478
  /** The reader moves with the page rather than staying behind it. */
434
479
  turnPage(direction, source) {
435
480
  const focused = this.focused();
@@ -471,6 +516,43 @@ class SlCalendar {
471
516
  consume();
472
517
  this.requestFocused(next, 'keyboard', event);
473
518
  };
519
+ /**
520
+ * The months of a year, as a grid of four columns: the arrows move one
521
+ * month or one row, Home and End reach January and December, the page
522
+ * keys move a year, and Enter or Space chooses. Escape is left alone, so
523
+ * the surface above the calendar may close on it.
524
+ */
525
+ if (this.monthly() && this.currentView() === 'month') {
526
+ const toMonth = (delta) => {
527
+ const index = focused.year * 12 + (focused.month - 1) + delta;
528
+ return plainDate(Math.floor(index / 12), (index % 12) + 1, 1);
529
+ };
530
+ switch (event.key) {
531
+ case forward:
532
+ return move(toMonth(1));
533
+ case backward:
534
+ return move(toMonth(-1));
535
+ case 'ArrowUp':
536
+ return move(toMonth(-4));
537
+ case 'ArrowDown':
538
+ return move(toMonth(4));
539
+ case 'Home':
540
+ return move(plainDate(focused.year, 1, 1));
541
+ case 'End':
542
+ return move(plainDate(focused.year, 12, 1));
543
+ case 'PageUp':
544
+ return move(toMonth(-12));
545
+ case 'PageDown':
546
+ return move(toMonth(12));
547
+ case 'Enter':
548
+ case ' ':
549
+ consume();
550
+ this.selectMonth(focused.year, focused.month, 'keyboard', event);
551
+ return;
552
+ default:
553
+ break;
554
+ }
555
+ }
474
556
  switch (event.key) {
475
557
  case forward:
476
558
  return move(addDays(focused, 1));
@@ -499,8 +581,9 @@ class SlCalendar {
499
581
  passed on, and no layer is asked to close. */
500
582
  /* In the day view the key is left alone, so a surface above the
501
583
  calendar may still close on it. */
502
- if (this.currentView() === 'day')
584
+ if (this.currentView() === 'day' || (this.monthly() && this.currentView() === 'month')) {
503
585
  return;
586
+ }
504
587
  consume();
505
588
  this.setView(this.currentView() === 'year' ? 'month' : 'day');
506
589
  return;
@@ -584,7 +667,7 @@ class SlCalendar {
584
667
  this.restoreFocus = false;
585
668
  return;
586
669
  }
587
- const stop = this.element.querySelector('[data-part="cell"]:not([data-outside-month]) [data-part="day"][tabindex="0"]');
670
+ const stop = this.element.querySelector('[data-part="cell"]:not([data-outside-month]) [data-part="day"][tabindex="0"], [data-part="period"][tabindex="0"]');
588
671
  if (stop !== null) {
589
672
  this.restoreFocus = false;
590
673
  stop.focus();
@@ -598,7 +681,7 @@ class SlCalendar {
598
681
  }, { injector: this.injector });
599
682
  }
600
683
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component });
601
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlCalendar, isStandalone: true, selector: "[slCalendar]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, focusedDate: { classPropertyName: "focusedDate", publicName: "focusedDate", isSignal: true, isRequired: false, transformFunction: null }, defaultFocusedDate: { classPropertyName: "defaultFocusedDate", publicName: "defaultFocusedDate", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, isDateUnavailable: { classPropertyName: "isDateUnavailable", publicName: "isDateUnavailable", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, months: { classPropertyName: "months", publicName: "months", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, defaultView: { classPropertyName: "defaultView", publicName: "defaultView", isSignal: true, isRequired: false, transformFunction: null }, weekNumbers: { classPropertyName: "weekNumbers", publicName: "weekNumbers", isSignal: true, isRequired: false, transformFunction: null }, fixedWeeks: { classPropertyName: "fixedWeeks", publicName: "fixedWeeks", isSignal: true, isRequired: false, transformFunction: null }, outsideDays: { classPropertyName: "outsideDays", publicName: "outsideDays", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, timeZone: { classPropertyName: "timeZone", publicName: "timeZone", isSignal: true, isRequired: false, transformFunction: null }, firstDayOfWeek: { classPropertyName: "firstDayOfWeek", publicName: "firstDayOfWeek", isSignal: true, isRequired: false, transformFunction: null }, calendar: { classPropertyName: "calendar", publicName: "calendar", 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 }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", focusedDateChange: "focusedDateChange", viewChange: "viewChange", previewChange: "previewChange" }, host: { attributes: { "data-ui": "calendar", "data-part": "root" }, listeners: { "keydown": "onKeyDown($event)" }, properties: { "attr.data-view": "currentView()", "attr.data-calendar": "resolvedCalendar()", "attr.data-months": "resolvedMonths() > 1 ? resolvedMonths() : null", "attr.data-week-numbers": "resolvedWeekNumbers() ? '' : null", "attr.data-disabled": "disabled() === true ? '' : null", "attr.data-readonly": "readOnly() === true ? '' : null", "attr.data-invalid": "invalid() === true ? '' : null" } }, exportAs: ["slCalendar"], ngImport: i0, template: `<div data-part="header">
684
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SlCalendar, isStandalone: true, selector: "[slCalendar]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, focusedDate: { classPropertyName: "focusedDate", publicName: "focusedDate", isSignal: true, isRequired: false, transformFunction: null }, defaultFocusedDate: { classPropertyName: "defaultFocusedDate", publicName: "defaultFocusedDate", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, isDateUnavailable: { classPropertyName: "isDateUnavailable", publicName: "isDateUnavailable", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, months: { classPropertyName: "months", publicName: "months", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, defaultView: { classPropertyName: "defaultView", publicName: "defaultView", isSignal: true, isRequired: false, transformFunction: null }, granularity: { classPropertyName: "granularity", publicName: "granularity", isSignal: true, isRequired: false, transformFunction: null }, weekNumbers: { classPropertyName: "weekNumbers", publicName: "weekNumbers", isSignal: true, isRequired: false, transformFunction: null }, fixedWeeks: { classPropertyName: "fixedWeeks", publicName: "fixedWeeks", isSignal: true, isRequired: false, transformFunction: null }, outsideDays: { classPropertyName: "outsideDays", publicName: "outsideDays", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, timeZone: { classPropertyName: "timeZone", publicName: "timeZone", isSignal: true, isRequired: false, transformFunction: null }, firstDayOfWeek: { classPropertyName: "firstDayOfWeek", publicName: "firstDayOfWeek", isSignal: true, isRequired: false, transformFunction: null }, calendar: { classPropertyName: "calendar", publicName: "calendar", 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 }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", focusedDateChange: "focusedDateChange", viewChange: "viewChange", previewChange: "previewChange" }, host: { attributes: { "data-ui": "calendar", "data-part": "root" }, listeners: { "keydown": "onKeyDown($event)" }, properties: { "attr.data-view": "currentView()", "attr.data-calendar": "resolvedCalendar()", "attr.data-months": "resolvedMonths() > 1 ? resolvedMonths() : null", "attr.data-week-numbers": "resolvedWeekNumbers() ? '' : null", "attr.data-disabled": "disabled() === true ? '' : null", "attr.data-readonly": "readOnly() === true ? '' : null", "attr.data-invalid": "invalid() === true ? '' : null" } }, exportAs: ["slCalendar"], ngImport: i0, template: `<div data-part="header">
602
685
  <button
603
686
  data-part="previous"
604
687
  type="button"
@@ -715,19 +798,40 @@ class SlCalendar {
715
798
  </div>
716
799
  }
717
800
  @case ('month') {
718
- <div data-part="months">
719
- @for (name of monthNames(); track $index) {
720
- <button
721
- data-part="period"
722
- type="button"
723
- [attr.data-selected]="focused().month === $index + 1 ? '' : null"
724
- [attr.aria-selected]="focused().month === $index + 1 ? 'true' : null"
725
- (click)="pickMonth($index + 1, $event)"
726
- >
727
- {{ name }}
728
- </button>
729
- }
730
- </div>
801
+ @if (monthly()) {
802
+ <div data-part="months">
803
+ @for (name of monthNames(); track $index) {
804
+ <button
805
+ data-part="period"
806
+ type="button"
807
+ [attr.aria-label]="monthLabel($index + 1)"
808
+ [attr.data-selected]="heldMonth($index + 1) ? '' : null"
809
+ [attr.aria-selected]="heldMonth($index + 1) ? 'true' : null"
810
+ [attr.aria-disabled]="monthUnavailable($index + 1) ? 'true' : null"
811
+ [attr.data-unavailable]="monthUnavailable($index + 1) ? '' : null"
812
+ [attr.data-focused]="focused().month === $index + 1 ? '' : null"
813
+ [tabindex]="focused().month === $index + 1 ? 0 : -1"
814
+ (click)="selectMonth(focused().year, $index + 1, 'pointer', $event)"
815
+ >
816
+ {{ name }}
817
+ </button>
818
+ }
819
+ </div>
820
+ } @else {
821
+ <div data-part="months">
822
+ @for (name of monthNames(); track $index) {
823
+ <button
824
+ data-part="period"
825
+ type="button"
826
+ [attr.data-selected]="focused().month === $index + 1 ? '' : null"
827
+ [attr.aria-selected]="focused().month === $index + 1 ? 'true' : null"
828
+ (click)="pickMonth($index + 1, $event)"
829
+ >
830
+ {{ name }}
831
+ </button>
832
+ }
833
+ </div>
834
+ }
731
835
  }
732
836
  @default {
733
837
  <div data-part="years">
@@ -865,19 +969,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
865
969
  </div>
866
970
  }
867
971
  @case ('month') {
868
- <div data-part="months">
869
- @for (name of monthNames(); track $index) {
870
- <button
871
- data-part="period"
872
- type="button"
873
- [attr.data-selected]="focused().month === $index + 1 ? '' : null"
874
- [attr.aria-selected]="focused().month === $index + 1 ? 'true' : null"
875
- (click)="pickMonth($index + 1, $event)"
876
- >
877
- {{ name }}
878
- </button>
879
- }
880
- </div>
972
+ @if (monthly()) {
973
+ <div data-part="months">
974
+ @for (name of monthNames(); track $index) {
975
+ <button
976
+ data-part="period"
977
+ type="button"
978
+ [attr.aria-label]="monthLabel($index + 1)"
979
+ [attr.data-selected]="heldMonth($index + 1) ? '' : null"
980
+ [attr.aria-selected]="heldMonth($index + 1) ? 'true' : null"
981
+ [attr.aria-disabled]="monthUnavailable($index + 1) ? 'true' : null"
982
+ [attr.data-unavailable]="monthUnavailable($index + 1) ? '' : null"
983
+ [attr.data-focused]="focused().month === $index + 1 ? '' : null"
984
+ [tabindex]="focused().month === $index + 1 ? 0 : -1"
985
+ (click)="selectMonth(focused().year, $index + 1, 'pointer', $event)"
986
+ >
987
+ {{ name }}
988
+ </button>
989
+ }
990
+ </div>
991
+ } @else {
992
+ <div data-part="months">
993
+ @for (name of monthNames(); track $index) {
994
+ <button
995
+ data-part="period"
996
+ type="button"
997
+ [attr.data-selected]="focused().month === $index + 1 ? '' : null"
998
+ [attr.aria-selected]="focused().month === $index + 1 ? 'true' : null"
999
+ (click)="pickMonth($index + 1, $event)"
1000
+ >
1001
+ {{ name }}
1002
+ </button>
1003
+ }
1004
+ </div>
1005
+ }
881
1006
  }
882
1007
  @default {
883
1008
  <div data-part="years">
@@ -906,7 +1031,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
906
1031
  '[attr.data-invalid]': "invalid() === true ? '' : null",
907
1032
  '(keydown)': 'onKeyDown($event)',
908
1033
  }, styles: ["@layer slotted.components{[data-ui=calendar][data-part=root]{container-type:inline-size;container-name:slotted-calendar;--_font-size: var(--slotted-control-font-size-md, 13px);--_gap: var(--slotted-control-gap-md, 8px);--_icon-size: var(--slotted-control-icon-size-md, 16px);--_cell-size: var(--slotted-calendar-cell-size, var(--slotted-control-height-md, 34px));--_columns: 7;--_months: 1;--_month-gap: var(--slotted-space-6, 1rem);--_week-number-columns: 0;--_grid-size: calc(var(--_cell-size) * (var(--_columns) + var(--_week-number-columns)));background-color:var(--slotted-calendar-background, transparent);box-sizing:border-box;color:var(--slotted-calendar-color, var(--slotted-text, CanvasText));display:flex;flex-direction:column;font-family:var(--slotted-control-font-family, system-ui, sans-serif);font-size:var(--_font-size);gap:var(--_gap);--_heading-floor: calc(20ch + 3 * var(--_icon-size) + 4 * var(--_gap));inline-size:max(calc(var(--_grid-size) * var(--_months) + var(--_month-gap) * (var(--_months) - 1)),var(--_heading-floor));max-inline-size:100%}[data-ui=calendar][data-part=root][data-week-numbers]{--_week-number-columns: .75}[data-ui=calendar][data-part=root][data-months=\"2\"]{--_months: 2}[data-ui=calendar][data-part=root][data-months=\"3\"]{--_months: 3}[data-ui=calendar] [data-part=header],[data-ui=calendar] [data-part=grids],[data-ui=calendar] [data-part=months],[data-ui=calendar] [data-part=years]{--_cell-size: clamp( var(--slotted-target-min, 24px), calc(100cqi / (var(--_columns) + var(--_week-number-columns)) / var(--_months)), var(--slotted-calendar-cell-size, var(--slotted-control-height-md, 34px)) )}[data-ui=calendar] [data-part=header]{align-items:center;display:flex;gap:var(--slotted-space-2, .25rem);inline-size:100%;justify-content:space-between}[data-ui=calendar] [data-part=heading]{--slotted-icon-size: var(--_icon-size);appearance:none;background-color:transparent;border:0;border-radius:var(--slotted-calendar-radius, var(--slotted-control-radius, 4px));color:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:var(--slotted-space-2, .25rem);font:inherit;font-weight:var(--slotted-font-weight-semibold, 600);flex:1 1 auto;justify-content:safe center;min-inline-size:0;padding-block:var(--slotted-space-2, .25rem);padding-inline:var(--slotted-space-2, .25rem);overflow:hidden;white-space:nowrap;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);-webkit-tap-highlight-color:transparent}[data-ui=calendar] [data-part=previous],[data-ui=calendar] [data-part=next]{--slotted-icon-size: var(--_icon-size);align-items:center;appearance:none;background-color:transparent;block-size:var(--_cell-size);border:0;border-radius:var(--slotted-calendar-radius, var(--slotted-control-radius, 4px));color:var(--slotted-calendar-trigger-color, var(--slotted-text-muted, GrayText));cursor:pointer;display:inline-flex;flex:0 0 auto;inline-size:var(--_cell-size);justify-content:center;padding:0;touch-action:manipulation;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);-webkit-tap-highlight-color:transparent}[data-ui=calendar] [data-part=previous]>[data-ui=icon]{rotate:180deg}[data-ui=calendar] [data-part=grids]{display:flex;flex-wrap:wrap;gap:var(--_month-gap);justify-content:center}[data-ui=calendar] [data-part=grid]{border-collapse:collapse;table-layout:fixed}[data-ui=calendar] [data-part=grid-caption]{block-size:1px;clip-path:inset(50%);inline-size:1px;overflow:hidden;position:absolute;white-space:nowrap}[data-ui=calendar][data-part=root]:is([data-months=\"2\"],[data-months=\"3\"]) [data-part=grid-caption]{block-size:auto;clip-path:none;color:var(--slotted-calendar-weekday-color, var(--slotted-text-muted, GrayText));font-size:var(--slotted-font-size-xs, .75rem);font-weight:var(--slotted-font-weight-semibold, 600);inline-size:auto;overflow:visible;padding-block-end:var(--slotted-space-2, .25rem);position:static}[data-ui=calendar] [data-part=week-header]{block-size:var(--_cell-size);color:var(--slotted-calendar-weekday-color, var(--slotted-text-muted, GrayText));font-size:var(--slotted-font-size-xs, .75rem);font-weight:var(--slotted-font-weight-medium, 500);inline-size:var(--_cell-size);padding:0;text-overflow:clip}[data-ui=calendar] [data-part=week-number]{color:var(--slotted-calendar-week-number-color, var(--slotted-text-muted, GrayText));font-size:var(--slotted-font-size-xs, .75rem);font-variant-numeric:tabular-nums;font-weight:var(--slotted-font-weight-regular, 400);inline-size:calc(var(--_cell-size) * .75);padding:0;border-inline-end:var(--slotted-border-width-thin, 1px) solid var(--slotted-calendar-week-number-border-color, var(--slotted-border-subtle, ButtonBorder))}[data-ui=calendar] [data-part=cell]{padding:0;position:relative}[data-ui=calendar] [data-part=day]{--_inset: var(--slotted-border-width-thin, 1px);align-items:center;block-size:calc(var(--_cell-size) - var(--_inset) * 2);inline-size:calc(var(--_cell-size) - var(--_inset) * 2);margin:var(--_inset);border-radius:var(--slotted-calendar-day-radius, var(--slotted-radius-sm, 4px));box-sizing:border-box;color:inherit;cursor:pointer;display:flex;font-variant-numeric:tabular-nums;flex-direction:column;gap:var(--slotted-space-1, .125rem);justify-content:center;line-height:1;position:relative;transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}[data-ui=calendar] [data-part=day]:after{content:\"\";inset:min(0px,calc((100% - var(--slotted-target-min, 24px)) / 2));position:absolute}[data-ui=calendar] [data-part=months],[data-ui=calendar] [data-part=years]{display:grid;gap:var(--slotted-space-2, .25rem);grid-template-columns:repeat(4,1fr);inline-size:calc(var(--_cell-size) * var(--_columns))}[data-ui=calendar] [data-part=period]{align-items:center;appearance:none;background-color:transparent;block-size:var(--_cell-size);border:0;border-radius:var(--slotted-calendar-day-radius, var(--slotted-radius-sm, 4px));color:inherit;cursor:pointer;display:flex;font:inherit;justify-content:center;padding-inline:var(--slotted-space-2, .25rem);transition:background-color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing),color var(--slotted-control-transition-duration) var(--slotted-control-transition-easing);-webkit-tap-highlight-color:transparent}[data-ui=calendar] [data-part=day][data-today]{color:var(--slotted-calendar-today-color, var(--slotted-tone-accent-text));font-weight:var(--slotted-font-weight-semibold, 600)}[data-ui=calendar] [data-part=day]:before{background-color:transparent;block-size:var(--slotted-space-2, .25rem);border-radius:var(--slotted-radius-full, 9999px);content:\"\";flex:0 0 auto;inline-size:var(--slotted-space-2, .25rem);order:1}[data-ui=calendar] [data-part=day][data-today]:before{background-color:currentcolor}[data-ui=calendar] [data-part=cell][data-outside-month] [data-part=day]{color:var(--slotted-calendar-outside-color, var(--slotted-text-muted, GrayText))}[data-ui=calendar] [data-part=cell][data-unavailable] [data-part=day]{color:var(--slotted-calendar-unavailable-color, var(--slotted-disabled-foreground));cursor:not-allowed;text-decoration:line-through;text-decoration-thickness:var(--slotted-border-width-thin, 1px)}[data-ui=calendar] [data-part=cell][data-in-range]:before,[data-ui=calendar] [data-part=cell][data-range-start]:before,[data-ui=calendar] [data-part=cell][data-range-end]:before{background-color:var( --slotted-calendar-range-background, color-mix( in oklab, var(--slotted-tone-accent-text) calc(var(--slotted-highlight-tint-opacity, .075) * 100%), transparent ) );content:\"\";inset:0;position:absolute}[data-ui=calendar] [data-part=cell][data-range-start]:before{border-end-start-radius:var(--slotted-calendar-day-radius, var(--slotted-radius-sm, 4px));border-start-start-radius:var(--slotted-calendar-day-radius, var(--slotted-radius-sm, 4px))}[data-ui=calendar] [data-part=cell][data-range-end]:before{border-end-end-radius:var(--slotted-calendar-day-radius, var(--slotted-radius-sm, 4px));border-start-end-radius:var(--slotted-calendar-day-radius, var(--slotted-radius-sm, 4px))}[data-ui=calendar] [data-part=cell][data-range-start]:not([data-range-end]) [data-part=day]{border-end-end-radius:0;border-start-end-radius:0}[data-ui=calendar] [data-part=cell][data-range-end]:not([data-range-start]) [data-part=day]{border-end-start-radius:0;border-start-start-radius:0}[data-ui=calendar] [data-part=cell]:is([data-in-range],[data-range-start],[data-range-end]) [data-part=day]{--_inset: 0px}[data-ui=calendar] [data-part=cell][data-in-range] [data-part=day]{border-radius:0;color:var(--slotted-calendar-in-range-color, var(--slotted-tone-accent-text))}[data-ui=calendar] [data-part=cell][data-preview]:before{background-color:var( --slotted-calendar-preview-background, color-mix( in oklab, var(--slotted-tone-accent-text) calc(var(--slotted-highlight-tint-opacity, .075) * 50%), transparent ) )}[data-ui=calendar] [data-part=cell][data-preview]:is([data-range-start],[data-range-end]):not([data-selected]) [data-part=day]{box-shadow:inset 0 0 0 var(--slotted-border-width-thin, 1px) var(--slotted-calendar-preview-border-color, var(--slotted-tone-accent-border));color:var(--slotted-calendar-in-range-color, var(--slotted-tone-accent-text))}[data-ui=calendar] [data-part=day]:hover:not([data-disabled]),[data-ui=calendar] [data-part=period]:hover:not(:disabled):not([data-disabled]),[data-ui=calendar] [data-part=heading]:hover:not(:disabled):not([data-disabled]),[data-ui=calendar] [data-part=previous]:hover:not(:disabled):not([data-disabled]),[data-ui=calendar] [data-part=next]:hover:not(:disabled):not([data-disabled]){background-color:var( --slotted-calendar-hover-background, var(--slotted-tone-secondary-subtle-hover) )}[data-ui=calendar] [data-part=day]:active:not([data-disabled]),[data-ui=calendar] [data-part=period]:active:not(:disabled):not([data-disabled]),[data-ui=calendar] [data-part=previous]:active:not(:disabled):not([data-disabled]),[data-ui=calendar] [data-part=next]:active:not(:disabled):not([data-disabled]){background-color:var( --slotted-calendar-active-background, var(--slotted-tone-secondary-subtle-active) )}[data-ui=calendar] [data-part=cell][data-in-range] [data-part=day]:hover:not([data-disabled]){background-color:var( --slotted-calendar-range-hover-background, var(--slotted-tone-accent-subtle-hover) )}[data-ui=calendar] [data-part=cell][data-in-range] [data-part=day]:active:not([data-disabled]){background-color:var( --slotted-calendar-range-active-background, var(--slotted-tone-accent-subtle-active) )}[data-ui=calendar] [data-part=cell][data-unavailable] [data-part=day]:hover:not([data-disabled]),[data-ui=calendar] [data-part=cell][data-unavailable] [data-part=day]:active:not([data-disabled]){background-color:transparent}[data-ui=calendar] [data-part=cell][data-selected] [data-part=day],[data-ui=calendar] [data-part=period][data-selected]{background-color:var(--slotted-calendar-selected-background, var(--slotted-tone-accent-solid));color:var(--slotted-calendar-selected-color, var(--slotted-tone-accent-on-solid));font-weight:var(--slotted-font-weight-semibold, 600)}[data-ui=calendar] [data-part=day]:focus-visible,[data-ui=calendar] [data-part=period]:focus-visible,[data-ui=calendar] [data-part=heading]:focus-visible,[data-ui=calendar] [data-part=previous]:focus-visible,[data-ui=calendar] [data-part=next]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(var(--slotted-focus-ring-offset, 2px) * -1)}[data-ui=calendar][data-part=root][data-invalid]{--slotted-focus-ring-color: var( --slotted-calendar-invalid-focus-ring-color, var(--slotted-focus-ring-color-invalid, Highlight) )}[data-ui=calendar][data-part=root][data-invalid] [data-part=day]:focus-visible,[data-ui=calendar][data-part=root][data-invalid] [data-part=period]:focus-visible,[data-ui=calendar][data-part=root][data-invalid] [data-part=heading]:focus-visible,[data-ui=calendar][data-part=root][data-invalid] [data-part=previous]:focus-visible,[data-ui=calendar][data-part=root][data-invalid] [data-part=next]:focus-visible{--_invalid-ring: calc( var(--slotted-focus-ring-width, 2px) + var(--slotted-calendar-invalid-edge-width, var(--slotted-control-invalid-edge-width, 1px)) );outline-offset:calc(var(--_invalid-ring) * -1);outline-width:var(--_invalid-ring)}[data-ui=calendar][data-part=root][data-readonly] [data-part=day],[data-ui=calendar][data-part=root][data-readonly] [data-part=period]{cursor:default}[data-ui=calendar][data-part=root][data-disabled]{color:var(--slotted-calendar-disabled-color, var(--slotted-disabled-foreground))}[data-ui=calendar][data-part=root][data-disabled] [data-part=day][data-today]{color:var(--slotted-disabled-foreground)}[data-ui=calendar][data-part=root][data-disabled] [data-part=cell][data-selected] [data-part=day]{background-color:var(--slotted-disabled-background);color:var(--slotted-disabled-foreground)}[data-ui=calendar][data-part=root][data-disabled] [data-part=day],[data-ui=calendar][data-part=root][data-disabled] [data-part=period],[data-ui=calendar][data-part=root][data-disabled] [data-part=previous],[data-ui=calendar][data-part=root][data-disabled] [data-part=next],[data-ui=calendar][data-part=root][data-disabled] [data-part=heading]{cursor:not-allowed}[data-ui=calendar] [data-part=previous]:disabled,[data-ui=calendar] [data-part=next]:disabled{color:var(--slotted-disabled-foreground);cursor:not-allowed}@container slotted-calendar (max-width: 320px){[data-ui=calendar] [data-part=grids]{--_month-gap: var(--slotted-space-4, .5rem)}}@media(forced-colors:active){[data-ui=calendar] [data-part=cell][data-in-range]:before,[data-ui=calendar] [data-part=cell][data-range-start]:before,[data-ui=calendar] [data-part=cell][data-range-end]:before{border-block:var(--slotted-border-width-thin, 1px) solid var(--slotted-calendar-range-border-color, var(--slotted-tone-accent-border))}[data-ui=calendar] [data-part=cell][data-preview]:before{border-block-style:dashed}}}\n"] }]
909
- }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], focusedDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusedDate", required: false }] }], defaultFocusedDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultFocusedDate", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], isDateUnavailable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDateUnavailable", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], months: [{ type: i0.Input, args: [{ isSignal: true, alias: "months", required: false }] }], view: [{ type: i0.Input, args: [{ isSignal: true, alias: "view", required: false }] }], defaultView: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultView", required: false }] }], weekNumbers: [{ type: i0.Input, args: [{ isSignal: true, alias: "weekNumbers", required: false }] }], fixedWeeks: [{ type: i0.Input, args: [{ isSignal: true, alias: "fixedWeeks", required: false }] }], outsideDays: [{ type: i0.Input, args: [{ isSignal: true, alias: "outsideDays", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], timeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeZone", required: false }] }], firstDayOfWeek: [{ type: i0.Input, args: [{ isSignal: true, alias: "firstDayOfWeek", required: false }] }], calendar: [{ type: i0.Input, args: [{ isSignal: true, alias: "calendar", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], messages: [{ type: i0.Input, args: [{ isSignal: true, alias: "messages", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], focusedDateChange: [{ type: i0.Output, args: ["focusedDateChange"] }], viewChange: [{ type: i0.Output, args: ["viewChange"] }], previewChange: [{ type: i0.Output, args: ["previewChange"] }] } });
1034
+ }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], focusedDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusedDate", required: false }] }], defaultFocusedDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultFocusedDate", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], isDateUnavailable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDateUnavailable", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], months: [{ type: i0.Input, args: [{ isSignal: true, alias: "months", required: false }] }], view: [{ type: i0.Input, args: [{ isSignal: true, alias: "view", required: false }] }], defaultView: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultView", required: false }] }], granularity: [{ type: i0.Input, args: [{ isSignal: true, alias: "granularity", required: false }] }], weekNumbers: [{ type: i0.Input, args: [{ isSignal: true, alias: "weekNumbers", required: false }] }], fixedWeeks: [{ type: i0.Input, args: [{ isSignal: true, alias: "fixedWeeks", required: false }] }], outsideDays: [{ type: i0.Input, args: [{ isSignal: true, alias: "outsideDays", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: "locale", required: false }] }], timeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeZone", required: false }] }], firstDayOfWeek: [{ type: i0.Input, args: [{ isSignal: true, alias: "firstDayOfWeek", required: false }] }], calendar: [{ type: i0.Input, args: [{ isSignal: true, alias: "calendar", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readOnly", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], messages: [{ type: i0.Input, args: [{ isSignal: true, alias: "messages", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], focusedDateChange: [{ type: i0.Output, args: ["focusedDateChange"] }], viewChange: [{ type: i0.Output, args: ["viewChange"] }], previewChange: [{ type: i0.Output, args: ["previewChange"] }] } });
910
1035
 
911
1036
  /**
912
1037
  * Generated bundle index. Do not edit.