@aurodesignsystem-dev/auro-formkit 0.0.0-pr1554.8 → 0.0.0-pr1555.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 (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 +45 -150
  7. package/components/combobox/demo/getting-started.min.js +45 -150
  8. package/components/combobox/demo/index.min.js +45 -150
  9. package/components/combobox/dist/index.js +45 -150
  10. package/components/combobox/dist/registered.js +45 -150
  11. package/components/counter/demo/customize.min.js +6 -47
  12. package/components/counter/demo/index.min.js +6 -47
  13. package/components/counter/dist/index.js +6 -47
  14. package/components/counter/dist/registered.js +6 -47
  15. package/components/datepicker/demo/customize.min.js +20 -89
  16. package/components/datepicker/demo/index.min.js +20 -89
  17. package/components/datepicker/dist/index.js +20 -89
  18. package/components/datepicker/dist/registered.js +20 -89
  19. package/components/dropdown/demo/customize.min.js +5 -46
  20. package/components/dropdown/demo/getting-started.min.js +5 -46
  21. package/components/dropdown/demo/index.min.js +5 -46
  22. package/components/dropdown/dist/auro-dropdown.d.ts +1 -8
  23. package/components/dropdown/dist/index.js +5 -46
  24. package/components/dropdown/dist/registered.js +5 -46
  25. package/components/form/demo/customize.min.js +90 -374
  26. package/components/form/demo/getting-started.min.js +90 -374
  27. package/components/form/demo/index.min.js +90 -374
  28. package/components/form/demo/registerDemoDeps.min.js +90 -374
  29. package/components/input/demo/customize.min.js +11 -39
  30. package/components/input/demo/getting-started.min.js +11 -39
  31. package/components/input/demo/index.min.js +11 -39
  32. package/components/input/dist/index.js +11 -39
  33. package/components/input/dist/registered.js +11 -39
  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 +6 -47
  40. package/components/select/demo/getting-started.min.js +6 -47
  41. package/components/select/demo/index.min.js +6 -47
  42. package/components/select/dist/index.js +6 -47
  43. package/components/select/dist/registered.js +6 -47
  44. package/custom-elements.json +1504 -1510
  45. package/package.json +1 -1
@@ -1275,7 +1275,7 @@ class AuroHelpText extends i$2 {
1275
1275
  }
1276
1276
  }
1277
1277
 
1278
- var formkitVersion = '202607160645';
1278
+ var formkitVersion = '202607152222';
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.
@@ -1275,7 +1275,7 @@ class AuroHelpText extends i$2 {
1275
1275
  }
1276
1276
  }
1277
1277
 
1278
- var formkitVersion = '202607160645';
1278
+ var formkitVersion = '202607152222';
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.
@@ -1275,7 +1275,7 @@ class AuroHelpText extends i$2 {
1275
1275
  }
1276
1276
  }
1277
1277
 
1278
- var formkitVersion = '202607160645';
1278
+ var formkitVersion = '202607152222';
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.
@@ -1228,7 +1228,7 @@ class AuroHelpText extends LitElement {
1228
1228
  }
1229
1229
  }
1230
1230
 
1231
- var formkitVersion = '202607160645';
1231
+ var formkitVersion = '202607152222';
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.
@@ -1228,7 +1228,7 @@ class AuroHelpText extends LitElement {
1228
1228
  }
1229
1229
  }
1230
1230
 
1231
- var formkitVersion = '202607160645';
1231
+ var formkitVersion = '202607152222';
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.
@@ -4971,7 +4971,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
4971
4971
  }
4972
4972
  };
4973
4973
 
4974
- var formkitVersion$2 = '202607160645';
4974
+ var formkitVersion$2 = '202607152222';
4975
4975
 
4976
4976
  let AuroElement$2 = class AuroElement extends i$3 {
4977
4977
  static get properties() {
@@ -5100,6 +5100,7 @@ class AuroDropdown extends AuroElement$2 {
5100
5100
  static get shadowRootOptions() {
5101
5101
  return {
5102
5102
  ...AuroElement$2.shadowRootOptions,
5103
+ delegatesFocus: true,
5103
5104
  };
5104
5105
  }
5105
5106
 
@@ -5266,47 +5267,7 @@ class AuroDropdown extends AuroElement$2 {
5266
5267
  focusables[0].focus();
5267
5268
  }
5268
5269
  } else {
5269
- this.focusTrigger();
5270
- }
5271
- }
5272
-
5273
- /**
5274
- * Focus the trigger content. When the trigger wrapper itself is focusable
5275
- * (has tabindex), focus it directly. Otherwise, focus the first focusable
5276
- * element slotted into the trigger slot (e.g. the auro-input).
5277
- * @private
5278
- */
5279
- focusTrigger() {
5280
- if (this.trigger.hasAttribute('tabindex')) {
5281
5270
  this.trigger.focus();
5282
- } else {
5283
- // Slotted content isn't a DOM child of the trigger div, so
5284
- // getFocusableElements can't find it. Query assigned nodes directly.
5285
- const slot = this.trigger.querySelector('slot[name="trigger"]');
5286
- if (slot) {
5287
- const assigned = slot.assignedElements();
5288
- for (const el of assigned) {
5289
- if (el.hasAttribute('disabled')) {
5290
- continue;
5291
- }
5292
- // Try finding a focusable descendant first (handles non-focusable
5293
- // wrappers like <div> containing a <button>). If none found, try
5294
- // focusing the element directly (works for custom elements like
5295
- // auro-input that have delegatesFocus or a custom focus() method).
5296
- const descendants = getFocusableElements(el);
5297
- if (descendants.length > 0) {
5298
- descendants[0].focus();
5299
- return;
5300
- }
5301
- el.focus();
5302
- return;
5303
- }
5304
- }
5305
- // Fallback: try DOM children (non-slotted content)
5306
- const focusables = getFocusableElements(this.trigger);
5307
- if (focusables.length > 0) {
5308
- focusables[0].focus();
5309
- }
5310
5271
  }
5311
5272
  }
5312
5273
 
@@ -5760,16 +5721,14 @@ class AuroDropdown extends AuroElement$2 {
5760
5721
 
5761
5722
  const eventType = event.detail.eventType || "unknown";
5762
5723
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
5763
- this.focusTrigger();
5724
+ this.trigger.focus();
5764
5725
  }
5765
5726
 
5766
5727
 
5767
5728
  // On Tab-driven close (eventType "focusloss"), let focus advance naturally
5768
5729
  // — restoring to the trigger would trap the user on this dropdown, forcing
5769
5730
  // an extra Tab to move on. Escape and outside-click still restore.
5770
- // When noHideOnThisFocusLoss is true, the consumer (e.g. combobox) manages
5771
- // its own focus restoration — skip the generic trigger focus to avoid races.
5772
- if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noHideOnThisFocusLoss) {
5731
+ if (!this.isPopoverVisible && eventType !== "focusloss") {
5773
5732
  // wait til the bib gets fully closed and rendered
5774
5733
  setTimeout(() => {
5775
5734
  // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
@@ -5781,7 +5740,7 @@ class AuroDropdown extends AuroElement$2 {
5781
5740
  return;
5782
5741
  }
5783
5742
  // Restore focus to the trigger.
5784
- this.focusTrigger();
5743
+ this.trigger.focus();
5785
5744
  });
5786
5745
  }
5787
5746
  }
@@ -16962,10 +16921,9 @@ class DomHandler {
16962
16921
  class BaseInput extends AuroElement$1 {
16963
16922
 
16964
16923
  // Delegate focus to the native <input> inside the shadow root so that
16965
- // clicking anywhere on the input wrapper focuses the native input, and
16966
- // programmatic .focus() calls on elements in the shadow DOM work correctly.
16967
- // The initial-load focus theft was caused by the static `autofocus`
16968
- // attribute on the bib input (now conditional), not by delegatesFocus.
16924
+ // showModal()'s dialog focusing steps reach the input element.
16925
+ // This keeps the mobile virtual keyboard open when the fullscreen dialog
16926
+ // opens, because the browser sees an input-to-input focus transfer.
16969
16927
  static get shadowRootOptions() {
16970
16928
  return {
16971
16929
  ...AuroElement$1.shadowRootOptions,
@@ -18642,7 +18600,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
18642
18600
  }
18643
18601
  };
18644
18602
 
18645
- var formkitVersion$1 = '202607160645';
18603
+ var formkitVersion$1 = '202607152222';
18646
18604
 
18647
18605
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18648
18606
  // See LICENSE in the project root for license information.
@@ -18928,42 +18886,15 @@ class AuroInput extends BaseInput {
18928
18886
  * @returns {void}
18929
18887
  */
18930
18888
  checkDisplayValueSlotChange() {
18931
- const slot = this.shadowRoot?.querySelector('slot[name="displayValue"]');
18932
- if (!slot) {
18933
- // Shadow slot not yet rendered fall back to checking light-DOM
18934
- // children so hasDisplayValueContent isn't stuck false when called
18935
- // before firstUpdated (e.g. from auro-combobox during mount).
18936
- // Check for any element (including custom elements like <auro-icon>
18937
- // that render via shadow DOM with no text content).
18938
- const lightDomContent = this.querySelector('[slot="displayValue"]:not(slot)');
18939
- this.hasDisplayValueContent = Boolean(lightDomContent && (
18940
- lightDomContent.textContent.trim().length > 0 ||
18941
- lightDomContent.children.length > 0 ||
18942
- lightDomContent.shadowRoot !== null
18943
- ));
18944
- return;
18945
- }
18889
+ // flatten:true resolves through auro-combobox's forwarding slot
18890
+ // (<slot name="displayValue" slot="displayValue">) so a clone appended
18891
+ // directly to auro-input's light DOM alongside the forwarder still
18892
+ // counts as content. The prior nodes[0].tagName === 'SLOT' recursion
18893
+ // discarded any siblings past the forwarder.
18894
+ const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
18946
18895
  const nodes = slot.assignedNodes({ flatten: true });
18947
18896
 
18948
- // Check for actual visible content, not just node existence.
18949
- // An empty <span slot="displayValue"></span> forwarded from the
18950
- // consumer should not be treated as "has content" — it causes the
18951
- // displayValue wrapper to render (with hasContent class) but show
18952
- // nothing, blocking the combobox's synthetic displayValue from
18953
- // being visible on preset/deeplink load.
18954
- // Custom elements (e.g. <auro-icon>) that render via shadow DOM are
18955
- // treated as content even when they have no text or light-DOM children.
18956
- this.hasDisplayValueContent = nodes.some((node) => {
18957
- if (node.nodeType === Node.TEXT_NODE) {
18958
- return node.textContent.trim().length > 0;
18959
- }
18960
- if (node.nodeType === Node.ELEMENT_NODE) {
18961
- return node.textContent.trim().length > 0 ||
18962
- node.children.length > 0 ||
18963
- node.shadowRoot !== null;
18964
- }
18965
- return false;
18966
- });
18897
+ this.hasDisplayValueContent = nodes.length > 0;
18967
18898
  }
18968
18899
 
18969
18900
  firstUpdated() {
@@ -19790,7 +19721,7 @@ class AuroBibtemplate extends i$3 {
19790
19721
  }
19791
19722
  }
19792
19723
 
19793
- var formkitVersion = '202607160645';
19724
+ var formkitVersion = '202607152222';
19794
19725
 
19795
19726
  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}`;
19796
19727
 
@@ -20827,36 +20758,14 @@ class AuroCombobox extends AuroElement {
20827
20758
  const displayValueEl = this.menu.optionSelected.querySelector("[slot='displayValue']");
20828
20759
  if (displayValueEl) {
20829
20760
  this.input.appendChild(displayValueEl.cloneNode(true));
20830
- }
20831
-
20832
- // auro-input's hasDisplayValueContent is non-reactive; nudge it to
20833
- // re-evaluate the slot and re-render so the displayValue wrapper
20834
- // gets its hasContent class. Without this, the apple/icon stays
20835
- // hidden when input.value is set in the same tick as the append.
20836
- if (typeof this.input.checkDisplayValueSlotChange === 'function') {
20837
- this.input.checkDisplayValueSlotChange();
20838
- this.input.requestUpdate();
20839
- }
20840
- } else if (this.value) {
20841
- // No optionSelected yet (e.g. setMenuValue was called but the menu's
20842
- // auroMenu-selectedOption event hasn't fired yet, or we're on remount
20843
- // with no options loaded). Synthesize a displayValue from the value so
20844
- // the overlay isn't blank.
20845
- //
20846
- // NOTE: This renders the raw machine value (e.g. "SEA"), not the
20847
- // human-readable label (e.g. "Seattle, WA"). For consumers where
20848
- // value ≠ label, this produces a brief flash of the raw value until
20849
- // the option elements load and updateTriggerTextDisplay re-runs with
20850
- // the correct label. This is intentionally preferred over a blank
20851
- // state — the displayValueInTrigger.remove() cleanup above ensures
20852
- // this placeholder is replaced once the real option is available.
20853
- const syntheticDV = document.createElement('span');
20854
- syntheticDV.setAttribute('slot', 'displayValue');
20855
- syntheticDV.textContent = this.value;
20856
- this.input.appendChild(syntheticDV);
20857
- if (typeof this.input.checkDisplayValueSlotChange === 'function') {
20858
- this.input.checkDisplayValueSlotChange();
20859
- this.input.requestUpdate();
20761
+ // auro-input's hasDisplayValueContent is non-reactive; nudge it to
20762
+ // re-evaluate the slot and re-render so the displayValue wrapper
20763
+ // gets its hasContent class. Without this, the apple/icon stays
20764
+ // hidden when input.value is set in the same tick as the append.
20765
+ if (typeof this.input.checkDisplayValueSlotChange === 'function') {
20766
+ this.input.checkDisplayValueSlotChange();
20767
+ this.input.requestUpdate();
20768
+ }
20860
20769
  }
20861
20770
  }
20862
20771
 
@@ -21102,11 +21011,7 @@ class AuroCombobox extends AuroElement {
21102
21011
  // after the dropdown layout settles.
21103
21012
 
21104
21013
  doubleRaf(() => {
21105
- // Guard: skip if the dropdown closed before this rAF fired
21106
- // (e.g. user selected an option immediately after the bib opened).
21107
- if (this.dropdownOpen) {
21108
- this.setInputFocus();
21109
- }
21014
+ this.setInputFocus();
21110
21015
  if (this._inFullscreenTransition) {
21111
21016
  this._inFullscreenTransition = false;
21112
21017
  }
@@ -21153,9 +21058,7 @@ class AuroCombobox extends AuroElement {
21153
21058
  }
21154
21059
 
21155
21060
  this._scheduleTimer(() => {
21156
- if (this.dropdown.isPopoverVisible) {
21157
- this.setInputFocus();
21158
- }
21061
+ this.setInputFocus();
21159
21062
  }, 0);
21160
21063
  });
21161
21064
  }
@@ -21164,19 +21067,14 @@ class AuroCombobox extends AuroElement {
21164
21067
  * @private
21165
21068
  */
21166
21069
  setClearBtnFocus() {
21167
- doubleRaf(() => {
21168
- // First establish focus inside the input's shadow root.
21169
- // Without this, clearBtn.focus() silently fails when focus is on
21170
- // document.body (e.g. after a click selection closes the bib dialog).
21171
- // delegatesFocus on BaseInput routes this to the native <input>.
21172
- this.input.focus();
21173
-
21174
- // Now move focus to the clear button within the same shadow root.
21175
- const clearBtn = this.input.shadowRoot.querySelector('.clearBtn');
21176
- if (clearBtn) {
21070
+ const clearBtn = this.input.shadowRoot.querySelector('.clearBtn');
21071
+ if (clearBtn) {
21072
+ // Wait for the element to fully render across
21073
+ // multiple Lit update cycles before moving focus
21074
+ doubleRaf(() => {
21177
21075
  clearBtn.focus();
21178
- }
21179
- });
21076
+ });
21077
+ }
21180
21078
  }
21181
21079
 
21182
21080
  /**
@@ -21387,9 +21285,6 @@ class AuroCombobox extends AuroElement {
21387
21285
  // only — fresh user selections take the existing hideBib path.
21388
21286
  if (isEcho && this.menu.optionSelected) {
21389
21287
  this._programmaticFilterRefresh = true;
21390
- this.updateComplete.then(() => {
21391
- this._programmaticFilterRefresh = false;
21392
- });
21393
21288
  }
21394
21289
  });
21395
21290
 
@@ -21642,6 +21537,10 @@ class AuroCombobox extends AuroElement {
21642
21537
  if (this.dropdown.isBibFullscreen && this.input.value && this.input.value.length > 0 && this.dropdown.isPopoverVisible) {
21643
21538
  this.setInputFocus();
21644
21539
  }
21540
+
21541
+ if (this._programmaticFilterRefresh) {
21542
+ this._programmaticFilterRefresh = false;
21543
+ }
21645
21544
  }
21646
21545
 
21647
21546
  /**
@@ -21655,12 +21554,10 @@ class AuroCombobox extends AuroElement {
21655
21554
  inputResolver: (comp, ctx) => (ctx.isModal && comp.inputInBib ? comp.inputInBib : comp.input),
21656
21555
  });
21657
21556
 
21658
- this.addEventListener('focusin', (event) => {
21557
+ this.addEventListener('focusin', () => {
21659
21558
  this.touched = true;
21660
21559
 
21661
- if (event.composedPath()[0] === this) {
21662
- this.focus();
21663
- }
21560
+ this.focus();
21664
21561
  });
21665
21562
 
21666
21563
  this.addEventListener('auroFormElement-validated', (evt) => {
@@ -21840,12 +21737,6 @@ class AuroCombobox extends AuroElement {
21840
21737
  // setting the flag unconditionally here masks the user-typed open path.
21841
21738
  if (!this._userTyped) {
21842
21739
  this._programmaticFilterRefresh = true;
21843
- // Self-clear after this update cycle completes. This collapses
21844
- // the previous scattered clear-points into one and prevents the
21845
- // flag from surviving into the next user interaction.
21846
- this.updateComplete.then(() => {
21847
- this._programmaticFilterRefresh = false;
21848
- });
21849
21740
  }
21850
21741
 
21851
21742
  if (this.input.value !== this.value) {
@@ -21935,6 +21826,10 @@ class AuroCombobox extends AuroElement {
21935
21826
  } else if (!this.dropdown.isBibFullscreen) {
21936
21827
  this.hideBib();
21937
21828
  }
21829
+
21830
+ if (this._programmaticFilterRefresh) {
21831
+ this._programmaticFilterRefresh = false;
21832
+ }
21938
21833
  }
21939
21834
 
21940
21835
  if (changedProperties.has('error')) {
@@ -22116,7 +22011,7 @@ class AuroCombobox extends AuroElement {
22116
22011
  <slot @slotchange="${this.handleSlotChange}"></slot>
22117
22012
  <${this.inputTag}
22118
22013
  id="inputInBib"
22119
- ?autofocus="${this.dropdownOpen && this.dropdown?.isBibFullscreen}"
22014
+ autofocus
22120
22015
  @input="${this.handleInputValueChange}"
22121
22016
  .a11yActivedescendant="${this.dropdownOpen && this.optionActive ? this.optionActive.id : undefined}"
22122
22017
  .a11yControls=${`${this.dropdownId}-floater-bib`}