@aurodesignsystem-dev/auro-formkit 0.0.0-pr1405.2 → 0.0.0-pr1407.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 (38) hide show
  1. package/components/checkbox/demo/api.min.js +1 -1
  2. package/components/checkbox/demo/index.min.js +1 -1
  3. package/components/checkbox/dist/index.js +1 -1
  4. package/components/checkbox/dist/registered.js +1 -1
  5. package/components/combobox/demo/api.min.js +17 -120
  6. package/components/combobox/demo/index.min.js +17 -120
  7. package/components/combobox/dist/auro-combobox.d.ts +0 -2
  8. package/components/combobox/dist/comboboxKeyboardStrategy.d.ts +1 -1
  9. package/components/combobox/dist/index.js +17 -120
  10. package/components/combobox/dist/registered.js +17 -120
  11. package/components/counter/demo/api.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/api.min.js +3 -3
  16. package/components/datepicker/demo/index.min.js +3 -3
  17. package/components/datepicker/dist/index.js +3 -3
  18. package/components/datepicker/dist/registered.js +3 -3
  19. package/components/dropdown/demo/api.min.js +1 -1
  20. package/components/dropdown/demo/index.min.js +1 -1
  21. package/components/dropdown/dist/index.js +1 -1
  22. package/components/dropdown/dist/registered.js +1 -1
  23. package/components/form/demo/api.min.js +27 -153
  24. package/components/form/demo/index.min.js +27 -153
  25. package/components/input/demo/api.min.js +1 -1
  26. package/components/input/demo/index.min.js +1 -1
  27. package/components/input/dist/index.js +1 -1
  28. package/components/input/dist/registered.js +1 -1
  29. package/components/radio/demo/api.min.js +1 -1
  30. package/components/radio/demo/index.min.js +1 -1
  31. package/components/radio/dist/index.js +1 -1
  32. package/components/radio/dist/registered.js +1 -1
  33. package/components/select/demo/api.min.js +2 -25
  34. package/components/select/demo/index.min.js +2 -25
  35. package/components/select/dist/index.js +2 -25
  36. package/components/select/dist/registered.js +2 -25
  37. package/custom-elements.json +1405 -1405
  38. package/package.json +1 -1
@@ -1687,7 +1687,7 @@ class AuroHelpText extends i$2 {
1687
1687
  }
1688
1688
  }
1689
1689
 
1690
- var formkitVersion = '202603271959';
1690
+ var formkitVersion = '202603280001';
1691
1691
 
1692
1692
  // Copyright (c) 2026 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1693
1693
  // See LICENSE in the project root for license information.
@@ -1679,7 +1679,7 @@ class AuroHelpText extends i$2 {
1679
1679
  }
1680
1680
  }
1681
1681
 
1682
- var formkitVersion = '202603271959';
1682
+ var formkitVersion = '202603280001';
1683
1683
 
1684
1684
  // Copyright (c) 2026 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1685
1685
  // See LICENSE in the project root for license information.
@@ -1632,7 +1632,7 @@ class AuroHelpText extends LitElement {
1632
1632
  }
1633
1633
  }
1634
1634
 
1635
- var formkitVersion = '202603271959';
1635
+ var formkitVersion = '202603280001';
1636
1636
 
1637
1637
  // Copyright (c) 2026 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1638
1638
  // See LICENSE in the project root for license information.
@@ -1632,7 +1632,7 @@ class AuroHelpText extends LitElement {
1632
1632
  }
1633
1633
  }
1634
1634
 
1635
- var formkitVersion = '202603271959';
1635
+ var formkitVersion = '202603280001';
1636
1636
 
1637
1637
  // Copyright (c) 2026 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1638
1638
  // See LICENSE in the project root for license information.
@@ -1201,27 +1201,6 @@ function guardTouchPassthrough(element) {
1201
1201
  }, { once: true });
1202
1202
  }
1203
1203
 
1204
- /**
1205
- * Closes the fullscreen dialog element synchronously.
1206
- *
1207
- * When a dropdown closes, Lit's async update cycle may call `dialog.close()`
1208
- * too late — the browser's native focus restoration (back to `document.body`)
1209
- * can race with the `requestAnimationFrame` in {@link restoreTriggerAfterClose},
1210
- * stealing focus back to `body` after it was already placed on the trigger.
1211
- *
1212
- * Calling this *before* `restoreTriggerAfterClose` ensures the dialog's native
1213
- * focus restore fires first, so the rAF wins the race.
1214
- *
1215
- * @param {HTMLElement} dropdown - The `auro-dropdown` element whose bib may
1216
- * contain a `<dialog>`.
1217
- */
1218
- function closeFullscreenDialog(dropdown) {
1219
- const bibEl = dropdown.bibElement && dropdown.bibElement.value;
1220
- if (bibEl) {
1221
- bibEl.close();
1222
- }
1223
- }
1224
-
1225
1204
  /**
1226
1205
  * Restores the dropdown trigger after a fullscreen dialog closes.
1227
1206
  *
@@ -1321,8 +1300,6 @@ function navigateArrow(component, direction, options = {}) {
1321
1300
  }
1322
1301
  }
1323
1302
 
1324
- /* eslint-disable no-underscore-dangle */
1325
-
1326
1303
  /**
1327
1304
  * Returns the clear button element from the active input's shadow
1328
1305
  * DOM, if available.
@@ -1353,7 +1330,7 @@ function isClearBtnFocused(ctx, clearBtn = getClearBtn(ctx)) {
1353
1330
  }
1354
1331
 
1355
1332
  const comboboxKeyboardStrategy = {
1356
- Enter(component, evt, ctx) {
1333
+ async Enter(component, evt, ctx) {
1357
1334
  // If the clear button has focus, let the browser activate it normally.
1358
1335
  // stopPropagation prevents parent containers (e.g., forms) from treating
1359
1336
  // Enter as a submit, but we must NOT call preventDefault — that would
@@ -1364,15 +1341,11 @@ const comboboxKeyboardStrategy = {
1364
1341
  }
1365
1342
 
1366
1343
  if (ctx.isExpanded && component.optionActive) {
1344
+ component.menu.makeSelection();
1345
+ await component.updateComplete;
1367
1346
  evt.preventDefault();
1368
1347
  evt.stopPropagation();
1369
- // Set flags before makeSelection so the showBib guard and the
1370
- // auroDropdown-toggled close handler both see them when the value
1371
- // change propagates through Lit's microtask update cycle.
1372
- component._focusClearBtnAfterClose = true;
1373
- component._clearBtnFocusPending = true;
1374
- component.menu.makeSelection();
1375
- component.hideBib();
1348
+ component.setClearBtnFocus();
1376
1349
  } else {
1377
1350
  // Prevent the keypress from bubbling to parent containers (e.g., forms)
1378
1351
  // which could interpret Enter as a submit or trigger other unintended behavior.
@@ -1404,32 +1377,15 @@ const comboboxKeyboardStrategy = {
1404
1377
  if (!ctx.activeInput) {
1405
1378
  return;
1406
1379
  }
1407
-
1408
- // Active option → select immediately and close the dialog.
1409
- // Flag the component so the close handler focuses the trigger's
1410
- // clear button instead of the input. Set flags before makeSelection
1411
- // because the value change triggers showBib via Lit's updated().
1412
- if (component.optionActive) {
1413
- evt.preventDefault();
1414
- component._focusClearBtnAfterClose = true;
1415
- component._clearBtnFocusPending = true;
1416
- component.menu.makeSelection();
1417
- component.hideBib();
1418
- return;
1419
- }
1420
-
1421
1380
  const clearBtn = getClearBtn(ctx);
1422
1381
  const clearBtnHasFocus = isClearBtnFocused(ctx, clearBtn);
1423
1382
 
1424
- // No active option, input has a value, clear button not focused
1425
- // move focus to the dialog's clear button.
1383
+ // Tab from input: if clear button exists and doesn't have focus, focus it
1426
1384
  if (clearBtn && !clearBtnHasFocus && ctx.activeInput.value) {
1427
-
1428
1385
  // Force clear button container visible to work around Safari not
1429
1386
  // propagating :focus-within through shadow DOM boundaries, which
1430
1387
  // causes .wrapper:not(:focus-within) to hide .notification.clear.
1431
1388
  const clearContainer = clearBtn.closest('.clear');
1432
-
1433
1389
  if (clearContainer) {
1434
1390
  clearContainer.style.display = 'flex';
1435
1391
  clearBtn.addEventListener('focusout', () => {
@@ -1452,17 +1408,18 @@ const comboboxKeyboardStrategy = {
1452
1408
  return;
1453
1409
  }
1454
1410
 
1455
- // No active option, no clear button (or already focused) → just close.
1411
+ // Tab from clear button (or no clear button / no value) →
1412
+ // select the highlighted option if any, then close
1413
+ if (component.optionActive) {
1414
+ component.menu.makeSelection();
1415
+ }
1456
1416
  component.hideBib();
1457
1417
  return;
1458
1418
  }
1459
1419
 
1460
1420
  // Non-fullscreen: select + close
1461
- if (component.optionActive) {
1462
- evt.preventDefault();
1463
- component._focusClearBtnAfterClose = true;
1464
- component._clearBtnFocusPending = true;
1465
- component.menu.makeSelection();
1421
+ if (component.menu.optionActive && component.menu.optionActive.value) {
1422
+ component.menu.value = component.menu.optionActive.value;
1466
1423
  }
1467
1424
  component.hideBib();
1468
1425
  },
@@ -5113,7 +5070,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$4 {
5113
5070
  }
5114
5071
  };
5115
5072
 
5116
- var formkitVersion$2 = '202603271959';
5073
+ var formkitVersion$2 = '202603280001';
5117
5074
 
5118
5075
  let AuroElement$2 = class AuroElement extends i$4 {
5119
5076
  static get properties() {
@@ -12877,7 +12834,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$4 {
12877
12834
  }
12878
12835
  };
12879
12836
 
12880
- var formkitVersion$1 = '202603271959';
12837
+ var formkitVersion$1 = '202603280001';
12881
12838
 
12882
12839
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12883
12840
  // See LICENSE in the project root for license information.
@@ -13916,7 +13873,7 @@ class AuroBibtemplate extends i$4 {
13916
13873
  }
13917
13874
  }
13918
13875
 
13919
- var formkitVersion = '202603271959';
13876
+ var formkitVersion = '202603280001';
13920
13877
 
13921
13878
  var styleCss$3 = i$7`.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}`;
13922
13879
 
@@ -14926,12 +14883,6 @@ class AuroCombobox extends AuroElement {
14926
14883
  * @returns {void}
14927
14884
  */
14928
14885
  showBib() {
14929
- // Suppress reopening the bib when a Tab selection is in progress —
14930
- // the value change from makeSelection triggers availableOptions update
14931
- // which calls showBib from updated(), but the bib should stay closed.
14932
- if (this._clearBtnFocusPending) {
14933
- return;
14934
- }
14935
14886
  if (!this.input.value && !this.dropdown.isBibFullscreen) {
14936
14887
  this.dropdown.hide();
14937
14888
  return;
@@ -15002,40 +14953,7 @@ class AuroCombobox extends AuroElement {
15002
14953
  // during fullscreen open to prevent touch pass-through.
15003
14954
  this.menu.style.pointerEvents = '';
15004
14955
 
15005
- closeFullscreenDialog(this.dropdown);
15006
-
15007
- const shouldFocusClearBtn = this._focusClearBtnAfterClose;
15008
- this._focusClearBtnAfterClose = false;
15009
-
15010
- if (shouldFocusClearBtn) {
15011
- // Set a guard so duplicate toggle events don't call
15012
- // restoreTriggerAfterClose and steal focus from the clear button.
15013
- this._clearBtnFocusPending = true;
15014
-
15015
- restoreTriggerAfterClose(this.dropdown, this.input);
15016
-
15017
- if (this.input.componentHasFocus) {
15018
- // Desktop: input already has focus, redirect to clear button
15019
- // after restoreTriggerAfterClose's rAF settles.
15020
- requestAnimationFrame(() => {
15021
- this.setClearBtnFocus();
15022
- this._clearBtnFocusPending = false;
15023
- });
15024
- } else {
15025
- // Fullscreen: input will receive focus after dialog.close().
15026
- // Listen for that focus event then redirect to clear button.
15027
- const onFocus = () => {
15028
- this.input.removeEventListener('focusin', onFocus);
15029
- requestAnimationFrame(() => {
15030
- this.setClearBtnFocus();
15031
- this._clearBtnFocusPending = false;
15032
- });
15033
- };
15034
- this.input.addEventListener('focusin', onFocus);
15035
- }
15036
- } else if (!this._clearBtnFocusPending) {
15037
- restoreTriggerAfterClose(this.dropdown, this.input);
15038
- }
14956
+ restoreTriggerAfterClose(this.dropdown, this.input);
15039
14957
  }
15040
14958
 
15041
14959
  if (this.dropdownOpen) {
@@ -15126,28 +15044,7 @@ class AuroCombobox extends AuroElement {
15126
15044
  setClearBtnFocus() {
15127
15045
  const clearBtn = this.input.shadowRoot.querySelector('.clearBtn');
15128
15046
  if (clearBtn) {
15129
- // Force the clear button container visible — without :focus-within
15130
- // the CSS rule `.wrapper:not(:focus-within) .notification.clear`
15131
- // hides the container with display:none, preventing focus.
15132
- const clearContainer = clearBtn.closest('.clear');
15133
-
15134
- if (clearContainer) {
15135
- clearContainer.style.display = 'flex';
15136
- clearBtn.addEventListener('focusout', () => {
15137
- requestAnimationFrame(() => {
15138
- clearContainer.style.display = '';
15139
- });
15140
- }, { once: true });
15141
- }
15142
-
15143
- // Focus the native button inside auro-button so the browser
15144
- // treats it as a real focusable element.
15145
- const nativeBtn = clearBtn.shadowRoot && clearBtn.shadowRoot.querySelector('button');
15146
- if (nativeBtn) {
15147
- nativeBtn.focus();
15148
- } else {
15149
- clearBtn.focus();
15150
- }
15047
+ clearBtn.focus();
15151
15048
  }
15152
15049
  }
15153
15050
 
@@ -1124,27 +1124,6 @@ function guardTouchPassthrough(element) {
1124
1124
  }, { once: true });
1125
1125
  }
1126
1126
 
1127
- /**
1128
- * Closes the fullscreen dialog element synchronously.
1129
- *
1130
- * When a dropdown closes, Lit's async update cycle may call `dialog.close()`
1131
- * too late — the browser's native focus restoration (back to `document.body`)
1132
- * can race with the `requestAnimationFrame` in {@link restoreTriggerAfterClose},
1133
- * stealing focus back to `body` after it was already placed on the trigger.
1134
- *
1135
- * Calling this *before* `restoreTriggerAfterClose` ensures the dialog's native
1136
- * focus restore fires first, so the rAF wins the race.
1137
- *
1138
- * @param {HTMLElement} dropdown - The `auro-dropdown` element whose bib may
1139
- * contain a `<dialog>`.
1140
- */
1141
- function closeFullscreenDialog(dropdown) {
1142
- const bibEl = dropdown.bibElement && dropdown.bibElement.value;
1143
- if (bibEl) {
1144
- bibEl.close();
1145
- }
1146
- }
1147
-
1148
1127
  /**
1149
1128
  * Restores the dropdown trigger after a fullscreen dialog closes.
1150
1129
  *
@@ -1244,8 +1223,6 @@ function navigateArrow(component, direction, options = {}) {
1244
1223
  }
1245
1224
  }
1246
1225
 
1247
- /* eslint-disable no-underscore-dangle */
1248
-
1249
1226
  /**
1250
1227
  * Returns the clear button element from the active input's shadow
1251
1228
  * DOM, if available.
@@ -1276,7 +1253,7 @@ function isClearBtnFocused(ctx, clearBtn = getClearBtn(ctx)) {
1276
1253
  }
1277
1254
 
1278
1255
  const comboboxKeyboardStrategy = {
1279
- Enter(component, evt, ctx) {
1256
+ async Enter(component, evt, ctx) {
1280
1257
  // If the clear button has focus, let the browser activate it normally.
1281
1258
  // stopPropagation prevents parent containers (e.g., forms) from treating
1282
1259
  // Enter as a submit, but we must NOT call preventDefault — that would
@@ -1287,15 +1264,11 @@ const comboboxKeyboardStrategy = {
1287
1264
  }
1288
1265
 
1289
1266
  if (ctx.isExpanded && component.optionActive) {
1267
+ component.menu.makeSelection();
1268
+ await component.updateComplete;
1290
1269
  evt.preventDefault();
1291
1270
  evt.stopPropagation();
1292
- // Set flags before makeSelection so the showBib guard and the
1293
- // auroDropdown-toggled close handler both see them when the value
1294
- // change propagates through Lit's microtask update cycle.
1295
- component._focusClearBtnAfterClose = true;
1296
- component._clearBtnFocusPending = true;
1297
- component.menu.makeSelection();
1298
- component.hideBib();
1271
+ component.setClearBtnFocus();
1299
1272
  } else {
1300
1273
  // Prevent the keypress from bubbling to parent containers (e.g., forms)
1301
1274
  // which could interpret Enter as a submit or trigger other unintended behavior.
@@ -1327,32 +1300,15 @@ const comboboxKeyboardStrategy = {
1327
1300
  if (!ctx.activeInput) {
1328
1301
  return;
1329
1302
  }
1330
-
1331
- // Active option → select immediately and close the dialog.
1332
- // Flag the component so the close handler focuses the trigger's
1333
- // clear button instead of the input. Set flags before makeSelection
1334
- // because the value change triggers showBib via Lit's updated().
1335
- if (component.optionActive) {
1336
- evt.preventDefault();
1337
- component._focusClearBtnAfterClose = true;
1338
- component._clearBtnFocusPending = true;
1339
- component.menu.makeSelection();
1340
- component.hideBib();
1341
- return;
1342
- }
1343
-
1344
1303
  const clearBtn = getClearBtn(ctx);
1345
1304
  const clearBtnHasFocus = isClearBtnFocused(ctx, clearBtn);
1346
1305
 
1347
- // No active option, input has a value, clear button not focused
1348
- // move focus to the dialog's clear button.
1306
+ // Tab from input: if clear button exists and doesn't have focus, focus it
1349
1307
  if (clearBtn && !clearBtnHasFocus && ctx.activeInput.value) {
1350
-
1351
1308
  // Force clear button container visible to work around Safari not
1352
1309
  // propagating :focus-within through shadow DOM boundaries, which
1353
1310
  // causes .wrapper:not(:focus-within) to hide .notification.clear.
1354
1311
  const clearContainer = clearBtn.closest('.clear');
1355
-
1356
1312
  if (clearContainer) {
1357
1313
  clearContainer.style.display = 'flex';
1358
1314
  clearBtn.addEventListener('focusout', () => {
@@ -1375,17 +1331,18 @@ const comboboxKeyboardStrategy = {
1375
1331
  return;
1376
1332
  }
1377
1333
 
1378
- // No active option, no clear button (or already focused) → just close.
1334
+ // Tab from clear button (or no clear button / no value) →
1335
+ // select the highlighted option if any, then close
1336
+ if (component.optionActive) {
1337
+ component.menu.makeSelection();
1338
+ }
1379
1339
  component.hideBib();
1380
1340
  return;
1381
1341
  }
1382
1342
 
1383
1343
  // Non-fullscreen: select + close
1384
- if (component.optionActive) {
1385
- evt.preventDefault();
1386
- component._focusClearBtnAfterClose = true;
1387
- component._clearBtnFocusPending = true;
1388
- component.menu.makeSelection();
1344
+ if (component.menu.optionActive && component.menu.optionActive.value) {
1345
+ component.menu.value = component.menu.optionActive.value;
1389
1346
  }
1390
1347
  component.hideBib();
1391
1348
  },
@@ -5036,7 +4993,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$4 {
5036
4993
  }
5037
4994
  };
5038
4995
 
5039
- var formkitVersion$2 = '202603271959';
4996
+ var formkitVersion$2 = '202603280001';
5040
4997
 
5041
4998
  let AuroElement$2 = class AuroElement extends i$4 {
5042
4999
  static get properties() {
@@ -12800,7 +12757,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$4 {
12800
12757
  }
12801
12758
  };
12802
12759
 
12803
- var formkitVersion$1 = '202603271959';
12760
+ var formkitVersion$1 = '202603280001';
12804
12761
 
12805
12762
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12806
12763
  // See LICENSE in the project root for license information.
@@ -13839,7 +13796,7 @@ class AuroBibtemplate extends i$4 {
13839
13796
  }
13840
13797
  }
13841
13798
 
13842
- var formkitVersion = '202603271959';
13799
+ var formkitVersion = '202603280001';
13843
13800
 
13844
13801
  var styleCss$3 = i$7`.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}`;
13845
13802
 
@@ -14849,12 +14806,6 @@ class AuroCombobox extends AuroElement {
14849
14806
  * @returns {void}
14850
14807
  */
14851
14808
  showBib() {
14852
- // Suppress reopening the bib when a Tab selection is in progress —
14853
- // the value change from makeSelection triggers availableOptions update
14854
- // which calls showBib from updated(), but the bib should stay closed.
14855
- if (this._clearBtnFocusPending) {
14856
- return;
14857
- }
14858
14809
  if (!this.input.value && !this.dropdown.isBibFullscreen) {
14859
14810
  this.dropdown.hide();
14860
14811
  return;
@@ -14925,40 +14876,7 @@ class AuroCombobox extends AuroElement {
14925
14876
  // during fullscreen open to prevent touch pass-through.
14926
14877
  this.menu.style.pointerEvents = '';
14927
14878
 
14928
- closeFullscreenDialog(this.dropdown);
14929
-
14930
- const shouldFocusClearBtn = this._focusClearBtnAfterClose;
14931
- this._focusClearBtnAfterClose = false;
14932
-
14933
- if (shouldFocusClearBtn) {
14934
- // Set a guard so duplicate toggle events don't call
14935
- // restoreTriggerAfterClose and steal focus from the clear button.
14936
- this._clearBtnFocusPending = true;
14937
-
14938
- restoreTriggerAfterClose(this.dropdown, this.input);
14939
-
14940
- if (this.input.componentHasFocus) {
14941
- // Desktop: input already has focus, redirect to clear button
14942
- // after restoreTriggerAfterClose's rAF settles.
14943
- requestAnimationFrame(() => {
14944
- this.setClearBtnFocus();
14945
- this._clearBtnFocusPending = false;
14946
- });
14947
- } else {
14948
- // Fullscreen: input will receive focus after dialog.close().
14949
- // Listen for that focus event then redirect to clear button.
14950
- const onFocus = () => {
14951
- this.input.removeEventListener('focusin', onFocus);
14952
- requestAnimationFrame(() => {
14953
- this.setClearBtnFocus();
14954
- this._clearBtnFocusPending = false;
14955
- });
14956
- };
14957
- this.input.addEventListener('focusin', onFocus);
14958
- }
14959
- } else if (!this._clearBtnFocusPending) {
14960
- restoreTriggerAfterClose(this.dropdown, this.input);
14961
- }
14879
+ restoreTriggerAfterClose(this.dropdown, this.input);
14962
14880
  }
14963
14881
 
14964
14882
  if (this.dropdownOpen) {
@@ -15049,28 +14967,7 @@ class AuroCombobox extends AuroElement {
15049
14967
  setClearBtnFocus() {
15050
14968
  const clearBtn = this.input.shadowRoot.querySelector('.clearBtn');
15051
14969
  if (clearBtn) {
15052
- // Force the clear button container visible — without :focus-within
15053
- // the CSS rule `.wrapper:not(:focus-within) .notification.clear`
15054
- // hides the container with display:none, preventing focus.
15055
- const clearContainer = clearBtn.closest('.clear');
15056
-
15057
- if (clearContainer) {
15058
- clearContainer.style.display = 'flex';
15059
- clearBtn.addEventListener('focusout', () => {
15060
- requestAnimationFrame(() => {
15061
- clearContainer.style.display = '';
15062
- });
15063
- }, { once: true });
15064
- }
15065
-
15066
- // Focus the native button inside auro-button so the browser
15067
- // treats it as a real focusable element.
15068
- const nativeBtn = clearBtn.shadowRoot && clearBtn.shadowRoot.querySelector('button');
15069
- if (nativeBtn) {
15070
- nativeBtn.focus();
15071
- } else {
15072
- clearBtn.focus();
15073
- }
14970
+ clearBtn.focus();
15074
14971
  }
15075
14972
  }
15076
14973
 
@@ -428,8 +428,6 @@ export class AuroCombobox extends AuroElement {
428
428
  * @returns {void}
429
429
  */
430
430
  private configureDropdown;
431
- _focusClearBtnAfterClose: boolean;
432
- _clearBtnFocusPending: boolean;
433
431
  bibtemplate: any;
434
432
  inputInBib: any;
435
433
  /**
@@ -1,5 +1,5 @@
1
1
  export namespace comboboxKeyboardStrategy {
2
- function Enter(component: any, evt: any, ctx: any): void;
2
+ function Enter(component: any, evt: any, ctx: any): Promise<void>;
3
3
  function Tab(component: any, evt: any, ctx: any): void;
4
4
  function ArrowUp(component: any, evt: any, ctx: any): void;
5
5
  function ArrowDown(component: any, evt: any, ctx: any): void;