@aurodesignsystem-dev/auro-formkit 0.0.0-pr1506.0 → 0.0.0-pr1506.1

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 (45) hide show
  1. package/components/checkbox/demo/customize.min.js +1 -1
  2. package/components/checkbox/demo/getting-started.min.js +1 -1
  3. package/components/checkbox/demo/index.min.js +1 -1
  4. package/components/checkbox/dist/index.js +1 -1
  5. package/components/checkbox/dist/registered.js +1 -1
  6. package/components/combobox/demo/customize.min.js +21 -130
  7. package/components/combobox/demo/getting-started.min.js +21 -130
  8. package/components/combobox/demo/index.min.js +21 -130
  9. package/components/combobox/dist/index.js +21 -130
  10. package/components/combobox/dist/registered.js +21 -130
  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 +7 -124
  16. package/components/datepicker/demo/index.min.js +7 -124
  17. package/components/datepicker/dist/index.js +7 -124
  18. package/components/datepicker/dist/registered.js +7 -124
  19. package/components/dropdown/demo/customize.min.js +1 -1
  20. package/components/dropdown/demo/getting-started.min.js +1 -1
  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 +39 -382
  25. package/components/form/demo/getting-started.min.js +39 -382
  26. package/components/form/demo/index.min.js +39 -382
  27. package/components/form/demo/registerDemoDeps.min.js +39 -382
  28. package/components/input/demo/customize.min.js +5 -122
  29. package/components/input/demo/getting-started.min.js +5 -122
  30. package/components/input/demo/index.min.js +5 -122
  31. package/components/input/dist/base-input.d.ts +0 -48
  32. package/components/input/dist/index.js +5 -122
  33. package/components/input/dist/registered.js +5 -122
  34. package/components/radio/demo/customize.min.js +1 -1
  35. package/components/radio/demo/getting-started.min.js +1 -1
  36. package/components/radio/demo/index.min.js +1 -1
  37. package/components/radio/dist/index.js +1 -1
  38. package/components/radio/dist/registered.js +1 -1
  39. package/components/select/demo/customize.min.js +2 -2
  40. package/components/select/demo/getting-started.min.js +2 -2
  41. package/components/select/demo/index.min.js +2 -2
  42. package/components/select/dist/index.js +2 -2
  43. package/components/select/dist/registered.js +2 -2
  44. package/custom-elements.json +0 -264
  45. package/package.json +1 -1
@@ -1260,7 +1260,7 @@ class AuroHelpText extends i$2 {
1260
1260
  }
1261
1261
  }
1262
1262
 
1263
- var formkitVersion = '202606190840';
1263
+ var formkitVersion = '202606192004';
1264
1264
 
1265
1265
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1266
1266
  // See LICENSE in the project root for license information.
@@ -1260,7 +1260,7 @@ class AuroHelpText extends i$2 {
1260
1260
  }
1261
1261
  }
1262
1262
 
1263
- var formkitVersion = '202606190840';
1263
+ var formkitVersion = '202606192004';
1264
1264
 
1265
1265
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1266
1266
  // See LICENSE in the project root for license information.
@@ -1260,7 +1260,7 @@ class AuroHelpText extends i$2 {
1260
1260
  }
1261
1261
  }
1262
1262
 
1263
- var formkitVersion = '202606190840';
1263
+ var formkitVersion = '202606192004';
1264
1264
 
1265
1265
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1266
1266
  // See LICENSE in the project root for license information.
@@ -1213,7 +1213,7 @@ class AuroHelpText extends LitElement {
1213
1213
  }
1214
1214
  }
1215
1215
 
1216
- var formkitVersion = '202606190840';
1216
+ var formkitVersion = '202606192004';
1217
1217
 
1218
1218
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1219
1219
  // See LICENSE in the project root for license information.
@@ -1213,7 +1213,7 @@ class AuroHelpText extends LitElement {
1213
1213
  }
1214
1214
  }
1215
1215
 
1216
- var formkitVersion = '202606190840';
1216
+ var formkitVersion = '202606192004';
1217
1217
 
1218
1218
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1219
1219
  // See LICENSE in the project root for license information.
@@ -4873,7 +4873,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
4873
4873
  }
4874
4874
  };
4875
4875
 
4876
- var formkitVersion$2 = '202606190840';
4876
+ var formkitVersion$2 = '202606192004';
4877
4877
 
4878
4878
  let AuroElement$2 = class AuroElement extends i$3 {
4879
4879
  static get properties() {
@@ -16746,10 +16746,8 @@ class BaseInput extends AuroElement$1 {
16746
16746
  this.layout = 'classic';
16747
16747
  this.locale = 'en-US';
16748
16748
  this.max = undefined;
16749
- this._maxObject = undefined;
16750
16749
  this.maxLength = undefined;
16751
16750
  this.min = undefined;
16752
- this._minObject = undefined;
16753
16751
  this.minLength = undefined;
16754
16752
  this.required = false;
16755
16753
  this.onDark = false;
@@ -16757,7 +16755,6 @@ class BaseInput extends AuroElement$1 {
16757
16755
  this.size = 'lg';
16758
16756
  this.shape = 'classic';
16759
16757
  this.value = undefined;
16760
- this._valueObject = undefined;
16761
16758
 
16762
16759
  this._initializePrivateDefaults();
16763
16760
  }
@@ -17297,7 +17294,7 @@ class BaseInput extends AuroElement$1 {
17297
17294
  * @returns {Date|undefined}
17298
17295
  */
17299
17296
  get valueObject() {
17300
- return this._valueObject || this._computeDateObjectFallback(this.value);
17297
+ return this.value && dateFormatter.isValidDate(this.value) ? dateFormatter.stringToDateInstance(this.value) : undefined;
17301
17298
  }
17302
17299
 
17303
17300
  /**
@@ -17305,7 +17302,7 @@ class BaseInput extends AuroElement$1 {
17305
17302
  * @returns {Date|undefined}
17306
17303
  */
17307
17304
  get minObject() {
17308
- return this._minObject || this._computeDateObjectFallback(this.min);
17305
+ return this.min && dateFormatter.isValidDate(this.min) ? dateFormatter.stringToDateInstance(this.min) : undefined;
17309
17306
  }
17310
17307
 
17311
17308
  /**
@@ -17313,50 +17310,7 @@ class BaseInput extends AuroElement$1 {
17313
17310
  * @returns {Date|undefined}
17314
17311
  */
17315
17312
  get maxObject() {
17316
- return this._maxObject || this._computeDateObjectFallback(this.max);
17317
- }
17318
-
17319
- /**
17320
- * Parses a date string into a Date object when the corresponding `_*Object`
17321
- * field hasn't been synced yet by `updated()`. Returns undefined when the
17322
- * input type/format isn't a full date or the string is not a valid date.
17323
- *
17324
- * Why this exists: a parent (datepicker) can call `inputN.validate()` from
17325
- * inside its own `updated()` before this input's `updated()` has run
17326
- * `syncDateValues()` — so `_valueObject`/`_maxObject` are still `undefined`
17327
- * and range checks would otherwise silently no-op (flipping the result to
17328
- * `valid` or `patternMismatch`).
17329
- * @private
17330
- * @param {string|undefined} dateStr - ISO date string from `value`/`min`/`max`.
17331
- * @returns {Date|undefined}
17332
- */
17333
- _computeDateObjectFallback(dateStr) {
17334
- if (!dateStr || !this.util || !this.util.isFullDateFormat(this.type, this.format)) {
17335
- return undefined;
17336
- }
17337
- if (!dateFormatter.isValidDate(dateStr)) {
17338
- return undefined;
17339
- }
17340
- return dateFormatter.stringToDateInstance(dateStr);
17341
- }
17342
-
17343
- /**
17344
- * Internal setter for readonly date object properties.
17345
- * @private
17346
- * @param {'valueObject'|'minObject'|'maxObject'} propertyName - Public object property name.
17347
- * @param {Date|undefined} propertyValue - Value to assign.
17348
- * @returns {void}
17349
- */
17350
- setDateObjectProperty(propertyName, propertyValue) {
17351
- const internalPropertyName = `_${propertyName}`;
17352
- const previousValue = this[internalPropertyName];
17353
-
17354
- if (previousValue === propertyValue) {
17355
- return;
17356
- }
17357
-
17358
- this[internalPropertyName] = propertyValue;
17359
- this.requestUpdate(propertyName, previousValue);
17313
+ return this.max && dateFormatter.isValidDate(this.max) ? dateFormatter.stringToDateInstance(this.max) : undefined;
17360
17314
  }
17361
17315
 
17362
17316
  connectedCallback() {
@@ -17385,7 +17339,6 @@ class BaseInput extends AuroElement$1 {
17385
17339
  format: this.format
17386
17340
  });
17387
17341
  this.configureDataForType();
17388
- this.syncDateValues();
17389
17342
  }
17390
17343
 
17391
17344
  disconnectedCallback() {
@@ -17415,7 +17368,6 @@ class BaseInput extends AuroElement$1 {
17415
17368
  this.setCustomHelpTextMessage();
17416
17369
  this.configureAutoFormatting();
17417
17370
  this.configureDataForType();
17418
- this.syncDateValues();
17419
17371
  }
17420
17372
 
17421
17373
  /**
@@ -17552,8 +17504,6 @@ class BaseInput extends AuroElement$1 {
17552
17504
  this.configureDataForType();
17553
17505
  }
17554
17506
 
17555
- this.syncDateValues(changedProperties);
17556
-
17557
17507
  if (changedProperties.has('value')) {
17558
17508
  if (this.value && this.value.length > 0) {
17559
17509
  this.hasValue = true;
@@ -17624,69 +17574,6 @@ class BaseInput extends AuroElement$1 {
17624
17574
  }));
17625
17575
  }
17626
17576
 
17627
-
17628
- /**
17629
- * Synchronizes the ISO string values and Date object representations for date-related properties.
17630
- * This keeps the model and display values aligned when either side changes.
17631
- *
17632
- * When a full date format is in use, this method updates `value`, `min`, and `max` from their corresponding
17633
- * Date objects or vice versa, based on which properties have changed. It only runs when the current configuration
17634
- * represents a full year/month/day date format.
17635
- *
17636
- * @param {Map<string, unknown>|undefined} [changedProperties=undefined] - Optional map of changed properties used to limit which values are synchronized.
17637
- * @returns {void}
17638
- * @private
17639
- */
17640
- syncDateValues(changedProperties = undefined) {
17641
- if (!this.util.isFullDateFormat(this.type, this.format)) {
17642
- return;
17643
- }
17644
-
17645
- this.syncSingleDateValue(changedProperties, 'valueObject', 'value');
17646
- this.syncSingleDateValue(changedProperties, 'minObject', 'min');
17647
- this.syncSingleDateValue(changedProperties, 'maxObject', 'max');
17648
- }
17649
-
17650
- /**
17651
- * Synchronizes one date object/string property pair.
17652
- * @private
17653
- * @param {Map<string, unknown>|undefined} changedProperties - Map of changed properties from Lit.
17654
- * @param {string} objectProperty - Date object property name.
17655
- * @param {string} valueProperty - ISO string property name.
17656
- * @returns {void}
17657
- */
17658
- syncSingleDateValue(changedProperties, objectProperty, valueProperty) {
17659
- const objectPropertyChanged = !changedProperties || changedProperties.has(objectProperty);
17660
-
17661
- // objectProperty wins over valueProperty when both changed
17662
- if (objectPropertyChanged && this[objectProperty]) {
17663
- this[valueProperty] = dateFormatter.toISOFormatString(this[objectProperty]);
17664
- return;
17665
- }
17666
-
17667
- const valuePropertyChanged = !changedProperties || changedProperties.has(valueProperty);
17668
- if (!valuePropertyChanged) {
17669
- return;
17670
- }
17671
-
17672
- // when value is newly set to the same ISO string that corresponds to the existing Date object, do not clear the Date object (avoid unnecessary updates)
17673
- if (
17674
- changedProperties &&
17675
- valueProperty === 'value' &&
17676
- changedProperties.get('value') === undefined &&
17677
- this[objectProperty] instanceof Date &&
17678
- this[valueProperty] === dateFormatter.toISOFormatString(this[objectProperty])
17679
- ) {
17680
- return;
17681
- }
17682
-
17683
- if (dateFormatter.isValidDate(this[valueProperty])) {
17684
- this.setDateObjectProperty(objectProperty, dateFormatter.stringToDateInstance(this[valueProperty]));
17685
- } else {
17686
- this.setDateObjectProperty(objectProperty, undefined);
17687
- }
17688
- }
17689
-
17690
17577
  /**
17691
17578
  * Sets up IMasks and logic based on auto-formatting requirements.
17692
17579
  * @private
@@ -17723,9 +17610,7 @@ class BaseInput extends AuroElement$1 {
17723
17610
  if (
17724
17611
  this.util.isFullDateFormat(this.type, this.format) &&
17725
17612
  this.value &&
17726
- dateFormatter.isValidDate(this.value) &&
17727
- this.valueObject instanceof Date &&
17728
- !Number.isNaN(this.valueObject.getTime()) &&
17613
+ this.valueObject &&
17729
17614
  typeof maskOptions.format === 'function'
17730
17615
  ) {
17731
17616
  existingValue = maskOptions.format(this.valueObject);
@@ -17930,7 +17815,6 @@ class BaseInput extends AuroElement$1 {
17930
17815
  */
17931
17816
  reset() {
17932
17817
  this.value = undefined;
17933
- this.setDateObjectProperty('valueObject', undefined);
17934
17818
  this.validation.reset(this);
17935
17819
  }
17936
17820
 
@@ -17939,7 +17823,6 @@ class BaseInput extends AuroElement$1 {
17939
17823
  */
17940
17824
  clear() {
17941
17825
  this.value = undefined;
17942
- this.setDateObjectProperty('valueObject', undefined);
17943
17826
  }
17944
17827
 
17945
17828
  /**
@@ -18468,7 +18351,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
18468
18351
  }
18469
18352
  };
18470
18353
 
18471
- var formkitVersion$1 = '202606190840';
18354
+ var formkitVersion$1 = '202606192004';
18472
18355
 
18473
18356
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18474
18357
  // See LICENSE in the project root for license information.
@@ -19589,7 +19472,7 @@ class AuroBibtemplate extends i$3 {
19589
19472
  }
19590
19473
  }
19591
19474
 
19592
- var formkitVersion = '202606190840';
19475
+ var formkitVersion = '202606192004';
19593
19476
 
19594
19477
  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}`;
19595
19478
 
@@ -21106,11 +20989,15 @@ class AuroCombobox extends AuroElement {
21106
20989
 
21107
20990
  // Announce the selection after the dropdown closes so it isn't
21108
20991
  // overridden by VoiceOver's "collapsed" announcement from aria-expanded.
20992
+ // Skip when there's no selected value (e.g. menu.clearSelection() from
20993
+ // the unmatched-value path), otherwise VoiceOver reads "undefined".
21109
20994
  const selectedValue = this.menu.value;
21110
- const announcementDelay = 300;
21111
- setTimeout(() => {
21112
- announceToScreenReader(this._getAnnouncementRoot(), `${selectedValue}, selected`);
21113
- }, announcementDelay);
20995
+ if (selectedValue) {
20996
+ const announcementDelay = 300;
20997
+ setTimeout(() => {
20998
+ announceToScreenReader(this._getAnnouncementRoot(), `${selectedValue}, selected`);
20999
+ }, announcementDelay);
21000
+ }
21114
21001
  }
21115
21002
 
21116
21003
  // Programmatic value syncs leave availableOptions stale because
@@ -21531,8 +21418,12 @@ class AuroCombobox extends AuroElement {
21531
21418
  if (this.menu.options.some((opt) => opt.value === this.value) || this.behavior === 'filter') {
21532
21419
  this.setMenuValue(this.value);
21533
21420
  } else {
21534
- if (this.menu.value) {
21535
- this.menu.value = undefined;
21421
+ // Clear menu.value AND menu.optionSelected together. Clearing only
21422
+ // menu.value leaves the previously-selected option element pinned
21423
+ // as menu.optionSelected; a later auroMenu-selectedOption event
21424
+ // would then write its stale .value back into combobox.value.
21425
+ if (this.menu.value || this.menu.optionSelected) {
21426
+ this.menu.clearSelection();
21536
21427
  }
21537
21428
  // Suggestion-mode freeform value: sync the trigger + bib to show it,
21538
21429
  // then refresh the filter once the inputs flush (handleInputValueChange
@@ -4873,7 +4873,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
4873
4873
  }
4874
4874
  };
4875
4875
 
4876
- var formkitVersion$2 = '202606190840';
4876
+ var formkitVersion$2 = '202606192004';
4877
4877
 
4878
4878
  let AuroElement$2 = class AuroElement extends i$3 {
4879
4879
  static get properties() {
@@ -16746,10 +16746,8 @@ class BaseInput extends AuroElement$1 {
16746
16746
  this.layout = 'classic';
16747
16747
  this.locale = 'en-US';
16748
16748
  this.max = undefined;
16749
- this._maxObject = undefined;
16750
16749
  this.maxLength = undefined;
16751
16750
  this.min = undefined;
16752
- this._minObject = undefined;
16753
16751
  this.minLength = undefined;
16754
16752
  this.required = false;
16755
16753
  this.onDark = false;
@@ -16757,7 +16755,6 @@ class BaseInput extends AuroElement$1 {
16757
16755
  this.size = 'lg';
16758
16756
  this.shape = 'classic';
16759
16757
  this.value = undefined;
16760
- this._valueObject = undefined;
16761
16758
 
16762
16759
  this._initializePrivateDefaults();
16763
16760
  }
@@ -17297,7 +17294,7 @@ class BaseInput extends AuroElement$1 {
17297
17294
  * @returns {Date|undefined}
17298
17295
  */
17299
17296
  get valueObject() {
17300
- return this._valueObject || this._computeDateObjectFallback(this.value);
17297
+ return this.value && dateFormatter.isValidDate(this.value) ? dateFormatter.stringToDateInstance(this.value) : undefined;
17301
17298
  }
17302
17299
 
17303
17300
  /**
@@ -17305,7 +17302,7 @@ class BaseInput extends AuroElement$1 {
17305
17302
  * @returns {Date|undefined}
17306
17303
  */
17307
17304
  get minObject() {
17308
- return this._minObject || this._computeDateObjectFallback(this.min);
17305
+ return this.min && dateFormatter.isValidDate(this.min) ? dateFormatter.stringToDateInstance(this.min) : undefined;
17309
17306
  }
17310
17307
 
17311
17308
  /**
@@ -17313,50 +17310,7 @@ class BaseInput extends AuroElement$1 {
17313
17310
  * @returns {Date|undefined}
17314
17311
  */
17315
17312
  get maxObject() {
17316
- return this._maxObject || this._computeDateObjectFallback(this.max);
17317
- }
17318
-
17319
- /**
17320
- * Parses a date string into a Date object when the corresponding `_*Object`
17321
- * field hasn't been synced yet by `updated()`. Returns undefined when the
17322
- * input type/format isn't a full date or the string is not a valid date.
17323
- *
17324
- * Why this exists: a parent (datepicker) can call `inputN.validate()` from
17325
- * inside its own `updated()` before this input's `updated()` has run
17326
- * `syncDateValues()` — so `_valueObject`/`_maxObject` are still `undefined`
17327
- * and range checks would otherwise silently no-op (flipping the result to
17328
- * `valid` or `patternMismatch`).
17329
- * @private
17330
- * @param {string|undefined} dateStr - ISO date string from `value`/`min`/`max`.
17331
- * @returns {Date|undefined}
17332
- */
17333
- _computeDateObjectFallback(dateStr) {
17334
- if (!dateStr || !this.util || !this.util.isFullDateFormat(this.type, this.format)) {
17335
- return undefined;
17336
- }
17337
- if (!dateFormatter.isValidDate(dateStr)) {
17338
- return undefined;
17339
- }
17340
- return dateFormatter.stringToDateInstance(dateStr);
17341
- }
17342
-
17343
- /**
17344
- * Internal setter for readonly date object properties.
17345
- * @private
17346
- * @param {'valueObject'|'minObject'|'maxObject'} propertyName - Public object property name.
17347
- * @param {Date|undefined} propertyValue - Value to assign.
17348
- * @returns {void}
17349
- */
17350
- setDateObjectProperty(propertyName, propertyValue) {
17351
- const internalPropertyName = `_${propertyName}`;
17352
- const previousValue = this[internalPropertyName];
17353
-
17354
- if (previousValue === propertyValue) {
17355
- return;
17356
- }
17357
-
17358
- this[internalPropertyName] = propertyValue;
17359
- this.requestUpdate(propertyName, previousValue);
17313
+ return this.max && dateFormatter.isValidDate(this.max) ? dateFormatter.stringToDateInstance(this.max) : undefined;
17360
17314
  }
17361
17315
 
17362
17316
  connectedCallback() {
@@ -17385,7 +17339,6 @@ class BaseInput extends AuroElement$1 {
17385
17339
  format: this.format
17386
17340
  });
17387
17341
  this.configureDataForType();
17388
- this.syncDateValues();
17389
17342
  }
17390
17343
 
17391
17344
  disconnectedCallback() {
@@ -17415,7 +17368,6 @@ class BaseInput extends AuroElement$1 {
17415
17368
  this.setCustomHelpTextMessage();
17416
17369
  this.configureAutoFormatting();
17417
17370
  this.configureDataForType();
17418
- this.syncDateValues();
17419
17371
  }
17420
17372
 
17421
17373
  /**
@@ -17552,8 +17504,6 @@ class BaseInput extends AuroElement$1 {
17552
17504
  this.configureDataForType();
17553
17505
  }
17554
17506
 
17555
- this.syncDateValues(changedProperties);
17556
-
17557
17507
  if (changedProperties.has('value')) {
17558
17508
  if (this.value && this.value.length > 0) {
17559
17509
  this.hasValue = true;
@@ -17624,69 +17574,6 @@ class BaseInput extends AuroElement$1 {
17624
17574
  }));
17625
17575
  }
17626
17576
 
17627
-
17628
- /**
17629
- * Synchronizes the ISO string values and Date object representations for date-related properties.
17630
- * This keeps the model and display values aligned when either side changes.
17631
- *
17632
- * When a full date format is in use, this method updates `value`, `min`, and `max` from their corresponding
17633
- * Date objects or vice versa, based on which properties have changed. It only runs when the current configuration
17634
- * represents a full year/month/day date format.
17635
- *
17636
- * @param {Map<string, unknown>|undefined} [changedProperties=undefined] - Optional map of changed properties used to limit which values are synchronized.
17637
- * @returns {void}
17638
- * @private
17639
- */
17640
- syncDateValues(changedProperties = undefined) {
17641
- if (!this.util.isFullDateFormat(this.type, this.format)) {
17642
- return;
17643
- }
17644
-
17645
- this.syncSingleDateValue(changedProperties, 'valueObject', 'value');
17646
- this.syncSingleDateValue(changedProperties, 'minObject', 'min');
17647
- this.syncSingleDateValue(changedProperties, 'maxObject', 'max');
17648
- }
17649
-
17650
- /**
17651
- * Synchronizes one date object/string property pair.
17652
- * @private
17653
- * @param {Map<string, unknown>|undefined} changedProperties - Map of changed properties from Lit.
17654
- * @param {string} objectProperty - Date object property name.
17655
- * @param {string} valueProperty - ISO string property name.
17656
- * @returns {void}
17657
- */
17658
- syncSingleDateValue(changedProperties, objectProperty, valueProperty) {
17659
- const objectPropertyChanged = !changedProperties || changedProperties.has(objectProperty);
17660
-
17661
- // objectProperty wins over valueProperty when both changed
17662
- if (objectPropertyChanged && this[objectProperty]) {
17663
- this[valueProperty] = dateFormatter.toISOFormatString(this[objectProperty]);
17664
- return;
17665
- }
17666
-
17667
- const valuePropertyChanged = !changedProperties || changedProperties.has(valueProperty);
17668
- if (!valuePropertyChanged) {
17669
- return;
17670
- }
17671
-
17672
- // when value is newly set to the same ISO string that corresponds to the existing Date object, do not clear the Date object (avoid unnecessary updates)
17673
- if (
17674
- changedProperties &&
17675
- valueProperty === 'value' &&
17676
- changedProperties.get('value') === undefined &&
17677
- this[objectProperty] instanceof Date &&
17678
- this[valueProperty] === dateFormatter.toISOFormatString(this[objectProperty])
17679
- ) {
17680
- return;
17681
- }
17682
-
17683
- if (dateFormatter.isValidDate(this[valueProperty])) {
17684
- this.setDateObjectProperty(objectProperty, dateFormatter.stringToDateInstance(this[valueProperty]));
17685
- } else {
17686
- this.setDateObjectProperty(objectProperty, undefined);
17687
- }
17688
- }
17689
-
17690
17577
  /**
17691
17578
  * Sets up IMasks and logic based on auto-formatting requirements.
17692
17579
  * @private
@@ -17723,9 +17610,7 @@ class BaseInput extends AuroElement$1 {
17723
17610
  if (
17724
17611
  this.util.isFullDateFormat(this.type, this.format) &&
17725
17612
  this.value &&
17726
- dateFormatter.isValidDate(this.value) &&
17727
- this.valueObject instanceof Date &&
17728
- !Number.isNaN(this.valueObject.getTime()) &&
17613
+ this.valueObject &&
17729
17614
  typeof maskOptions.format === 'function'
17730
17615
  ) {
17731
17616
  existingValue = maskOptions.format(this.valueObject);
@@ -17930,7 +17815,6 @@ class BaseInput extends AuroElement$1 {
17930
17815
  */
17931
17816
  reset() {
17932
17817
  this.value = undefined;
17933
- this.setDateObjectProperty('valueObject', undefined);
17934
17818
  this.validation.reset(this);
17935
17819
  }
17936
17820
 
@@ -17939,7 +17823,6 @@ class BaseInput extends AuroElement$1 {
17939
17823
  */
17940
17824
  clear() {
17941
17825
  this.value = undefined;
17942
- this.setDateObjectProperty('valueObject', undefined);
17943
17826
  }
17944
17827
 
17945
17828
  /**
@@ -18468,7 +18351,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
18468
18351
  }
18469
18352
  };
18470
18353
 
18471
- var formkitVersion$1 = '202606190840';
18354
+ var formkitVersion$1 = '202606192004';
18472
18355
 
18473
18356
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18474
18357
  // See LICENSE in the project root for license information.
@@ -19589,7 +19472,7 @@ class AuroBibtemplate extends i$3 {
19589
19472
  }
19590
19473
  }
19591
19474
 
19592
- var formkitVersion = '202606190840';
19475
+ var formkitVersion = '202606192004';
19593
19476
 
19594
19477
  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}`;
19595
19478
 
@@ -21106,11 +20989,15 @@ class AuroCombobox extends AuroElement {
21106
20989
 
21107
20990
  // Announce the selection after the dropdown closes so it isn't
21108
20991
  // overridden by VoiceOver's "collapsed" announcement from aria-expanded.
20992
+ // Skip when there's no selected value (e.g. menu.clearSelection() from
20993
+ // the unmatched-value path), otherwise VoiceOver reads "undefined".
21109
20994
  const selectedValue = this.menu.value;
21110
- const announcementDelay = 300;
21111
- setTimeout(() => {
21112
- announceToScreenReader(this._getAnnouncementRoot(), `${selectedValue}, selected`);
21113
- }, announcementDelay);
20995
+ if (selectedValue) {
20996
+ const announcementDelay = 300;
20997
+ setTimeout(() => {
20998
+ announceToScreenReader(this._getAnnouncementRoot(), `${selectedValue}, selected`);
20999
+ }, announcementDelay);
21000
+ }
21114
21001
  }
21115
21002
 
21116
21003
  // Programmatic value syncs leave availableOptions stale because
@@ -21531,8 +21418,12 @@ class AuroCombobox extends AuroElement {
21531
21418
  if (this.menu.options.some((opt) => opt.value === this.value) || this.behavior === 'filter') {
21532
21419
  this.setMenuValue(this.value);
21533
21420
  } else {
21534
- if (this.menu.value) {
21535
- this.menu.value = undefined;
21421
+ // Clear menu.value AND menu.optionSelected together. Clearing only
21422
+ // menu.value leaves the previously-selected option element pinned
21423
+ // as menu.optionSelected; a later auroMenu-selectedOption event
21424
+ // would then write its stale .value back into combobox.value.
21425
+ if (this.menu.value || this.menu.optionSelected) {
21426
+ this.menu.clearSelection();
21536
21427
  }
21537
21428
  // Suggestion-mode freeform value: sync the trigger + bib to show it,
21538
21429
  // then refresh the filter once the inputs flush (handleInputValueChange