@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
@@ -5,7 +5,7 @@ import { ifDefined } from 'lit/directives/if-defined.js';
5
5
 
6
6
  var colorCss = css`#headerContainer{box-shadow:var(--ds-auro-dropdownbib-header-boxshadow-color)}#footerContainer{background-color:var(--ds-auro-dropdownbib-footer-container-color)}`;
7
7
 
8
- var styleCss = css`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem));padding-top:var(--ds-size-200, 1rem)}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1 1 100%}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{position:absolute;right:0;bottom:0;left:0;padding:var(--ds-size-200, 1rem)}`;
8
+ var styleCss = css`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;padding-bottom:var(--ds-size-200, 1rem);gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem))}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{padding:var(--ds-size-200, 1rem)}`;
9
9
 
10
10
  var tokenCss = css`:host{--ds-auro-dropdownbib-header-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-footer-container-color: var(--ds-basic-color-surface-default, #ffffff)}`;
11
11
 
@@ -5,7 +5,7 @@ import { ifDefined } from 'lit/directives/if-defined.js';
5
5
 
6
6
  var colorCss = css`#headerContainer{box-shadow:var(--ds-auro-dropdownbib-header-boxshadow-color)}#footerContainer{background-color:var(--ds-auro-dropdownbib-footer-container-color)}`;
7
7
 
8
- var styleCss = css`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem));padding-top:var(--ds-size-200, 1rem)}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1 1 100%}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{position:absolute;right:0;bottom:0;left:0;padding:var(--ds-size-200, 1rem)}`;
8
+ var styleCss = css`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;padding-bottom:var(--ds-size-200, 1rem);gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem))}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{padding:var(--ds-size-200, 1rem)}`;
9
9
 
10
10
  var tokenCss = css`:host{--ds-auro-dropdownbib-header-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-footer-container-color: var(--ds-basic-color-surface-default, #ffffff)}`;
11
11
 
@@ -4,7 +4,7 @@
4
4
  <div class="scrollWrapper">
5
5
  The `auro-checkbox` component follows native HTML checkbox 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="checkboxGroup">Checkbox Group</auro-header>
@@ -40,12 +40,11 @@
40
40
  <script src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-header@latest/+esm" type="module"></script>
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-button@latest/+esm" type="module"></script>
43
- <script type="module">
43
+ <script type="module" data-demo-script="true">
44
44
  import { renderPage } from './demo-support.min.js';
45
45
  await renderPage('./customize.md');
46
46
  import { initExamples } from "./customize.min.js";
47
47
  initExamples();
48
48
  </script>
49
- <script src="./customize.min.js" data-demo-script="true" type="module"></script>
50
49
  </body>
51
50
  </html>
@@ -759,8 +759,21 @@ class AuroFormValidation {
759
759
  return;
760
760
  }
761
761
 
762
- // Validate that the date passed was the correct format and is a valid date
762
+ // Validate that the date passed was the correct format and is a valid date.
763
+ // For partial date formats, valueObject is never populated; validate them directly.
763
764
  if (elem.value && !elem.valueObject) {
765
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
766
+
767
+ if (isPartialDateFormat) {
768
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
769
+ elem.validity = 'patternMismatch';
770
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
771
+ }
772
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
773
+ return;
774
+ }
775
+
776
+ // Full date format with no valueObject means the value is not a valid calendar date.
764
777
  elem.validity = 'patternMismatch';
765
778
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
766
779
  return;
@@ -857,15 +870,17 @@ class AuroFormValidation {
857
870
  );
858
871
  }
859
872
 
860
- // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
861
- if (this.auroInputElements?.length === 2) {
862
- if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
873
+ const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
874
+
875
+ // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
876
+ // Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
877
+ // field (datepicker is the intended consumer — start/end are independently required).
878
+ if (this.auroInputElements?.length === 2 && !isCombobox) {
879
+ if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
863
880
  hasValue = false;
864
881
  }
865
882
  }
866
883
 
867
- const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
868
-
869
884
  if (isCombobox) {
870
885
 
871
886
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -964,7 +979,7 @@ class AuroFormValidation {
964
979
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
965
980
  const input = elem.renderRoot.querySelector('input');
966
981
 
967
- if (input.validationMessage.length > 0) {
982
+ if (input && input.validationMessage.length > 0) {
968
983
  elem.errorMessage = input.validationMessage;
969
984
  }
970
985
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -1260,7 +1275,7 @@ class AuroHelpText extends i$2 {
1260
1275
  }
1261
1276
  }
1262
1277
 
1263
- var formkitVersion = '202606191810';
1278
+ var formkitVersion = '202607221815';
1264
1279
 
1265
1280
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1266
1281
  // See LICENSE in the project root for license information.
@@ -759,8 +759,21 @@ class AuroFormValidation {
759
759
  return;
760
760
  }
761
761
 
762
- // Validate that the date passed was the correct format and is a valid date
762
+ // Validate that the date passed was the correct format and is a valid date.
763
+ // For partial date formats, valueObject is never populated; validate them directly.
763
764
  if (elem.value && !elem.valueObject) {
765
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
766
+
767
+ if (isPartialDateFormat) {
768
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
769
+ elem.validity = 'patternMismatch';
770
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
771
+ }
772
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
773
+ return;
774
+ }
775
+
776
+ // Full date format with no valueObject means the value is not a valid calendar date.
764
777
  elem.validity = 'patternMismatch';
765
778
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
766
779
  return;
@@ -857,15 +870,17 @@ class AuroFormValidation {
857
870
  );
858
871
  }
859
872
 
860
- // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
861
- if (this.auroInputElements?.length === 2) {
862
- if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
873
+ const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
874
+
875
+ // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
876
+ // Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
877
+ // field (datepicker is the intended consumer — start/end are independently required).
878
+ if (this.auroInputElements?.length === 2 && !isCombobox) {
879
+ if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
863
880
  hasValue = false;
864
881
  }
865
882
  }
866
883
 
867
- const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
868
-
869
884
  if (isCombobox) {
870
885
 
871
886
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -964,7 +979,7 @@ class AuroFormValidation {
964
979
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
965
980
  const input = elem.renderRoot.querySelector('input');
966
981
 
967
- if (input.validationMessage.length > 0) {
982
+ if (input && input.validationMessage.length > 0) {
968
983
  elem.errorMessage = input.validationMessage;
969
984
  }
970
985
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -1260,7 +1275,7 @@ class AuroHelpText extends i$2 {
1260
1275
  }
1261
1276
  }
1262
1277
 
1263
- var formkitVersion = '202606191810';
1278
+ var formkitVersion = '202607221815';
1264
1279
 
1265
1280
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1266
1281
  // See LICENSE in the project root for license information.
@@ -759,8 +759,21 @@ class AuroFormValidation {
759
759
  return;
760
760
  }
761
761
 
762
- // Validate that the date passed was the correct format and is a valid date
762
+ // Validate that the date passed was the correct format and is a valid date.
763
+ // For partial date formats, valueObject is never populated; validate them directly.
763
764
  if (elem.value && !elem.valueObject) {
765
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
766
+
767
+ if (isPartialDateFormat) {
768
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
769
+ elem.validity = 'patternMismatch';
770
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
771
+ }
772
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
773
+ return;
774
+ }
775
+
776
+ // Full date format with no valueObject means the value is not a valid calendar date.
764
777
  elem.validity = 'patternMismatch';
765
778
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
766
779
  return;
@@ -857,15 +870,17 @@ class AuroFormValidation {
857
870
  );
858
871
  }
859
872
 
860
- // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
861
- if (this.auroInputElements?.length === 2) {
862
- if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
873
+ const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
874
+
875
+ // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
876
+ // Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
877
+ // field (datepicker is the intended consumer — start/end are independently required).
878
+ if (this.auroInputElements?.length === 2 && !isCombobox) {
879
+ if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
863
880
  hasValue = false;
864
881
  }
865
882
  }
866
883
 
867
- const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
868
-
869
884
  if (isCombobox) {
870
885
 
871
886
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -964,7 +979,7 @@ class AuroFormValidation {
964
979
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
965
980
  const input = elem.renderRoot.querySelector('input');
966
981
 
967
- if (input.validationMessage.length > 0) {
982
+ if (input && input.validationMessage.length > 0) {
968
983
  elem.errorMessage = input.validationMessage;
969
984
  }
970
985
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -1260,7 +1275,7 @@ class AuroHelpText extends i$2 {
1260
1275
  }
1261
1276
  }
1262
1277
 
1263
- var formkitVersion = '202606191810';
1278
+ var formkitVersion = '202607221815';
1264
1279
 
1265
1280
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1266
1281
  // See LICENSE in the project root for license information.
@@ -712,8 +712,21 @@ class AuroFormValidation {
712
712
  return;
713
713
  }
714
714
 
715
- // Validate that the date passed was the correct format and is a valid date
715
+ // Validate that the date passed was the correct format and is a valid date.
716
+ // For partial date formats, valueObject is never populated; validate them directly.
716
717
  if (elem.value && !elem.valueObject) {
718
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
719
+
720
+ if (isPartialDateFormat) {
721
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
722
+ elem.validity = 'patternMismatch';
723
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
724
+ }
725
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
726
+ return;
727
+ }
728
+
729
+ // Full date format with no valueObject means the value is not a valid calendar date.
717
730
  elem.validity = 'patternMismatch';
718
731
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
719
732
  return;
@@ -810,15 +823,17 @@ class AuroFormValidation {
810
823
  );
811
824
  }
812
825
 
813
- // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
814
- if (this.auroInputElements?.length === 2) {
815
- if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
826
+ const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
827
+
828
+ // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
829
+ // Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
830
+ // field (datepicker is the intended consumer — start/end are independently required).
831
+ if (this.auroInputElements?.length === 2 && !isCombobox) {
832
+ if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
816
833
  hasValue = false;
817
834
  }
818
835
  }
819
836
 
820
- const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
821
-
822
837
  if (isCombobox) {
823
838
 
824
839
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -917,7 +932,7 @@ class AuroFormValidation {
917
932
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
918
933
  const input = elem.renderRoot.querySelector('input');
919
934
 
920
- if (input.validationMessage.length > 0) {
935
+ if (input && input.validationMessage.length > 0) {
921
936
  elem.errorMessage = input.validationMessage;
922
937
  }
923
938
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -1213,7 +1228,7 @@ class AuroHelpText extends LitElement {
1213
1228
  }
1214
1229
  }
1215
1230
 
1216
- var formkitVersion = '202606191810';
1231
+ var formkitVersion = '202607221815';
1217
1232
 
1218
1233
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1219
1234
  // See LICENSE in the project root for license information.
@@ -712,8 +712,21 @@ class AuroFormValidation {
712
712
  return;
713
713
  }
714
714
 
715
- // Validate that the date passed was the correct format and is a valid date
715
+ // Validate that the date passed was the correct format and is a valid date.
716
+ // For partial date formats, valueObject is never populated; validate them directly.
716
717
  if (elem.value && !elem.valueObject) {
718
+ const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
719
+
720
+ if (isPartialDateFormat) {
721
+ if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
722
+ elem.validity = 'patternMismatch';
723
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
724
+ }
725
+ // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
726
+ return;
727
+ }
728
+
729
+ // Full date format with no valueObject means the value is not a valid calendar date.
717
730
  elem.validity = 'patternMismatch';
718
731
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
719
732
  return;
@@ -810,15 +823,17 @@ class AuroFormValidation {
810
823
  );
811
824
  }
812
825
 
813
- // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
814
- if (this.auroInputElements?.length === 2) {
815
- if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
826
+ const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
827
+
828
+ // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
829
+ // Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
830
+ // field (datepicker is the intended consumer — start/end are independently required).
831
+ if (this.auroInputElements?.length === 2 && !isCombobox) {
832
+ if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
816
833
  hasValue = false;
817
834
  }
818
835
  }
819
836
 
820
- const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
821
-
822
837
  if (isCombobox) {
823
838
 
824
839
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -917,7 +932,7 @@ class AuroFormValidation {
917
932
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
918
933
  const input = elem.renderRoot.querySelector('input');
919
934
 
920
- if (input.validationMessage.length > 0) {
935
+ if (input && input.validationMessage.length > 0) {
921
936
  elem.errorMessage = input.validationMessage;
922
937
  }
923
938
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -1213,7 +1228,7 @@ class AuroHelpText extends LitElement {
1213
1228
  }
1214
1229
  }
1215
1230
 
1216
- var formkitVersion = '202606191810';
1231
+ var formkitVersion = '202607221815';
1217
1232
 
1218
1233
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1219
1234
  // See LICENSE in the project root for license information.
@@ -24,7 +24,7 @@ The following sections are editable by making changes to the following files:
24
24
  <p>The component supports two modes:</p>
25
25
  <ul>
26
26
  <li><strong>Suggestion (default)</strong> — The user may type any value. The menu provides suggestions but does not restrict input.</li>
27
- <li><strong>Filter</strong> — The user must select from the menu. Typing filters the available options but does not set the component's value. The value is only set when a menu option is selected.</li>
27
+ <li><strong>Filter</strong> — Typing filters the available options and sets the component's <code>value</code> to the typed text, but the input is not considered valid until a menu option is selected. Validation surfaces <code>valueMissing</code> until the typed value matches a chosen option.</li>
28
28
  </ul>
29
29
  <p>Common use cases:</p>
30
30
  <ul>
@@ -4,7 +4,7 @@
4
4
  <div class="scrollWrapper">
5
5
  The `auro-combobox` component follows the <a href="https://www.w3.org/WAI/ARIA/apg/patterns/combobox/" target="_blank">W3C APG 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>
@@ -38,11 +38,11 @@ The `auro-combobox` element provides users with a way to select an option from a
38
38
  | `setCustomValidityValueMissing` | `setCustomValidityValueMissing` | | `string` | | Custom help text message to display when validity = `valueMissing`. |
39
39
  | `setCustomValidityValueMissingFilter` | `setCustomValidityValueMissingFilter` | | `string` | | Custom help text message to display when validity = `valueMissing` due to the user not choosing a menu option when behavior = "filter". |
40
40
  | `shift` | `shift` | | `boolean` | | If declared, the dropdown will shift its position to avoid being cut off by the viewport. |
41
- | `triggerIcon` | `triggerIcon` | | `boolean` | | If set, the `icon` attribute will be applied to the trigger `auro-input` element. |
41
+ | `triggerIcon` | `triggerIcon` | | `boolean` | | If set, the `icon` attribute will be applied to the trigger `auro-input` element.<br />Icon rendering is currently limited to `type="credit-card"`. Setting `triggerIcon`<br />without a supported `type` propagates the attribute but does not render a visible icon. |
42
42
  | `type` | `type` | | `string` | | Applies the defined value as the type attribute on `auro-input`. |
43
43
  | `typedValue` | `typedValue` | | `string` | | Specifies the value of the input element within the combobox. |
44
44
  | `validity` | `validity` | | `string` | | Specifies the `validityState` this element is in. |
45
- | `value` | `value` | | `string` | | Value selected for the dropdown menu. |
45
+ | `value` | `value` | | `string` | | Value selected for the dropdown menu. 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` and `optionSelected` are cleared to `undefined`. `hidden` options (including those filtered out by type-ahead) remain selectable by value. |
46
46
 
47
47
  ## Methods
48
48
 
@@ -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>