@aurodesignsystem/auro-formkit 6.0.3 → 6.1.0

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 (53) hide show
  1. package/CHANGELOG.md +20 -8
  2. package/components/checkbox/demo/customize.min.js +14 -4
  3. package/components/checkbox/demo/getting-started.min.js +14 -4
  4. package/components/checkbox/demo/index.min.js +14 -4
  5. package/components/checkbox/dist/index.js +14 -4
  6. package/components/checkbox/dist/registered.js +14 -4
  7. package/components/combobox/demo/customize.min.js +71 -10
  8. package/components/combobox/demo/getting-started.min.js +71 -10
  9. package/components/combobox/demo/index.min.js +71 -10
  10. package/components/combobox/dist/index.js +71 -10
  11. package/components/combobox/dist/registered.js +71 -10
  12. package/components/counter/demo/customize.min.js +2 -2
  13. package/components/counter/demo/index.min.js +2 -2
  14. package/components/counter/dist/index.js +2 -2
  15. package/components/counter/dist/registered.js +2 -2
  16. package/components/datepicker/demo/customize.min.js +64 -8
  17. package/components/datepicker/demo/index.min.js +64 -8
  18. package/components/datepicker/dist/index.js +64 -8
  19. package/components/datepicker/dist/registered.js +64 -8
  20. package/components/dropdown/demo/customize.min.js +1 -1
  21. package/components/dropdown/demo/getting-started.min.js +63 -7
  22. package/components/dropdown/demo/index.min.js +1 -1
  23. package/components/dropdown/dist/index.js +1 -1
  24. package/components/dropdown/dist/registered.js +1 -1
  25. package/components/form/demo/customize.min.js +241 -38
  26. package/components/form/demo/getting-started.min.js +241 -38
  27. package/components/form/demo/index.min.js +241 -38
  28. package/components/form/demo/registerDemoDeps.min.js +241 -38
  29. package/components/input/demo/api.md +1 -1
  30. package/components/input/demo/css-only.md +2 -2
  31. package/components/input/demo/customize.md +3 -3
  32. package/components/input/demo/customize.min.js +62 -6
  33. package/components/input/demo/getting-started.min.js +62 -6
  34. package/components/input/demo/index.min.js +62 -6
  35. package/components/input/demo/why-input.md +2 -3
  36. package/components/input/dist/auro-input.d.ts +8 -0
  37. package/components/input/dist/base-input.d.ts +2 -0
  38. package/components/input/dist/index.js +62 -6
  39. package/components/input/dist/registered.js +62 -6
  40. package/components/radio/demo/customize.min.js +15 -4
  41. package/components/radio/demo/getting-started.min.js +15 -4
  42. package/components/radio/demo/index.min.js +15 -4
  43. package/components/radio/dist/auro-radio-group.d.ts +1 -0
  44. package/components/radio/dist/index.js +15 -4
  45. package/components/radio/dist/registered.js +15 -4
  46. package/components/select/demo/customize.min.js +13 -4
  47. package/components/select/demo/getting-started.min.js +13 -4
  48. package/components/select/demo/index.min.js +13 -4
  49. package/components/select/dist/auro-select.d.ts +2 -0
  50. package/components/select/dist/index.js +13 -4
  51. package/components/select/dist/registered.js +13 -4
  52. package/custom-elements.json +1516 -1504
  53. package/package.json +1 -1
@@ -10684,6 +10684,8 @@ class BaseInput extends AuroElement {
10684
10684
 
10685
10685
  /**
10686
10686
  * If set, the label will remain fixed in the active position.
10687
+ * Only applies to the classic/default layout; the emphasized and snowflake
10688
+ * layouts always render the label inside the field, so this has no effect there.
10687
10689
  */
10688
10690
  activeLabel: {
10689
10691
  type: Boolean,
@@ -11803,6 +11805,18 @@ class BaseInput extends AuroElement {
11803
11805
  cardIcon: 'cc-dinersclub',
11804
11806
  maskFormat: "0000 000000 0000"
11805
11807
  },
11808
+ {
11809
+ // JCB is variable length (16-19 digits), like UnionPay, so it reuses the
11810
+ // formatMinLength/formatLength range machinery. The 35 prefix overlaps no
11811
+ // other brand (Amex is 34|37, Diners is 30[0-5]|36|38).
11812
+ name: 'JCB',
11813
+ regex: /^(?<num>35)\d{0}/u,
11814
+ formatMinLength: 19,
11815
+ formatLength: 23,
11816
+ errorMessage: CreditCardValidationMessage,
11817
+ cardIcon: 'cc-jcb',
11818
+ maskFormat: "0000 0000 0000 0000 000"
11819
+ },
11806
11820
  {
11807
11821
  name: 'Visa',
11808
11822
  regex: /^(?<num>4)\d{0}/u,
@@ -11834,6 +11848,20 @@ class BaseInput extends AuroElement {
11834
11848
  errorMessage: CreditCardValidationMessage,
11835
11849
  cardIcon: 'cc-discover',
11836
11850
  maskFormat: "0000 0000 0000 0000"
11851
+ },
11852
+ {
11853
+ // China UnionPay is variable length (16-19 digits). It must come after
11854
+ // Discover so the last-match-wins loop below gives its 62 prefix
11855
+ // precedence over the generic `6` that resolves to Discover. 81 is used
11856
+ // by UnionPay cards issued outside mainland China and overlaps no other
11857
+ // brand. 60 is intentionally excluded (it overlaps real Discover 6011).
11858
+ name: 'China UnionPay',
11859
+ regex: /^(?<num>62|81)\d{0}/u,
11860
+ formatMinLength: 19,
11861
+ formatLength: 23,
11862
+ errorMessage: CreditCardValidationMessage,
11863
+ cardIcon: 'cc-unionpay',
11864
+ maskFormat: "0000 0000 0000 0000 000"
11837
11865
  }
11838
11866
  ];
11839
11867
 
@@ -11851,7 +11879,12 @@ class BaseInput extends AuroElement {
11851
11879
  }
11852
11880
  });
11853
11881
 
11854
- this.validationCCLength = type.formatLength;
11882
+ // Variable-length brands (both min and max defined, e.g. UnionPay) validate
11883
+ // against the minimum masked length so shorter-but-valid entries are not
11884
+ // flagged tooShort. Fixed-length brands keep their single formatLength.
11885
+ this.validationCCLength = type.formatMinLength && type.formatLength
11886
+ ? type.formatMinLength
11887
+ : type.formatLength;
11855
11888
 
11856
11889
  return type;
11857
11890
  }
@@ -12210,7 +12243,7 @@ class AuroHelpText extends LitElement {
12210
12243
  }
12211
12244
  }
12212
12245
 
12213
- var formkitVersion = '202608111803';
12246
+ var formkitVersion = '202608262225';
12214
12247
 
12215
12248
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12216
12249
  // See LICENSE in the project root for license information.
@@ -12311,15 +12344,35 @@ class AuroInput extends BaseInput {
12311
12344
  * @private
12312
12345
  */
12313
12346
  get inputHidden() {
12347
+ // In the classic/default layout, activeLabel keeps the input row visible so
12348
+ // the label stays raised rather than collapsing to the centered placeholder
12349
+ // position. Emphasized/snowflake always render the label inside the field,
12350
+ // so activeLabel does not apply there. This only overrides the empty/
12351
+ // unfocused clause — the display-value clause (combobox/datepicker) is
12352
+ // preserved regardless.
12353
+ const activeLabelRaisesInput = this.activeLabel && this.isClassicLayout;
12354
+
12314
12355
  return (
12315
12356
  this.hasDisplayValueContent && !this.hasFocus && this.hasValue) ||
12316
12357
  (
12358
+ !activeLabelRaisesInput &&
12317
12359
  (!this.value || this.value.length === 0) &&
12318
12360
  !this.hasFocus &&
12319
12361
  (!this.placeholderStr || this.placeholderStr === '')
12320
12362
  );
12321
12363
  }
12322
12364
 
12365
+ /**
12366
+ * Whether the component is rendering the classic/default layout, meaning not
12367
+ * emphasized and not snowflake. Kept as a single source of truth so
12368
+ * layout-scoped behavior such as activeLabel stays consistent across getters.
12369
+ * @returns {boolean} - True for the classic/default layout.
12370
+ * @private
12371
+ */
12372
+ get isClassicLayout() {
12373
+ return !this.layout.startsWith('emphasized') && this.layout !== 'snowflake';
12374
+ }
12375
+
12323
12376
  /**
12324
12377
  * Determines if the input should display in a state with no focus or value indication.
12325
12378
  * Returns true when the input has display content without focus and has a value,
@@ -12365,7 +12418,7 @@ class AuroInput extends BaseInput {
12365
12418
  }
12366
12419
 
12367
12420
  // classic layout (default)
12368
- return ((!this.value || this.value.length === 0) && !this.placeholderStr && !this.hasFocus) ? 'body-default' : 'body-xs';
12421
+ return ((!this.value || this.value.length === 0) && !this.placeholderStr && !this.hasFocus && !this.activeLabel) ? 'body-default' : 'body-xs';
12369
12422
  }
12370
12423
 
12371
12424
  /**
@@ -12461,7 +12514,8 @@ class AuroInput extends BaseInput {
12461
12514
  'wrapper': true,
12462
12515
  'simple': this.simple,
12463
12516
  'withValue': this.hasValue,
12464
- 'hasFocus': this.hasFocus
12517
+ 'hasFocus': this.hasFocus,
12518
+ 'activeLabel': this.activeLabel
12465
12519
  };
12466
12520
  }
12467
12521
 
@@ -12611,7 +12665,10 @@ class AuroInput extends BaseInput {
12611
12665
  */
12612
12666
  definePattern() {
12613
12667
  if (this.type === 'credit-card' && !this.noValidate && this.maxLength) {
12614
- return `.{${this.maxLength},${this.maxLength}}`;
12668
+ // Variable-length brands (e.g. UnionPay) set minLength, so accept a range;
12669
+ // fixed-length brands leave minLength undefined and keep an exact length.
12670
+ const minPatternLength = this.minLength || this.maxLength;
12671
+ return `.{${minPatternLength},${this.maxLength}}`;
12615
12672
  }
12616
12673
 
12617
12674
  return this.pattern;
@@ -12672,7 +12729,6 @@ class AuroInput extends BaseInput {
12672
12729
  @input="${this.handleInput}"
12673
12730
  .placeholder=${this.placeholderStr}
12674
12731
  .role=${this.a11yRole}
12675
- ?activeLabel="${this.activeLabel}"
12676
12732
  ?disabled="${this.disabled}"
12677
12733
  ?required="${this.required}"
12678
12734
  aria-activedescendant=${ifDefined(this.a11yActivedescendant)}
@@ -10684,6 +10684,8 @@ class BaseInput extends AuroElement {
10684
10684
 
10685
10685
  /**
10686
10686
  * If set, the label will remain fixed in the active position.
10687
+ * Only applies to the classic/default layout; the emphasized and snowflake
10688
+ * layouts always render the label inside the field, so this has no effect there.
10687
10689
  */
10688
10690
  activeLabel: {
10689
10691
  type: Boolean,
@@ -11803,6 +11805,18 @@ class BaseInput extends AuroElement {
11803
11805
  cardIcon: 'cc-dinersclub',
11804
11806
  maskFormat: "0000 000000 0000"
11805
11807
  },
11808
+ {
11809
+ // JCB is variable length (16-19 digits), like UnionPay, so it reuses the
11810
+ // formatMinLength/formatLength range machinery. The 35 prefix overlaps no
11811
+ // other brand (Amex is 34|37, Diners is 30[0-5]|36|38).
11812
+ name: 'JCB',
11813
+ regex: /^(?<num>35)\d{0}/u,
11814
+ formatMinLength: 19,
11815
+ formatLength: 23,
11816
+ errorMessage: CreditCardValidationMessage,
11817
+ cardIcon: 'cc-jcb',
11818
+ maskFormat: "0000 0000 0000 0000 000"
11819
+ },
11806
11820
  {
11807
11821
  name: 'Visa',
11808
11822
  regex: /^(?<num>4)\d{0}/u,
@@ -11834,6 +11848,20 @@ class BaseInput extends AuroElement {
11834
11848
  errorMessage: CreditCardValidationMessage,
11835
11849
  cardIcon: 'cc-discover',
11836
11850
  maskFormat: "0000 0000 0000 0000"
11851
+ },
11852
+ {
11853
+ // China UnionPay is variable length (16-19 digits). It must come after
11854
+ // Discover so the last-match-wins loop below gives its 62 prefix
11855
+ // precedence over the generic `6` that resolves to Discover. 81 is used
11856
+ // by UnionPay cards issued outside mainland China and overlaps no other
11857
+ // brand. 60 is intentionally excluded (it overlaps real Discover 6011).
11858
+ name: 'China UnionPay',
11859
+ regex: /^(?<num>62|81)\d{0}/u,
11860
+ formatMinLength: 19,
11861
+ formatLength: 23,
11862
+ errorMessage: CreditCardValidationMessage,
11863
+ cardIcon: 'cc-unionpay',
11864
+ maskFormat: "0000 0000 0000 0000 000"
11837
11865
  }
11838
11866
  ];
11839
11867
 
@@ -11851,7 +11879,12 @@ class BaseInput extends AuroElement {
11851
11879
  }
11852
11880
  });
11853
11881
 
11854
- this.validationCCLength = type.formatLength;
11882
+ // Variable-length brands (both min and max defined, e.g. UnionPay) validate
11883
+ // against the minimum masked length so shorter-but-valid entries are not
11884
+ // flagged tooShort. Fixed-length brands keep their single formatLength.
11885
+ this.validationCCLength = type.formatMinLength && type.formatLength
11886
+ ? type.formatMinLength
11887
+ : type.formatLength;
11855
11888
 
11856
11889
  return type;
11857
11890
  }
@@ -12210,7 +12243,7 @@ class AuroHelpText extends LitElement {
12210
12243
  }
12211
12244
  }
12212
12245
 
12213
- var formkitVersion = '202608111803';
12246
+ var formkitVersion = '202608262225';
12214
12247
 
12215
12248
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12216
12249
  // See LICENSE in the project root for license information.
@@ -12311,15 +12344,35 @@ class AuroInput extends BaseInput {
12311
12344
  * @private
12312
12345
  */
12313
12346
  get inputHidden() {
12347
+ // In the classic/default layout, activeLabel keeps the input row visible so
12348
+ // the label stays raised rather than collapsing to the centered placeholder
12349
+ // position. Emphasized/snowflake always render the label inside the field,
12350
+ // so activeLabel does not apply there. This only overrides the empty/
12351
+ // unfocused clause — the display-value clause (combobox/datepicker) is
12352
+ // preserved regardless.
12353
+ const activeLabelRaisesInput = this.activeLabel && this.isClassicLayout;
12354
+
12314
12355
  return (
12315
12356
  this.hasDisplayValueContent && !this.hasFocus && this.hasValue) ||
12316
12357
  (
12358
+ !activeLabelRaisesInput &&
12317
12359
  (!this.value || this.value.length === 0) &&
12318
12360
  !this.hasFocus &&
12319
12361
  (!this.placeholderStr || this.placeholderStr === '')
12320
12362
  );
12321
12363
  }
12322
12364
 
12365
+ /**
12366
+ * Whether the component is rendering the classic/default layout, meaning not
12367
+ * emphasized and not snowflake. Kept as a single source of truth so
12368
+ * layout-scoped behavior such as activeLabel stays consistent across getters.
12369
+ * @returns {boolean} - True for the classic/default layout.
12370
+ * @private
12371
+ */
12372
+ get isClassicLayout() {
12373
+ return !this.layout.startsWith('emphasized') && this.layout !== 'snowflake';
12374
+ }
12375
+
12323
12376
  /**
12324
12377
  * Determines if the input should display in a state with no focus or value indication.
12325
12378
  * Returns true when the input has display content without focus and has a value,
@@ -12365,7 +12418,7 @@ class AuroInput extends BaseInput {
12365
12418
  }
12366
12419
 
12367
12420
  // classic layout (default)
12368
- return ((!this.value || this.value.length === 0) && !this.placeholderStr && !this.hasFocus) ? 'body-default' : 'body-xs';
12421
+ return ((!this.value || this.value.length === 0) && !this.placeholderStr && !this.hasFocus && !this.activeLabel) ? 'body-default' : 'body-xs';
12369
12422
  }
12370
12423
 
12371
12424
  /**
@@ -12461,7 +12514,8 @@ class AuroInput extends BaseInput {
12461
12514
  'wrapper': true,
12462
12515
  'simple': this.simple,
12463
12516
  'withValue': this.hasValue,
12464
- 'hasFocus': this.hasFocus
12517
+ 'hasFocus': this.hasFocus,
12518
+ 'activeLabel': this.activeLabel
12465
12519
  };
12466
12520
  }
12467
12521
 
@@ -12611,7 +12665,10 @@ class AuroInput extends BaseInput {
12611
12665
  */
12612
12666
  definePattern() {
12613
12667
  if (this.type === 'credit-card' && !this.noValidate && this.maxLength) {
12614
- return `.{${this.maxLength},${this.maxLength}}`;
12668
+ // Variable-length brands (e.g. UnionPay) set minLength, so accept a range;
12669
+ // fixed-length brands leave minLength undefined and keep an exact length.
12670
+ const minPatternLength = this.minLength || this.maxLength;
12671
+ return `.{${minPatternLength},${this.maxLength}}`;
12615
12672
  }
12616
12673
 
12617
12674
  return this.pattern;
@@ -12672,7 +12729,6 @@ class AuroInput extends BaseInput {
12672
12729
  @input="${this.handleInput}"
12673
12730
  .placeholder=${this.placeholderStr}
12674
12731
  .role=${this.a11yRole}
12675
- ?activeLabel="${this.activeLabel}"
12676
12732
  ?disabled="${this.disabled}"
12677
12733
  ?required="${this.required}"
12678
12734
  aria-activedescendant=${ifDefined(this.a11yActivedescendant)}
@@ -1227,7 +1227,7 @@ class AuroHelpText extends i$2 {
1227
1227
  }
1228
1228
  }
1229
1229
 
1230
- var formkitVersion = '202608111803';
1230
+ var formkitVersion = '202608262225';
1231
1231
 
1232
1232
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1233
1233
  // See LICENSE in the project root for license information.
@@ -1473,7 +1473,9 @@ class AuroRadioGroup extends i$2 {
1473
1473
 
1474
1474
  this.optionSelected = event.target;
1475
1475
 
1476
- this.validation.validate(this, this.optionSelected !== undefined);
1476
+ if (!this.noValidate) {
1477
+ this.validation.validate(this, this.optionSelected !== undefined);
1478
+ }
1477
1479
  }
1478
1480
 
1479
1481
  /**
@@ -1483,7 +1485,14 @@ class AuroRadioGroup extends i$2 {
1483
1485
  */
1484
1486
  handleRadioBlur() {
1485
1487
  this.touched = true;
1486
- this.validation.validate(this);
1488
+ if (!this.noValidate) {
1489
+ this.validation.validate(this);
1490
+ } else if (this.validity !== undefined && !this.hasAttribute('error')) {
1491
+ // Clear stale error state left by a previous validate(true) call.
1492
+ // Do not clear when the error attribute is set — that is an externally forced error.
1493
+ this.validity = undefined;
1494
+ this.errorMessage = '';
1495
+ }
1487
1496
  }
1488
1497
 
1489
1498
  /**
@@ -1659,7 +1668,9 @@ class AuroRadioGroup extends i$2 {
1659
1668
  this.value = event.target.value;
1660
1669
  this.optionSelected = event.target;
1661
1670
 
1662
- this.validation.validate(this);
1671
+ if (!this.noValidate) {
1672
+ this.validation.validate(this);
1673
+ }
1663
1674
  }
1664
1675
 
1665
1676
  /**
@@ -1227,7 +1227,7 @@ class AuroHelpText extends i$2 {
1227
1227
  }
1228
1228
  }
1229
1229
 
1230
- var formkitVersion = '202608111803';
1230
+ var formkitVersion = '202608262225';
1231
1231
 
1232
1232
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1233
1233
  // See LICENSE in the project root for license information.
@@ -1473,7 +1473,9 @@ class AuroRadioGroup extends i$2 {
1473
1473
 
1474
1474
  this.optionSelected = event.target;
1475
1475
 
1476
- this.validation.validate(this, this.optionSelected !== undefined);
1476
+ if (!this.noValidate) {
1477
+ this.validation.validate(this, this.optionSelected !== undefined);
1478
+ }
1477
1479
  }
1478
1480
 
1479
1481
  /**
@@ -1483,7 +1485,14 @@ class AuroRadioGroup extends i$2 {
1483
1485
  */
1484
1486
  handleRadioBlur() {
1485
1487
  this.touched = true;
1486
- this.validation.validate(this);
1488
+ if (!this.noValidate) {
1489
+ this.validation.validate(this);
1490
+ } else if (this.validity !== undefined && !this.hasAttribute('error')) {
1491
+ // Clear stale error state left by a previous validate(true) call.
1492
+ // Do not clear when the error attribute is set — that is an externally forced error.
1493
+ this.validity = undefined;
1494
+ this.errorMessage = '';
1495
+ }
1487
1496
  }
1488
1497
 
1489
1498
  /**
@@ -1659,7 +1668,9 @@ class AuroRadioGroup extends i$2 {
1659
1668
  this.value = event.target.value;
1660
1669
  this.optionSelected = event.target;
1661
1670
 
1662
- this.validation.validate(this);
1671
+ if (!this.noValidate) {
1672
+ this.validation.validate(this);
1673
+ }
1663
1674
  }
1664
1675
 
1665
1676
  /**
@@ -1227,7 +1227,7 @@ class AuroHelpText extends i$2 {
1227
1227
  }
1228
1228
  }
1229
1229
 
1230
- var formkitVersion = '202608111803';
1230
+ var formkitVersion = '202608262225';
1231
1231
 
1232
1232
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1233
1233
  // See LICENSE in the project root for license information.
@@ -1473,7 +1473,9 @@ class AuroRadioGroup extends i$2 {
1473
1473
 
1474
1474
  this.optionSelected = event.target;
1475
1475
 
1476
- this.validation.validate(this, this.optionSelected !== undefined);
1476
+ if (!this.noValidate) {
1477
+ this.validation.validate(this, this.optionSelected !== undefined);
1478
+ }
1477
1479
  }
1478
1480
 
1479
1481
  /**
@@ -1483,7 +1485,14 @@ class AuroRadioGroup extends i$2 {
1483
1485
  */
1484
1486
  handleRadioBlur() {
1485
1487
  this.touched = true;
1486
- this.validation.validate(this);
1488
+ if (!this.noValidate) {
1489
+ this.validation.validate(this);
1490
+ } else if (this.validity !== undefined && !this.hasAttribute('error')) {
1491
+ // Clear stale error state left by a previous validate(true) call.
1492
+ // Do not clear when the error attribute is set — that is an externally forced error.
1493
+ this.validity = undefined;
1494
+ this.errorMessage = '';
1495
+ }
1487
1496
  }
1488
1497
 
1489
1498
  /**
@@ -1659,7 +1668,9 @@ class AuroRadioGroup extends i$2 {
1659
1668
  this.value = event.target.value;
1660
1669
  this.optionSelected = event.target;
1661
1670
 
1662
- this.validation.validate(this);
1671
+ if (!this.noValidate) {
1672
+ this.validation.validate(this);
1673
+ }
1663
1674
  }
1664
1675
 
1665
1676
  /**
@@ -169,6 +169,7 @@ export class AuroRadioGroup extends LitElement {
169
169
  * @returns {void}
170
170
  */
171
171
  private handleRadioBlur;
172
+ errorMessage: string | undefined;
172
173
  /**
173
174
  * LitElement lifecycle method. Called after the DOM has been updated.
174
175
  * @param {Map<string, any>} changedProperties - Keys are the names of changed properties, values are the corresponding previous values.
@@ -1166,7 +1166,7 @@ class AuroHelpText extends LitElement {
1166
1166
  }
1167
1167
  }
1168
1168
 
1169
- var formkitVersion = '202608111803';
1169
+ var formkitVersion = '202608262225';
1170
1170
 
1171
1171
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1172
1172
  // See LICENSE in the project root for license information.
@@ -1412,7 +1412,9 @@ class AuroRadioGroup extends LitElement {
1412
1412
 
1413
1413
  this.optionSelected = event.target;
1414
1414
 
1415
- this.validation.validate(this, this.optionSelected !== undefined);
1415
+ if (!this.noValidate) {
1416
+ this.validation.validate(this, this.optionSelected !== undefined);
1417
+ }
1416
1418
  }
1417
1419
 
1418
1420
  /**
@@ -1422,7 +1424,14 @@ class AuroRadioGroup extends LitElement {
1422
1424
  */
1423
1425
  handleRadioBlur() {
1424
1426
  this.touched = true;
1425
- this.validation.validate(this);
1427
+ if (!this.noValidate) {
1428
+ this.validation.validate(this);
1429
+ } else if (this.validity !== undefined && !this.hasAttribute('error')) {
1430
+ // Clear stale error state left by a previous validate(true) call.
1431
+ // Do not clear when the error attribute is set — that is an externally forced error.
1432
+ this.validity = undefined;
1433
+ this.errorMessage = '';
1434
+ }
1426
1435
  }
1427
1436
 
1428
1437
  /**
@@ -1598,7 +1607,9 @@ class AuroRadioGroup extends LitElement {
1598
1607
  this.value = event.target.value;
1599
1608
  this.optionSelected = event.target;
1600
1609
 
1601
- this.validation.validate(this);
1610
+ if (!this.noValidate) {
1611
+ this.validation.validate(this);
1612
+ }
1602
1613
  }
1603
1614
 
1604
1615
  /**
@@ -1166,7 +1166,7 @@ class AuroHelpText extends LitElement {
1166
1166
  }
1167
1167
  }
1168
1168
 
1169
- var formkitVersion = '202608111803';
1169
+ var formkitVersion = '202608262225';
1170
1170
 
1171
1171
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1172
1172
  // See LICENSE in the project root for license information.
@@ -1412,7 +1412,9 @@ class AuroRadioGroup extends LitElement {
1412
1412
 
1413
1413
  this.optionSelected = event.target;
1414
1414
 
1415
- this.validation.validate(this, this.optionSelected !== undefined);
1415
+ if (!this.noValidate) {
1416
+ this.validation.validate(this, this.optionSelected !== undefined);
1417
+ }
1416
1418
  }
1417
1419
 
1418
1420
  /**
@@ -1422,7 +1424,14 @@ class AuroRadioGroup extends LitElement {
1422
1424
  */
1423
1425
  handleRadioBlur() {
1424
1426
  this.touched = true;
1425
- this.validation.validate(this);
1427
+ if (!this.noValidate) {
1428
+ this.validation.validate(this);
1429
+ } else if (this.validity !== undefined && !this.hasAttribute('error')) {
1430
+ // Clear stale error state left by a previous validate(true) call.
1431
+ // Do not clear when the error attribute is set — that is an externally forced error.
1432
+ this.validity = undefined;
1433
+ this.errorMessage = '';
1434
+ }
1426
1435
  }
1427
1436
 
1428
1437
  /**
@@ -1598,7 +1607,9 @@ class AuroRadioGroup extends LitElement {
1598
1607
  this.value = event.target.value;
1599
1608
  this.optionSelected = event.target;
1600
1609
 
1601
- this.validation.validate(this);
1610
+ if (!this.noValidate) {
1611
+ this.validation.validate(this);
1612
+ }
1602
1613
  }
1603
1614
 
1604
1615
  /**
@@ -4836,7 +4836,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$2 {
4836
4836
  }
4837
4837
  };
4838
4838
 
4839
- var formkitVersion$1 = '202608111803';
4839
+ var formkitVersion$1 = '202608262225';
4840
4840
 
4841
4841
  class AuroElement extends i$2 {
4842
4842
  static get properties() {
@@ -6947,7 +6947,7 @@ class AuroHelpText extends i$2 {
6947
6947
  }
6948
6948
  }
6949
6949
 
6950
- var formkitVersion = '202608111803';
6950
+ var formkitVersion = '202608262225';
6951
6951
 
6952
6952
  var styleCss$2 = i$5`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 300);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 300);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer{max-width:100%}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;box-sizing:border-box;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{overflow:hidden;height:auto;text-overflow:ellipsis;white-space:nowrap}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
6953
6953
 
@@ -7944,7 +7944,14 @@ class AuroSelect extends AuroElement$1 {
7944
7944
  this.addEventListener('focusin', this.handleFocusin);
7945
7945
 
7946
7946
  this.addEventListener('blur', () => {
7947
- this.validate();
7947
+ if (!this.noValidate) {
7948
+ this.validate();
7949
+ } else if (this.validity !== undefined && !this.hasAttribute('error')) {
7950
+ // Clear stale error state left by a previous validate(true) call.
7951
+ // Do not clear when the error attribute is set — that is an externally forced error.
7952
+ this.validity = undefined;
7953
+ this.errorMessage = '';
7954
+ }
7948
7955
  this.hasFocus = false;
7949
7956
  this._clearTypeaheadBuffer();
7950
7957
  });
@@ -8279,7 +8286,9 @@ class AuroSelect extends AuroElement$1 {
8279
8286
  this.setMenuValue(this.value);
8280
8287
 
8281
8288
  this._updateNativeSelect();
8282
- this.validate();
8289
+ if (!this.noValidate) {
8290
+ this.validate();
8291
+ }
8283
8292
  if (!this.multiSelect) {
8284
8293
  this.hideBib();
8285
8294
  }