@aurodesignsystem-dev/auro-formkit 0.0.0-pr1408.16 → 0.0.0-pr1408.18

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/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 +187 -141
  6. package/components/combobox/demo/index.min.js +187 -141
  7. package/components/combobox/demo/keyboardBehavior.md +9 -36
  8. package/components/combobox/dist/auro-combobox.d.ts +17 -0
  9. package/components/combobox/dist/comboboxKeyboardStrategy.d.ts +6 -3
  10. package/components/combobox/dist/index.js +187 -141
  11. package/components/combobox/dist/registered.js +187 -141
  12. package/components/counter/demo/api.min.js +2 -2
  13. package/components/counter/demo/index.min.js +2 -2
  14. package/components/counter/dist/index.js +2 -2
  15. package/components/counter/dist/registered.js +2 -2
  16. package/components/datepicker/demo/api.md +1 -1
  17. package/components/datepicker/demo/api.min.js +77 -157
  18. package/components/datepicker/demo/index.min.js +77 -157
  19. package/components/datepicker/demo/keyboardBehavior.md +1 -6
  20. package/components/datepicker/dist/auro-datepicker.d.ts +8 -7
  21. package/components/datepicker/dist/datepickerKeyboardStrategy.d.ts +1 -4
  22. package/components/datepicker/dist/index.js +77 -157
  23. package/components/datepicker/dist/registered.js +77 -157
  24. package/components/dropdown/demo/api.min.js +1 -1
  25. package/components/dropdown/demo/index.min.js +1 -1
  26. package/components/dropdown/dist/index.js +1 -1
  27. package/components/dropdown/dist/registered.js +1 -1
  28. package/components/form/demo/api.min.js +382 -390
  29. package/components/form/demo/index.min.js +382 -390
  30. package/components/input/demo/api.min.js +106 -77
  31. package/components/input/demo/index.min.js +106 -77
  32. package/components/input/dist/auro-input.d.ts +11 -0
  33. package/components/input/dist/base-input.d.ts +1 -0
  34. package/components/input/dist/index.js +36 -18
  35. package/components/input/dist/registered.js +36 -18
  36. package/components/menu/demo/keyboardBehavior.md +0 -0
  37. package/components/radio/demo/api.min.js +1 -1
  38. package/components/radio/demo/index.min.js +1 -1
  39. package/components/radio/demo/keyboardBehavior.md +0 -0
  40. package/components/radio/dist/index.js +1 -1
  41. package/components/radio/dist/registered.js +1 -1
  42. package/components/select/demo/api.min.js +13 -4
  43. package/components/select/demo/index.min.js +13 -4
  44. package/components/select/dist/index.js +13 -4
  45. package/components/select/dist/registered.js +13 -4
  46. package/custom-elements.json +1449 -1401
  47. package/package.json +3 -3
  48. /package/components/datepicker/demo/{keyboardBehavior.html → keyboard-behavior.html} +0 -0
@@ -9290,7 +9290,7 @@ class AuroBibtemplate extends i$1 {
9290
9290
  }
9291
9291
  }
9292
9292
 
9293
- var formkitVersion$2 = '202604022013';
9293
+ var formkitVersion$2 = '202604032311';
9294
9294
 
9295
9295
  let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=i$5`${s$5(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$4 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$3=i$3`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-loader-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color: transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color: currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color: currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}
9296
9296
  `,u$6=i$3`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0;box-sizing:border-box}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
@@ -9744,12 +9744,12 @@ class AuroCalendar extends RangeDatepicker {
9744
9744
  </div>
9745
9745
  <div class="calendarNavButtons">
9746
9746
  ${this.showPrevMonthBtn ? u$a`
9747
- <button class="calendarNavBtn prevMonth" @click="${this.handlePrevMonth}">
9747
+ <button tabIndex="-1" class="calendarNavBtn prevMonth" @click="${this.handlePrevMonth}">
9748
9748
  ${this.util.generateIconHtml(chevronLeft)}
9749
9749
  </button>
9750
9750
  ` : undefined}
9751
9751
  ${this.showNextMonthBtn ? u$a`
9752
- <button class="calendarNavBtn nextMonth" @click="${this.handleNextMonth}">
9752
+ <button tabIndex="-1" class="calendarNavBtn nextMonth" @click="${this.handleNextMonth}">
9753
9753
  ${this.util.generateIconHtml(chevronRight)}
9754
9754
  </button>
9755
9755
  ` : undefined}
@@ -12702,7 +12702,7 @@ var iconVersion$2 = '9.1.2';
12702
12702
  * @returns {{isExpanded: boolean, isModal: boolean, isPopover: boolean, activeInput: HTMLElement|null}}
12703
12703
  * isModal and isPopover reflect the display mode (fullscreen vs not) regardless of expanded state.
12704
12704
  */
12705
- function createDisplayContext$1(component, options = {}) {
12705
+ function createDisplayContext(component, options = {}) {
12706
12706
  const dd = options.dropdown || component.dropdown;
12707
12707
  // isPopoverVisible reflects as the `open` attribute.
12708
12708
  // It reports whether the bib is open in any mode (popover or modal).
@@ -12732,11 +12732,11 @@ function createDisplayContext$1(component, options = {}) {
12732
12732
  * @param {Object} strategy - Map of key names to handler functions.
12733
12733
  * @param {Object} [options] - Optional config passed to createDisplayContext.
12734
12734
  */
12735
- function applyKeyboardStrategy$1(component, strategy, options = {}) {
12735
+ function applyKeyboardStrategy(component, strategy, options = {}) {
12736
12736
  component.addEventListener('keydown', async (evt) => {
12737
12737
  const handler = strategy[evt.key] || strategy.default;
12738
12738
  if (typeof handler === 'function') {
12739
- const ctx = createDisplayContext$1(component, options);
12739
+ const ctx = createDisplayContext(component, options);
12740
12740
  await handler(component, evt, ctx);
12741
12741
  }
12742
12742
  });
@@ -12966,7 +12966,7 @@ class AuroDropdownBib extends i$1 {
12966
12966
 
12967
12967
  const dialog = this.shadowRoot.querySelector('dialog');
12968
12968
  this._setupCancelHandler(dialog);
12969
- applyKeyboardStrategy$1(dialog, createDropdownBibKeyboardStrategy());
12969
+ applyKeyboardStrategy(dialog, createDropdownBibKeyboardStrategy());
12970
12970
 
12971
12971
  this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
12972
12972
  bubbles: true,
@@ -13367,7 +13367,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$1 {
13367
13367
  }
13368
13368
  };
13369
13369
 
13370
- var formkitVersion$1 = '202604022013';
13370
+ var formkitVersion$1 = '202604032311';
13371
13371
 
13372
13372
  let AuroElement$2 = class AuroElement extends i$1 {
13373
13373
  static get properties() {
@@ -20108,6 +20108,16 @@ class BaseInput extends AuroElement$1 {
20108
20108
  this.wrapperElement = this.shadowRoot.querySelector('.wrapper');
20109
20109
  this.inputElement = this.renderRoot.querySelector('input');
20110
20110
  this.labelElement = this.shadowRoot.querySelector('label');
20111
+ this.clearBtn = this.clearButtonRef.value;
20112
+
20113
+ // This must get moved into inputKeyboardStrategy when implemented
20114
+ this.clearBtn.addEventListener('keydown', (evt) => {
20115
+ evt.stopPropagation();
20116
+ });
20117
+
20118
+ this.clearBtn.addEventListener('click', (evt) => {
20119
+ evt.stopPropagation();
20120
+ });
20111
20121
 
20112
20122
  this.patchInputEvent(this.inputElement);
20113
20123
 
@@ -21131,7 +21141,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$1 {
21131
21141
  }
21132
21142
  };
21133
21143
 
21134
- var formkitVersion = '202604022013';
21144
+ var formkitVersion = '202604032311';
21135
21145
 
21136
21146
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
21137
21147
  // See LICENSE in the project root for license information.
@@ -21188,6 +21198,11 @@ class AuroInput extends BaseInput {
21188
21198
  * @private
21189
21199
  */
21190
21200
  this.iconTag = versioning.generateTag('auro-formkit-input-icon', iconVersion$1, _$1);
21201
+
21202
+ /**
21203
+ * @private
21204
+ */
21205
+ this.clearButtonRef = e$1();
21191
21206
  }
21192
21207
 
21193
21208
  static get styles() {
@@ -21205,6 +21220,19 @@ class AuroInput extends BaseInput {
21205
21220
  ];
21206
21221
  }
21207
21222
 
21223
+ /**
21224
+ * Returns classmap configuration for the clear button visibility.
21225
+ * The button is hidden when the input has no value, is read-only, or is disabled.
21226
+ * @private
21227
+ * @returns {Record<string, boolean>} - Classmap object controlling clear button display state.
21228
+ */
21229
+ get clearBtnClassMap() {
21230
+ return {
21231
+ 'util_displayHidden': !this.hasValue || this.readyOnly || this.disabled
21232
+ };
21233
+ }
21234
+
21235
+
21208
21236
  /**
21209
21237
  * Determines if the HTML input element should be visually hidden.
21210
21238
  * Returns true when display value content exists without focus and has a value,
@@ -21524,10 +21552,11 @@ class AuroInput extends BaseInput {
21524
21552
  <${this.buttonTag}
21525
21553
  @click="${this.handleClickClear}"
21526
21554
  appearance="${this.onDark ? 'inverse' : this.appearance}"
21527
- class="notificationBtn clearBtn"
21555
+ class="notificationBtn clearBtn ${e$4(this.clearBtnClassMap)}"
21528
21556
  shape="circle"
21529
21557
  size="sm"
21530
- variant="ghost">
21558
+ variant="ghost"
21559
+ ${n(this.clearButtonRef)}>
21531
21560
  <span><slot name="ariaLabel.clear">Clear Input</slot></span>
21532
21561
  <${this.iconTag}
21533
21562
  aria-hidden="true"
@@ -21672,11 +21701,7 @@ class AuroInput extends BaseInput {
21672
21701
  <div part="accent-right" class="accents right">
21673
21702
  ${this.renderValidationErrorIconHtml()}
21674
21703
  ${this.hasValue && this.type === 'password' ? this.renderHtmlNotificationPassword() : undefined}
21675
- ${this.hasValue ? u$a`
21676
- ${!this.disabled && !this.readonly ? u$a`
21677
- ${this.renderHtmlActionClear()}
21678
- ` : undefined}
21679
- ` : undefined}
21704
+ ${this.renderHtmlActionClear()}
21680
21705
  </div>
21681
21706
  </div>
21682
21707
  <div class="helpTextWrapper leftIndent rightIndent" part="inputHelpText">
@@ -21708,11 +21733,7 @@ class AuroInput extends BaseInput {
21708
21733
  ${this.layout.includes('right') || this.layout === "emphasized" ? u$a`
21709
21734
  ${this.renderValidationErrorIconHtml()}
21710
21735
  ` : undefined}
21711
- ${this.hasValue ? u$a`
21712
- ${!this.disabled && !this.readonly ? u$a`
21713
- ${this.renderHtmlActionClear()}
21714
- ` : undefined}
21715
- ` : undefined}
21736
+ ${this.renderHtmlActionClear()}
21716
21737
  </div>
21717
21738
  </div>
21718
21739
  <div class="${e$4(this.helpTextClasses)}" part="inputHelpText">
@@ -21740,11 +21761,7 @@ class AuroInput extends BaseInput {
21740
21761
  </div>
21741
21762
  <div class="accents right">
21742
21763
  ${this.renderValidationErrorIconHtml()}
21743
- ${this.hasValue ? u$a`
21744
- ${!this.disabled && !this.readonly ? u$a`
21745
- ${this.renderHtmlActionClear()}
21746
- ` : undefined}
21747
- ` : undefined}
21764
+ ${this.renderHtmlActionClear()}
21748
21765
  </div>
21749
21766
  </div>
21750
21767
  <div class="helpTextWrapper leftIndent rightIndent" part="inputHelpText">
@@ -22302,99 +22319,6 @@ function guardTouchPassthrough(element) {
22302
22319
  }, { once: true });
22303
22320
  }
22304
22321
 
22305
- /**
22306
- * Restores the dropdown trigger after a fullscreen dialog closes.
22307
- *
22308
- * Removes the `inert` attribute from the trigger so it is accessible again,
22309
- * and restores focus to the given target after one animation frame. The rAF
22310
- * delay lets Lit's microtask update cycle call `dialog.close()` first —
22311
- * without it the browser's native dialog focus restoration can conflict.
22312
- *
22313
- * The focus is only applied if the dropdown is still closed at the time the
22314
- * rAF fires, guarding against a rapid close-then-reopen race.
22315
- *
22316
- * @param {HTMLElement} dropdown - The `auro-dropdown` element.
22317
- * @param {HTMLElement} focusTarget - The element to focus (e.g. trigger or input).
22318
- */
22319
- function restoreTriggerAfterClose(dropdown, focusTarget) {
22320
- dropdown.trigger.inert = false;
22321
-
22322
- requestAnimationFrame(() => {
22323
- if (!dropdown.isPopoverVisible) {
22324
- focusTarget.focus();
22325
- }
22326
- });
22327
- }
22328
-
22329
- /**
22330
- * Computes display state once per keydown event.
22331
- * Centralizes null-safety checks and makes the shared/modal/popover branching explicit.
22332
- *
22333
- * @param {HTMLElement} component - The component with a dropdown reference.
22334
- * @param {Object} [options] - Optional config.
22335
- * @param {HTMLElement} [options.dropdown] - Explicit dropdown reference. Falls back to component.dropdown.
22336
- * @param {Function} [options.inputResolver] - Called with (component, ctx) to resolve the active input element.
22337
- * @returns {{isExpanded: boolean, isModal: boolean, isPopover: boolean, activeInput: HTMLElement|null}}
22338
- * isModal and isPopover reflect the display mode (fullscreen vs not) regardless of expanded state.
22339
- */
22340
- function createDisplayContext(component, options = {}) {
22341
- const dd = options.dropdown || component.dropdown;
22342
- // isPopoverVisible reflects as the `open` attribute.
22343
- // It reports whether the bib is open in any mode (popover or modal).
22344
- const isExpanded = Boolean(dd && dd.isPopoverVisible);
22345
- const isFullscreen = Boolean(dd && dd.isBibFullscreen);
22346
-
22347
- const ctx = {
22348
- isExpanded,
22349
- isModal: isFullscreen,
22350
- isPopover: !isFullscreen,
22351
- activeInput: null,
22352
- };
22353
-
22354
- if (options.inputResolver) {
22355
- const resolvedInput = options.inputResolver(component, ctx);
22356
- // Guard against resolvers returning undefined or non-HTMLElement values.
22357
- ctx.activeInput = resolvedInput instanceof HTMLElement ? resolvedInput : null;
22358
- }
22359
-
22360
- return ctx;
22361
- }
22362
-
22363
- /**
22364
- * Wires up a keydown listener that dispatches to strategy[evt.key] or strategy.default.
22365
- * Handles both sync and async handlers.
22366
- * @param {HTMLElement} component - The component to attach the listener to.
22367
- * @param {Object} strategy - Map of key names to handler functions.
22368
- * @param {Object} [options] - Optional config passed to createDisplayContext.
22369
- */
22370
- function applyKeyboardStrategy(component, strategy, options = {}) {
22371
- component.addEventListener('keydown', async (evt) => {
22372
- const handler = strategy[evt.key] || strategy.default;
22373
- if (typeof handler === 'function') {
22374
- const ctx = createDisplayContext(component, options);
22375
- await handler(component, evt, ctx);
22376
- }
22377
- });
22378
- }
22379
-
22380
- // Copyright (c) 2026 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
22381
- // See LICENSE in the project root for license information.
22382
-
22383
- const datepickerKeyboardStrategy = {
22384
- Enter(component, evt, ctx) {
22385
- if (!ctx.isExpanded) {
22386
- evt.preventDefault();
22387
- component.dropdown.show();
22388
- }
22389
- },
22390
-
22391
- Tab(component, _evt, ctx) {
22392
- if (ctx.isExpanded && ctx.isModal) {
22393
- component.dropdown.hide();
22394
- }
22395
- },
22396
- };
22397
-
22398
22322
  // Copyright (c) 2026 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
22399
22323
  // See LICENSE in the project root for license information.
22400
22324
 
@@ -22569,9 +22493,16 @@ class AuroDatePicker extends AuroElement {
22569
22493
  */
22570
22494
  this.helpTextTag = versioning.generateTag('auro-formkit-input-helptext', formkitVersion$2, AuroHelpText);
22571
22495
 
22572
- /** @private */
22496
+ /**
22497
+ * @private
22498
+ */
22573
22499
  this.handleClick = this.handleClick.bind(this);
22574
22500
 
22501
+ /**
22502
+ * @private
22503
+ */
22504
+ this.handleClearClick = this.handleClearClick.bind(this);
22505
+
22575
22506
  // Layout Config
22576
22507
  this.layout = 'classic';
22577
22508
  this.shape = 'classic';
@@ -22811,7 +22742,7 @@ class AuroDatePicker extends AuroElement {
22811
22742
  /**
22812
22743
  * Optional placeholder text to display in the second input when using date range.
22813
22744
  * By default, datepicker will use `placeholder` for both inputs if placeholder is
22814
- * specified, but placeholderendDate is not.
22745
+ * specified, but placeholderEndDate is not.
22815
22746
  */
22816
22747
  placeholderEndDate: {
22817
22748
  type: String,
@@ -23190,13 +23121,6 @@ class AuroDatePicker extends AuroElement {
23190
23121
  configureDropdown() {
23191
23122
  this.dropdown = this.shadowRoot.querySelector(this.dropdownTag._$litStatic$);
23192
23123
 
23193
- // Prevent dropdown from closing on focus loss during fullscreen transitions.
23194
- // When trigger.inert is set to true (to hide the trigger from assistive
23195
- // technology behind the fullscreen dialog), focus leaves the trigger, which
23196
- // fires a focusout event. The floater's handleFocusLoss() would interpret
23197
- // this as "close the bib" without this flag.
23198
- this.dropdown.noHideOnThisFocusLoss = true;
23199
-
23200
23124
  // Pass label text to the dropdown bib for accessible dialog naming.
23201
23125
  // Without this, the fullscreen <dialog> has no accessible name and
23202
23126
  // screen readers announce it as just "dialog" with no context.
@@ -23205,12 +23129,6 @@ class AuroDatePicker extends AuroElement {
23205
23129
  this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
23206
23130
  }
23207
23131
 
23208
- // Tab closes the fullscreen dialog (same pattern as select).
23209
- // The dialog event bridge intercepts Tab and re-dispatches it as a
23210
- // composed keydown; this listener catches the re-dispatched event.
23211
- // Enter opens the bib when it is closed.
23212
- applyKeyboardStrategy(this, datepickerKeyboardStrategy);
23213
-
23214
23132
  this.dropdown.addEventListener('auroDropdown-triggerClick', () => {
23215
23133
  if (!this.isPopoverVisible) {
23216
23134
  this.dropdown.show();
@@ -23260,7 +23178,17 @@ class AuroDatePicker extends AuroElement {
23260
23178
  guardTouchPassthrough(this.shadowRoot.querySelector('.calendarWrapper'));
23261
23179
  }
23262
23180
  } else {
23263
- restoreTriggerAfterClose(this.dropdown, this.inputList[0]);
23181
+ // Always clear the inert flag. Only restore focus to the input when the datepicker
23182
+ // still has focus (e.g. Escape, date selected) — not when the user tabbed away,
23183
+ // which would pull them back and require extra Tab presses to escape.
23184
+ this.dropdown.trigger.inert = false;
23185
+ if (this.hasFocus) {
23186
+ requestAnimationFrame(() => {
23187
+ if (!this.dropdown.isPopoverVisible) {
23188
+ this.inputList[0].focus();
23189
+ }
23190
+ });
23191
+ }
23264
23192
  }
23265
23193
 
23266
23194
  // If on mobile, and the calendar is opened, scroll the focus date into view if the flag is set
@@ -23303,7 +23231,7 @@ class AuroDatePicker extends AuroElement {
23303
23231
  }
23304
23232
  });
23305
23233
  }
23306
-
23234
+
23307
23235
  /**
23308
23236
  * Binds all behavior needed to the input after rendering.
23309
23237
  * @private
@@ -23315,13 +23243,6 @@ class AuroDatePicker extends AuroElement {
23315
23243
  this.inputList = [...this.dropdown.querySelectorAll(this.inputTag._$litStatic$)];
23316
23244
 
23317
23245
  this.inputList.forEach((input, index) => {
23318
- // auto-show bib when manually editing the input value
23319
- input.addEventListener('keyup', (evt) => {
23320
- if (evt.key === " ") {
23321
- this.dropdown.show();
23322
- }
23323
- });
23324
-
23325
23246
  input.addEventListener('input', () => {
23326
23247
  if (index === 0) {
23327
23248
  this.value = input.value;
@@ -23514,18 +23435,6 @@ class AuroDatePicker extends AuroElement {
23514
23435
  this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
23515
23436
  }
23516
23437
 
23517
- /**
23518
- * Handle enter/space keydown on the reset button.
23519
- * @private
23520
- * @param {KeyboardEvent} event - The keydown event.
23521
- */
23522
- handleKeydownReset(event) {
23523
- if (event.key === 'Enter' || event.key === ' ') {
23524
- this.resetInputs();
23525
- this.focus();
23526
- }
23527
- }
23528
-
23529
23438
  /**
23530
23439
  * Resets values without resetting validation.
23531
23440
  */
@@ -24135,6 +24044,18 @@ class AuroDatePicker extends AuroElement {
24135
24044
  // icons/actions
24136
24045
  // ------------------------------------
24137
24046
 
24047
+ /**
24048
+ * Handles click on the clear button.
24049
+ * @private
24050
+ * @param {MouseEvent} event
24051
+ * @returns {void}
24052
+ */
24053
+ handleClearClick(event) {
24054
+ event.stopPropagation();
24055
+ this.resetInputs();
24056
+ this.focus();
24057
+ }
24058
+
24138
24059
  /**
24139
24060
  * Renders the clear action button.
24140
24061
  * @private
@@ -24149,8 +24070,7 @@ class AuroDatePicker extends AuroElement {
24149
24070
  return u$a`
24150
24071
  <div class="${e$4(clearActionClassMap)}">
24151
24072
  <${this.buttonTag}
24152
- @click="${this.resetInputs}"
24153
- @keydown="${this.handleKeydownReset}"
24073
+ @click="${this.handleClearClick}"
24154
24074
  ?onDark="${this.onDark}"
24155
24075
  appearance="${this.onDark ? 'inverse' : this.appearance}"
24156
24076
  aria-label="${this.runtimeUtils.getSlotText(this, 'ariaLabel.input.clear') || i18n(this.lang, 'clearInput')}"
@@ -16,9 +16,4 @@
16
16
  </div>
17
17
  </div>
18
18
  </div>
19
- </div>
20
-
21
- ## DEVELOPER NOTES / CODE ACTION ITEMS / TODO ITEMS
22
- 1. Remove the bridge for keyboard event bubbling out of the bib
23
- 1. Prevent auro-dropdown `Enter` and `Space` key behavior for opening and closing the bib. Preserve `Escape` key to close.
24
- 1. Strip out key event listeners not listed in this document
19
+ </div>
@@ -229,7 +229,7 @@ export class AuroDatePicker extends AuroElement {
229
229
  /**
230
230
  * Optional placeholder text to display in the second input when using date range.
231
231
  * By default, datepicker will use `placeholder` for both inputs if placeholder is
232
- * specified, but placeholderendDate is not.
232
+ * specified, but placeholderEndDate is not.
233
233
  */
234
234
  placeholderEndDate: {
235
235
  type: StringConstructor;
@@ -431,6 +431,13 @@ export class AuroDatePicker extends AuroElement {
431
431
  * @returns {void}
432
432
  */
433
433
  private handleClick;
434
+ /**
435
+ * Handles click on the clear button.
436
+ * @private
437
+ * @param {MouseEvent} event
438
+ * @returns {void}
439
+ */
440
+ private handleClearClick;
434
441
  layout: string;
435
442
  shape: string;
436
443
  size: string;
@@ -585,12 +592,6 @@ export class AuroDatePicker extends AuroElement {
585
592
  * @returns {void}
586
593
  */
587
594
  private pushSlotContent;
588
- /**
589
- * Handle enter/space keydown on the reset button.
590
- * @private
591
- * @param {KeyboardEvent} event - The keydown event.
592
- */
593
- private handleKeydownReset;
594
595
  /**
595
596
  * Resets values without resetting validation.
596
597
  */
@@ -1,4 +1 @@
1
- export namespace datepickerKeyboardStrategy {
2
- function Enter(component: any, evt: any, ctx: any): void;
3
- function Tab(component: any, _evt: any, ctx: any): void;
4
- }
1
+ export const datepickerKeyboardStrategy: {};