@aurodesignsystem-dev/auro-formkit 0.0.0-pr1503.3 → 0.0.0-pr1503.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 (190) hide show
  1. package/components/bibtemplate/dist/index.js +1 -1
  2. package/components/bibtemplate/dist/registered.js +1 -1
  3. package/components/checkbox/demo/accessibility.md +1 -1
  4. package/components/checkbox/demo/customize.html +1 -2
  5. package/components/checkbox/demo/customize.min.js +23 -8
  6. package/components/checkbox/demo/getting-started.min.js +23 -8
  7. package/components/checkbox/demo/index.min.js +23 -8
  8. package/components/checkbox/dist/index.js +23 -8
  9. package/components/checkbox/dist/registered.js +23 -8
  10. package/components/combobox/README.md +1 -1
  11. package/components/combobox/demo/accessibility.md +1 -1
  12. package/components/combobox/demo/api.md +2 -2
  13. package/components/combobox/demo/customize.html +1 -2
  14. package/components/combobox/demo/customize.md +166 -142
  15. package/components/combobox/demo/customize.min.js +2515 -2316
  16. package/components/combobox/demo/getting-started.min.js +2515 -2312
  17. package/components/combobox/demo/index.md +2 -1
  18. package/components/combobox/demo/index.min.js +2515 -2312
  19. package/components/combobox/demo/keyboard-behavior.md +3 -146
  20. package/components/combobox/demo/readme.md +1 -1
  21. package/components/combobox/demo/why-combobox.md +2 -2
  22. package/components/combobox/dist/auro-combobox.d.ts +49 -15
  23. package/components/combobox/dist/index.js +1462 -753
  24. package/components/combobox/dist/registered.js +1462 -753
  25. package/components/counter/demo/customize.min.js +188 -244
  26. package/components/counter/demo/index.min.js +188 -244
  27. package/components/counter/dist/auro-counter.d.ts +0 -8
  28. package/components/counter/dist/index.js +188 -244
  29. package/components/counter/dist/registered.js +188 -244
  30. package/components/datepicker/demo/accessibility.md +20 -10
  31. package/components/datepicker/demo/api.md +65 -62
  32. package/components/datepicker/demo/customize.md +180 -40
  33. package/components/datepicker/demo/customize.min.js +1690 -777
  34. package/components/datepicker/demo/getting-started.md +118 -2
  35. package/components/datepicker/demo/index.min.js +1690 -759
  36. package/components/datepicker/demo/keyboard-behavior.md +3 -3
  37. package/components/datepicker/demo/voiceover.md +4 -4
  38. package/components/datepicker/demo/why-datepicker.md +2 -2
  39. package/components/datepicker/dist/{src/auro-calendar-cell.d.ts → auro-calendar-cell.d.ts} +48 -3
  40. package/components/datepicker/dist/{src/auro-calendar.d.ts → auro-calendar.d.ts} +188 -10
  41. package/components/datepicker/dist/{src/auro-datepicker.d.ts → auro-datepicker.d.ts} +89 -6
  42. package/components/datepicker/dist/blackoutUtils.d.ts +43 -0
  43. package/components/datepicker/dist/index.js +1690 -759
  44. package/components/datepicker/dist/registered.js +1690 -759
  45. package/components/dropdown/demo/customize.html +3 -0
  46. package/components/dropdown/demo/customize.min.js +142 -208
  47. package/components/dropdown/demo/getting-started.min.js +131 -207
  48. package/components/dropdown/demo/index.min.js +131 -207
  49. package/components/dropdown/dist/auro-dropdown.d.ts +17 -1
  50. package/components/dropdown/dist/index.js +131 -207
  51. package/components/dropdown/dist/registered.js +131 -207
  52. package/components/form/demo/api.md +3 -3
  53. package/components/form/demo/customize.html +6 -6
  54. package/components/form/demo/customize.md +535 -135
  55. package/components/form/demo/customize.min.js +6307 -4378
  56. package/components/form/demo/getting-started.md +344 -96
  57. package/components/form/demo/getting-started.min.js +6255 -4378
  58. package/components/form/demo/index.min.js +6206 -4378
  59. package/components/form/demo/registerDemoDeps.min.js +5827 -4333
  60. package/components/form/dist/auro-form.d.ts +128 -10
  61. package/components/form/dist/index.js +377 -43
  62. package/components/form/dist/registered.js +377 -43
  63. package/components/input/demo/accessibility.md +1 -1
  64. package/components/input/demo/api.md +58 -57
  65. package/components/input/demo/customize.html +1 -2
  66. package/components/input/demo/customize.md +62 -61
  67. package/components/input/demo/customize.min.js +396 -275
  68. package/components/input/demo/getting-started.min.js +396 -275
  69. package/components/input/demo/index.min.js +396 -275
  70. package/components/input/dist/auro-input.d.ts +1 -1
  71. package/components/input/dist/base-input.d.ts +60 -81
  72. package/components/input/dist/index.js +409 -276
  73. package/components/input/dist/registered.js +396 -275
  74. package/components/input/dist/utilities.d.ts +10 -1
  75. package/components/menu/demo/accessibility.md +9 -4
  76. package/components/menu/demo/api.md +48 -45
  77. package/components/menu/demo/css-only.md +26 -19
  78. package/components/menu/demo/customize.md +307 -75
  79. package/components/menu/demo/design.md +1 -1
  80. package/components/menu/demo/getting-started.md +144 -7
  81. package/components/menu/demo/index.min.js +961 -1341
  82. package/components/menu/demo/keyboard-behavior.md +83 -4
  83. package/components/menu/demo/voiceover.md +21 -14
  84. package/components/menu/demo/why-menu.md +8 -9
  85. package/components/menu/dist/auro-menu-utils.d.ts +19 -0
  86. package/components/menu/dist/auro-menu.d.ts +97 -116
  87. package/components/menu/dist/auro-menuoption.d.ts +39 -133
  88. package/components/menu/dist/index.js +823 -1309
  89. package/components/menu/dist/registered.js +835 -1309
  90. package/components/radio/demo/accessibility.md +1 -1
  91. package/components/radio/demo/customize.min.js +23 -8
  92. package/components/radio/demo/getting-started.min.js +23 -8
  93. package/components/radio/demo/index.min.js +23 -8
  94. package/components/radio/dist/index.js +23 -8
  95. package/components/radio/dist/registered.js +23 -8
  96. package/components/select/demo/accessibility.md +6 -1
  97. package/components/select/demo/api.md +3 -2
  98. package/components/select/demo/customize.html +1 -2
  99. package/components/select/demo/customize.md +210 -5
  100. package/components/select/demo/customize.min.js +1613 -1854
  101. package/components/select/demo/design.md +10 -10
  102. package/components/select/demo/getting-started.md +1 -1
  103. package/components/select/demo/getting-started.min.js +1617 -1903
  104. package/components/select/demo/index.md +2 -2
  105. package/components/select/demo/index.min.js +1613 -1854
  106. package/components/select/demo/keyboard-behavior.md +81 -54
  107. package/components/select/demo/voiceover.md +28 -15
  108. package/components/select/dist/auro-select.d.ts +70 -12
  109. package/components/select/dist/index.js +580 -315
  110. package/components/select/dist/registered.js +580 -315
  111. package/components/select/dist/selectUtils.d.ts +24 -0
  112. package/custom-elements.json +8071 -7919
  113. package/package.json +7 -3
  114. package/components/checkbox/demo/customize.js +0 -22
  115. package/components/checkbox/demo/demo-support.js +0 -1
  116. package/components/checkbox/demo/getting-started.js +0 -22
  117. package/components/checkbox/demo/index.js +0 -8
  118. package/components/checkbox/demo/styles.scss +0 -1
  119. package/components/combobox/demo/customize.js +0 -24
  120. package/components/combobox/demo/demo-support.js +0 -1
  121. package/components/combobox/demo/getting-started.js +0 -21
  122. package/components/combobox/demo/index.js +0 -23
  123. package/components/combobox/demo/styles.scss +0 -1
  124. package/components/counter/demo/customize.js +0 -21
  125. package/components/counter/demo/demo-support.js +0 -1
  126. package/components/counter/demo/index.js +0 -21
  127. package/components/counter/demo/styles.scss +0 -1
  128. package/components/datepicker/demo/customize.js +0 -19
  129. package/components/datepicker/demo/demo-support.js +0 -1
  130. package/components/datepicker/demo/index.js +0 -23
  131. package/components/datepicker/demo/styles.scss +0 -1
  132. package/components/dropdown/demo/customize.js +0 -9
  133. package/components/dropdown/demo/demo-support.js +0 -1
  134. package/components/dropdown/demo/getting-started.js +0 -9
  135. package/components/dropdown/demo/index.js +0 -16
  136. package/components/dropdown/demo/styles.scss +0 -1
  137. package/components/form/demo/customize.js +0 -9
  138. package/components/form/demo/demo-support.js +0 -1
  139. package/components/form/demo/getting-started.js +0 -9
  140. package/components/form/demo/index.js +0 -5
  141. package/components/form/demo/registerDemoDeps.js +0 -23
  142. package/components/form/demo/styles.scss +0 -1
  143. package/components/input/demo/customize.js +0 -25
  144. package/components/input/demo/demo-support.js +0 -1
  145. package/components/input/demo/getting-started.js +0 -8
  146. package/components/input/demo/index.js +0 -8
  147. package/components/input/demo/styles.css +0 -974
  148. package/components/input/demo/styles.scss +0 -1
  149. package/components/menu/demo/demo-support.js +0 -1
  150. package/components/menu/demo/index.js +0 -25
  151. package/components/menu/demo/styles.scss +0 -1
  152. package/components/menu/dist/auro-menu.context.d.ts +0 -238
  153. package/components/radio/demo/customize.js +0 -22
  154. package/components/radio/demo/demo-support.js +0 -1
  155. package/components/radio/demo/getting-started.js +0 -24
  156. package/components/radio/demo/index.js +0 -8
  157. package/components/radio/demo/styles.scss +0 -1
  158. package/components/select/demo/customize.js +0 -11
  159. package/components/select/demo/demo-support.js +0 -1
  160. package/components/select/demo/getting-started.js +0 -26
  161. package/components/select/demo/index.js +0 -11
  162. package/components/select/demo/styles.scss +0 -1
  163. /package/components/counter/dist/styles/{counter-wrapper-color-css.d.ts → counter-group-color-css.d.ts} +0 -0
  164. /package/components/datepicker/dist/{src/auro-calendar-month.d.ts → auro-calendar-month.d.ts} +0 -0
  165. /package/components/datepicker/dist/{src/buttonVersion.d.ts → buttonVersion.d.ts} +0 -0
  166. /package/components/datepicker/dist/{src/datepickerKeyboardStrategy.d.ts → datepickerKeyboardStrategy.d.ts} +0 -0
  167. /package/components/datepicker/dist/{src/iconVersion.d.ts → iconVersion.d.ts} +0 -0
  168. /package/components/datepicker/dist/{src/index.d.ts → index.d.ts} +0 -0
  169. /package/components/datepicker/dist/{src/popoverVersion.d.ts → popoverVersion.d.ts} +0 -0
  170. /package/components/datepicker/dist/{src/styles → styles}/classic/color-css.d.ts +0 -0
  171. /package/components/datepicker/dist/{src/styles → styles}/classic/style-css.d.ts +0 -0
  172. /package/components/datepicker/dist/{src/styles → styles}/color-calendar-css.d.ts +0 -0
  173. /package/components/datepicker/dist/{src/styles → styles}/color-cell-css.d.ts +0 -0
  174. /package/components/datepicker/dist/{src/styles → styles}/color-css.d.ts +0 -0
  175. /package/components/datepicker/dist/{src/styles → styles}/color-month-css.d.ts +0 -0
  176. /package/components/datepicker/dist/{src/styles → styles}/shapeSize-css.d.ts +0 -0
  177. /package/components/datepicker/dist/{src/styles → styles}/snowflake/color-css.d.ts +0 -0
  178. /package/components/datepicker/dist/{src/styles → styles}/snowflake/style-css.d.ts +0 -0
  179. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-cell-css.d.ts +0 -0
  180. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-css.d.ts +0 -0
  181. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-month-css.d.ts +0 -0
  182. /package/components/datepicker/dist/{src/styles → styles}/style-css.d.ts +0 -0
  183. /package/components/datepicker/dist/{src/styles → styles}/tokens-css.d.ts +0 -0
  184. /package/components/datepicker/dist/{src/utilities.d.ts → utilities.d.ts} +0 -0
  185. /package/components/datepicker/dist/{src/utilitiesCalendar.d.ts → utilitiesCalendar.d.ts} +0 -0
  186. /package/components/datepicker/dist/{src/utilitiesCalendarRender.d.ts → utilitiesCalendarRender.d.ts} +0 -0
  187. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/day.d.ts +0 -0
  188. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-calendar.d.ts +0 -0
  189. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-cell.d.ts +0 -0
  190. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker.d.ts +0 -0
@@ -4,7 +4,7 @@
4
4
  <div class="scrollWrapper">
5
5
  The `auro-radio` component follows native HTML radio button semantics. This page documents the ARIA attributes, screen reader behavior, and other accessibility features built into the component.
6
6
 
7
- For keyboard interaction details, see the <a href="./keyboard-behavior.html">Keyboard Behavior</a> page.
7
+ For keyboard interaction details, see the <auro-hyperlink href="keyboard-behavior">Keyboard Behavior</auro-hyperlink> page.
8
8
 
9
9
  <auro-header level="2" id="ariaRolesAndAttributes">ARIA Roles and Attributes</auro-header>
10
10
  <auro-header level="3" id="radioGroup">Radio Group</auro-header>
@@ -715,8 +715,21 @@ class AuroFormValidation {
715
715
  return;
716
716
  }
717
717
 
718
- // Validate that the date passed was the correct format and is a valid date
718
+ // Validate that the date passed was the correct format and is a valid date.
719
+ // For partial date formats, valueObject is never populated; validate them directly.
719
720
  if (elem.value && !elem.valueObject) {
721
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
722
+
723
+ if (isPartialDateFormat) {
724
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
725
+ elem.validity = 'patternMismatch';
726
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
727
+ }
728
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
729
+ return;
730
+ }
731
+
732
+ // Full date format with no valueObject means the value is not a valid calendar date.
720
733
  elem.validity = 'patternMismatch';
721
734
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
722
735
  return;
@@ -813,15 +826,17 @@ class AuroFormValidation {
813
826
  );
814
827
  }
815
828
 
816
- // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
817
- if (this.auroInputElements?.length === 2) {
818
- if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
829
+ const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
830
+
831
+ // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
832
+ // Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
833
+ // field (datepicker is the intended consumer — start/end are independently required).
834
+ if (this.auroInputElements?.length === 2 && !isCombobox) {
835
+ if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
819
836
  hasValue = false;
820
837
  }
821
838
  }
822
839
 
823
- const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
824
-
825
840
  if (isCombobox) {
826
841
 
827
842
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -920,7 +935,7 @@ class AuroFormValidation {
920
935
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
921
936
  const input = elem.renderRoot.querySelector('input');
922
937
 
923
- if (input.validationMessage.length > 0) {
938
+ if (input && input.validationMessage.length > 0) {
924
939
  elem.errorMessage = input.validationMessage;
925
940
  }
926
941
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -1212,7 +1227,7 @@ class AuroHelpText extends i$2 {
1212
1227
  }
1213
1228
  }
1214
1229
 
1215
- var formkitVersion = '202606191810';
1230
+ var formkitVersion = '202607221815';
1216
1231
 
1217
1232
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1218
1233
  // See LICENSE in the project root for license information.
@@ -715,8 +715,21 @@ class AuroFormValidation {
715
715
  return;
716
716
  }
717
717
 
718
- // Validate that the date passed was the correct format and is a valid date
718
+ // Validate that the date passed was the correct format and is a valid date.
719
+ // For partial date formats, valueObject is never populated; validate them directly.
719
720
  if (elem.value && !elem.valueObject) {
721
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
722
+
723
+ if (isPartialDateFormat) {
724
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
725
+ elem.validity = 'patternMismatch';
726
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
727
+ }
728
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
729
+ return;
730
+ }
731
+
732
+ // Full date format with no valueObject means the value is not a valid calendar date.
720
733
  elem.validity = 'patternMismatch';
721
734
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
722
735
  return;
@@ -813,15 +826,17 @@ class AuroFormValidation {
813
826
  );
814
827
  }
815
828
 
816
- // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
817
- if (this.auroInputElements?.length === 2) {
818
- if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
829
+ const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
830
+
831
+ // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
832
+ // Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
833
+ // field (datepicker is the intended consumer — start/end are independently required).
834
+ if (this.auroInputElements?.length === 2 && !isCombobox) {
835
+ if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
819
836
  hasValue = false;
820
837
  }
821
838
  }
822
839
 
823
- const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
824
-
825
840
  if (isCombobox) {
826
841
 
827
842
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -920,7 +935,7 @@ class AuroFormValidation {
920
935
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
921
936
  const input = elem.renderRoot.querySelector('input');
922
937
 
923
- if (input.validationMessage.length > 0) {
938
+ if (input && input.validationMessage.length > 0) {
924
939
  elem.errorMessage = input.validationMessage;
925
940
  }
926
941
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -1212,7 +1227,7 @@ class AuroHelpText extends i$2 {
1212
1227
  }
1213
1228
  }
1214
1229
 
1215
- var formkitVersion = '202606191810';
1230
+ var formkitVersion = '202607221815';
1216
1231
 
1217
1232
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1218
1233
  // See LICENSE in the project root for license information.
@@ -715,8 +715,21 @@ class AuroFormValidation {
715
715
  return;
716
716
  }
717
717
 
718
- // Validate that the date passed was the correct format and is a valid date
718
+ // Validate that the date passed was the correct format and is a valid date.
719
+ // For partial date formats, valueObject is never populated; validate them directly.
719
720
  if (elem.value && !elem.valueObject) {
721
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
722
+
723
+ if (isPartialDateFormat) {
724
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
725
+ elem.validity = 'patternMismatch';
726
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
727
+ }
728
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
729
+ return;
730
+ }
731
+
732
+ // Full date format with no valueObject means the value is not a valid calendar date.
720
733
  elem.validity = 'patternMismatch';
721
734
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
722
735
  return;
@@ -813,15 +826,17 @@ class AuroFormValidation {
813
826
  );
814
827
  }
815
828
 
816
- // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
817
- if (this.auroInputElements?.length === 2) {
818
- if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
829
+ const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
830
+
831
+ // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
832
+ // Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
833
+ // field (datepicker is the intended consumer — start/end are independently required).
834
+ if (this.auroInputElements?.length === 2 && !isCombobox) {
835
+ if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
819
836
  hasValue = false;
820
837
  }
821
838
  }
822
839
 
823
- const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
824
-
825
840
  if (isCombobox) {
826
841
 
827
842
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -920,7 +935,7 @@ class AuroFormValidation {
920
935
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
921
936
  const input = elem.renderRoot.querySelector('input');
922
937
 
923
- if (input.validationMessage.length > 0) {
938
+ if (input && input.validationMessage.length > 0) {
924
939
  elem.errorMessage = input.validationMessage;
925
940
  }
926
941
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -1212,7 +1227,7 @@ class AuroHelpText extends i$2 {
1212
1227
  }
1213
1228
  }
1214
1229
 
1215
- var formkitVersion = '202606191810';
1230
+ var formkitVersion = '202607221815';
1216
1231
 
1217
1232
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1218
1233
  // See LICENSE in the project root for license information.
@@ -654,8 +654,21 @@ class AuroFormValidation {
654
654
  return;
655
655
  }
656
656
 
657
- // Validate that the date passed was the correct format and is a valid date
657
+ // Validate that the date passed was the correct format and is a valid date.
658
+ // For partial date formats, valueObject is never populated; validate them directly.
658
659
  if (elem.value && !elem.valueObject) {
660
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
661
+
662
+ if (isPartialDateFormat) {
663
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
664
+ elem.validity = 'patternMismatch';
665
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
666
+ }
667
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
668
+ return;
669
+ }
670
+
671
+ // Full date format with no valueObject means the value is not a valid calendar date.
659
672
  elem.validity = 'patternMismatch';
660
673
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
661
674
  return;
@@ -752,15 +765,17 @@ class AuroFormValidation {
752
765
  );
753
766
  }
754
767
 
755
- // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
756
- if (this.auroInputElements?.length === 2) {
757
- if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
768
+ const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
769
+
770
+ // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
771
+ // Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
772
+ // field (datepicker is the intended consumer — start/end are independently required).
773
+ if (this.auroInputElements?.length === 2 && !isCombobox) {
774
+ if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
758
775
  hasValue = false;
759
776
  }
760
777
  }
761
778
 
762
- const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
763
-
764
779
  if (isCombobox) {
765
780
 
766
781
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -859,7 +874,7 @@ class AuroFormValidation {
859
874
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
860
875
  const input = elem.renderRoot.querySelector('input');
861
876
 
862
- if (input.validationMessage.length > 0) {
877
+ if (input && input.validationMessage.length > 0) {
863
878
  elem.errorMessage = input.validationMessage;
864
879
  }
865
880
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -1151,7 +1166,7 @@ class AuroHelpText extends LitElement {
1151
1166
  }
1152
1167
  }
1153
1168
 
1154
- var formkitVersion = '202606191810';
1169
+ var formkitVersion = '202607221815';
1155
1170
 
1156
1171
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1157
1172
  // See LICENSE in the project root for license information.
@@ -654,8 +654,21 @@ class AuroFormValidation {
654
654
  return;
655
655
  }
656
656
 
657
- // Validate that the date passed was the correct format and is a valid date
657
+ // Validate that the date passed was the correct format and is a valid date.
658
+ // For partial date formats, valueObject is never populated; validate them directly.
658
659
  if (elem.value && !elem.valueObject) {
660
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
661
+
662
+ if (isPartialDateFormat) {
663
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
664
+ elem.validity = 'patternMismatch';
665
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
666
+ }
667
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
668
+ return;
669
+ }
670
+
671
+ // Full date format with no valueObject means the value is not a valid calendar date.
659
672
  elem.validity = 'patternMismatch';
660
673
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
661
674
  return;
@@ -752,15 +765,17 @@ class AuroFormValidation {
752
765
  );
753
766
  }
754
767
 
755
- // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
756
- if (this.auroInputElements?.length === 2) {
757
- if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
768
+ const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
769
+
770
+ // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
771
+ // Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
772
+ // field (datepicker is the intended consumer — start/end are independently required).
773
+ if (this.auroInputElements?.length === 2 && !isCombobox) {
774
+ if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
758
775
  hasValue = false;
759
776
  }
760
777
  }
761
778
 
762
- const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
763
-
764
779
  if (isCombobox) {
765
780
 
766
781
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -859,7 +874,7 @@ class AuroFormValidation {
859
874
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
860
875
  const input = elem.renderRoot.querySelector('input');
861
876
 
862
- if (input.validationMessage.length > 0) {
877
+ if (input && input.validationMessage.length > 0) {
863
878
  elem.errorMessage = input.validationMessage;
864
879
  }
865
880
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -1151,7 +1166,7 @@ class AuroHelpText extends LitElement {
1151
1166
  }
1152
1167
  }
1153
1168
 
1154
- var formkitVersion = '202606191810';
1169
+ var formkitVersion = '202607221815';
1155
1170
 
1156
1171
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1157
1172
  // See LICENSE in the project root for license information.
@@ -4,7 +4,7 @@
4
4
  <div class="scrollWrapper">
5
5
  The `auro-select` component follows the <a href="https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/" target="_blank">W3C APG Select-Only Combobox</a> pattern. This page documents the ARIA semantics, screen reader announcements, and other accessibility behaviors built into the component.
6
6
 
7
- For keyboard interaction details, see the <a href="./keyboard-behavior.html">Keyboard Behavior</a> page.
7
+ For keyboard interaction details, see the <auro-hyperlink href="keyboard-behavior">Keyboard Behavior</auro-hyperlink> page.
8
8
 
9
9
  <auro-header level="2" id="ariaRolesAndAttributes">ARIA Roles and Attributes</auro-header>
10
10
  <auro-header level="3" id="trigger">Trigger</auro-header>
@@ -61,6 +61,11 @@ On smaller viewports, the bib opens as a fullscreen modal dialog:
61
61
  - A close button inside the dialog is focused when the modal opens, giving screen reader users an immediate action to dismiss it.
62
62
  - Touch scrolling on the page behind the dialog is blocked to prevent the background from scrolling into view.
63
63
 
64
+ <auro-header level="2" id="modifierKeys">Modifier Keys</auro-header>
65
+ The **Meta** key (Command on macOS, Windows/Super elsewhere) is intentionally not used as a modifier for select keyboard shortcuts. On Windows, Linux, and ChromeOS, the operating system intercepts `Meta` + Arrow combinations for window management (e.g. window snapping) before the browser receives the event, so any shortcut bound to `Meta` + Arrow would work only on macOS and silently fail on other platforms.
66
+
67
+ To jump to the first or last option in a way that works uniformly across platforms, use **Home** and **End**, which follow the <a href="https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/" target="_blank">WAI-ARIA Select-Only Combobox pattern</a>.
68
+
64
69
  <auro-header level="2" id="reducedMotion">Reduced Motion</auro-header>
65
70
  The component respects the `prefers-reduced-motion` media query. When the user has requested reduced motion, scroll animations (e.g. scrolling the selected or active option into view) use instant scrolling instead of smooth scrolling.
66
71
 
@@ -38,8 +38,9 @@ The `auro-select` element is a wrapper for auro-dropdown and auro-menu to create
38
38
  | `shape` | `shape` | `'classic' \| 'pill' \| 'pill-left' \| 'pill-right' \| 'snowflake'` | | Determines the shape of the dropdown bib. |
39
39
  | `shift` | `shift` | `boolean` | false | If set, the dropdown will shift its position to avoid being cut off by the viewport. |
40
40
  | `size` | `size` | `'lg' \| 'xl'` | | Determines the size of the dropdown bib. Only the `emphasized` layout supports size=`xl`, while all other layouts support size=`lg`. |
41
+ | `typeaheadTimeoutMs` | `typeaheadTimeoutMs` | `number` | "500" | Milliseconds of keyboard inactivity before the type-ahead buffer resets.<br />Increase for users who type slowly. |
41
42
  | `validity` | `validity` | `string` | | Specifies the `validityState` this element is in. |
42
- | `value` | `value` | `string` | | Value selected for the component. |
43
+ | `value` | `value` | `string` | | Value selected for the component. When set programmatically or as a preset attribute, the value must match a selectable option. If it matches an option marked `disabled` or `static`, the selection is rejected: `value` is cleared to `undefined` while `optionSelected` is cleared to `undefined` in single-select or `[]` in multiSelect. `hidden` options remain selectable by value. |
43
44
 
44
45
  ## Methods
45
46
 
@@ -47,7 +48,7 @@ The `auro-select` element is a wrapper for auro-dropdown and auro-menu to create
47
48
  |----------------------|----------------------------------------|--------------------------------------------------|
48
49
  | `hideBib` | `(): void` | Hides the dropdown bib if its open. |
49
50
  | `reset` | `(): void` | Resets component to initial state. |
50
- | `setMenuValue` | `(value: any): void` | |
51
+ | `setMenuValue` | `(value: string): void` | Sets the selected value by matching it against the menu options. Options marked `disabled` or `static` are not selectable: if the value matches one, the selection is rejected and `value` is cleared to `undefined` while `optionSelected` is cleared to `undefined` in single-select or `[]` in multiSelect. `hidden` options remain selectable.<br /><br />**value**: The value to match against the menu options. |
51
52
  | `showBib` | `(): void` | Shows the dropdown bib if there are options to show. |
52
53
  | `updateActiveOption` | `(index: number): void` | Updates the active option in the menu.<br /><br />**index**: Index of the option to make active. |
53
54
  | `validate` | `(force?: boolean \| undefined): void` | Validates value.<br /><br />**force**: Whether to force validation. |
@@ -41,12 +41,11 @@
41
41
  <script src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-hyperlink@latest/+esm" type="module"></script>
42
42
  <script src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-icon@latest/+esm" type="module"></script>
43
43
  <script src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-button@latest/+esm" type="module"></script>
44
- <script type="module">
44
+ <script type="module" data-demo-script="true">
45
45
  import { renderPage } from './demo-support.min.js';
46
46
  await renderPage('./customize.md');
47
47
  import { initExamples } from "./customize.min.js";
48
48
  initExamples();
49
49
  </script>
50
- <script src="./customize.min.js" data-demo-script="true" type="module"></script>
51
50
  </body>
52
51
  </html>