q2-tecton-elements 1.10.4 → 1.10.7

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 (196) hide show
  1. package/dist/cjs/{icons-921779df.js → icons-4595ee47.js} +61 -1
  2. package/dist/cjs/{index-f4153f5a.js → index-a55d3c34.js} +9 -0
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  5. package/dist/cjs/q2-btn_2.cjs.entry.js +10 -6
  6. package/dist/cjs/q2-calendar.cjs.entry.js +2902 -6078
  7. package/dist/cjs/q2-carousel-pane.cjs.entry.js +50 -7
  8. package/dist/cjs/q2-carousel.cjs.entry.js +2719 -6513
  9. package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
  10. package/dist/cjs/q2-checkbox.cjs.entry.js +10 -2
  11. package/dist/cjs/q2-dropdown-item.cjs.entry.js +2 -2
  12. package/dist/cjs/q2-dropdown.cjs.entry.js +8 -2
  13. package/dist/cjs/q2-editable-field.cjs.entry.js +26 -11
  14. package/dist/cjs/q2-icon.cjs.entry.js +2 -2
  15. package/dist/cjs/q2-input.cjs.entry.js +9 -7
  16. package/dist/cjs/q2-loading-element.cjs.entry.js +1 -1
  17. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  18. package/dist/cjs/q2-message.cjs.entry.js +11 -3
  19. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  20. package/dist/cjs/q2-option.cjs.entry.js +3 -34
  21. package/dist/cjs/q2-radio-group.cjs.entry.js +10 -2
  22. package/dist/cjs/q2-radio.cjs.entry.js +10 -2
  23. package/dist/cjs/q2-section.cjs.entry.js +9 -9
  24. package/dist/cjs/q2-select.cjs.entry.js +175 -130
  25. package/dist/cjs/q2-stepper-pane.cjs.entry.js +1 -1
  26. package/dist/cjs/q2-stepper.cjs.entry.js +10 -4
  27. package/dist/cjs/q2-tab-container.cjs.entry.js +9 -11
  28. package/dist/cjs/q2-tab-pane.cjs.entry.js +2 -2
  29. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  30. package/dist/cjs/q2-textarea.cjs.entry.js +8 -4
  31. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  32. package/dist/collection/components/q2-avatar/index.js +1 -1
  33. package/dist/collection/components/q2-avatar/styles.css +63 -61
  34. package/dist/collection/components/q2-btn/index.js +8 -4
  35. package/dist/collection/components/q2-btn/styles.css +96 -96
  36. package/dist/collection/components/q2-calendar/helpers.js +77 -52
  37. package/dist/collection/components/q2-calendar/index.js +248 -196
  38. package/dist/collection/components/q2-calendar/styles.css +63 -84
  39. package/dist/collection/components/q2-calendar/validation.js +100 -166
  40. package/dist/collection/components/q2-carousel/index.js +204 -266
  41. package/dist/collection/components/q2-carousel/styles.css +152 -155
  42. package/dist/collection/components/q2-carousel-pane/index.js +67 -28
  43. package/dist/collection/components/q2-carousel-pane/styles.css +82 -16
  44. package/dist/collection/components/q2-checkbox/index.js +16 -2
  45. package/dist/collection/components/q2-checkbox/styles.css +152 -176
  46. package/dist/collection/components/q2-checkbox-group/index.js +1 -1
  47. package/dist/collection/components/q2-checkbox-group/styles.css +65 -81
  48. package/dist/collection/components/q2-dropdown/index.js +15 -2
  49. package/dist/collection/components/q2-dropdown/styles.css +49 -36
  50. package/dist/collection/components/q2-dropdown-item/index.js +1 -1
  51. package/dist/collection/components/q2-dropdown-item/styles.css +48 -62
  52. package/dist/collection/components/q2-editable-field/index.js +33 -12
  53. package/dist/collection/components/q2-editable-field/styles.css +49 -50
  54. package/dist/collection/components/q2-icon/icons.js +61 -1
  55. package/dist/collection/components/q2-icon/styles.css +29 -29
  56. package/dist/collection/components/q2-input/index.js +9 -7
  57. package/dist/collection/components/q2-input/styles.css +211 -292
  58. package/dist/collection/components/q2-loading/index.js +1 -1
  59. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js +1 -1
  60. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/styles.css +5 -6
  61. package/dist/collection/components/q2-loading/styles.css +130 -136
  62. package/dist/collection/components/q2-loc/index.js +1 -1
  63. package/dist/collection/components/q2-loc/styles.css +30 -31
  64. package/dist/collection/components/q2-message/index.js +18 -3
  65. package/dist/collection/components/q2-message/styles.css +32 -29
  66. package/dist/collection/components/q2-optgroup/index.js +1 -1
  67. package/dist/collection/components/q2-optgroup/styles.css +42 -47
  68. package/dist/collection/components/q2-option/index.js +4 -42
  69. package/dist/collection/components/q2-option/styles.css +29 -29
  70. package/dist/collection/components/q2-radio/index.js +16 -2
  71. package/dist/collection/components/q2-radio/styles.css +29 -29
  72. package/dist/collection/components/q2-radio-group/index.js +16 -2
  73. package/dist/collection/components/q2-radio-group/styles.css +67 -72
  74. package/dist/collection/components/q2-section/index.js +16 -10
  75. package/dist/collection/components/q2-section/styles.css +77 -77
  76. package/dist/collection/components/q2-select/index.js +182 -131
  77. package/dist/collection/components/q2-select/styles.css +33 -34
  78. package/dist/collection/components/q2-stepper/index.js +15 -3
  79. package/dist/collection/components/q2-stepper/styles.css +32 -32
  80. package/dist/collection/components/q2-stepper-pane/styles.css +29 -29
  81. package/dist/collection/components/q2-tab-container/index.js +7 -9
  82. package/dist/collection/components/q2-tab-container/styles.css +29 -29
  83. package/dist/collection/components/q2-tab-pane/index.js +2 -2
  84. package/dist/collection/components/q2-tab-pane/styles.css +34 -36
  85. package/dist/collection/components/q2-textarea/index.js +8 -4
  86. package/dist/collection/components/q2-textarea/styles.css +180 -228
  87. package/dist/collection/components/tecton-tab-pane/index.js +2 -2
  88. package/dist/collection/components/tecton-tab-pane/styles.css +50 -50
  89. package/dist/collection/utils/index.js +7 -0
  90. package/dist/esm/{icons-a3817842.js → icons-3ee662ea.js} +61 -1
  91. package/dist/esm/{index-476b86cc.js → index-ec6660af.js} +8 -1
  92. package/dist/esm/loader.js +1 -1
  93. package/dist/esm/q2-avatar.entry.js +1 -1
  94. package/dist/esm/q2-btn_2.entry.js +10 -6
  95. package/dist/esm/q2-calendar.entry.js +2902 -6078
  96. package/dist/esm/q2-carousel-pane.entry.js +51 -8
  97. package/dist/esm/q2-carousel.entry.js +2720 -6514
  98. package/dist/esm/q2-checkbox-group.entry.js +2 -2
  99. package/dist/esm/q2-checkbox.entry.js +10 -2
  100. package/dist/esm/q2-dropdown-item.entry.js +2 -2
  101. package/dist/esm/q2-dropdown.entry.js +8 -2
  102. package/dist/esm/q2-editable-field.entry.js +26 -11
  103. package/dist/esm/q2-icon.entry.js +2 -2
  104. package/dist/esm/q2-input.entry.js +9 -7
  105. package/dist/esm/q2-loading-element.entry.js +1 -1
  106. package/dist/esm/q2-loc.entry.js +1 -1
  107. package/dist/esm/q2-message.entry.js +11 -3
  108. package/dist/esm/q2-optgroup.entry.js +2 -2
  109. package/dist/esm/q2-option.entry.js +4 -35
  110. package/dist/esm/q2-radio-group.entry.js +10 -2
  111. package/dist/esm/q2-radio.entry.js +10 -2
  112. package/dist/esm/q2-section.entry.js +9 -9
  113. package/dist/esm/q2-select.entry.js +175 -130
  114. package/dist/esm/q2-stepper-pane.entry.js +1 -1
  115. package/dist/esm/q2-stepper.entry.js +10 -4
  116. package/dist/esm/q2-tab-container.entry.js +7 -9
  117. package/dist/esm/q2-tab-pane.entry.js +2 -2
  118. package/dist/esm/q2-tecton-elements.js +1 -1
  119. package/dist/esm/q2-textarea.entry.js +8 -4
  120. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  121. package/dist/q2-tecton-elements/{p-4830affe.entry.js → p-07a5d703.entry.js} +1 -1
  122. package/dist/q2-tecton-elements/{p-84c05db6.entry.js → p-32ad664c.entry.js} +1 -1
  123. package/dist/q2-tecton-elements/p-37aba2a4.js +1 -0
  124. package/dist/q2-tecton-elements/p-4ae9d1f3.entry.js +1 -0
  125. package/dist/q2-tecton-elements/{p-67d86e3c.js → p-4cd00f1a.js} +1 -1
  126. package/dist/q2-tecton-elements/p-52f53e07.entry.js +1 -0
  127. package/dist/q2-tecton-elements/p-5559f126.entry.js +1 -0
  128. package/dist/q2-tecton-elements/p-6702eb4d.entry.js +1 -0
  129. package/dist/q2-tecton-elements/p-750bcd33.entry.js +1 -0
  130. package/dist/q2-tecton-elements/p-78642b7b.entry.js +1 -0
  131. package/dist/q2-tecton-elements/p-7e6fc65d.entry.js +1 -0
  132. package/dist/q2-tecton-elements/p-7eb39c90.entry.js +1 -0
  133. package/dist/q2-tecton-elements/p-81df91a1.entry.js +1 -0
  134. package/dist/q2-tecton-elements/{p-01e00610.entry.js → p-843b1ee9.entry.js} +1 -1
  135. package/dist/q2-tecton-elements/p-8509b171.entry.js +1 -0
  136. package/dist/q2-tecton-elements/p-8ea2c4f7.entry.js +1 -0
  137. package/dist/q2-tecton-elements/{p-d1d040ef.entry.js → p-95a73559.entry.js} +1 -1
  138. package/dist/q2-tecton-elements/p-96c9eb75.entry.js +1 -0
  139. package/dist/q2-tecton-elements/p-9b50c3c3.entry.js +1 -0
  140. package/dist/q2-tecton-elements/{p-a9bdd814.entry.js → p-a6f8d09a.entry.js} +1 -1
  141. package/dist/q2-tecton-elements/p-ab977515.entry.js +1 -0
  142. package/dist/q2-tecton-elements/{p-9314863f.entry.js → p-bb2e110a.entry.js} +1 -1
  143. package/dist/q2-tecton-elements/p-bbacb804.entry.js +1 -0
  144. package/dist/q2-tecton-elements/p-c555f1de.entry.js +1 -0
  145. package/dist/q2-tecton-elements/p-c5e55b9f.entry.js +1 -0
  146. package/dist/q2-tecton-elements/{p-4229b057.entry.js → p-df182f61.entry.js} +1 -1
  147. package/dist/q2-tecton-elements/p-fa6eea5c.entry.js +1 -0
  148. package/dist/q2-tecton-elements/{p-61c0e5fd.entry.js → p-fbf7c5e6.entry.js} +1 -1
  149. package/dist/q2-tecton-elements/p-fc804ebd.entry.js +1 -0
  150. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  151. package/dist/test/helpers.js +4 -0
  152. package/dist/types/components/q2-btn/index.d.ts +1 -0
  153. package/dist/types/components/q2-calendar/helpers.d.ts +6 -6
  154. package/dist/types/components/q2-calendar/index.d.ts +16 -17
  155. package/dist/types/components/q2-calendar/types.d.ts +9 -26
  156. package/dist/types/components/q2-calendar/validation.d.ts +27 -12
  157. package/dist/types/components/q2-carousel/index.d.ts +15 -45
  158. package/dist/types/components/q2-carousel-pane/index.d.ts +5 -2
  159. package/dist/types/components/q2-checkbox/index.d.ts +2 -0
  160. package/dist/types/components/q2-dropdown/index.d.ts +1 -0
  161. package/dist/types/components/q2-editable-field/index.d.ts +5 -1
  162. package/dist/types/components/q2-input/index.d.ts +1 -1
  163. package/dist/types/components/q2-message/index.d.ts +2 -0
  164. package/dist/types/components/q2-option/index.d.ts +0 -4
  165. package/dist/types/components/q2-radio/index.d.ts +3 -0
  166. package/dist/types/components/q2-radio-group/index.d.ts +1 -0
  167. package/dist/types/components/q2-section/index.d.ts +1 -1
  168. package/dist/types/components/q2-select/index.d.ts +10 -7
  169. package/dist/types/components/q2-stepper/index.d.ts +2 -1
  170. package/dist/types/components/q2-tab-container/index.d.ts +1 -1
  171. package/dist/types/components/q2-textarea/index.d.ts +2 -1
  172. package/dist/types/components.d.ts +3 -2
  173. package/dist/types/util.d.ts +1 -0
  174. package/dist/types/utils/index.d.ts +2 -0
  175. package/dist/types/workspace/workspace/tecton-production_release_1.10.x/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +2 -1
  176. package/package.json +4 -5
  177. package/dist/q2-tecton-elements/p-1fc4e6f6.entry.js +0 -1
  178. package/dist/q2-tecton-elements/p-25a5f691.js +0 -1
  179. package/dist/q2-tecton-elements/p-27353237.entry.js +0 -1
  180. package/dist/q2-tecton-elements/p-3e100450.entry.js +0 -1
  181. package/dist/q2-tecton-elements/p-428d15fd.entry.js +0 -1
  182. package/dist/q2-tecton-elements/p-48fc317d.entry.js +0 -1
  183. package/dist/q2-tecton-elements/p-5222b792.entry.js +0 -1
  184. package/dist/q2-tecton-elements/p-74c1a311.entry.js +0 -1
  185. package/dist/q2-tecton-elements/p-784af485.entry.js +0 -1
  186. package/dist/q2-tecton-elements/p-7c99a58b.entry.js +0 -1
  187. package/dist/q2-tecton-elements/p-7f74b629.entry.js +0 -1
  188. package/dist/q2-tecton-elements/p-831a461f.entry.js +0 -1
  189. package/dist/q2-tecton-elements/p-84c52d3b.entry.js +0 -9
  190. package/dist/q2-tecton-elements/p-997e4c7e.entry.js +0 -1
  191. package/dist/q2-tecton-elements/p-9cb0fc37.entry.js +0 -1
  192. package/dist/q2-tecton-elements/p-a224bc9c.entry.js +0 -1
  193. package/dist/q2-tecton-elements/p-d893fcf2.entry.js +0 -1
  194. package/dist/q2-tecton-elements/p-da7cca07.entry.js +0 -1
  195. package/dist/q2-tecton-elements/p-f17761da.entry.js +0 -1
  196. package/dist/q2-tecton-elements/p-f5e074f8.entry.js +0 -1
@@ -1,20 +1,11 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
12
1
  import { Component, Prop, Element, State, Event, Listen, Watch, h } from '@stencil/core';
13
- import { stringToMoment, setupMonthYear, getMonths, getDays, getDaysOfWeek, stringArrayToMoment, validateInput, handleMissingZeros, formatDateISO, formatDateLong, formatDateShort, isValidDate } from './helpers';
2
+ import { addDays, isSameDay, format, isValid as isValidDate } from 'date-fns';
3
+ import { stringToDate, setupMonthYear, getMonths, getDays, getDaysOfWeek, stringArrayToDate, convertMomentFormat, validateInput, handleMissingZeros, formatDateISO, formatDateLong, formatDateShort, removeTimezoneOffset } from './helpers';
14
4
  import { buildDates, getValidDaysOfWeek } from './validation';
15
- import { handleAriaLabel, loc, setPopProperties } from 'src/utils';
5
+ import { handleAriaLabel, loc, setPopProperties, overrideFocus, isEventFromElement } from 'src/utils';
16
6
  export class Q2Calendar {
17
7
  constructor() {
8
+ this.assume = 'current';
18
9
  this.dropdownOpen = false;
19
10
  this.keyboardSelection = false;
20
11
  this.typedValue = '';
@@ -23,8 +14,10 @@ export class Q2Calendar {
23
14
  this.defaultHintMessage = loc('tecton.element.calendar.hint.format') + ': ' + this.defaultFormatString;
24
15
  this.hintMessage = this.defaultHintMessage;
25
16
  this.hintMessageType = 'info';
26
- this.valueIsInvalid = false;
27
17
  this.scheduledAfterRender = [];
18
+ this.dayAbbrStrings = getDays();
19
+ this.dayStrings = getDaysOfWeek();
20
+ this.monthStrings = getMonths();
28
21
  this.closeCalendar = () => {
29
22
  if (this.dropdownOpen) {
30
23
  this.dropdownOpen = false;
@@ -34,7 +27,7 @@ export class Q2Calendar {
34
27
  };
35
28
  this.openCalendar = () => {
36
29
  if (!this.dropdownOpen) {
37
- this.selectedMonthYear = setupMonthYear(this.momentValue.toDate(), this.monthStrings);
30
+ this.selectedMonthYear = setupMonthYear(this.dateValue);
38
31
  this.dateList = this.buildDateList(this.selectedMonthYear);
39
32
  this.dropdownOpen = true;
40
33
  this.focusInput();
@@ -42,11 +35,10 @@ export class Q2Calendar {
42
35
  }
43
36
  };
44
37
  this.toggleCalendar = () => {
45
- var _a;
46
38
  this.dropdownOpen = !this.dropdownOpen;
47
39
  this.scheduledAfterRender.push(this.resizeIframe);
48
40
  if (this.dropdownOpen) {
49
- this.selectedMonthYear = setupMonthYear((_a = this.momentValue) === null || _a === void 0 ? void 0 : _a.toDate(), this.monthStrings);
41
+ this.selectedMonthYear = setupMonthYear(this.dateValue);
50
42
  this.dateList = this.buildDateList(this.selectedMonthYear);
51
43
  }
52
44
  else {
@@ -62,18 +54,29 @@ export class Q2Calendar {
62
54
  };
63
55
  this.onPopupKeyup = (event) => {
64
56
  if (event.key === 'Escape' || event.key === 'Esc') {
57
+ this.onInputBlur();
65
58
  this.closeCalendar();
66
- return;
67
59
  }
68
60
  };
69
61
  this.onInputInput = ({ detail: { value } }) => {
70
62
  this.typedValue = value;
71
63
  };
64
+ this.onInputKeydown = (event) => {
65
+ const { dateValue } = this;
66
+ switch (event.key) {
67
+ case 'ArrowDown':
68
+ event.preventDefault();
69
+ this.openCalendar();
70
+ this.activateDay(dateValue || new Date());
71
+ break;
72
+ }
73
+ };
72
74
  this.onInputKeyup = (event) => {
73
75
  if (this.disabled) {
74
76
  return;
75
77
  }
76
78
  if (event.key === 'Escape' || event.key === 'Esc') {
79
+ this.onInputBlur();
77
80
  this.closeCalendar();
78
81
  return;
79
82
  }
@@ -83,12 +86,12 @@ export class Q2Calendar {
83
86
  this.typedValue = handleMissingZeros(this.typedValue);
84
87
  const { typedValue } = this;
85
88
  const validDays = getValidDaysOfWeek(this.daysOfWeekChecksum);
86
- const { isValid, message, messageType, inputDate, isAvailable, calendarPosition } = validateInput(typedValue, validDays, this.validDates, this.invalidDates, this.startDate, this.endDate, this.defaultFormatString);
89
+ const { isValid, message, messageType, inputDate, isAvailable, calendarPosition } = validateInput(typedValue, validDays, this.validDates, this.invalidDates, this.startDate, this.endDate, this.defaultFormatString, this.assume);
87
90
  if (calendarPosition) {
88
91
  const [mm, dd, yyyy] = calendarPosition;
89
92
  const date = new Date(`${yyyy}-${mm}-${dd}`);
90
93
  if (isValidDate(date)) {
91
- this.selectedMonthYear = setupMonthYear(date, this.monthStrings);
94
+ this.selectedMonthYear = setupMonthYear(date);
92
95
  this.dateList = this.buildDateList(this.selectedMonthYear);
93
96
  this.validateDate();
94
97
  }
@@ -129,7 +132,7 @@ export class Q2Calendar {
129
132
  return;
130
133
  const validDays = getValidDaysOfWeek(this.daysOfWeekChecksum);
131
134
  const { typedValue } = this;
132
- const { isValid, inputDate, isAvailable } = validateInput(this.typedValue, validDays, this.validDates, this.invalidDates, this.startDate, this.endDate, this.defaultFormatString);
135
+ const { isValid, inputDate, isAvailable } = validateInput(this.typedValue, validDays, this.validDates, this.invalidDates, this.startDate, this.endDate, this.defaultFormatString, this.assume);
133
136
  if (isValid ||
134
137
  (typedValue &&
135
138
  typedValue.length > 4 && // at least mm/dd provided
@@ -155,100 +158,94 @@ export class Q2Calendar {
155
158
  var _a;
156
159
  (_a = this.btnPrevMonth) === null || _a === void 0 ? void 0 : _a.dispatchEvent(new FocusEvent('focus'));
157
160
  };
158
- this.onNextMonthClick = () => {
159
- const { monthIndex: currentMonthIndex, selectedYear: currentSelectedYear } = this.selectedMonthYear;
160
- let monthIndex;
161
- let selectedYear = currentSelectedYear;
162
- if (currentMonthIndex === 11) {
163
- monthIndex = 0;
164
- selectedYear += 1;
165
- }
166
- else {
167
- monthIndex = currentMonthIndex + 1;
168
- }
169
- this.selectedMonthYear = {
170
- monthIndex,
171
- selectedMonth: this.monthStrings[monthIndex],
172
- selectedYear
173
- };
174
- this.dateList = this.buildDateList(this.selectedMonthYear);
175
- };
176
- this.onPreviousMonthClick = () => {
177
- const { monthIndex: currentMonthIndex, selectedYear: currentSelectedYear } = this.selectedMonthYear;
178
- let monthIndex;
179
- let selectedYear = currentSelectedYear;
180
- if (currentMonthIndex === 0) {
181
- monthIndex = 11;
182
- selectedYear = selectedYear - 1;
183
- }
184
- else {
185
- monthIndex = currentMonthIndex - 1;
186
- }
161
+ this.goToMonthYear = (monthIndex, year) => {
162
+ const newYear = removeTimezoneOffset(new Date(year, monthIndex));
187
163
  this.selectedMonthYear = {
188
- monthIndex,
189
- selectedMonth: this.monthStrings[monthIndex],
190
- selectedYear
164
+ monthIndex: newYear.getMonth(),
165
+ selectedYear: newYear.getFullYear()
191
166
  };
192
167
  this.dateList = this.buildDateList(this.selectedMonthYear);
168
+ this.scheduledAfterRender.push(() => this.checkActiveCellForBlankness());
193
169
  };
194
- this.onNextYearClick = () => {
195
- const _a = this.selectedMonthYear, { selectedYear } = _a, current = __rest(_a, ["selectedYear"]);
196
- this.selectedMonthYear = Object.assign(Object.assign({}, current), { selectedYear: selectedYear + 1 });
197
- this.dateList = this.buildDateList(this.selectedMonthYear);
198
- };
199
- this.onPreviousYearClick = () => {
200
- const _a = this.selectedMonthYear, { selectedYear } = _a, current = __rest(_a, ["selectedYear"]);
201
- this.selectedMonthYear = Object.assign(Object.assign({}, current), { selectedYear: selectedYear - 1 });
202
- this.dateList = this.buildDateList(this.selectedMonthYear);
170
+ this.selectDate = (newDate) => {
171
+ const { isValid } = this.dateList.find(({ date }) => isSameDay(date, newDate));
172
+ if (!isValid)
173
+ return;
174
+ this.change.emit({ value: formatDateISO(newDate) });
175
+ this.typedValue = formatDateShort(newDate);
176
+ this.invalid = false;
203
177
  };
204
178
  this.onDateSelection = (event) => {
205
- const dateBtn = event.target.closest('q2-btn');
206
- if (!dateBtn)
179
+ const dateCell = event.target.closest('td:not([aria-hidden])');
180
+ if (!dateCell)
207
181
  return;
208
- const value = dateBtn.dataset.date;
209
- const formattedDate = formatDateShort(value);
210
- this.change.emit({ value: formatDateISO(value) });
211
- this.typedValue = formattedDate;
212
- this.invalid = false;
213
- if (this.keyboardSelection) {
214
- this.focusInput();
215
- }
216
- else {
217
- this.closeCalendar();
218
- }
182
+ const day = parseInt(dateCell.dataset.day);
183
+ this.selectDate(this.generateDateFromDay(day));
184
+ this.closeCalendar();
219
185
  };
220
186
  this.onDateKeydown = (event) => {
221
- const movementKeys = [
222
- 'ArrowRight',
223
- 'Right',
224
- 'ArrowLeft',
225
- 'Left',
226
- 'ArrowDown',
227
- 'Down',
228
- 'ArrowUp',
229
- 'Up'
230
- ];
231
- movementKeys.includes(event.key) && event.preventDefault();
232
- const focusedValue = event.target.dataset.date;
233
- if (event.key === 'ArrowRight' || event.key === 'Right') {
234
- this.focusNextDay(focusedValue);
235
- return;
236
- }
237
- if (event.key === 'ArrowLeft' || event.key === 'Left') {
238
- this.focusPreviousDay(focusedValue);
239
- return;
240
- }
241
- if (event.key === 'ArrowDown' || event.key === 'Down') {
242
- this.focusDayNextWeek(focusedValue);
243
- return;
244
- }
245
- if (event.key === 'ArrowUp' || event.key === 'Up') {
246
- this.focusDayLastWeek(focusedValue);
247
- return;
248
- }
249
- if (event.key === 'Enter') {
250
- this.keyboardSelection = true;
251
- return;
187
+ const { monthIndex, selectedYear } = this.selectedMonthYear;
188
+ const currentDay = parseInt(event.target.dataset.day);
189
+ const currentDate = this.generateDateFromDay(currentDay);
190
+ switch (event.key) {
191
+ case 'ArrowUp':
192
+ event.preventDefault();
193
+ this.activateDay(addDays(currentDate, -7));
194
+ break;
195
+ case 'ArrowDown':
196
+ event.preventDefault();
197
+ this.activateDay(addDays(currentDate, 7));
198
+ break;
199
+ case 'ArrowRight':
200
+ event.preventDefault();
201
+ this.activateDay(addDays(currentDate, 1));
202
+ break;
203
+ case 'ArrowLeft':
204
+ event.preventDefault();
205
+ this.activateDay(addDays(currentDate, -1));
206
+ break;
207
+ case 'PageUp':
208
+ event.preventDefault();
209
+ if (event.shiftKey)
210
+ this.goToMonthYear(monthIndex, selectedYear - 1);
211
+ else
212
+ this.goToMonthYear(monthIndex - 1, selectedYear);
213
+ break;
214
+ case 'PageDown':
215
+ event.preventDefault();
216
+ if (event.shiftKey)
217
+ this.goToMonthYear(monthIndex, selectedYear + 1);
218
+ else
219
+ this.goToMonthYear(monthIndex + 1, selectedYear);
220
+ break;
221
+ case 'Home':
222
+ event.preventDefault();
223
+ this.activateDay(addDays(currentDate, -currentDate.getDay()));
224
+ break;
225
+ case 'End':
226
+ event.preventDefault();
227
+ this.activateDay(addDays(currentDate, 6 - currentDate.getDay()));
228
+ break;
229
+ case 'Escape':
230
+ event.preventDefault();
231
+ this.closeCalendar();
232
+ this.focusInput();
233
+ break;
234
+ case 'Enter':
235
+ event.preventDefault();
236
+ if (!this.dateList.find(({ date }) => isSameDay(date, currentDate)).isValid)
237
+ return;
238
+ this.selectDate(currentDate);
239
+ this.closeCalendar();
240
+ this.focusInput();
241
+ break;
242
+ case ' ':
243
+ event.preventDefault();
244
+ if (!this.dateList.find(({ date }) => isSameDay(date, currentDate)).isValid)
245
+ return;
246
+ this.selectDate(currentDate);
247
+ this.focusInput();
248
+ break;
252
249
  }
253
250
  };
254
251
  }
@@ -258,8 +255,7 @@ export class Q2Calendar {
258
255
  window.TectonElements.resizeIframe());
259
256
  }
260
257
  connectedCallback() {
261
- var _a;
262
- this.selectedMonthYear = setupMonthYear((_a = this.momentValue) === null || _a === void 0 ? void 0 : _a.toDate(), this.monthStrings);
258
+ this.selectedMonthYear = setupMonthYear(this.dateValue);
263
259
  this.dateList = this.buildDateList(this.selectedMonthYear);
264
260
  this.validateDate();
265
261
  }
@@ -272,14 +268,19 @@ export class Q2Calendar {
272
268
  this.scheduledAfterRender = [];
273
269
  }, 25);
274
270
  }
275
- get dayAbbrStrings() {
276
- return getDays();
271
+ componentDidLoad() {
272
+ overrideFocus(this.hostElement);
277
273
  }
278
- get dayStrings() {
279
- return getDaysOfWeek();
280
- }
281
- get monthStrings() {
282
- return getMonths();
274
+ get currentWeeks() {
275
+ const weeks = this.dateList.reduce((accum, item, index) => {
276
+ const chunkIndex = Math.floor(index / 7);
277
+ if (!accum[chunkIndex]) {
278
+ accum[chunkIndex] = [];
279
+ }
280
+ accum[chunkIndex].push(item);
281
+ return accum;
282
+ }, []);
283
+ return weeks;
283
284
  }
284
285
  get localizedErrors() {
285
286
  return ((Array.isArray(this.errors) &&
@@ -289,17 +290,19 @@ export class Q2Calendar {
289
290
  []);
290
291
  }
291
292
  get formattedValue() {
292
- if (this.isTypeable) {
293
- return this.typedValue;
294
- }
295
- else {
296
- const momentValue = this.momentValue;
297
- if (momentValue === undefined) {
298
- return '';
299
- }
300
- const displayFormat = this.displayFormat || 'MM/DD/YYYY';
301
- return momentValue.format(displayFormat);
302
- }
293
+ const { typedValue, dateValue, displayFormat, isTypeable } = this;
294
+ if (isTypeable)
295
+ return typedValue;
296
+ if (dateValue === undefined)
297
+ return '';
298
+ if (displayFormat)
299
+ return format(dateValue, convertMomentFormat(displayFormat));
300
+ return new Intl.DateTimeFormat('default', {
301
+ year: 'numeric',
302
+ month: '2-digit',
303
+ day: '2-digit',
304
+ timeZone: 'UTC'
305
+ }).format(dateValue);
303
306
  }
304
307
  get computedPlaceholder() {
305
308
  if (this.disabled && this.disabledMsg) {
@@ -310,25 +313,30 @@ export class Q2Calendar {
310
313
  }
311
314
  return (this.placeholder && loc(this.placeholder)) || '';
312
315
  }
313
- get momentValue() {
316
+ get dateValue() {
314
317
  if (this.isTypeable) {
315
- return stringToMoment(this.typedValue);
318
+ return stringToDate(this.typedValue);
316
319
  }
317
320
  else {
318
321
  let { value } = this;
319
322
  const isMoment = value && typeof value !== 'string' && 'toDate' in value;
323
+ if (isMoment)
324
+ return value.toDate();
320
325
  // stringified moment value assigned in html template e.g.) handlebar
321
- if (!isMoment && typeof value === 'string') {
326
+ const isMomentString = typeof value === 'string' &&
327
+ value.split(' ').length === 6 &&
328
+ /GMT-\d{4}/g.test(value);
329
+ if (isMomentString) {
322
330
  value = formatDateISO(value);
323
331
  }
324
- return isMoment ? value : stringToMoment(value);
332
+ return stringToDate(value);
325
333
  }
326
334
  }
327
335
  get dateValidators() {
328
336
  return {
329
- startDate: stringToMoment(this.startDate),
330
- endDate: stringToMoment(this.endDate),
331
- cutOffTime: stringToMoment(this.cutoffTime)
337
+ startDate: stringToDate(this.startDate),
338
+ endDate: stringToDate(this.endDate),
339
+ cutOffTime: stringToDate(this.cutoffTime)
332
340
  };
333
341
  }
334
342
  get isTypeable() {
@@ -366,6 +374,11 @@ export class Q2Calendar {
366
374
  }
367
375
  }
368
376
  }
377
+ delegateFocus(event) {
378
+ if (!isEventFromElement(event, this.hostElement))
379
+ return;
380
+ this.inputField.shadowRoot.querySelector('.input-field').focus();
381
+ }
369
382
  //////// Observers //////////
370
383
  ariaLabelObserver() {
371
384
  handleAriaLabel(this);
@@ -379,12 +392,11 @@ export class Q2Calendar {
379
392
  this.typedValue = newValueAsString;
380
393
  }
381
394
  else {
382
- const momentValue = isMoment
383
- ? newValue
384
- : stringToMoment(newValue);
385
- const newValueAsDate = momentValue === null || momentValue === void 0 ? void 0 : momentValue.toDate();
386
- this.inputField.value = formatDateShort(newValueAsDate);
387
- this.selectedMonthYear = setupMonthYear(newValueAsDate, this.monthStrings);
395
+ const dateValue = isMoment
396
+ ? newValue.toDate()
397
+ : stringToDate(newValue);
398
+ this.inputField.value = formatDateShort(dateValue);
399
+ this.selectedMonthYear = setupMonthYear(dateValue);
388
400
  this.dateList = this.buildDateList(this.selectedMonthYear);
389
401
  this.validateDate();
390
402
  }
@@ -415,27 +427,39 @@ export class Q2Calendar {
415
427
  }
416
428
  ///// Actions ////////
417
429
  buildDateList(monthYear) {
418
- const invalidDates = stringArrayToMoment(this.invalidDates, true);
430
+ const invalidDates = stringArrayToDate(this.invalidDates);
419
431
  const validDaysOfWeek = getValidDaysOfWeek(this.daysOfWeekChecksum);
420
- const validDates = stringArrayToMoment(this.validDates, true);
421
- return buildDates(validDaysOfWeek, validDates, invalidDates, monthYear, this.momentValue, this.dayStrings, this.dateValidators, this.typedValue);
432
+ const validDates = stringArrayToDate(this.validDates);
433
+ return buildDates(validDaysOfWeek, validDates, invalidDates, monthYear, this.dateValue, this.dateValidators, this.typedValue);
422
434
  }
423
435
  validateDate() {
436
+ var _a, _b, _c;
424
437
  try {
425
438
  if (!!this.value) {
426
- const momentValue = this.momentValue;
427
- const momentMonth = momentValue.month();
428
- const momentYear = momentValue.year();
429
- const calculationDateList = momentMonth === this.selectedMonthYear.monthIndex &&
430
- momentYear === this.selectedMonthYear.selectedYear
431
- ? this.dateList
432
- : this.buildDateList({
433
- monthIndex: momentMonth,
434
- selectedMonth: this.monthStrings[momentMonth],
435
- selectedYear: momentYear
439
+ const { dateValue } = this;
440
+ const month = (_a = dateValue === null || dateValue === void 0 ? void 0 : dateValue.getMonth()) !== null && _a !== void 0 ? _a : undefined;
441
+ const year = (_b = dateValue === null || dateValue === void 0 ? void 0 : dateValue.getFullYear()) !== null && _b !== void 0 ? _b : undefined;
442
+ const { monthIndex, selectedYear } = this.selectedMonthYear;
443
+ const isSelectedMonthAndYear = month === monthIndex && year === selectedYear;
444
+ let calculationDateList = [];
445
+ if (!dateValue) {
446
+ calculationDateList = [];
447
+ }
448
+ else if (isSelectedMonthAndYear) {
449
+ calculationDateList = this.dateList;
450
+ }
451
+ else {
452
+ calculationDateList = this.buildDateList({
453
+ monthIndex: month,
454
+ selectedYear: year
436
455
  });
437
- this.valueIsInvalid = !calculationDateList.find(dateObj => dateObj.dateString === momentValue.format('YYYY-MM-DD')).isValid;
438
- if (this.valueIsInvalid) {
456
+ }
457
+ const dateValueDayOfMonth = (_c = dateValue === null || dateValue === void 0 ? void 0 : dateValue.getDate()) !== null && _c !== void 0 ? _c : undefined;
458
+ const isDateValueInvalid = dateValueDayOfMonth
459
+ ? !calculationDateList.find(({ integer }) => integer === dateValueDayOfMonth)
460
+ .isValid
461
+ : true;
462
+ if (isDateValueInvalid) {
439
463
  this.error.emit({
440
464
  errors: [
441
465
  {
@@ -446,47 +470,48 @@ export class Q2Calendar {
446
470
  });
447
471
  }
448
472
  else {
449
- this.success.emit({ value: momentValue.format('YYYY-MM-DD') });
473
+ this.success.emit({ value: formatDateISO(dateValue) });
450
474
  }
451
475
  }
452
476
  }
453
477
  catch (error) {
454
- console.log('Invalid moment value ', this.momentValue);
478
+ console.log('Invalid moment value ', this.dateValue);
455
479
  }
456
480
  }
457
481
  focusInput() {
458
482
  var _a;
459
483
  (_a = this.inputField) === null || _a === void 0 ? void 0 : _a.dispatchEvent(new FocusEvent('focus'));
460
484
  }
461
- focusDate(target) {
462
- const formattedDate = formatDateISO(target);
463
- const validDate = this.daysContainer.querySelector(`.cal-day.is-valid[data-date="${formattedDate}"]`);
464
- validDate === null || validDate === void 0 ? void 0 : validDate.dispatchEvent(new FocusEvent('focus'));
465
- }
466
- focusNextDay(focusedValue) {
467
- const focusedDate = new Date(focusedValue);
468
- focusedDate.setDate(focusedDate.getDate() + 1);
469
- this.focusDate(focusedDate);
485
+ checkActiveCellForBlankness() {
486
+ const activeElement = this.hostElement.shadowRoot.activeElement;
487
+ if (!activeElement ||
488
+ activeElement.tagName !== 'TD' ||
489
+ !activeElement.hasAttribute('aria-hidden'))
490
+ return;
491
+ const { calendarBody } = this;
492
+ const calendarCells = Array.from(calendarBody.querySelectorAll('td'));
493
+ const indexOfCell = Array.from(calendarCells).indexOf(activeElement);
494
+ const dayToFocus = indexOfCell < 15
495
+ ? 1
496
+ : calendarCells.filter(cell => !cell.hasAttribute('aria-hidden')).length;
497
+ this.focusDay(this.generateDateFromDay(dayToFocus));
470
498
  }
471
- focusPreviousDay(focusedValue) {
472
- const focusedDate = new Date(focusedValue);
473
- focusedDate.setDate(focusedDate.getDate() - 1);
474
- this.focusDate(focusedDate);
499
+ generateDateFromDay(day) {
500
+ const { monthIndex, selectedYear } = this.selectedMonthYear;
501
+ return removeTimezoneOffset(new Date(selectedYear, monthIndex, day));
475
502
  }
476
- focusDayNextWeek(focusedValue) {
477
- const focusedDate = new Date(focusedValue);
478
- focusedDate.setDate(focusedDate.getDate() + 7);
479
- this.focusDate(focusedDate);
503
+ activateDay(date) {
504
+ this.goToMonthYear(date.getMonth(), date.getFullYear());
505
+ this.scheduledAfterRender.push(() => this.focusDay(date));
480
506
  }
481
- focusDayLastWeek(focusedValue) {
482
- const focusedDate = new Date(focusedValue);
483
- focusedDate.setDate(focusedDate.getDate() - 7);
484
- this.focusDate(focusedDate);
507
+ focusDay(date) {
508
+ var _a;
509
+ (_a = this.calendarBody.querySelector(`td[data-day="${date.getDate()}"]`)) === null || _a === void 0 ? void 0 : _a.focus();
485
510
  }
486
511
  render() {
487
512
  return (h("click-elsewhere", { class: `calendar-container${this.dropdownOpen ? ' dropdown-open' : ''}`, onChange: this.onClickElsewhere },
488
513
  this.calendarField(),
489
- h("div", { ref: el => (this.dropdownContainer = el), class: `q2-element-dropdown ${this.privatePopDirection === 'up' ? 'dropup' : ''}` },
514
+ h("div", { ref: el => (this.dropdownContainer = el), "aria-modal": "true", role: "dialog", "aria-label": loc('tecton.element.calendar.dialogLabel'), class: `q2-element-dropdown ${this.privatePopDirection === 'up' ? 'dropup' : ''}` },
490
515
  this.isTypeable && this.hintField(),
491
516
  this.calendarPopUp())));
492
517
  }
@@ -514,39 +539,42 @@ export class Q2Calendar {
514
539
  calendarField() {
515
540
  return (h("q2-input", { ref: el => (this.inputField = el), class: "calendar-input-field", value: this.formattedValue, label: loc(this.label), hideLabel: this.hideLabel, disabled: !!this.disabled, placeholder: this.computedPlaceholder, optional: !!this.optional, ariaExpanded: this.dropdownOpen, errors: (this.localizedErrors.length > 0 && this.localizedErrors) ||
516
541
  (this.invalid && ['tecton.element.calendar.invalid']) ||
517
- [], onClick: this.onInputClick, onChange: this.onInputChange, onInput: this.onInputInput, onKeyUp: this.onInputKeyup, onBlur: this.onInputBlur, "icon-right": "calendar", "format-modifier": this.isTypeable ? this.formatModifier : '', pseudo: !this.isTypeable, type: "date", "hide-messages": true, "test-id": "inputAndCalendarToggle" }));
542
+ [], onClick: this.onInputClick, onChange: this.onInputChange, onInput: this.onInputInput, onKeyDown: this.onInputKeydown, onKeyUp: this.onInputKeyup, onBlur: this.onInputBlur, "icon-right": "calendar", "format-modifier": this.isTypeable ? this.formatModifier : '', pseudo: !this.isTypeable, type: "date", "hide-messages": true, "test-id": "inputAndCalendarToggle" }));
518
543
  }
519
544
  calendarPopUp() {
545
+ const { monthIndex, selectedYear } = this.selectedMonthYear;
520
546
  return (h("div", { class: "calendar-field-popup", onKeyUp: this.onPopupKeyup },
521
547
  this.calendarLabel && h("p", { class: "calendar-label" }, loc(this.calendarLabel)),
522
548
  h("div", { class: "cal-month-heading" },
523
- h("q2-btn", { label: loc('tecton.element.calendar.previousMonth'), "hide-label": true, ref: elm => (this.btnPrevMonth = elm), class: "cal-nav-btn prev-month", "test-id": "previousMonthButton", onClick: this.onPreviousMonthClick },
549
+ h("q2-btn", { label: loc('tecton.element.calendar.previousMonth'), "hide-label": true, ref: elm => (this.btnPrevMonth = elm), class: "cal-nav-btn prev-month", "test-id": "previousMonthButton", onClick: () => this.goToMonthYear(monthIndex - 1, selectedYear) },
524
550
  h("q2-icon", { type: "chevron-left" })),
525
- h("span", { class: "cal-month-text" }, this.selectedMonthYear.selectedMonth),
526
- h("q2-btn", { label: loc('tecton.element.calendar.nextMonth'), "hide-label": true, class: "cal-nav-btn next-month", ref: elm => (this.btnNextMonth = elm), "test-id": "nextMonthButton", onClick: this.onNextMonthClick },
551
+ h("span", { class: "cal-month-text" }, this.monthStrings[monthIndex]),
552
+ h("q2-btn", { label: loc('tecton.element.calendar.nextMonth'), "hide-label": true, class: "cal-nav-btn next-month", ref: elm => (this.btnNextMonth = elm), "test-id": "nextMonthButton", onClick: () => this.goToMonthYear(monthIndex + 1, selectedYear) },
527
553
  h("q2-icon", { type: "chevron-right" })),
528
- h("q2-btn", { label: loc('tecton.element.calendar.previousYear'), "hide-label": true, class: "cal-nav-btn prev-year", ref: elm => (this.btnPrevYear = elm), "test-id": "previousYearButton", onClick: this.onPreviousYearClick },
554
+ h("q2-btn", { label: loc('tecton.element.calendar.previousYear'), "hide-label": true, class: "cal-nav-btn prev-year", ref: elm => (this.btnPrevYear = elm), "test-id": "previousYearButton", onClick: () => this.goToMonthYear(monthIndex, selectedYear - 1) },
529
555
  h("q2-icon", { type: "chevron-left" })),
530
556
  h("span", { class: "cal-year-text" }, this.selectedMonthYear.selectedYear),
531
- h("q2-btn", { label: loc('tecton.element.calendar.nextYear'), "hide-label": true, class: "cal-nav-btn next-year", ref: elm => (this.btnNextYear = elm), "test-id": "nextYearButton", onClick: this.onNextYearClick },
557
+ h("q2-btn", { label: loc('tecton.element.calendar.nextYear'), "hide-label": true, class: "cal-nav-btn next-year", ref: elm => (this.btnNextYear = elm), "test-id": "nextYearButton", onClick: () => this.goToMonthYear(monthIndex, selectedYear + 1) },
532
558
  h("q2-icon", { type: "chevron-right" }))),
559
+ h("div", { class: "sr", "aria-live": "polite", id: "table-label" }, `${this.monthStrings[monthIndex]} ${selectedYear}`),
533
560
  this.calendarDays(),
534
561
  this.disclaimer && h("div", { class: "calendar-disclaimer" }, loc(this.disclaimer)),
535
562
  h("q2-btn", { class: "sr refocus-popup", onFocus: this.onRefocus })));
536
563
  }
537
564
  calendarDays() {
538
- return (h("div", { class: "cal-days", ref: elm => (this.daysContainer = elm), onClick: this.onDateSelection, onKeyDown: this.onDateKeydown },
539
- this.dayAbbrStrings.map(day => {
540
- return h("div", { class: "cal-day-heading" }, day);
541
- }),
542
- this.dateList.map(date => this.generateDateDOM(date))));
543
- }
544
- generateDateDOM(date) {
545
- return date.isEmpty ? (h("div", null)) : (h("q2-btn", { label: `${date.isToday ? `${loc('tecton.element.calendar.today')}, ` : ''}${date.dayOfWeek}, ${date.dateString}`, "hide-label": true, ariaSelected: date.isSelected, disabled: !date.isValid, class: `cal-day${date.classList}`, "data-date": date.dateString, "test-id": "dateButton" },
546
- h("div", { class: "date-details" },
547
- date.isToday && (h("span", { class: "today-decorator" }, loc('tecton.element.calendar.today'))),
548
- h("span", null, date.integer),
549
- date.isActivityDate && h("div", { class: "activity-decorator" }))));
565
+ const monthName = this.monthStrings[this.selectedMonthYear.monthIndex];
566
+ return (h("table", { role: "grid", "aria-labelledby": "table-label" },
567
+ h("thead", null,
568
+ h("tr", null, [...Array(7).keys()].map(index => (h("th", { scope: "col", abbr: this.dayStrings[index] }, this.dayAbbrStrings[index]))))),
569
+ h("tbody", { onClick: this.onDateSelection, onKeyDown: this.onDateKeydown, ref: elm => (this.calendarBody = elm) }, this.currentWeeks.map(week => (h("tr", null, week.map(day => {
570
+ var _a;
571
+ let ariaLabel = `${monthName} ${day.integer}`;
572
+ if (day.isSelected)
573
+ ariaLabel += ` (${loc('tecton.element.calendar.selected')})`;
574
+ return (h("td", { class: day.classList, "aria-hidden": day.isEmpty ? 'true' : undefined, tabindex: day.isSelected ? 0 : -1, role: day.isSelected ? 'gridcell' : undefined, "aria-selected": day.isSelected ? 'true' : undefined, "aria-disabled": day.isValid ? undefined : 'true', "data-day": day.integer || undefined, "data-date": day.date ? formatDateISO(day.date) : undefined },
575
+ (day === null || day === void 0 ? void 0 : day.isToday) && (h("div", { class: "today-decorator" }, loc('tecton.element.calendar.today'))),
576
+ h("div", { "aria-label": ariaLabel }, (_a = day === null || day === void 0 ? void 0 : day.integer) !== null && _a !== void 0 ? _a : '')));
577
+ })))))));
550
578
  }
551
579
  static get is() { return "q2-calendar"; }
552
580
  static get encapsulation() { return "shadow"; }
@@ -884,6 +912,24 @@ export class Q2Calendar {
884
912
  "attribute": "pop-direction",
885
913
  "reflect": true
886
914
  },
915
+ "assume": {
916
+ "type": "string",
917
+ "mutable": false,
918
+ "complexType": {
919
+ "original": "'current' | 'future' | 'past'",
920
+ "resolved": "\"current\" | \"future\" | \"past\"",
921
+ "references": {}
922
+ },
923
+ "required": false,
924
+ "optional": false,
925
+ "docs": {
926
+ "tags": [],
927
+ "text": ""
928
+ },
929
+ "attribute": "assume",
930
+ "reflect": true,
931
+ "defaultValue": "'current'"
932
+ },
887
933
  "errors": {
888
934
  "type": "unknown",
889
935
  "mutable": true,
@@ -1047,5 +1093,11 @@ export class Q2Calendar {
1047
1093
  "target": undefined,
1048
1094
  "capture": false,
1049
1095
  "passive": false
1096
+ }, {
1097
+ "name": "focus",
1098
+ "method": "delegateFocus",
1099
+ "target": undefined,
1100
+ "capture": false,
1101
+ "passive": false
1050
1102
  }]; }
1051
1103
  }