@aurodesignsystem-dev/auro-formkit 0.0.0-pr1508.0 → 0.0.0-pr1508.2

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 (141) 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/customize.min.js +8 -6
  4. package/components/checkbox/demo/getting-started.min.js +8 -6
  5. package/components/checkbox/demo/index.min.js +8 -6
  6. package/components/checkbox/dist/index.js +8 -6
  7. package/components/checkbox/dist/registered.js +8 -6
  8. package/components/combobox/README.md +1 -1
  9. package/components/combobox/demo/customize.md +2 -10
  10. package/components/combobox/demo/customize.min.js +386 -305
  11. package/components/combobox/demo/getting-started.min.js +386 -301
  12. package/components/combobox/demo/index.md +1 -1
  13. package/components/combobox/demo/index.min.js +386 -301
  14. package/components/combobox/demo/keyboard-behavior.md +2 -142
  15. package/components/combobox/demo/readme.md +1 -1
  16. package/components/combobox/demo/why-combobox.md +2 -2
  17. package/components/combobox/dist/auro-combobox.d.ts +23 -16
  18. package/components/combobox/dist/index.js +385 -300
  19. package/components/combobox/dist/registered.js +385 -300
  20. package/components/counter/demo/customize.min.js +18 -8
  21. package/components/counter/demo/index.min.js +18 -8
  22. package/components/counter/dist/index.js +18 -8
  23. package/components/counter/dist/registered.js +18 -8
  24. package/components/datepicker/demo/accessibility.md +2 -1
  25. package/components/datepicker/demo/api.md +63 -62
  26. package/components/datepicker/demo/customize.md +12 -1
  27. package/components/datepicker/demo/customize.min.js +932 -335
  28. package/components/datepicker/demo/index.min.js +932 -335
  29. package/components/datepicker/dist/{src/auro-calendar-cell.d.ts → auro-calendar-cell.d.ts} +20 -3
  30. package/components/datepicker/dist/{src/auro-calendar.d.ts → auro-calendar.d.ts} +121 -7
  31. package/components/datepicker/dist/{src/auro-datepicker.d.ts → auro-datepicker.d.ts} +78 -5
  32. package/components/datepicker/dist/blackoutUtils.d.ts +43 -0
  33. package/components/datepicker/dist/index.js +932 -335
  34. package/components/datepicker/dist/registered.js +932 -335
  35. package/components/dropdown/demo/customize.min.js +2 -1
  36. package/components/dropdown/demo/getting-started.min.js +2 -1
  37. package/components/dropdown/demo/index.min.js +2 -1
  38. package/components/dropdown/dist/index.js +2 -1
  39. package/components/dropdown/dist/registered.js +2 -1
  40. package/components/form/demo/customize.min.js +1690 -826
  41. package/components/form/demo/getting-started.min.js +1690 -826
  42. package/components/form/demo/index.min.js +1690 -826
  43. package/components/form/demo/registerDemoDeps.min.js +1690 -826
  44. package/components/input/demo/api.md +5 -5
  45. package/components/input/demo/customize.md +8 -8
  46. package/components/input/demo/customize.min.js +137 -95
  47. package/components/input/demo/getting-started.min.js +137 -95
  48. package/components/input/demo/index.min.js +137 -95
  49. package/components/input/dist/base-input.d.ts +33 -44
  50. package/components/input/dist/index.js +150 -96
  51. package/components/input/dist/registered.js +137 -95
  52. package/components/radio/demo/customize.min.js +8 -6
  53. package/components/radio/demo/getting-started.min.js +8 -6
  54. package/components/radio/demo/index.min.js +8 -6
  55. package/components/radio/dist/index.js +8 -6
  56. package/components/radio/dist/registered.js +8 -6
  57. package/components/select/demo/customize.md +86 -0
  58. package/components/select/demo/customize.min.js +194 -68
  59. package/components/select/demo/getting-started.min.js +196 -115
  60. package/components/select/demo/index.min.js +194 -68
  61. package/components/select/demo/keyboard-behavior.md +18 -4
  62. package/components/select/dist/auro-select.d.ts +20 -8
  63. package/components/select/dist/index.js +194 -68
  64. package/components/select/dist/registered.js +194 -68
  65. package/custom-elements.json +2365 -1819
  66. package/package.json +6 -2
  67. package/components/checkbox/demo/customize.js +0 -22
  68. package/components/checkbox/demo/demo-support.js +0 -1
  69. package/components/checkbox/demo/getting-started.js +0 -22
  70. package/components/checkbox/demo/index.js +0 -8
  71. package/components/checkbox/demo/styles.scss +0 -1
  72. package/components/combobox/demo/customize.js +0 -24
  73. package/components/combobox/demo/demo-support.js +0 -1
  74. package/components/combobox/demo/getting-started.js +0 -21
  75. package/components/combobox/demo/index.js +0 -23
  76. package/components/combobox/demo/styles.scss +0 -1
  77. package/components/counter/demo/customize.js +0 -21
  78. package/components/counter/demo/demo-support.js +0 -1
  79. package/components/counter/demo/index.js +0 -21
  80. package/components/counter/demo/styles.scss +0 -1
  81. package/components/datepicker/demo/customize.js +0 -17
  82. package/components/datepicker/demo/demo-support.js +0 -1
  83. package/components/datepicker/demo/index.js +0 -23
  84. package/components/datepicker/demo/styles.scss +0 -1
  85. package/components/dropdown/demo/customize.js +0 -9
  86. package/components/dropdown/demo/demo-support.js +0 -1
  87. package/components/dropdown/demo/getting-started.js +0 -9
  88. package/components/dropdown/demo/index.js +0 -16
  89. package/components/dropdown/demo/styles.scss +0 -1
  90. package/components/form/demo/customize.js +0 -28
  91. package/components/form/demo/demo-support.js +0 -1
  92. package/components/form/demo/getting-started.js +0 -9
  93. package/components/form/demo/index.js +0 -5
  94. package/components/form/demo/registerDemoDeps.js +0 -23
  95. package/components/form/demo/styles.scss +0 -1
  96. package/components/input/demo/customize.js +0 -25
  97. package/components/input/demo/demo-support.js +0 -1
  98. package/components/input/demo/getting-started.js +0 -8
  99. package/components/input/demo/index.js +0 -8
  100. package/components/input/demo/styles.css +0 -974
  101. package/components/input/demo/styles.scss +0 -1
  102. package/components/menu/demo/demo-support.js +0 -1
  103. package/components/menu/demo/index.js +0 -25
  104. package/components/menu/demo/styles.scss +0 -1
  105. package/components/radio/demo/customize.js +0 -22
  106. package/components/radio/demo/demo-support.js +0 -1
  107. package/components/radio/demo/getting-started.js +0 -24
  108. package/components/radio/demo/index.js +0 -8
  109. package/components/radio/demo/styles.scss +0 -1
  110. package/components/select/demo/customize.js +0 -11
  111. package/components/select/demo/demo-support.js +0 -1
  112. package/components/select/demo/getting-started.js +0 -26
  113. package/components/select/demo/index.js +0 -11
  114. package/components/select/demo/styles.scss +0 -1
  115. /package/components/datepicker/dist/{src/auro-calendar-month.d.ts → auro-calendar-month.d.ts} +0 -0
  116. /package/components/datepicker/dist/{src/buttonVersion.d.ts → buttonVersion.d.ts} +0 -0
  117. /package/components/datepicker/dist/{src/datepickerKeyboardStrategy.d.ts → datepickerKeyboardStrategy.d.ts} +0 -0
  118. /package/components/datepicker/dist/{src/iconVersion.d.ts → iconVersion.d.ts} +0 -0
  119. /package/components/datepicker/dist/{src/index.d.ts → index.d.ts} +0 -0
  120. /package/components/datepicker/dist/{src/popoverVersion.d.ts → popoverVersion.d.ts} +0 -0
  121. /package/components/datepicker/dist/{src/styles → styles}/classic/color-css.d.ts +0 -0
  122. /package/components/datepicker/dist/{src/styles → styles}/classic/style-css.d.ts +0 -0
  123. /package/components/datepicker/dist/{src/styles → styles}/color-calendar-css.d.ts +0 -0
  124. /package/components/datepicker/dist/{src/styles → styles}/color-cell-css.d.ts +0 -0
  125. /package/components/datepicker/dist/{src/styles → styles}/color-css.d.ts +0 -0
  126. /package/components/datepicker/dist/{src/styles → styles}/color-month-css.d.ts +0 -0
  127. /package/components/datepicker/dist/{src/styles → styles}/shapeSize-css.d.ts +0 -0
  128. /package/components/datepicker/dist/{src/styles → styles}/snowflake/color-css.d.ts +0 -0
  129. /package/components/datepicker/dist/{src/styles → styles}/snowflake/style-css.d.ts +0 -0
  130. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-cell-css.d.ts +0 -0
  131. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-css.d.ts +0 -0
  132. /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-month-css.d.ts +0 -0
  133. /package/components/datepicker/dist/{src/styles → styles}/style-css.d.ts +0 -0
  134. /package/components/datepicker/dist/{src/styles → styles}/tokens-css.d.ts +0 -0
  135. /package/components/datepicker/dist/{src/utilities.d.ts → utilities.d.ts} +0 -0
  136. /package/components/datepicker/dist/{src/utilitiesCalendar.d.ts → utilitiesCalendar.d.ts} +0 -0
  137. /package/components/datepicker/dist/{src/utilitiesCalendarRender.d.ts → utilitiesCalendarRender.d.ts} +0 -0
  138. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/day.d.ts +0 -0
  139. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-calendar.d.ts +0 -0
  140. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-cell.d.ts +0 -0
  141. /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker.d.ts +0 -0
@@ -13,20 +13,20 @@ The `auro-input` element provides users a way to enter data into a text field.
13
13
  | `a11yControls` | `a11yControls` | | `string` | | The value for the aria-controls attribute. |
14
14
  | `a11yExpanded` | `a11yExpanded` | | `boolean` | | The value for the aria-expanded attribute. |
15
15
  | `a11yRole` | `a11yRole` | | `string` | | The value for the role attribute. |
16
- | `activeLabel` | `activeLabel` | | `boolean` | | If set, the label will remain fixed in the active position. |
16
+ | `activeLabel` | `activeLabel` | | `boolean` | false | If set, the label will remain fixed in the active position. |
17
17
  | `appearance` | `appearance` | | `'default' \| 'inverse'` | "'default'" | Defines whether the component will be on lighter or darker backgrounds. |
18
18
  | `autocapitalize` | `autocapitalize` | | `string` | | An enumerated attribute that controls whether and how text input is automatically capitalized as it is entered/edited by the user. [off/none, on/sentences, words, characters]. |
19
19
  | `autocomplete` | `autocomplete` | | `string` | | An enumerated attribute that defines what the user agent can suggest for autofill. At this time, only `autocomplete="off"` is supported. |
20
20
  | `autocorrect` | `autocorrect` | | `string` | | When set to `off`, stops iOS from auto-correcting words when typed into a text box. |
21
21
  | `customValidityTypeEmail` | `customValidityTypeEmail` | | `string` | | Custom help text message for email type validity. |
22
22
  | `disabled` | `disabled` | | `boolean` | false | If set, disables the input. |
23
- | `dvInputOnly` | `dvInputOnly` | | `boolean` | | If defined, the display value slot content will only mask the HTML5 input element. The input's label will not be masked. |
23
+ | `dvInputOnly` | `dvInputOnly` | | `boolean` | false | If defined, the display value slot content will only mask the HTML5 input element. The input's label will not be masked. |
24
24
  | `error` | `error` | | `string` | | When defined, sets persistent validity to `customError` and sets `setCustomValidity` = attribute value. |
25
25
  | `errorMessage` | `errorMessage` | | `string` | | Contains the help text message for the current validity error. |
26
26
  | `format` | `format` | | `string` | | Specifies the input mask format. |
27
27
  | `hasFocus` | | | `boolean` | | Flag to indicate if the input currently has focus. |
28
- | `hasValue` | | | `boolean` | | Flag to indicate if the input currently has value. |
29
- | `icon` | `icon` | | `boolean` | | If set, will render an icon inside the input to the left of the value. Support is limited to auro-input instances with credit card format. |
28
+ | `hasValue` | | | `boolean` | false | Flag to indicate if the input currently has value. |
29
+ | `icon` | `icon` | | `boolean` | false | If set, will render an icon inside the input to the left of the value. Support is limited to auro-input instances with credit card format. |
30
30
  | `id` | `id` | | `string` | | The id global attribute defines an identifier (ID) which must be unique in the whole document. |
31
31
  | `inputmode` | `inputmode` | | `string` | | Exposes inputmode attribute for input. |
32
32
  | `lang` | `lang` | | `string` | | Defines the language of an element. |
@@ -40,7 +40,7 @@ The `auro-input` element provides users a way to enter data into a text field.
40
40
  | `minObject` | | readonly | `Date \| undefined` | | Read-only Date object representation of `min` for full date formats. |
41
41
  | `name` | `name` | | `string` | | Populates the `name` attribute on the input. |
42
42
  | `nested` | `nested` | | `boolean` | | Sets styles for nested operation - removes borders, hides help + error text, and<br />hides accents. |
43
- | `noValidate` | `noValidate` | | `boolean` | | If set, disables auto-validation on blur. |
43
+ | `noValidate` | `noValidate` | | `boolean` | false | If set, disables auto-validation on blur. |
44
44
  | `onDark` | `onDark` | | `boolean` | false | DEPRECATED - use `appearance="inverse"` instead. |
45
45
  | `pattern` | `pattern` | | `string` | | Specifies a regular expression the form control's value should match. |
46
46
  | `placeholder` | `placeholder` | | `string` | | Define custom placeholder text. |
@@ -646,7 +646,7 @@
646
646
  <div class="exampleWrapper">
647
647
  <!-- AURO-GENERATED-CONTENT:START (FILE:src=../apiExamples/set-custom-validity-range-overflow.html) -->
648
648
  <!-- The below content is automatically added from ../apiExamples/set-custom-validity-range-overflow.html -->
649
- <auro-input type="date" max="12/31/2025" setCustomValidityRangeOverflow="Date must be on or before 12/31/2025.">
649
+ <auro-input type="date" max="2025-12-31" setCustomValidityRangeOverflow="Date must be on or before 12/31/2025.">
650
650
  <span slot="label">Event Date</span>
651
651
  <span slot="helpText">Enter a date no later than 12/31/2025.</span>
652
652
  </auro-input>
@@ -656,7 +656,7 @@
656
656
  <span slot="trigger">See code</span>
657
657
  <!-- AURO-GENERATED-CONTENT:START (CODE:src=../apiExamples/set-custom-validity-range-overflow.html) -->
658
658
  <!-- The below code snippet is automatically added from ../apiExamples/set-custom-validity-range-overflow.html -->
659
- <pre class="language-html"><code class="language-html">&lt;auro-input type="date" max="12/31/2025" setCustomValidityRangeOverflow="Date must be on or before 12/31/2025."&gt;
659
+ <pre class="language-html"><code class="language-html">&lt;auro-input type="date" max="2025-12-31" setCustomValidityRangeOverflow="Date must be on or before 12/31/2025."&gt;
660
660
  &lt;span slot="label"&gt;Event Date&lt;/span&gt;
661
661
  &lt;span slot="helpText"&gt;Enter a date no later than 12/31/2025.&lt;/span&gt;
662
662
  &lt;/auro-input&gt;</code></pre>
@@ -667,7 +667,7 @@
667
667
  <div class="exampleWrapper">
668
668
  <!-- AURO-GENERATED-CONTENT:START (FILE:src=../apiExamples/set-custom-validity-range-underflow.html) -->
669
669
  <!-- The below content is automatically added from ../apiExamples/set-custom-validity-range-underflow.html -->
670
- <auro-input type="date" min="01/01/2024" setCustomValidityRangeUnderflow="Date must be on or after 01/01/2024.">
670
+ <auro-input type="date" min="2024-01-01" setCustomValidityRangeUnderflow="Date must be on or after 01/01/2024.">
671
671
  <span slot="label">Start Date</span>
672
672
  <span slot="helpText">Enter a date no earlier than 01/01/2024.</span>
673
673
  </auro-input>
@@ -677,7 +677,7 @@
677
677
  <span slot="trigger">See code</span>
678
678
  <!-- AURO-GENERATED-CONTENT:START (CODE:src=../apiExamples/set-custom-validity-range-underflow.html) -->
679
679
  <!-- The below code snippet is automatically added from ../apiExamples/set-custom-validity-range-underflow.html -->
680
- <pre class="language-html"><code class="language-html">&lt;auro-input type="date" min="01/01/2024" setCustomValidityRangeUnderflow="Date must be on or after 01/01/2024."&gt;
680
+ <pre class="language-html"><code class="language-html">&lt;auro-input type="date" min="2024-01-01" setCustomValidityRangeUnderflow="Date must be on or after 01/01/2024."&gt;
681
681
  &lt;span slot="label"&gt;Start Date&lt;/span&gt;
682
682
  &lt;span slot="helpText"&gt;Enter a date no earlier than 01/01/2024.&lt;/span&gt;
683
683
  &lt;/auro-input&gt;</code></pre>
@@ -888,7 +888,7 @@
888
888
  <div class="exampleWrapper">
889
889
  <!-- AURO-GENERATED-CONTENT:START (FILE:src=../apiExamples/max-date.html) -->
890
890
  <!-- The below content is automatically added from ../apiExamples/max-date.html -->
891
- <auro-input type="date" max="03/25/2023" setCustomValidityRangeOverflow="The selected date is past the defined maximum date.">
891
+ <auro-input type="date" max="2023-03-25" setCustomValidityRangeOverflow="The selected date is past the defined maximum date.">
892
892
  <span slot="label">Choose a date</span>
893
893
  <span slot="helpText">Help Text</span>
894
894
  </auro-input>
@@ -898,7 +898,7 @@
898
898
  <span slot="trigger">See code</span>
899
899
  <!-- AURO-GENERATED-CONTENT:START (CODE:src=../apiExamples/max-date.html) -->
900
900
  <!-- The below code snippet is automatically added from ../apiExamples/max-date.html -->
901
- <pre class="language-html"><code class="language-html">&lt;auro-input type="date" max="03/25/2023" setCustomValidityRangeOverflow="The selected date is past the defined maximum date."&gt;
901
+ <pre class="language-html"><code class="language-html">&lt;auro-input type="date" max="2023-03-25" setCustomValidityRangeOverflow="The selected date is past the defined maximum date."&gt;
902
902
  &lt;span slot="label"&gt;Choose a date&lt;/span&gt;
903
903
  &lt;span slot="helpText"&gt;Help Text&lt;/span&gt;
904
904
  &lt;/auro-input&gt;</code></pre>
@@ -954,7 +954,7 @@
954
954
  <div class="exampleWrapper">
955
955
  <!-- AURO-GENERATED-CONTENT:START (FILE:src=../apiExamples/min-date.html) -->
956
956
  <!-- The below content is automatically added from ../apiExamples/min-date.html -->
957
- <auro-input type="date" min="03/25/2023" setCustomValidityRangeUnderflow="The selected date is before the defined minimum date.">
957
+ <auro-input type="date" min="2023-03-25" setCustomValidityRangeUnderflow="The selected date is before the defined minimum date.">
958
958
  <span slot="label">Choose a date</span>
959
959
  <span slot="helpText">Help Text</span>
960
960
  </auro-input>
@@ -964,7 +964,7 @@
964
964
  <span slot="trigger">See code</span>
965
965
  <!-- AURO-GENERATED-CONTENT:START (CODE:src=../apiExamples/min-date.html) -->
966
966
  <!-- The below code snippet is automatically added from ../apiExamples/min-date.html -->
967
- <pre class="language-html"><code class="language-html">&lt;auro-input type="date" min="03/25/2023" setCustomValidityRangeUnderflow="The selected date is before the defined minimum date."&gt;
967
+ <pre class="language-html"><code class="language-html">&lt;auro-input type="date" min="2023-03-25" setCustomValidityRangeUnderflow="The selected date is before the defined minimum date."&gt;
968
968
  &lt;span slot="label"&gt;Choose a date&lt;/span&gt;
969
969
  &lt;span slot="helpText"&gt;Help Text&lt;/span&gt;
970
970
  &lt;/auro-input&gt;</code></pre>
@@ -4441,15 +4441,17 @@ class AuroFormValidation {
4441
4441
  );
4442
4442
  }
4443
4443
 
4444
- // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
4445
- if (this.auroInputElements?.length === 2) {
4446
- if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
4444
+ const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
4445
+
4446
+ // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
4447
+ // Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
4448
+ // field (datepicker is the intended consumer — start/end are independently required).
4449
+ if (this.auroInputElements?.length === 2 && !isCombobox) {
4450
+ if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
4447
4451
  hasValue = false;
4448
4452
  }
4449
4453
  }
4450
4454
 
4451
- const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
4452
-
4453
4455
  if (isCombobox) {
4454
4456
 
4455
4457
  if (!elem.persistInput || elem.behavior === "filter") {
@@ -10385,6 +10387,13 @@ class AuroInputUtilities {
10385
10387
  * @returns {string | undefined}
10386
10388
  */
10387
10389
  toFormattedValue(valueObject, format) {
10390
+ // Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
10391
+ // `format` argument has to fail gracefully rather than throw on
10392
+ // `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
10393
+ // as "no format → no display value".
10394
+ if (!format) {
10395
+ return undefined;
10396
+ }
10388
10397
  const normalizedFormat = format.toLowerCase();
10389
10398
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
10390
10399
 
@@ -10536,76 +10545,19 @@ class BaseInput extends AuroElement {
10536
10545
  constructor() {
10537
10546
  super();
10538
10547
 
10539
- this.appearance = "default";
10540
- this.disabled = false;
10541
- this.layout = 'classic';
10542
- this.locale = 'en-US';
10543
- this.max = undefined;
10544
- this.maxLength = undefined;
10545
- this.min = undefined;
10546
- this.minLength = undefined;
10547
- this.required = false;
10548
- this.onDark = false;
10549
- this.setCustomValidityForType = undefined;
10550
- this.size = 'lg';
10551
- this.shape = 'classic';
10552
- this.value = undefined;
10553
-
10554
- this._initializePrivateDefaults();
10555
- }
10556
-
10557
- /**
10558
- * Internal Defaults.
10559
- * @private
10560
- * @returns {void}
10561
- */
10562
- _initializePrivateDefaults() {
10548
+ // Single-source initialization. Alphabetized so duplicate or stale
10549
+ // defaults are immediately obvious on a diff. Every field is assigned
10550
+ // exactly once here (previously the constructor + the old
10551
+ // `_initializePrivateDefaults` overlapped — both wrote ~14 of the same
10552
+ // fields and double-allocated `util` and `validation`, discarding the
10553
+ // first instance). `validation` is now allocated exactly once; `util`
10554
+ // is seeded here with an en-US default and then rebuilt in
10555
+ // `connectedCallback` once the consumer-resolved locale is available,
10556
+ // so a parent (datepicker/combobox) calling `validate()` synchronously
10557
+ // during its own update cycle sees a populated util instance.
10563
10558
  this.activeLabel = false;
10564
- this.appearance = "default";
10565
- this.icon = false;
10566
- this.disabled = false;
10567
- this.dvInputOnly = false;
10568
- this.hideLabelVisually = false;
10569
- this.max = undefined;
10570
- this.maxLength = undefined;
10571
- this.min = undefined;
10572
- this.minLength = undefined;
10573
- this.noValidate = false;
10574
- this.onDark = false;
10575
- this.required = false;
10576
- this.setCustomValidityForType = undefined;
10577
-
10578
- // Used for storing raw values returned from input mask.
10579
- this._rawMaskValue = undefined;
10580
-
10581
- /**
10582
- * @private
10583
- */
10584
- this.layout = 'classic';
10585
-
10586
- /**
10587
- * @private
10588
- */
10589
- this.shape = 'classic';
10590
-
10591
- /**
10592
- * @private
10593
- */
10594
- this.size = 'lg';
10595
-
10596
- this.touched = false;
10597
- this.util = new AuroInputUtilities({
10598
- locale: "en-US",
10599
- format: this.format
10600
- });
10601
- this.validation = new AuroFormValidation();
10602
- this.inputIconName = undefined;
10603
- this.showPassword = false;
10604
- this.validationCCLength = undefined;
10605
- this.hasValue = false;
10606
- this.label = 'Input label is undefined';
10607
-
10608
10559
 
10560
+ /** @private */
10609
10561
  this.allowedInputTypes = [
10610
10562
  "text",
10611
10563
  "number",
@@ -10614,7 +10566,9 @@ class BaseInput extends AuroElement {
10614
10566
  "credit-card",
10615
10567
  "tel"
10616
10568
  ];
10617
- this.icon = false;
10569
+ this.appearance = "default";
10570
+
10571
+ /** @private */
10618
10572
  this.dateFormatMap = {
10619
10573
  'mm/dd/yyyy': 'dateMMDDYYYY',
10620
10574
  'dd/mm/yyyy': 'dateDDMMYYYY',
@@ -10631,27 +10585,62 @@ class BaseInput extends AuroElement {
10631
10585
  'dd/mm': 'dateDDMM',
10632
10586
  'mm/dd': 'dateMMDD'
10633
10587
  };
10588
+ this.disabled = false;
10589
+
10590
+ /** @private */
10634
10591
  this.domHandler = new DomHandler();
10635
10592
  this.dvInputOnly = false;
10636
10593
  this.hasValue = false;
10594
+ this.hideLabelVisually = false;
10595
+ this.icon = false;
10596
+
10597
+ /** @private */
10637
10598
  this.inputIconName = undefined;
10599
+
10600
+ /** @private */
10638
10601
  this.label = 'Input label is undefined';
10602
+ this.layout = 'classic';
10603
+ this.locale = 'en-US';
10604
+ this.max = undefined;
10605
+ this.maxLength = undefined;
10606
+ this.min = undefined;
10607
+ this.minLength = undefined;
10639
10608
  this.noValidate = false;
10640
- this._rawMaskValue = undefined; // Used for storing raw values returned from input mask.
10609
+ this.onDark = false;
10610
+ // Raw values returned from the input mask before model normalization.
10611
+ this._rawMaskValue = undefined;
10612
+ this.required = false;
10613
+ this.setCustomValidityForType = undefined;
10614
+ // Credit Card is intentionally excluded — its mask manages the cursor
10615
+ // itself, and listing it here caused cursor placement issues in Safari.
10616
+ /** @private */
10641
10617
  this.setSelectionInputTypes = [
10642
10618
  "text",
10643
10619
  "password",
10644
10620
  "email"
10645
- ]; // Credit Card is not included as this caused cursor placement issues in Safari.
10621
+ ];
10622
+ this.shape = 'classic';
10623
+
10624
+ /** @private */
10646
10625
  this.showPassword = false;
10626
+ this.size = 'lg';
10647
10627
  this.touched = false;
10628
+
10629
+ /** @private */
10648
10630
  this.uniqueId = new UniqueId().create();
10631
+
10632
+ /** @private */
10649
10633
  this.util = new AuroInputUtilities({
10650
10634
  locale: this.locale,
10651
10635
  format: this.format
10652
10636
  });
10637
+
10638
+ /** @private */
10653
10639
  this.validation = new AuroFormValidation();
10640
+
10641
+ /** @private */
10654
10642
  this.validationCCLength = undefined;
10643
+ this.value = undefined;
10655
10644
  }
10656
10645
 
10657
10646
  // function to define props used within the scope of this component
@@ -11155,6 +11144,15 @@ class BaseInput extends AuroElement {
11155
11144
 
11156
11145
  this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
11157
11146
 
11147
+ // Normalize the format token to lowercase so case-mixed values supplied
11148
+ // via attribute (e.g. `format="MM/DD/YYYY"`) hit the `dateFormatMap`
11149
+ // lookup inside `setCustomHelpTextMessage`. Without this, an uppercase
11150
+ // format silently misses the map and leaves `setCustomValidityForType`
11151
+ // unset.
11152
+ if (this.format) {
11153
+ this.format = this.format.toLowerCase();
11154
+ }
11155
+
11158
11156
  // use validity message override if declared when initializing the component
11159
11157
  if (this.hasAttribute('setCustomValidity')) {
11160
11158
  this.ValidityMessageOverride = this.setCustomValidity;
@@ -11238,6 +11236,13 @@ class BaseInput extends AuroElement {
11238
11236
 
11239
11237
  if (typeToI18n.includes(this.type)) {
11240
11238
  this.setCustomValidityForType = i18n(this.lang, this.type);
11239
+ // COVERAGE: this `else if` branch is unreachable in WTR. connectedCallback
11240
+ // (L682) calls configureDataForType, which at L1266-1268 assigns
11241
+ // `this.format = this.util.getDateMaskFromLocale().toLowerCase()` for any
11242
+ // type=date input whose `format` attribute is unset. That runs before
11243
+ // firstUpdated invokes setCustomHelpTextMessage, so `!this.format` is
11244
+ // always false here. Retained as a defensive fallback; the whole function
11245
+ // is @deprecated per AB#1557296 and slated for removal.
11241
11246
  } else if (!this.format && this.type === 'date') {
11242
11247
  this.setCustomValidityForType = i18n(this.lang, 'dateMMDDYYYY');
11243
11248
  } else if (this.dateFormatMap[this.format]) {
@@ -11527,6 +11532,38 @@ class BaseInput extends AuroElement {
11527
11532
  this.touched = true;
11528
11533
  this.validation.validate(this);
11529
11534
  }
11535
+
11536
+ // Prevents cursor jumping in Safari. Setting `this.value` triggers a Lit
11537
+ // update that can re-render the input and reset the native cursor; we
11538
+ // capture the caret position before that update commits and restore it
11539
+ // via `setSelectionRange` once the update has flushed. Gated on
11540
+ // `setSelectionInputTypes` so credit-card (and other masked types whose
11541
+ // formatter manages the cursor itself) doesn't get a competing write.
11542
+ // Capture the caret position INSIDE the gate — reading `selectionStart`
11543
+ // on input types that don't support text selection (number, email in
11544
+ // some browsers) throws InvalidStateError, which would crash all input
11545
+ // handling. Wrap the read in try/catch belt-and-suspenders even though
11546
+ // the gated types currently support it, since the list is a public
11547
+ // property a consumer could mutate.
11548
+ if (this.setSelectionInputTypes.includes(this.type)) {
11549
+ let selectionStart = null;
11550
+ try {
11551
+ ({ selectionStart } = this.inputElement);
11552
+ } catch (error) { // eslint-disable-line no-unused-vars
11553
+ return;
11554
+ }
11555
+ if (typeof selectionStart !== 'number') {
11556
+ return;
11557
+ }
11558
+ this.updateComplete.then(() => {
11559
+ try {
11560
+ this.inputElement.setSelectionRange(selectionStart, selectionStart);
11561
+ } catch (error) { // eslint-disable-line no-unused-vars
11562
+ // Some input types (number/email in certain UAs) throw on
11563
+ // setSelectionRange; swallow and let the native cursor stand.
11564
+ }
11565
+ });
11566
+ }
11530
11567
  }
11531
11568
 
11532
11569
  /**
@@ -11660,7 +11697,7 @@ class BaseInput extends AuroElement {
11660
11697
  */
11661
11698
  get placeholderStr() {
11662
11699
  if (!this.placeholder && this.type === 'date') {
11663
- return this.format ? this.format.toUpperCase() : 'MM/DD/YYYY';
11700
+ return this.format.toUpperCase();
11664
11701
  }
11665
11702
  return this.placeholder || "";
11666
11703
  }
@@ -12151,7 +12188,7 @@ class AuroHelpText extends i$3 {
12151
12188
  }
12152
12189
  }
12153
12190
 
12154
- var formkitVersion = '202606231948';
12191
+ var formkitVersion = '202607010104';
12155
12192
 
12156
12193
  /**
12157
12194
  * @license
@@ -12666,6 +12703,7 @@ class AuroInput extends BaseInput {
12666
12703
  <${this.buttonTag}
12667
12704
  @click="${this.handleClickShowPassword}"
12668
12705
  appearance="${this.onDark ? 'inverse' : this.appearance}"
12706
+ aria-pressed="${this.showPassword ? 'true' : 'false'}"
12669
12707
  class="notificationBtn passwordBtn"
12670
12708
  shape="circle"
12671
12709
  size="sm"
@@ -12739,25 +12777,29 @@ class AuroInput extends BaseInput {
12739
12777
  * @returns {html} - Returns HTML for the help text and error message.
12740
12778
  */
12741
12779
  renderHtmlHelpText() {
12780
+ // Single `<p>` with stable identity across validity transitions —
12781
+ // previously two distinct templates (valid vs invalid) caused Lit to
12782
+ // replace the node entirely on a flip, and VoiceOver wouldn't
12783
+ // re-announce because the live-region element it was watching had been
12784
+ // removed and a new one inserted. Keeping one node means the `role`,
12785
+ // `aria-live`, and text content all change in-place, which AT does
12786
+ // observe and announce.
12787
+ const isError = this.validity && this.validity !== 'valid';
12742
12788
  return u$4`
12743
- ${!this.validity || this.validity === undefined || this.validity === 'valid'
12744
- ? u$4`
12745
- <${this.helpTextTag}
12746
- appearance="${this.onDark ? 'inverse' : this.appearance}">
12747
- <p id="${this.uniqueId}" part="helpText">
12748
- <slot name="helpText">${this.getHelpText()}</slot>
12749
- </p>
12750
- </${this.helpTextTag}>
12751
- `
12752
- : u$4`
12753
- <${this.helpTextTag} error
12754
- appearance="${this.onDark ? 'inverse' : this.appearance}">
12755
- <p id="${this.uniqueId}" role="alert" aria-live="assertive" part="helpText">
12756
- ${this.errorMessage}
12757
- </p>
12758
- </${this.helpTextTag}>
12759
- `
12789
+ <${this.helpTextTag}
12790
+ appearance="${this.onDark ? 'inverse' : this.appearance}"
12791
+ ?error=${isError}>
12792
+ <p
12793
+ id="${this.uniqueId}"
12794
+ part="helpText"
12795
+ role="${o$2(isError ? 'alert' : undefined)}"
12796
+ aria-live="${o$2(isError ? 'assertive' : undefined)}">
12797
+ ${isError
12798
+ ? this.errorMessage
12799
+ : u$4`<slot name="helpText">${this.getHelpText()}</slot>`
12760
12800
  }
12801
+ </p>
12802
+ </${this.helpTextTag}>
12761
12803
  `;
12762
12804
  }
12763
12805