@aurodesignsystem-dev/auro-formkit 0.0.0-pr1588.2 → 0.0.0-pr1590.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 (48) hide show
  1. package/components/checkbox/demo/customize.min.js +4 -13
  2. package/components/checkbox/demo/getting-started.min.js +4 -13
  3. package/components/checkbox/demo/index.min.js +4 -13
  4. package/components/checkbox/dist/index.js +4 -13
  5. package/components/checkbox/dist/registered.js +4 -13
  6. package/components/combobox/demo/customize.min.js +41 -11
  7. package/components/combobox/demo/getting-started.min.js +41 -11
  8. package/components/combobox/demo/index.min.js +41 -11
  9. package/components/combobox/dist/index.js +41 -11
  10. package/components/combobox/dist/registered.js +41 -11
  11. package/components/counter/demo/customize.min.js +2 -2
  12. package/components/counter/demo/index.min.js +2 -2
  13. package/components/counter/dist/index.js +2 -2
  14. package/components/counter/dist/registered.js +2 -2
  15. package/components/datepicker/demo/customize.min.js +39 -5
  16. package/components/datepicker/demo/index.min.js +39 -5
  17. package/components/datepicker/dist/index.js +39 -5
  18. package/components/datepicker/dist/registered.js +39 -5
  19. package/components/dropdown/demo/customize.min.js +1 -1
  20. package/components/dropdown/demo/getting-started.min.js +38 -4
  21. package/components/dropdown/demo/index.min.js +1 -1
  22. package/components/dropdown/dist/index.js +1 -1
  23. package/components/dropdown/dist/registered.js +1 -1
  24. package/components/form/demo/customize.min.js +131 -60
  25. package/components/form/demo/getting-started.min.js +131 -60
  26. package/components/form/demo/index.min.js +131 -60
  27. package/components/form/demo/registerDemoDeps.min.js +131 -60
  28. package/components/input/demo/css-only.md +2 -2
  29. package/components/input/demo/customize.md +2 -2
  30. package/components/input/demo/customize.min.js +37 -3
  31. package/components/input/demo/getting-started.min.js +37 -3
  32. package/components/input/demo/index.min.js +37 -3
  33. package/components/input/demo/why-input.md +2 -3
  34. package/components/input/dist/index.js +37 -3
  35. package/components/input/dist/registered.js +37 -3
  36. package/components/radio/demo/customize.min.js +4 -14
  37. package/components/radio/demo/getting-started.min.js +4 -14
  38. package/components/radio/demo/index.min.js +4 -14
  39. package/components/radio/dist/auro-radio-group.d.ts +0 -1
  40. package/components/radio/dist/index.js +4 -14
  41. package/components/radio/dist/registered.js +4 -14
  42. package/components/select/demo/customize.min.js +4 -12
  43. package/components/select/demo/getting-started.min.js +4 -12
  44. package/components/select/demo/index.min.js +4 -12
  45. package/components/select/dist/auro-select.d.ts +0 -2
  46. package/components/select/dist/index.js +4 -12
  47. package/components/select/dist/registered.js +4 -12
  48. package/package.json +1 -1
@@ -1275,7 +1275,7 @@ class AuroHelpText extends i$2 {
1275
1275
  }
1276
1276
  }
1277
1277
 
1278
- var formkitVersion = '202608201531';
1278
+ var formkitVersion = '202608201808';
1279
1279
 
1280
1280
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1281
1281
  // See LICENSE in the project root for license information.
@@ -1495,9 +1495,7 @@ class AuroCheckboxGroup extends i$2 {
1495
1495
  composed: true,
1496
1496
  }));
1497
1497
 
1498
- if (!this.noValidate) {
1499
- this.validate(true);
1500
- }
1498
+ this.validate(true);
1501
1499
  }
1502
1500
 
1503
1501
  firstUpdated() {
@@ -1508,18 +1506,11 @@ class AuroCheckboxGroup extends i$2 {
1508
1506
  const checkFocusWithin = function(evt) {
1509
1507
  if (document.auroCheckboxGroupActive && !document.auroCheckboxGroupActive.contains(evt.target)) {
1510
1508
  // if focus has left the group, cleanup and validate
1511
- const group = document.auroCheckboxGroupActive;
1512
- group.focusWithin = false;
1509
+ document.auroCheckboxGroupActive.focusWithin = false;
1513
1510
  window.removeEventListener('focusin', checkFocusWithin);
1514
1511
  document.removeEventListener('click', checkFocusWithin);
1515
1512
  // execute the validation
1516
- if (!group.noValidate) {
1517
- group.validation.validate(group);
1518
- } else if (group.validity !== undefined) {
1519
- // Clear stale error state left by a previous validate(true) call
1520
- group.validity = undefined;
1521
- group.errorMessage = '';
1522
- }
1513
+ document.auroCheckboxGroupActive.validation.validate(document.auroCheckboxGroupActive);
1523
1514
  }
1524
1515
  };
1525
1516
 
@@ -1275,7 +1275,7 @@ class AuroHelpText extends i$2 {
1275
1275
  }
1276
1276
  }
1277
1277
 
1278
- var formkitVersion = '202608201531';
1278
+ var formkitVersion = '202608201808';
1279
1279
 
1280
1280
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1281
1281
  // See LICENSE in the project root for license information.
@@ -1495,9 +1495,7 @@ class AuroCheckboxGroup extends i$2 {
1495
1495
  composed: true,
1496
1496
  }));
1497
1497
 
1498
- if (!this.noValidate) {
1499
- this.validate(true);
1500
- }
1498
+ this.validate(true);
1501
1499
  }
1502
1500
 
1503
1501
  firstUpdated() {
@@ -1508,18 +1506,11 @@ class AuroCheckboxGroup extends i$2 {
1508
1506
  const checkFocusWithin = function(evt) {
1509
1507
  if (document.auroCheckboxGroupActive && !document.auroCheckboxGroupActive.contains(evt.target)) {
1510
1508
  // if focus has left the group, cleanup and validate
1511
- const group = document.auroCheckboxGroupActive;
1512
- group.focusWithin = false;
1509
+ document.auroCheckboxGroupActive.focusWithin = false;
1513
1510
  window.removeEventListener('focusin', checkFocusWithin);
1514
1511
  document.removeEventListener('click', checkFocusWithin);
1515
1512
  // execute the validation
1516
- if (!group.noValidate) {
1517
- group.validation.validate(group);
1518
- } else if (group.validity !== undefined) {
1519
- // Clear stale error state left by a previous validate(true) call
1520
- group.validity = undefined;
1521
- group.errorMessage = '';
1522
- }
1513
+ document.auroCheckboxGroupActive.validation.validate(document.auroCheckboxGroupActive);
1523
1514
  }
1524
1515
  };
1525
1516
 
@@ -1275,7 +1275,7 @@ class AuroHelpText extends i$2 {
1275
1275
  }
1276
1276
  }
1277
1277
 
1278
- var formkitVersion = '202608201531';
1278
+ var formkitVersion = '202608201808';
1279
1279
 
1280
1280
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1281
1281
  // See LICENSE in the project root for license information.
@@ -1495,9 +1495,7 @@ class AuroCheckboxGroup extends i$2 {
1495
1495
  composed: true,
1496
1496
  }));
1497
1497
 
1498
- if (!this.noValidate) {
1499
- this.validate(true);
1500
- }
1498
+ this.validate(true);
1501
1499
  }
1502
1500
 
1503
1501
  firstUpdated() {
@@ -1508,18 +1506,11 @@ class AuroCheckboxGroup extends i$2 {
1508
1506
  const checkFocusWithin = function(evt) {
1509
1507
  if (document.auroCheckboxGroupActive && !document.auroCheckboxGroupActive.contains(evt.target)) {
1510
1508
  // if focus has left the group, cleanup and validate
1511
- const group = document.auroCheckboxGroupActive;
1512
- group.focusWithin = false;
1509
+ document.auroCheckboxGroupActive.focusWithin = false;
1513
1510
  window.removeEventListener('focusin', checkFocusWithin);
1514
1511
  document.removeEventListener('click', checkFocusWithin);
1515
1512
  // execute the validation
1516
- if (!group.noValidate) {
1517
- group.validation.validate(group);
1518
- } else if (group.validity !== undefined) {
1519
- // Clear stale error state left by a previous validate(true) call
1520
- group.validity = undefined;
1521
- group.errorMessage = '';
1522
- }
1513
+ document.auroCheckboxGroupActive.validation.validate(document.auroCheckboxGroupActive);
1523
1514
  }
1524
1515
  };
1525
1516
 
@@ -1228,7 +1228,7 @@ class AuroHelpText extends LitElement {
1228
1228
  }
1229
1229
  }
1230
1230
 
1231
- var formkitVersion = '202608201531';
1231
+ var formkitVersion = '202608201808';
1232
1232
 
1233
1233
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1234
1234
  // See LICENSE in the project root for license information.
@@ -1448,9 +1448,7 @@ class AuroCheckboxGroup extends LitElement {
1448
1448
  composed: true,
1449
1449
  }));
1450
1450
 
1451
- if (!this.noValidate) {
1452
- this.validate(true);
1453
- }
1451
+ this.validate(true);
1454
1452
  }
1455
1453
 
1456
1454
  firstUpdated() {
@@ -1461,18 +1459,11 @@ class AuroCheckboxGroup extends LitElement {
1461
1459
  const checkFocusWithin = function(evt) {
1462
1460
  if (document.auroCheckboxGroupActive && !document.auroCheckboxGroupActive.contains(evt.target)) {
1463
1461
  // if focus has left the group, cleanup and validate
1464
- const group = document.auroCheckboxGroupActive;
1465
- group.focusWithin = false;
1462
+ document.auroCheckboxGroupActive.focusWithin = false;
1466
1463
  window.removeEventListener('focusin', checkFocusWithin);
1467
1464
  document.removeEventListener('click', checkFocusWithin);
1468
1465
  // execute the validation
1469
- if (!group.noValidate) {
1470
- group.validation.validate(group);
1471
- } else if (group.validity !== undefined) {
1472
- // Clear stale error state left by a previous validate(true) call
1473
- group.validity = undefined;
1474
- group.errorMessage = '';
1475
- }
1466
+ document.auroCheckboxGroupActive.validation.validate(document.auroCheckboxGroupActive);
1476
1467
  }
1477
1468
  };
1478
1469
 
@@ -1228,7 +1228,7 @@ class AuroHelpText extends LitElement {
1228
1228
  }
1229
1229
  }
1230
1230
 
1231
- var formkitVersion = '202608201531';
1231
+ var formkitVersion = '202608201808';
1232
1232
 
1233
1233
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1234
1234
  // See LICENSE in the project root for license information.
@@ -1448,9 +1448,7 @@ class AuroCheckboxGroup extends LitElement {
1448
1448
  composed: true,
1449
1449
  }));
1450
1450
 
1451
- if (!this.noValidate) {
1452
- this.validate(true);
1453
- }
1451
+ this.validate(true);
1454
1452
  }
1455
1453
 
1456
1454
  firstUpdated() {
@@ -1461,18 +1459,11 @@ class AuroCheckboxGroup extends LitElement {
1461
1459
  const checkFocusWithin = function(evt) {
1462
1460
  if (document.auroCheckboxGroupActive && !document.auroCheckboxGroupActive.contains(evt.target)) {
1463
1461
  // if focus has left the group, cleanup and validate
1464
- const group = document.auroCheckboxGroupActive;
1465
- group.focusWithin = false;
1462
+ document.auroCheckboxGroupActive.focusWithin = false;
1466
1463
  window.removeEventListener('focusin', checkFocusWithin);
1467
1464
  document.removeEventListener('click', checkFocusWithin);
1468
1465
  // execute the validation
1469
- if (!group.noValidate) {
1470
- group.validation.validate(group);
1471
- } else if (group.validity !== undefined) {
1472
- // Clear stale error state left by a previous validate(true) call
1473
- group.validity = undefined;
1474
- group.errorMessage = '';
1475
- }
1466
+ document.auroCheckboxGroupActive.validation.validate(document.auroCheckboxGroupActive);
1476
1467
  }
1477
1468
  };
1478
1469
 
@@ -4977,7 +4977,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
4977
4977
  }
4978
4978
  };
4979
4979
 
4980
- var formkitVersion$2 = '202608201531';
4980
+ var formkitVersion$2 = '202608201808';
4981
4981
 
4982
4982
  let AuroElement$2 = class AuroElement extends i$3 {
4983
4983
  static get properties() {
@@ -18270,6 +18270,18 @@ class BaseInput extends AuroElement$1 {
18270
18270
  cardIcon: 'cc-dinersclub',
18271
18271
  maskFormat: "0000 000000 0000"
18272
18272
  },
18273
+ {
18274
+ // JCB is variable length (16-19 digits), like UnionPay, so it reuses the
18275
+ // formatMinLength/formatLength range machinery. The 35 prefix overlaps no
18276
+ // other brand (Amex is 34|37, Diners is 30[0-5]|36|38).
18277
+ name: 'JCB',
18278
+ regex: /^(?<num>35)\d{0}/u,
18279
+ formatMinLength: 19,
18280
+ formatLength: 23,
18281
+ errorMessage: CreditCardValidationMessage,
18282
+ cardIcon: 'cc-jcb',
18283
+ maskFormat: "0000 0000 0000 0000 000"
18284
+ },
18273
18285
  {
18274
18286
  name: 'Visa',
18275
18287
  regex: /^(?<num>4)\d{0}/u,
@@ -18301,6 +18313,20 @@ class BaseInput extends AuroElement$1 {
18301
18313
  errorMessage: CreditCardValidationMessage,
18302
18314
  cardIcon: 'cc-discover',
18303
18315
  maskFormat: "0000 0000 0000 0000"
18316
+ },
18317
+ {
18318
+ // China UnionPay is variable length (16-19 digits). It must come after
18319
+ // Discover so the last-match-wins loop below gives its 62 prefix
18320
+ // precedence over the generic `6` that resolves to Discover. 81 is used
18321
+ // by UnionPay cards issued outside mainland China and overlaps no other
18322
+ // brand. 60 is intentionally excluded (it overlaps real Discover 6011).
18323
+ name: 'China UnionPay',
18324
+ regex: /^(?<num>62|81)\d{0}/u,
18325
+ formatMinLength: 19,
18326
+ formatLength: 23,
18327
+ errorMessage: CreditCardValidationMessage,
18328
+ cardIcon: 'cc-unionpay',
18329
+ maskFormat: "0000 0000 0000 0000 000"
18304
18330
  }
18305
18331
  ];
18306
18332
 
@@ -18318,7 +18344,12 @@ class BaseInput extends AuroElement$1 {
18318
18344
  }
18319
18345
  });
18320
18346
 
18321
- this.validationCCLength = type.formatLength;
18347
+ // Variable-length brands (both min and max defined, e.g. UnionPay) validate
18348
+ // against the minimum masked length so shorter-but-valid entries are not
18349
+ // flagged tooShort. Fixed-length brands keep their single formatLength.
18350
+ this.validationCCLength = type.formatMinLength && type.formatLength
18351
+ ? type.formatMinLength
18352
+ : type.formatLength;
18322
18353
 
18323
18354
  return type;
18324
18355
  }
@@ -18677,7 +18708,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
18677
18708
  }
18678
18709
  };
18679
18710
 
18680
- var formkitVersion$1 = '202608201531';
18711
+ var formkitVersion$1 = '202608201808';
18681
18712
 
18682
18713
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18683
18714
  // See LICENSE in the project root for license information.
@@ -19099,7 +19130,10 @@ class AuroInput extends BaseInput {
19099
19130
  */
19100
19131
  definePattern() {
19101
19132
  if (this.type === 'credit-card' && !this.noValidate && this.maxLength) {
19102
- return `.{${this.maxLength},${this.maxLength}}`;
19133
+ // Variable-length brands (e.g. UnionPay) set minLength, so accept a range;
19134
+ // fixed-length brands leave minLength undefined and keep an exact length.
19135
+ const minPatternLength = this.minLength || this.maxLength;
19136
+ return `.{${minPatternLength},${this.maxLength}}`;
19103
19137
  }
19104
19138
 
19105
19139
  return this.pattern;
@@ -19853,7 +19887,7 @@ class AuroBibtemplate extends i$3 {
19853
19887
  }
19854
19888
  }
19855
19889
 
19856
- var formkitVersion = '202608201531';
19890
+ var formkitVersion = '202608201808';
19857
19891
 
19858
19892
  var styleCss$3 = i$6`.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}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
19859
19893
 
@@ -21548,12 +21582,8 @@ class AuroCombobox extends AuroElement {
21548
21582
  // and validating against the pre-selection value flashes a stale error
21549
21583
  // between mousedown and mouseup. The next focusout fires after the
21550
21584
  // dropdown closes and validates against the post-selection value.
21551
- if (!this.noValidate && !this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen) {
21585
+ if (!this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen) {
21552
21586
  this.validate();
21553
- } else if (this.noValidate && !this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen && this.validity !== undefined) {
21554
- // Clear stale error state left by a previous validate(true) call
21555
- this.validity = undefined;
21556
- this.errorMessage = null;
21557
21587
  }
21558
21588
  });
21559
21589
 
@@ -21692,7 +21722,7 @@ class AuroCombobox extends AuroElement {
21692
21722
  // interaction). In fullscreen dialog mode, componentHasFocus returns false
21693
21723
  // because focus is inside the top-layer dialog, so also check
21694
21724
  // dropdownOpen and the fullscreen transition flag.
21695
- if (!this.noValidate && !this.componentHasFocus && !this.dropdownOpen && !this._inFullscreenTransition) {
21725
+ if (!this.componentHasFocus && !this.dropdownOpen && !this._inFullscreenTransition) {
21696
21726
  this.validate();
21697
21727
  }
21698
21728
 
@@ -4977,7 +4977,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
4977
4977
  }
4978
4978
  };
4979
4979
 
4980
- var formkitVersion$2 = '202608201531';
4980
+ var formkitVersion$2 = '202608201808';
4981
4981
 
4982
4982
  let AuroElement$2 = class AuroElement extends i$3 {
4983
4983
  static get properties() {
@@ -18270,6 +18270,18 @@ class BaseInput extends AuroElement$1 {
18270
18270
  cardIcon: 'cc-dinersclub',
18271
18271
  maskFormat: "0000 000000 0000"
18272
18272
  },
18273
+ {
18274
+ // JCB is variable length (16-19 digits), like UnionPay, so it reuses the
18275
+ // formatMinLength/formatLength range machinery. The 35 prefix overlaps no
18276
+ // other brand (Amex is 34|37, Diners is 30[0-5]|36|38).
18277
+ name: 'JCB',
18278
+ regex: /^(?<num>35)\d{0}/u,
18279
+ formatMinLength: 19,
18280
+ formatLength: 23,
18281
+ errorMessage: CreditCardValidationMessage,
18282
+ cardIcon: 'cc-jcb',
18283
+ maskFormat: "0000 0000 0000 0000 000"
18284
+ },
18273
18285
  {
18274
18286
  name: 'Visa',
18275
18287
  regex: /^(?<num>4)\d{0}/u,
@@ -18301,6 +18313,20 @@ class BaseInput extends AuroElement$1 {
18301
18313
  errorMessage: CreditCardValidationMessage,
18302
18314
  cardIcon: 'cc-discover',
18303
18315
  maskFormat: "0000 0000 0000 0000"
18316
+ },
18317
+ {
18318
+ // China UnionPay is variable length (16-19 digits). It must come after
18319
+ // Discover so the last-match-wins loop below gives its 62 prefix
18320
+ // precedence over the generic `6` that resolves to Discover. 81 is used
18321
+ // by UnionPay cards issued outside mainland China and overlaps no other
18322
+ // brand. 60 is intentionally excluded (it overlaps real Discover 6011).
18323
+ name: 'China UnionPay',
18324
+ regex: /^(?<num>62|81)\d{0}/u,
18325
+ formatMinLength: 19,
18326
+ formatLength: 23,
18327
+ errorMessage: CreditCardValidationMessage,
18328
+ cardIcon: 'cc-unionpay',
18329
+ maskFormat: "0000 0000 0000 0000 000"
18304
18330
  }
18305
18331
  ];
18306
18332
 
@@ -18318,7 +18344,12 @@ class BaseInput extends AuroElement$1 {
18318
18344
  }
18319
18345
  });
18320
18346
 
18321
- this.validationCCLength = type.formatLength;
18347
+ // Variable-length brands (both min and max defined, e.g. UnionPay) validate
18348
+ // against the minimum masked length so shorter-but-valid entries are not
18349
+ // flagged tooShort. Fixed-length brands keep their single formatLength.
18350
+ this.validationCCLength = type.formatMinLength && type.formatLength
18351
+ ? type.formatMinLength
18352
+ : type.formatLength;
18322
18353
 
18323
18354
  return type;
18324
18355
  }
@@ -18677,7 +18708,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
18677
18708
  }
18678
18709
  };
18679
18710
 
18680
- var formkitVersion$1 = '202608201531';
18711
+ var formkitVersion$1 = '202608201808';
18681
18712
 
18682
18713
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18683
18714
  // See LICENSE in the project root for license information.
@@ -19099,7 +19130,10 @@ class AuroInput extends BaseInput {
19099
19130
  */
19100
19131
  definePattern() {
19101
19132
  if (this.type === 'credit-card' && !this.noValidate && this.maxLength) {
19102
- return `.{${this.maxLength},${this.maxLength}}`;
19133
+ // Variable-length brands (e.g. UnionPay) set minLength, so accept a range;
19134
+ // fixed-length brands leave minLength undefined and keep an exact length.
19135
+ const minPatternLength = this.minLength || this.maxLength;
19136
+ return `.{${minPatternLength},${this.maxLength}}`;
19103
19137
  }
19104
19138
 
19105
19139
  return this.pattern;
@@ -19853,7 +19887,7 @@ class AuroBibtemplate extends i$3 {
19853
19887
  }
19854
19888
  }
19855
19889
 
19856
- var formkitVersion = '202608201531';
19890
+ var formkitVersion = '202608201808';
19857
19891
 
19858
19892
  var styleCss$3 = i$6`.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}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
19859
19893
 
@@ -21548,12 +21582,8 @@ class AuroCombobox extends AuroElement {
21548
21582
  // and validating against the pre-selection value flashes a stale error
21549
21583
  // between mousedown and mouseup. The next focusout fires after the
21550
21584
  // dropdown closes and validates against the post-selection value.
21551
- if (!this.noValidate && !this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen) {
21585
+ if (!this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen) {
21552
21586
  this.validate();
21553
- } else if (this.noValidate && !this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen && this.validity !== undefined) {
21554
- // Clear stale error state left by a previous validate(true) call
21555
- this.validity = undefined;
21556
- this.errorMessage = null;
21557
21587
  }
21558
21588
  });
21559
21589
 
@@ -21692,7 +21722,7 @@ class AuroCombobox extends AuroElement {
21692
21722
  // interaction). In fullscreen dialog mode, componentHasFocus returns false
21693
21723
  // because focus is inside the top-layer dialog, so also check
21694
21724
  // dropdownOpen and the fullscreen transition flag.
21695
- if (!this.noValidate && !this.componentHasFocus && !this.dropdownOpen && !this._inFullscreenTransition) {
21725
+ if (!this.componentHasFocus && !this.dropdownOpen && !this._inFullscreenTransition) {
21696
21726
  this.validate();
21697
21727
  }
21698
21728
 
@@ -4992,7 +4992,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
4992
4992
  }
4993
4993
  };
4994
4994
 
4995
- var formkitVersion$2 = '202608201531';
4995
+ var formkitVersion$2 = '202608201808';
4996
4996
 
4997
4997
  let AuroElement$2 = class AuroElement extends i$3 {
4998
4998
  static get properties() {
@@ -18285,6 +18285,18 @@ class BaseInput extends AuroElement$1 {
18285
18285
  cardIcon: 'cc-dinersclub',
18286
18286
  maskFormat: "0000 000000 0000"
18287
18287
  },
18288
+ {
18289
+ // JCB is variable length (16-19 digits), like UnionPay, so it reuses the
18290
+ // formatMinLength/formatLength range machinery. The 35 prefix overlaps no
18291
+ // other brand (Amex is 34|37, Diners is 30[0-5]|36|38).
18292
+ name: 'JCB',
18293
+ regex: /^(?<num>35)\d{0}/u,
18294
+ formatMinLength: 19,
18295
+ formatLength: 23,
18296
+ errorMessage: CreditCardValidationMessage,
18297
+ cardIcon: 'cc-jcb',
18298
+ maskFormat: "0000 0000 0000 0000 000"
18299
+ },
18288
18300
  {
18289
18301
  name: 'Visa',
18290
18302
  regex: /^(?<num>4)\d{0}/u,
@@ -18316,6 +18328,20 @@ class BaseInput extends AuroElement$1 {
18316
18328
  errorMessage: CreditCardValidationMessage,
18317
18329
  cardIcon: 'cc-discover',
18318
18330
  maskFormat: "0000 0000 0000 0000"
18331
+ },
18332
+ {
18333
+ // China UnionPay is variable length (16-19 digits). It must come after
18334
+ // Discover so the last-match-wins loop below gives its 62 prefix
18335
+ // precedence over the generic `6` that resolves to Discover. 81 is used
18336
+ // by UnionPay cards issued outside mainland China and overlaps no other
18337
+ // brand. 60 is intentionally excluded (it overlaps real Discover 6011).
18338
+ name: 'China UnionPay',
18339
+ regex: /^(?<num>62|81)\d{0}/u,
18340
+ formatMinLength: 19,
18341
+ formatLength: 23,
18342
+ errorMessage: CreditCardValidationMessage,
18343
+ cardIcon: 'cc-unionpay',
18344
+ maskFormat: "0000 0000 0000 0000 000"
18319
18345
  }
18320
18346
  ];
18321
18347
 
@@ -18333,7 +18359,12 @@ class BaseInput extends AuroElement$1 {
18333
18359
  }
18334
18360
  });
18335
18361
 
18336
- this.validationCCLength = type.formatLength;
18362
+ // Variable-length brands (both min and max defined, e.g. UnionPay) validate
18363
+ // against the minimum masked length so shorter-but-valid entries are not
18364
+ // flagged tooShort. Fixed-length brands keep their single formatLength.
18365
+ this.validationCCLength = type.formatMinLength && type.formatLength
18366
+ ? type.formatMinLength
18367
+ : type.formatLength;
18337
18368
 
18338
18369
  return type;
18339
18370
  }
@@ -18692,7 +18723,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
18692
18723
  }
18693
18724
  };
18694
18725
 
18695
- var formkitVersion$1 = '202608201531';
18726
+ var formkitVersion$1 = '202608201808';
18696
18727
 
18697
18728
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18698
18729
  // See LICENSE in the project root for license information.
@@ -19114,7 +19145,10 @@ class AuroInput extends BaseInput {
19114
19145
  */
19115
19146
  definePattern() {
19116
19147
  if (this.type === 'credit-card' && !this.noValidate && this.maxLength) {
19117
- return `.{${this.maxLength},${this.maxLength}}`;
19148
+ // Variable-length brands (e.g. UnionPay) set minLength, so accept a range;
19149
+ // fixed-length brands leave minLength undefined and keep an exact length.
19150
+ const minPatternLength = this.minLength || this.maxLength;
19151
+ return `.{${minPatternLength},${this.maxLength}}`;
19118
19152
  }
19119
19153
 
19120
19154
  return this.pattern;
@@ -19868,7 +19902,7 @@ class AuroBibtemplate extends i$3 {
19868
19902
  }
19869
19903
  }
19870
19904
 
19871
- var formkitVersion = '202608201531';
19905
+ var formkitVersion = '202608201808';
19872
19906
 
19873
19907
  var styleCss$3 = i$6`.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}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
19874
19908
 
@@ -21563,12 +21597,8 @@ class AuroCombobox extends AuroElement {
21563
21597
  // and validating against the pre-selection value flashes a stale error
21564
21598
  // between mousedown and mouseup. The next focusout fires after the
21565
21599
  // dropdown closes and validates against the post-selection value.
21566
- if (!this.noValidate && !this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen) {
21600
+ if (!this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen) {
21567
21601
  this.validate();
21568
- } else if (this.noValidate && !this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen && this.validity !== undefined) {
21569
- // Clear stale error state left by a previous validate(true) call
21570
- this.validity = undefined;
21571
- this.errorMessage = null;
21572
21602
  }
21573
21603
  });
21574
21604
 
@@ -21707,7 +21737,7 @@ class AuroCombobox extends AuroElement {
21707
21737
  // interaction). In fullscreen dialog mode, componentHasFocus returns false
21708
21738
  // because focus is inside the top-layer dialog, so also check
21709
21739
  // dropdownOpen and the fullscreen transition flag.
21710
- if (!this.noValidate && !this.componentHasFocus && !this.dropdownOpen && !this._inFullscreenTransition) {
21740
+ if (!this.componentHasFocus && !this.dropdownOpen && !this._inFullscreenTransition) {
21711
21741
  this.validate();
21712
21742
  }
21713
21743
 
@@ -4910,7 +4910,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
4910
4910
  }
4911
4911
  };
4912
4912
 
4913
- var formkitVersion$2 = '202608201531';
4913
+ var formkitVersion$2 = '202608201808';
4914
4914
 
4915
4915
  let AuroElement$2 = class AuroElement extends LitElement {
4916
4916
  static get properties() {
@@ -18196,6 +18196,18 @@ class BaseInput extends AuroElement$1 {
18196
18196
  cardIcon: 'cc-dinersclub',
18197
18197
  maskFormat: "0000 000000 0000"
18198
18198
  },
18199
+ {
18200
+ // JCB is variable length (16-19 digits), like UnionPay, so it reuses the
18201
+ // formatMinLength/formatLength range machinery. The 35 prefix overlaps no
18202
+ // other brand (Amex is 34|37, Diners is 30[0-5]|36|38).
18203
+ name: 'JCB',
18204
+ regex: /^(?<num>35)\d{0}/u,
18205
+ formatMinLength: 19,
18206
+ formatLength: 23,
18207
+ errorMessage: CreditCardValidationMessage,
18208
+ cardIcon: 'cc-jcb',
18209
+ maskFormat: "0000 0000 0000 0000 000"
18210
+ },
18199
18211
  {
18200
18212
  name: 'Visa',
18201
18213
  regex: /^(?<num>4)\d{0}/u,
@@ -18227,6 +18239,20 @@ class BaseInput extends AuroElement$1 {
18227
18239
  errorMessage: CreditCardValidationMessage,
18228
18240
  cardIcon: 'cc-discover',
18229
18241
  maskFormat: "0000 0000 0000 0000"
18242
+ },
18243
+ {
18244
+ // China UnionPay is variable length (16-19 digits). It must come after
18245
+ // Discover so the last-match-wins loop below gives its 62 prefix
18246
+ // precedence over the generic `6` that resolves to Discover. 81 is used
18247
+ // by UnionPay cards issued outside mainland China and overlaps no other
18248
+ // brand. 60 is intentionally excluded (it overlaps real Discover 6011).
18249
+ name: 'China UnionPay',
18250
+ regex: /^(?<num>62|81)\d{0}/u,
18251
+ formatMinLength: 19,
18252
+ formatLength: 23,
18253
+ errorMessage: CreditCardValidationMessage,
18254
+ cardIcon: 'cc-unionpay',
18255
+ maskFormat: "0000 0000 0000 0000 000"
18230
18256
  }
18231
18257
  ];
18232
18258
 
@@ -18244,7 +18270,12 @@ class BaseInput extends AuroElement$1 {
18244
18270
  }
18245
18271
  });
18246
18272
 
18247
- this.validationCCLength = type.formatLength;
18273
+ // Variable-length brands (both min and max defined, e.g. UnionPay) validate
18274
+ // against the minimum masked length so shorter-but-valid entries are not
18275
+ // flagged tooShort. Fixed-length brands keep their single formatLength.
18276
+ this.validationCCLength = type.formatMinLength && type.formatLength
18277
+ ? type.formatMinLength
18278
+ : type.formatLength;
18248
18279
 
18249
18280
  return type;
18250
18281
  }
@@ -18603,7 +18634,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
18603
18634
  }
18604
18635
  };
18605
18636
 
18606
- var formkitVersion$1 = '202608201531';
18637
+ var formkitVersion$1 = '202608201808';
18607
18638
 
18608
18639
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18609
18640
  // See LICENSE in the project root for license information.
@@ -19025,7 +19056,10 @@ class AuroInput extends BaseInput {
19025
19056
  */
19026
19057
  definePattern() {
19027
19058
  if (this.type === 'credit-card' && !this.noValidate && this.maxLength) {
19028
- return `.{${this.maxLength},${this.maxLength}}`;
19059
+ // Variable-length brands (e.g. UnionPay) set minLength, so accept a range;
19060
+ // fixed-length brands leave minLength undefined and keep an exact length.
19061
+ const minPatternLength = this.minLength || this.maxLength;
19062
+ return `.{${minPatternLength},${this.maxLength}}`;
19029
19063
  }
19030
19064
 
19031
19065
  return this.pattern;
@@ -19779,7 +19813,7 @@ class AuroBibtemplate extends LitElement {
19779
19813
  }
19780
19814
  }
19781
19815
 
19782
- var formkitVersion = '202608201531';
19816
+ var formkitVersion = '202608201808';
19783
19817
 
19784
19818
  var styleCss$1 = css`.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}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
19785
19819
 
@@ -21474,12 +21508,8 @@ class AuroCombobox extends AuroElement {
21474
21508
  // and validating against the pre-selection value flashes a stale error
21475
21509
  // between mousedown and mouseup. The next focusout fires after the
21476
21510
  // dropdown closes and validates against the post-selection value.
21477
- if (!this.noValidate && !this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen) {
21511
+ if (!this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen) {
21478
21512
  this.validate();
21479
- } else if (this.noValidate && !this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen && this.validity !== undefined) {
21480
- // Clear stale error state left by a previous validate(true) call
21481
- this.validity = undefined;
21482
- this.errorMessage = null;
21483
21513
  }
21484
21514
  });
21485
21515
 
@@ -21618,7 +21648,7 @@ class AuroCombobox extends AuroElement {
21618
21648
  // interaction). In fullscreen dialog mode, componentHasFocus returns false
21619
21649
  // because focus is inside the top-layer dialog, so also check
21620
21650
  // dropdownOpen and the fullscreen transition flag.
21621
- if (!this.noValidate && !this.componentHasFocus && !this.dropdownOpen && !this._inFullscreenTransition) {
21651
+ if (!this.componentHasFocus && !this.dropdownOpen && !this._inFullscreenTransition) {
21622
21652
  this.validate();
21623
21653
  }
21624
21654