@aurodesignsystem/auro-formkit 2.0.0-beta.2 → 2.0.0-beta.3

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 (211) hide show
  1. package/.turbo/cache/013a48308b893dac-meta.json +1 -1
  2. package/.turbo/cache/02244170c798a2bd-meta.json +1 -0
  3. package/.turbo/cache/02244170c798a2bd.tar.zst +0 -0
  4. package/.turbo/cache/07ca42419b9f050c-meta.json +1 -1
  5. package/.turbo/cache/0cea4c1f34f3683b-meta.json +1 -1
  6. package/.turbo/cache/17259cf94d8f8925-meta.json +1 -1
  7. package/.turbo/cache/1ab37ce15d9be440-meta.json +1 -0
  8. package/.turbo/cache/1ab37ce15d9be440.tar.zst +0 -0
  9. package/.turbo/cache/1b9818717e4bdf9f-meta.json +1 -0
  10. package/.turbo/cache/1b9818717e4bdf9f.tar.zst +0 -0
  11. package/.turbo/cache/1c0f580d37370ba2-meta.json +1 -0
  12. package/.turbo/cache/1c0f580d37370ba2.tar.zst +0 -0
  13. package/.turbo/cache/1c99a949ec63ab35-meta.json +1 -1
  14. package/.turbo/cache/1de15d89eed2d760-meta.json +1 -1
  15. package/.turbo/cache/2110a4d14e0d11b2-meta.json +1 -0
  16. package/.turbo/cache/2110a4d14e0d11b2.tar.zst +0 -0
  17. package/.turbo/cache/257a7a26ea72dbc5-meta.json +1 -1
  18. package/.turbo/cache/2990aaa7ebc5b967-meta.json +1 -1
  19. package/.turbo/cache/2990aaa7ebc5b967.tar.zst +0 -0
  20. package/.turbo/cache/2fd056afdf4eb39d-meta.json +1 -0
  21. package/.turbo/cache/2fd056afdf4eb39d.tar.zst +0 -0
  22. package/.turbo/cache/3bf45120d0cc9bd8-meta.json +1 -1
  23. package/.turbo/cache/3e12285c614db539-meta.json +1 -0
  24. package/.turbo/cache/3e12285c614db539.tar.zst +0 -0
  25. package/.turbo/cache/45035bf5c4147ccd-meta.json +1 -1
  26. package/.turbo/cache/4f92cea2d8c63de2-meta.json +1 -1
  27. package/.turbo/cache/5bf2d3f7ba5891e0-meta.json +1 -0
  28. package/.turbo/cache/5bf2d3f7ba5891e0.tar.zst +0 -0
  29. package/.turbo/cache/5c16ce3cff5c9dff-meta.json +1 -1
  30. package/.turbo/cache/5f304c0f37ef25f3-meta.json +1 -1
  31. package/.turbo/cache/64de7a53e02db647-meta.json +1 -1
  32. package/.turbo/cache/691a74627ec57993-meta.json +1 -1
  33. package/.turbo/cache/69aae513b7ec6c7d-meta.json +1 -1
  34. package/.turbo/cache/6dd67d179191bda8-meta.json +1 -0
  35. package/.turbo/cache/6dd67d179191bda8.tar.zst +0 -0
  36. package/.turbo/cache/6dd7058e6703cb35-meta.json +1 -1
  37. package/.turbo/cache/73e9073a5274616d-meta.json +1 -1
  38. package/.turbo/cache/773edc0f83c8c5a5-meta.json +1 -1
  39. package/.turbo/cache/784c03fe9fd5ac05-meta.json +1 -1
  40. package/.turbo/cache/786a822763403879-meta.json +1 -1
  41. package/.turbo/cache/7e1043cffa69f327-meta.json +1 -0
  42. package/.turbo/cache/7e1043cffa69f327.tar.zst +0 -0
  43. package/.turbo/cache/80a13352066a9801-meta.json +1 -0
  44. package/.turbo/cache/80a13352066a9801.tar.zst +0 -0
  45. package/.turbo/cache/80b5d974184a01df-meta.json +1 -1
  46. package/.turbo/cache/87219c41a4ace9cd-meta.json +1 -1
  47. package/.turbo/cache/87219c41a4ace9cd.tar.zst +0 -0
  48. package/.turbo/cache/8954c6073396fadd-meta.json +1 -1
  49. package/.turbo/cache/8e79bd5c3a16a72e-meta.json +1 -0
  50. package/.turbo/cache/92daa6d7c389d548-meta.json +1 -1
  51. package/.turbo/cache/993dff2edb7b6766-meta.json +1 -1
  52. package/.turbo/cache/9a097d6576dadd64-meta.json +1 -1
  53. package/.turbo/cache/a63cbfecf0f78586-meta.json +1 -0
  54. package/.turbo/cache/{ce67b6522dd09e64.tar.zst → a63cbfecf0f78586.tar.zst} +0 -0
  55. package/.turbo/cache/a6a56bb802e1c20f-meta.json +1 -1
  56. package/.turbo/cache/a77bc920ea508bb8-meta.json +1 -1
  57. package/.turbo/cache/a77bc920ea508bb8.tar.zst +0 -0
  58. package/.turbo/cache/b2c66328fdd78093-meta.json +1 -0
  59. package/.turbo/cache/b2c66328fdd78093.tar.zst +0 -0
  60. package/.turbo/cache/b54fc4f664a7a5a0-meta.json +1 -1
  61. package/.turbo/cache/ba4418918621fbcd-meta.json +1 -1
  62. package/.turbo/cache/be7c23c37b8ec74b-meta.json +1 -1
  63. package/.turbo/cache/be7c23c37b8ec74b.tar.zst +0 -0
  64. package/.turbo/cache/bffc7582905c2a5e-meta.json +1 -0
  65. package/.turbo/cache/bffc7582905c2a5e.tar.zst +0 -0
  66. package/.turbo/cache/caa0b4ac8d2a04dd-meta.json +1 -1
  67. package/.turbo/cache/caa0b4ac8d2a04dd.tar.zst +0 -0
  68. package/.turbo/cache/cc81de9c0b452a7c-meta.json +1 -1
  69. package/.turbo/cache/d39e6ef95ebc4cc0-meta.json +1 -0
  70. package/.turbo/cache/d39e6ef95ebc4cc0.tar.zst +0 -0
  71. package/.turbo/cache/d572ebb3c833e8f4-meta.json +1 -0
  72. package/.turbo/cache/d572ebb3c833e8f4.tar.zst +0 -0
  73. package/.turbo/cache/d61543843c932504-meta.json +1 -0
  74. package/.turbo/cache/d61543843c932504.tar.zst +0 -0
  75. package/.turbo/cache/dad1301ac69bcb85-meta.json +1 -1
  76. package/.turbo/cache/dea5945f55c6aba5-meta.json +1 -0
  77. package/.turbo/cache/dea5945f55c6aba5.tar.zst +0 -0
  78. package/.turbo/cache/e992dab20aeefbaf-meta.json +1 -1
  79. package/.turbo/cache/e992dab20aeefbaf.tar.zst +0 -0
  80. package/.turbo/cache/f411e2deb0676959-meta.json +1 -0
  81. package/.turbo/cache/f411e2deb0676959.tar.zst +0 -0
  82. package/.turbo/cache/fa132b5b5f0e75f8-meta.json +1 -1
  83. package/.turbo/cache/fbbe2704bf9cb90b-meta.json +1 -1
  84. package/CHANGELOG.md +26 -0
  85. package/components/checkbox/.turbo/turbo-build.log +3 -3
  86. package/components/checkbox/.turbo/turbo-bundler.log +3 -3
  87. package/components/checkbox/demo/api.md +4 -2
  88. package/components/checkbox/demo/api.min.js +31 -36
  89. package/components/checkbox/demo/index.min.js +31 -36
  90. package/components/checkbox/dist/auro-checkbox-group.d.ts +1 -1
  91. package/components/checkbox/dist/index.js +31 -36
  92. package/components/checkbox/src/auro-checkbox-group.js +2 -2
  93. package/components/combobox/.turbo/turbo-build.log +3 -3
  94. package/components/combobox/demo/api.md +17 -15
  95. package/components/combobox/demo/api.min.js +104 -116
  96. package/components/combobox/demo/index.min.js +104 -116
  97. package/components/combobox/dist/auro-combobox.d.ts +11 -4
  98. package/components/combobox/dist/auro-combobox.d.ts.map +1 -1
  99. package/components/combobox/dist/index.js +103 -115
  100. package/components/combobox/src/auro-combobox.js +22 -20
  101. package/components/counter/.turbo/turbo-build.log +3 -3
  102. package/components/counter/.turbo/turbo-bundler.log +3 -3
  103. package/components/datepicker/.turbo/turbo-build.log +9 -8
  104. package/components/datepicker/demo/api.md +107 -87
  105. package/components/datepicker/demo/api.min.js +96 -130
  106. package/components/datepicker/demo/index.min.js +96 -130
  107. package/components/datepicker/dist/auro-datepicker.d.ts +6 -13
  108. package/components/datepicker/dist/auro-datepicker.d.ts.map +1 -1
  109. package/components/datepicker/dist/index.js +96 -130
  110. package/components/datepicker/src/auro-datepicker.js +15 -35
  111. package/components/dropdown/.turbo/turbo-build.log +3 -3
  112. package/components/dropdown/.turbo/turbo-bundler.log +2 -2
  113. package/components/form/.turbo/turbo-build.log +3 -3
  114. package/components/form/.turbo/turbo-bundler.log +3 -3
  115. package/components/input/.turbo/turbo-build$colon$sass.log +51 -1
  116. package/components/input/.turbo/turbo-build.log +56 -6
  117. package/components/input/.turbo/turbo-bundler.log +3 -3
  118. package/components/input/.turbo/turbo-sass$colon$render.log +6 -0
  119. package/components/input/demo/api.md +83 -83
  120. package/components/input/demo/api.min.js +52 -61
  121. package/components/input/demo/index.md +6 -6
  122. package/components/input/demo/index.min.js +52 -61
  123. package/components/input/dist/auro-input.d.ts.map +1 -1
  124. package/components/input/dist/base-input.d.ts +5 -12
  125. package/components/input/dist/base-input.d.ts.map +1 -1
  126. package/components/input/dist/index.js +52 -61
  127. package/components/input/dist/styles/mixins-css.d.ts +3 -0
  128. package/components/input/dist/styles/mixins-css.d.ts.map +1 -0
  129. package/components/input/src/auro-input.js +0 -1
  130. package/components/input/src/base-input.js +22 -25
  131. package/components/input/src/styles/borders.scss +3 -19
  132. package/components/input/src/styles/color.css +1 -2
  133. package/components/input/src/styles/color.scss +3 -10
  134. package/components/input/src/styles/input-css.js +1 -1
  135. package/components/input/src/styles/input.css +1 -1
  136. package/components/input/src/styles/input.scss +4 -1
  137. package/components/input/src/styles/label-css.js +1 -1
  138. package/components/input/src/styles/label.css +1 -1
  139. package/components/input/src/styles/label.scss +4 -7
  140. package/components/input/src/styles/mixins-css.js +2 -0
  141. package/components/input/src/styles/mixins.css +1 -0
  142. package/components/input/src/styles/mixins.scss +45 -0
  143. package/components/input/src/styles/notificationIcons-css.js +1 -1
  144. package/components/input/src/styles/notificationIcons.css +13 -12
  145. package/components/input/src/styles/notificationIcons.scss +17 -25
  146. package/components/input/src/styles/style-css.js +1 -1
  147. package/components/input/src/styles/style.css +15 -17
  148. package/components/input/src/styles/style.scss +0 -4
  149. package/components/menu/.turbo/turbo-build.log +3 -3
  150. package/components/menu/.turbo/turbo-bundler.log +3 -3
  151. package/components/menu/demo/api.min.js +1 -1
  152. package/components/menu/demo/index.min.js +1 -1
  153. package/components/menu/dist/auro-menu.d.ts +1 -1
  154. package/components/menu/dist/index.js +1 -1
  155. package/components/menu/src/auro-menu.js +1 -1
  156. package/components/radio/.turbo/turbo-build.log +3 -3
  157. package/components/radio/.turbo/turbo-bundler.log +3 -3
  158. package/components/radio/demo/api.md +3 -1
  159. package/components/radio/demo/api.min.js +30 -35
  160. package/components/radio/demo/index.min.js +30 -35
  161. package/components/radio/dist/index.js +30 -35
  162. package/components/radio/src/auro-radio-group.js +1 -1
  163. package/components/select/.turbo/turbo-build.log +3 -3
  164. package/components/select/demo/api.md +7 -11
  165. package/components/select/demo/api.min.js +33 -60
  166. package/components/select/demo/index.min.js +33 -56
  167. package/components/select/dist/auro-select.d.ts +2 -2
  168. package/components/select/dist/auro-select.d.ts.map +1 -1
  169. package/components/select/dist/index.js +32 -55
  170. package/components/select/src/auro-select.js +3 -21
  171. package/package.json +1 -1
  172. package/packages/form-validation/src/validation.js +29 -34
  173. package/.turbo/cache/0663fcbb1d711029-meta.json +0 -1
  174. package/.turbo/cache/0663fcbb1d711029.tar.zst +0 -0
  175. package/.turbo/cache/0a2b0a4df8a0443f-meta.json +0 -1
  176. package/.turbo/cache/120c8e207aa1ba35-meta.json +0 -1
  177. package/.turbo/cache/120c8e207aa1ba35.tar.zst +0 -0
  178. package/.turbo/cache/17dd4bdef6550a07-meta.json +0 -1
  179. package/.turbo/cache/17dd4bdef6550a07.tar.zst +0 -0
  180. package/.turbo/cache/32c0b9995fb5f8dd-meta.json +0 -1
  181. package/.turbo/cache/32c0b9995fb5f8dd.tar.zst +0 -0
  182. package/.turbo/cache/47ba2b5ebdb579e9-meta.json +0 -1
  183. package/.turbo/cache/47ba2b5ebdb579e9.tar.zst +0 -0
  184. package/.turbo/cache/56cb35d4c7473a23-meta.json +0 -1
  185. package/.turbo/cache/56cb35d4c7473a23.tar.zst +0 -0
  186. package/.turbo/cache/626afdc67e0cb540-meta.json +0 -1
  187. package/.turbo/cache/626afdc67e0cb540.tar.zst +0 -0
  188. package/.turbo/cache/6ef81cf9a66f982a-meta.json +0 -1
  189. package/.turbo/cache/6ef81cf9a66f982a.tar.zst +0 -0
  190. package/.turbo/cache/8b735250fa5a62bf-meta.json +0 -1
  191. package/.turbo/cache/8b735250fa5a62bf.tar.zst +0 -0
  192. package/.turbo/cache/9154e8fe6ab767ea-meta.json +0 -1
  193. package/.turbo/cache/9154e8fe6ab767ea.tar.zst +0 -0
  194. package/.turbo/cache/a49cc58242467fdc-meta.json +0 -1
  195. package/.turbo/cache/a49cc58242467fdc.tar.zst +0 -0
  196. package/.turbo/cache/af061e7a077a9ba5-meta.json +0 -1
  197. package/.turbo/cache/af061e7a077a9ba5.tar.zst +0 -0
  198. package/.turbo/cache/b50f1b283b4b81cd-meta.json +0 -1
  199. package/.turbo/cache/b50f1b283b4b81cd.tar.zst +0 -0
  200. package/.turbo/cache/bf85bc040b7e64db-meta.json +0 -1
  201. package/.turbo/cache/bf85bc040b7e64db.tar.zst +0 -0
  202. package/.turbo/cache/cd5f6987783fb56d-meta.json +0 -1
  203. package/.turbo/cache/cd5f6987783fb56d.tar.zst +0 -0
  204. package/.turbo/cache/ce67b6522dd09e64-meta.json +0 -1
  205. package/.turbo/cache/d716cb7a08152beb-meta.json +0 -1
  206. package/.turbo/cache/d716cb7a08152beb.tar.zst +0 -0
  207. package/.turbo/cache/d7a47b77deb3d9a4-meta.json +0 -1
  208. package/.turbo/cache/d7a47b77deb3d9a4.tar.zst +0 -0
  209. package/.turbo/cache/ff58f630c9d69af4-meta.json +0 -1
  210. package/.turbo/cache/ff58f630c9d69af4.tar.zst +0 -0
  211. /package/.turbo/cache/{0a2b0a4df8a0443f.tar.zst → 8e79bd5c3a16a72e.tar.zst} +0 -0
@@ -411,20 +411,20 @@ class AuroFormValidation {
411
411
  const pattern = new RegExp(`^${elem.pattern}$`, 'u');
412
412
 
413
413
  if (!pattern.test(elem.value)) {
414
- elem.validity = 'badInput';
415
- elem.setCustomValidity = elem.setCustomValidityBadInput || '';
414
+ elem.validity = 'patternMismatch';
415
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || '';
416
416
  }
417
417
  }
418
418
 
419
419
  // Length > 0 is required to prevent the error message from showing when the input is empty
420
420
  if (elem.value?.length > 0 && elem.value?.length < elem.minLength) {
421
421
  elem.validity = 'tooShort';
422
- elem.setCustomValidity = elem.setCustomValidityTooShort || '';
422
+ elem.errorMessage = elem.setCustomValidityTooShort || elem.setCustomValidity || '';
423
423
  }
424
424
 
425
425
  if (elem.value?.length > elem.maxLength) {
426
426
  elem.validity = 'tooLong';
427
- elem.setCustomValidity = elem.setCustomValidityTooLong || '';
427
+ elem.errorMessage = elem.setCustomValidityTooLong || elem.setCustomValidity || '';
428
428
  }
429
429
  }
430
430
 
@@ -440,33 +440,32 @@ class AuroFormValidation {
440
440
  const emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/; // eslint-disable-line require-unicode-regexp
441
441
 
442
442
  if (!elem.value.match(emailRegex)) {
443
- elem.validity = 'badInput';
444
- elem.setCustomValidity = elem.setCustomValidityForType || '';
443
+ elem.validity = 'patternMismatch';
444
+ elem.errorMessage = elem.setCustomValidityForType || elem.setCustomValidity || '';
445
445
  }
446
446
  } else if (elem.type === 'credit-card') {
447
447
  if (elem.value.length > 0 && elem.value.length < elem.validationCCLength) {
448
448
  elem.validity = 'tooShort';
449
- elem.setCustomValidity = elem.setCustomValidityForType || '';
449
+ elem.errorMessage = elem.setCustomValidityForType || elem.setCustomValidity || '';
450
450
  }
451
451
  } else if (elem.type === 'number') {
452
452
  if (elem.max !== undefined && Number(elem.max) < Number(elem.value)) {
453
453
  elem.validity = 'rangeOverflow';
454
- elem.setCustomValidity = elem.getAttribute('setCustomValidityRangeOverflow') || '';
454
+ elem.errorMessage = elem.setCustomValidityRangeOverflow || elem.setCustomValidity || '';
455
455
  }
456
456
 
457
- if (elem.min !== undefined && Number(elem.min) > Number(elem.value)) {
457
+ if (elem.min !== undefined && elem.value?.length > 0 && Number(elem.min) > Number(elem.value)) {
458
458
  elem.validity = 'rangeUnderflow';
459
- elem.setCustomValidity = elem.getAttribute('setCustomValidityRangeUnderflow') || '';
459
+ elem.errorMessage = elem.setCustomValidityRangeUnderflow || elem.setCustomValidity || '';
460
460
  }
461
-
462
461
  } else if (elem.type === 'month-day-year' ||
463
462
  elem.type === 'month-year' ||
464
463
  elem.type === 'month-fullYear' ||
465
464
  elem.type === 'year-month-day'
466
465
  ) {
467
- if (elem.value && elem.value.length > 0 && elem.value.length < elem.dateStrLength) {
466
+ if (elem.value?.length > 0 && elem.value.length < elem.dateStrLength) {
468
467
  elem.validity = 'tooShort';
469
- elem.setCustomValidity = elem.setCustomValidityForType || '';
468
+ elem.errorMessage = elem.setCustomValidityForType || elem.setCustomValidity || '';
470
469
  } else {
471
470
  const valueDate = new Date(elem.value);
472
471
 
@@ -476,7 +475,7 @@ class AuroFormValidation {
476
475
 
477
476
  if (valueDate > maxDate) {
478
477
  elem.validity = 'rangeOverflow';
479
- elem.setCustomValidity = elem.getAttribute('setCustomValidityRangeOverflow') || '';
478
+ elem.errorMessage = elem.setCustomValidityRangeOverflow || elem.setCustomValidity || '';
480
479
  }
481
480
  }
482
481
 
@@ -486,7 +485,7 @@ class AuroFormValidation {
486
485
 
487
486
  if (valueDate < minDate) {
488
487
  elem.validity = 'rangeUnderflow';
489
- elem.setCustomValidity = elem.getAttribute('setCustomValidityRangeUnderflow') || '';
488
+ elem.errorMessage = elem.setCustomValidityRangeUnderflow || elem.setCustomValidity || '';
490
489
  }
491
490
  }
492
491
  }
@@ -509,10 +508,10 @@ class AuroFormValidation {
509
508
 
510
509
  if (elem.hasAttribute('error')) {
511
510
  elem.validity = 'customError';
512
- elem.setCustomValidity = elem.error;
511
+ elem.errorMessage = elem.setCustomValidityCustomError || elem.error || elem.setCustomValidity || '';
513
512
  } else if (validationShouldRun) {
514
513
  elem.validity = 'valid';
515
- elem.setCustomValidity = '';
514
+ elem.errorMessage = '';
516
515
 
517
516
  /**
518
517
  * Only validate once we interact with the datepicker
@@ -524,7 +523,7 @@ class AuroFormValidation {
524
523
  let hasValue = elem.value && elem.value.length > 0;
525
524
 
526
525
  // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
527
- if (this.auroInputElements && this.auroInputElements.length === 2) {
526
+ if (this.auroInputElements?.length === 2) {
528
527
  if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
529
528
  hasValue = false;
530
529
  }
@@ -532,31 +531,27 @@ class AuroFormValidation {
532
531
 
533
532
  if (!hasValue && elem.required) {
534
533
  elem.validity = 'valueMissing';
535
- elem.setCustomValidity = elem.setCustomValidityValueMissing || '';
534
+ elem.errorMessage = elem.setCustomValidityValueMissing || elem.setCustomValidity || '';
536
535
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input')) {
537
536
  this.validateType(elem);
538
537
  this.validateAttributes(elem);
539
538
  }
540
539
  }
541
540
 
542
- if (this.auroInputElements && this.auroInputElements.length > 0) {
541
+ if (this.auroInputElements?.length > 0) {
543
542
  elem.validity = this.auroInputElements[0].validity;
544
- elem.setCustomValidity = this.auroInputElements[0].setCustomValidity;
543
+ elem.errorMessage = this.auroInputElements[0].errorMessage;
545
544
 
546
- if (elem.validity === 'valid') {
547
- if (this.auroInputElements.length > 1) {
548
- elem.validity = this.auroInputElements[1].validity;
549
- elem.setCustomValidity = this.auroInputElements[1].setCustomValidity;
550
- }
545
+ if (elem.validity === 'valid' && this.auroInputElements.length > 1) {
546
+ elem.validity = this.auroInputElements[1].validity;
547
+ elem.errorMessage = this.auroInputElements[1].errorMessage;
551
548
  }
552
549
  }
553
550
 
554
551
  if (validationShouldRun || elem.hasAttribute('error')) {
555
- if (elem.validity && elem.validity !== 'valid') {
556
- // Use the validity message override if it is declared
557
- if (elem.ValidityMessageOverride) {
558
- elem.setCustomValidity = elem.ValidityMessageOverride;
559
- }
552
+ // Use the validity message override if it is declared
553
+ if (elem.validity && elem.validity !== 'valid' && elem.ValidityMessageOverride) {
554
+ elem.errorMessage = elem.ValidityMessageOverride;
560
555
  }
561
556
 
562
557
  this.getErrorMessage(elem);
@@ -602,18 +597,18 @@ class AuroFormValidation {
602
597
  if (elem.validity !== 'valid') {
603
598
  if (elem.setCustomValidity) {
604
599
  elem.errorMessage = elem.setCustomValidity;
605
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-input')) {
600
+ } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
606
601
  const input = elem.renderRoot.querySelector('input');
607
602
 
608
603
  if (input.validationMessage.length > 0) {
609
604
  elem.errorMessage = input.validationMessage;
610
605
  }
611
- } else if (this.inputElements && this.inputElements.length > 0) {
606
+ } else if (this.inputElements?.length > 0 && elem.errorMessage === '') {
612
607
  const firstInput = this.inputElements[0];
613
608
 
614
609
  if (firstInput.validationMessage.length > 0) {
615
610
  elem.errorMessage = firstInput.validationMessage;
616
- } else if (this.inputElements.length === 2) {
611
+ } else if (this.inputElements?.length === 2) {
617
612
  const secondInput = this.inputElements[1];
618
613
 
619
614
  if (secondInput.validationMessage.length > 0) {
@@ -1036,7 +1031,7 @@ class AuroRadioGroup extends r {
1036
1031
  </p>`
1037
1032
  : x`
1038
1033
  <p class="radioGroupElement-helpText" role="alert" aria-live="assertive" part="helpText">
1039
- ${this.setCustomValidity}
1034
+ ${this.errorMessage}
1040
1035
  </p>`
1041
1036
  }
1042
1037
  `;
@@ -411,20 +411,20 @@ class AuroFormValidation {
411
411
  const pattern = new RegExp(`^${elem.pattern}$`, 'u');
412
412
 
413
413
  if (!pattern.test(elem.value)) {
414
- elem.validity = 'badInput';
415
- elem.setCustomValidity = elem.setCustomValidityBadInput || '';
414
+ elem.validity = 'patternMismatch';
415
+ elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || '';
416
416
  }
417
417
  }
418
418
 
419
419
  // Length > 0 is required to prevent the error message from showing when the input is empty
420
420
  if (elem.value?.length > 0 && elem.value?.length < elem.minLength) {
421
421
  elem.validity = 'tooShort';
422
- elem.setCustomValidity = elem.setCustomValidityTooShort || '';
422
+ elem.errorMessage = elem.setCustomValidityTooShort || elem.setCustomValidity || '';
423
423
  }
424
424
 
425
425
  if (elem.value?.length > elem.maxLength) {
426
426
  elem.validity = 'tooLong';
427
- elem.setCustomValidity = elem.setCustomValidityTooLong || '';
427
+ elem.errorMessage = elem.setCustomValidityTooLong || elem.setCustomValidity || '';
428
428
  }
429
429
  }
430
430
 
@@ -440,33 +440,32 @@ class AuroFormValidation {
440
440
  const emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/; // eslint-disable-line require-unicode-regexp
441
441
 
442
442
  if (!elem.value.match(emailRegex)) {
443
- elem.validity = 'badInput';
444
- elem.setCustomValidity = elem.setCustomValidityForType || '';
443
+ elem.validity = 'patternMismatch';
444
+ elem.errorMessage = elem.setCustomValidityForType || elem.setCustomValidity || '';
445
445
  }
446
446
  } else if (elem.type === 'credit-card') {
447
447
  if (elem.value.length > 0 && elem.value.length < elem.validationCCLength) {
448
448
  elem.validity = 'tooShort';
449
- elem.setCustomValidity = elem.setCustomValidityForType || '';
449
+ elem.errorMessage = elem.setCustomValidityForType || elem.setCustomValidity || '';
450
450
  }
451
451
  } else if (elem.type === 'number') {
452
452
  if (elem.max !== undefined && Number(elem.max) < Number(elem.value)) {
453
453
  elem.validity = 'rangeOverflow';
454
- elem.setCustomValidity = elem.getAttribute('setCustomValidityRangeOverflow') || '';
454
+ elem.errorMessage = elem.setCustomValidityRangeOverflow || elem.setCustomValidity || '';
455
455
  }
456
456
 
457
- if (elem.min !== undefined && Number(elem.min) > Number(elem.value)) {
457
+ if (elem.min !== undefined && elem.value?.length > 0 && Number(elem.min) > Number(elem.value)) {
458
458
  elem.validity = 'rangeUnderflow';
459
- elem.setCustomValidity = elem.getAttribute('setCustomValidityRangeUnderflow') || '';
459
+ elem.errorMessage = elem.setCustomValidityRangeUnderflow || elem.setCustomValidity || '';
460
460
  }
461
-
462
461
  } else if (elem.type === 'month-day-year' ||
463
462
  elem.type === 'month-year' ||
464
463
  elem.type === 'month-fullYear' ||
465
464
  elem.type === 'year-month-day'
466
465
  ) {
467
- if (elem.value && elem.value.length > 0 && elem.value.length < elem.dateStrLength) {
466
+ if (elem.value?.length > 0 && elem.value.length < elem.dateStrLength) {
468
467
  elem.validity = 'tooShort';
469
- elem.setCustomValidity = elem.setCustomValidityForType || '';
468
+ elem.errorMessage = elem.setCustomValidityForType || elem.setCustomValidity || '';
470
469
  } else {
471
470
  const valueDate = new Date(elem.value);
472
471
 
@@ -476,7 +475,7 @@ class AuroFormValidation {
476
475
 
477
476
  if (valueDate > maxDate) {
478
477
  elem.validity = 'rangeOverflow';
479
- elem.setCustomValidity = elem.getAttribute('setCustomValidityRangeOverflow') || '';
478
+ elem.errorMessage = elem.setCustomValidityRangeOverflow || elem.setCustomValidity || '';
480
479
  }
481
480
  }
482
481
 
@@ -486,7 +485,7 @@ class AuroFormValidation {
486
485
 
487
486
  if (valueDate < minDate) {
488
487
  elem.validity = 'rangeUnderflow';
489
- elem.setCustomValidity = elem.getAttribute('setCustomValidityRangeUnderflow') || '';
488
+ elem.errorMessage = elem.setCustomValidityRangeUnderflow || elem.setCustomValidity || '';
490
489
  }
491
490
  }
492
491
  }
@@ -509,10 +508,10 @@ class AuroFormValidation {
509
508
 
510
509
  if (elem.hasAttribute('error')) {
511
510
  elem.validity = 'customError';
512
- elem.setCustomValidity = elem.error;
511
+ elem.errorMessage = elem.setCustomValidityCustomError || elem.error || elem.setCustomValidity || '';
513
512
  } else if (validationShouldRun) {
514
513
  elem.validity = 'valid';
515
- elem.setCustomValidity = '';
514
+ elem.errorMessage = '';
516
515
 
517
516
  /**
518
517
  * Only validate once we interact with the datepicker
@@ -524,7 +523,7 @@ class AuroFormValidation {
524
523
  let hasValue = elem.value && elem.value.length > 0;
525
524
 
526
525
  // If there is a second input in the elem and that value is undefined or an empty string set hasValue to false;
527
- if (this.auroInputElements && this.auroInputElements.length === 2) {
526
+ if (this.auroInputElements?.length === 2) {
528
527
  if (!this.auroInputElements[1].value || this.auroInputElements[1].length === 0) {
529
528
  hasValue = false;
530
529
  }
@@ -532,31 +531,27 @@ class AuroFormValidation {
532
531
 
533
532
  if (!hasValue && elem.required) {
534
533
  elem.validity = 'valueMissing';
535
- elem.setCustomValidity = elem.setCustomValidityValueMissing || '';
534
+ elem.errorMessage = elem.setCustomValidityValueMissing || elem.setCustomValidity || '';
536
535
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input')) {
537
536
  this.validateType(elem);
538
537
  this.validateAttributes(elem);
539
538
  }
540
539
  }
541
540
 
542
- if (this.auroInputElements && this.auroInputElements.length > 0) {
541
+ if (this.auroInputElements?.length > 0) {
543
542
  elem.validity = this.auroInputElements[0].validity;
544
- elem.setCustomValidity = this.auroInputElements[0].setCustomValidity;
543
+ elem.errorMessage = this.auroInputElements[0].errorMessage;
545
544
 
546
- if (elem.validity === 'valid') {
547
- if (this.auroInputElements.length > 1) {
548
- elem.validity = this.auroInputElements[1].validity;
549
- elem.setCustomValidity = this.auroInputElements[1].setCustomValidity;
550
- }
545
+ if (elem.validity === 'valid' && this.auroInputElements.length > 1) {
546
+ elem.validity = this.auroInputElements[1].validity;
547
+ elem.errorMessage = this.auroInputElements[1].errorMessage;
551
548
  }
552
549
  }
553
550
 
554
551
  if (validationShouldRun || elem.hasAttribute('error')) {
555
- if (elem.validity && elem.validity !== 'valid') {
556
- // Use the validity message override if it is declared
557
- if (elem.ValidityMessageOverride) {
558
- elem.setCustomValidity = elem.ValidityMessageOverride;
559
- }
552
+ // Use the validity message override if it is declared
553
+ if (elem.validity && elem.validity !== 'valid' && elem.ValidityMessageOverride) {
554
+ elem.errorMessage = elem.ValidityMessageOverride;
560
555
  }
561
556
 
562
557
  this.getErrorMessage(elem);
@@ -602,18 +597,18 @@ class AuroFormValidation {
602
597
  if (elem.validity !== 'valid') {
603
598
  if (elem.setCustomValidity) {
604
599
  elem.errorMessage = elem.setCustomValidity;
605
- } else if (this.runtimeUtils.elementMatch(elem, 'auro-input')) {
600
+ } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
606
601
  const input = elem.renderRoot.querySelector('input');
607
602
 
608
603
  if (input.validationMessage.length > 0) {
609
604
  elem.errorMessage = input.validationMessage;
610
605
  }
611
- } else if (this.inputElements && this.inputElements.length > 0) {
606
+ } else if (this.inputElements?.length > 0 && elem.errorMessage === '') {
612
607
  const firstInput = this.inputElements[0];
613
608
 
614
609
  if (firstInput.validationMessage.length > 0) {
615
610
  elem.errorMessage = firstInput.validationMessage;
616
- } else if (this.inputElements.length === 2) {
611
+ } else if (this.inputElements?.length === 2) {
617
612
  const secondInput = this.inputElements[1];
618
613
 
619
614
  if (secondInput.validationMessage.length > 0) {
@@ -1036,7 +1031,7 @@ class AuroRadioGroup extends r {
1036
1031
  </p>`
1037
1032
  : x`
1038
1033
  <p class="radioGroupElement-helpText" role="alert" aria-live="assertive" part="helpText">
1039
- ${this.setCustomValidity}
1034
+ ${this.errorMessage}
1040
1035
  </p>`
1041
1036
  }
1042
1037
  `;
@@ -425,7 +425,7 @@ export class AuroRadioGroup extends LitElement {
425
425
  </p>`
426
426
  : html`
427
427
  <p class="radioGroupElement-helpText" role="alert" aria-live="assertive" part="helpText">
428
- ${this.setCustomValidity}
428
+ ${this.errorMessage}
429
429
  </p>`
430
430
  }
431
431
  `;
@@ -137,13 +137,13 @@ More info and automated migrator: https://sass-lang.com/d/import
137
137
 
138
138
  
139
139
  ./src/index.js → dist...
140
- created dist in 606ms
140
+ created dist in 590ms
141
141
  
142
142
  ./demo/index.js → ./demo/...
143
- created ./demo/ in 528ms
143
+ created ./demo/ in 621ms
144
144
  
145
145
  ./demo/api.js → ./demo/...
146
- created ./demo/ in 499ms
146
+ created ./demo/ in 466ms
147
147
 
148
148
  > @auro-formkit/auro-select@3.3.0 build:docs
149
149
  > wca analyze 'scripts/wca/*.js' --outFiles docs/api.md; node ../../packages/build-tools/src/docProcessor.mjs --component select
@@ -17,7 +17,7 @@ The auro-select element is a wrapper for auro-dropdown and auro-menu to create a
17
17
  | Property | Attribute | Type | Default | Description |
18
18
  |---------------------------------|---------------------------------|-----------|------------------------|--------------------------------------------------|
19
19
  | [disabled](#disabled) | `disabled` | `Boolean` | | When attribute is present element shows disabled state. |
20
- | [error](#error) | `error` | `String` | | When defined, sets persistent validity to `customError` and sets `setCustomValidity` = attribute value. |
20
+ | [error](#error) | `error` | `String` | | When defined, sets persistent validity to `customError` and sets the validation message to the attribute value. |
21
21
  | [flexMenuWidth](#flexMenuWidth) | `flexMenuWidth` | `Boolean` | | If set, makes dropdown bib width match the size of the content, rather than the width of the trigger. |
22
22
  | [noCheckmark](#noCheckmark) | `noCheckmark` | `Boolean` | | When true, checkmark on selected option will no longer be present. |
23
23
  | [noValidate](#noValidate) | `noValidate` | `Boolean` | | If set, disables auto-validation on blur. |
@@ -111,7 +111,6 @@ To pre-set the value of auro-select on load, use the `value` property. The `sele
111
111
  <!-- The below content is automatically added from ./../apiExamples/value.html -->
112
112
  <auro-button id="validValueExampleBtn">Set Value to Valid Option</auro-button>
113
113
  <auro-button id="invalidValueExampleBtn">Set Value to Invalid Option</auro-button>
114
- <auro-button id="undefinedValueExampleBtn">Set Value to Undefined</auro-button>
115
114
  <br/><br/>
116
115
  <auro-select id="valueExample" value="price">
117
116
  <span slot="label">Name</span>
@@ -134,7 +133,6 @@ To pre-set the value of auro-select on load, use the `value` property. The `sele
134
133
  ```html
135
134
  <auro-button id="validValueExampleBtn">Set Value to Valid Option</auro-button>
136
135
  <auro-button id="invalidValueExampleBtn">Set Value to Invalid Option</auro-button>
137
- <auro-button id="undefinedValueExampleBtn">Set Value to Undefined</auro-button>
138
136
  <br/><br/>
139
137
  <auro-select id="valueExample" value="price">
140
138
  <span slot="label">Name</span>
@@ -158,15 +156,11 @@ export function valueExample() {
158
156
 
159
157
  document.querySelector('#validValueExampleBtn').addEventListener('click', () => {
160
158
  valueExample.value = 'arrival';
161
- })
159
+ });
162
160
 
163
161
  document.querySelector('#invalidValueExampleBtn').addEventListener('click', () => {
164
162
  valueExample.value = 'flight course';
165
- })
166
-
167
- document.querySelector('#undefinedValueExampleBtn').addEventListener('click', () => {
168
- valueExample.value = undefined;
169
- })
163
+ });
170
164
  }
171
165
  ```
172
166
  <!-- AURO-GENERATED-CONTENT:END -->
@@ -213,7 +207,7 @@ Use the `placeholder` string attribute to inject a custom placeholder option wit
213
207
  #### required <a name="required"></a>
214
208
  When present, the `required` attribute specifies that a select field must be filled out before submitting the form.
215
209
 
216
- When the validity check fails the validityState equals `valueMissing`. The error message for the `valueMissing` validityState can be set to a custom string using the `setCustomValidityValueMissing`. There is no default error message defined.
210
+ When the validity check fails the validityState, equals `valueMissing`. The error message for the `valueMissing` validityState can be set to a custom string using the `setCustomValidityValueMissing`. There is no default error message defined.
217
211
 
218
212
  <div class="exampleWrapper">
219
213
  <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../apiExamples/required.html) -->
@@ -251,7 +245,9 @@ When the validity check fails the validityState equals `valueMissing`. The error
251
245
  </auro-accordion>
252
246
 
253
247
  #### error <a name="error"></a>
254
- Use the `error` boolean attribute to toggle the error UI.
248
+ Use the `error` attribute to apply a persistent custom error that supersedes the HTML5 validation logic.
249
+
250
+ A custom error message can be set using the `error` attribute, or it can be used in conjuction with the `setCustomValidityCustomError` attribute.
255
251
 
256
252
  <div class="exampleWrapper">
257
253
  <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../apiExamples/errorApi.html) -->