@luzmo/lucero 0.0.15 → 0.0.17

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 (126) hide show
  1. package/components/NumberFormatter-DewVDY5w.cjs +18 -0
  2. package/components/NumberFormatter-DgOUVrge.js +136 -0
  3. package/components/NumberParser-Dik4a0h-.cjs +18 -0
  4. package/components/NumberParser-ci9J5EKv.js +173 -0
  5. package/components/accordion/index.cjs +1 -1
  6. package/components/accordion/index.js +2 -2
  7. package/components/action-bar/index.cjs +1 -1
  8. package/components/action-bar/index.js +2 -2
  9. package/components/action-button/index.cjs +1 -1
  10. package/components/action-button/index.js +3 -3
  11. package/components/action-group/index.js +1 -1
  12. package/components/action-menu/index.cjs +1 -1
  13. package/components/action-menu/index.js +3 -3
  14. package/components/avatar/index.js +1 -1
  15. package/components/button/index.cjs +1 -1
  16. package/components/button/index.js +5 -5
  17. package/components/{button-base-DmjYs2s9.cjs → button-base-Cfb8QBjx.cjs} +1 -1
  18. package/components/{button-base-B7v4eeRh.js → button-base-DSHx7XO8.js} +27 -27
  19. package/components/button-group/index.js +1 -1
  20. package/components/calendar/calendar.d.ts +218 -0
  21. package/components/calendar/index.cjs +18 -0
  22. package/components/calendar/index.d.ts +7 -0
  23. package/components/calendar/index.js +28 -0
  24. package/components/checkbox/index.cjs +1 -1
  25. package/components/checkbox/index.js +2 -2
  26. package/components/class-map-Buyb1CLm.cjs +22 -0
  27. package/components/class-map-CJko4aXp.js +51 -0
  28. package/components/{clear-button-KdrF2jaV.cjs → clear-button-CyzA8riE.cjs} +1 -1
  29. package/components/{clear-button-DgZmX5RX.js → clear-button-DB34Vybj.js} +1 -1
  30. package/components/{close-button-DVGUppyd.cjs → close-button-BQJ2wHkM.cjs} +1 -1
  31. package/components/{close-button-CFHQnbsK.js → close-button-DN2cjFRq.js} +2 -2
  32. package/components/color-area/index.js +1 -1
  33. package/components/color-field/index.cjs +1 -1
  34. package/components/color-field/index.js +2 -2
  35. package/components/color-handle/index.js +1 -1
  36. package/components/color-loupe/index.js +1 -1
  37. package/components/color-menu/index.js +1 -1
  38. package/components/color-picker/index.js +1 -1
  39. package/components/color-slider/index.js +1 -1
  40. package/components/date-time-picker/date-time-picker.d.ts +269 -0
  41. package/components/date-time-picker/helpers.d.ts +10 -0
  42. package/components/date-time-picker/index.cjs +105 -0
  43. package/components/date-time-picker/index.d.ts +7 -0
  44. package/components/date-time-picker/index.js +1126 -0
  45. package/components/date-time-picker/segments/date/day-segment.d.ts +9 -0
  46. package/components/date-time-picker/segments/date/month-segment.d.ts +9 -0
  47. package/components/date-time-picker/segments/date/year-segment.d.ts +12 -0
  48. package/components/date-time-picker/segments/date-time-segments.d.ts +35 -0
  49. package/components/date-time-picker/segments/editable-segment.d.ts +21 -0
  50. package/components/date-time-picker/segments/literal-segment.d.ts +6 -0
  51. package/components/date-time-picker/segments/modifiers/clear-modifier.d.ts +5 -0
  52. package/components/date-time-picker/segments/modifiers/decrement-modifier.d.ts +5 -0
  53. package/components/date-time-picker/segments/modifiers/increment-modifier.d.ts +5 -0
  54. package/components/date-time-picker/segments/modifiers/input-modifier.d.ts +13 -0
  55. package/components/date-time-picker/segments/modifiers/segments-modifier.d.ts +18 -0
  56. package/components/date-time-picker/segments/segments-factory.d.ts +16 -0
  57. package/components/date-time-picker/segments/segments-formatter.d.ts +17 -0
  58. package/components/date-time-picker/segments/time/day-period-segment.d.ts +18 -0
  59. package/components/date-time-picker/segments/time/hour-segment.d.ts +19 -0
  60. package/components/date-time-picker/segments/time/millisecond-segment.d.ts +7 -0
  61. package/components/date-time-picker/segments/time/minute-segment.d.ts +7 -0
  62. package/components/date-time-picker/segments/time/second-segment.d.ts +7 -0
  63. package/components/date-time-picker/types.d.ts +41 -0
  64. package/components/divider/index.js +1 -1
  65. package/components/field-group/index.js +1 -1
  66. package/components/field-label/index.js +1 -1
  67. package/components/icon/index.cjs +1 -1
  68. package/components/icon/index.js +24 -24
  69. package/components/index-BziWAe4P.cjs +113 -0
  70. package/components/index-vWdA-LXe.js +1490 -0
  71. package/components/index.cjs +1 -1
  72. package/components/index.js +135 -129
  73. package/components/infield-button/index.cjs +1 -1
  74. package/components/infield-button/index.js +3 -3
  75. package/components/label/index.js +1 -1
  76. package/components/menu/index.cjs +66 -1
  77. package/components/menu/index.js +874 -10
  78. package/components/menu/menu.d.ts +1 -0
  79. package/components/multi-language-field/index.js +1 -1
  80. package/components/number-field/index.cjs +6 -6
  81. package/components/number-field/index.js +128 -394
  82. package/components/observe-slot-presence-CmVi0zTc.js +68 -0
  83. package/components/observe-slot-presence-bc9chhsi.cjs +18 -0
  84. package/components/overlay/index.js +1 -1
  85. package/components/picker/index.cjs +1 -1
  86. package/components/picker/index.js +3 -3
  87. package/components/picker/picker.d.ts +2 -1
  88. package/components/picker-BxEG2NdV.js +628 -0
  89. package/components/picker-DROquiIZ.cjs +123 -0
  90. package/components/picker-button/index.cjs +37 -0
  91. package/components/picker-button/index.d.ts +7 -0
  92. package/components/picker-button/index.js +87 -0
  93. package/components/picker-button/picker-button.d.ts +21 -0
  94. package/components/popover/index.js +1 -1
  95. package/components/progress-circle/index.js +1 -1
  96. package/components/radio/index.cjs +1 -1
  97. package/components/radio/index.js +2 -2
  98. package/components/search/index.cjs +1 -1
  99. package/components/search/index.js +3 -3
  100. package/components/slider/index.js +1 -1
  101. package/components/swatch/index.cjs +1 -1
  102. package/components/swatch/index.js +2 -2
  103. package/components/switch/index.cjs +1 -1
  104. package/components/switch/index.js +2 -2
  105. package/components/tags/index.cjs +1 -1
  106. package/components/tags/index.js +3 -3
  107. package/components/text-field/index.cjs +1 -1
  108. package/components/text-field/index.js +3 -3
  109. package/components/text-field-BTnBJoP9.js +314 -0
  110. package/components/text-field-mxJCYues.cjs +85 -0
  111. package/components/text-field.module-ColtFhf_.js +21 -0
  112. package/components/text-field.module-p_VF2tC_.cjs +18 -0
  113. package/components/toast/index.cjs +1 -1
  114. package/components/toast/index.js +3 -3
  115. package/components/tooltip/index.js +1 -1
  116. package/components/unit-input/index.cjs +1 -1
  117. package/components/unit-input/index.js +2 -2
  118. package/custom-elements.json +1 -1
  119. package/index.d.ts +3 -0
  120. package/package.json +16 -1
  121. package/components/index-BH9W0QLt.js +0 -927
  122. package/components/index-C2bkoP5q.cjs +0 -77
  123. package/components/picker-BBchB7nM.cjs +0 -127
  124. package/components/picker-C_coD2KL.js +0 -655
  125. package/components/text-field-5_ev9way.cjs +0 -85
  126. package/components/text-field-CvKSS59x.js +0 -313
@@ -0,0 +1,628 @@
1
+ /*! * Lucero - The design system for Luzmo.
2
+ *
3
+ * Copyright © 2025 Luzmo
4
+ * All rights reserved.
5
+ * Lucero (“Luzmo Design System”) must be used according to the Luzmo Terms of Service.
6
+ * This license allows users with a current active Luzmo account to use Lucero.
7
+ * This license terminates automatically if a user no longer has an active Luzmo account.
8
+ * Please view the Luzmo Terms of Service at: https://www.luzmo.com/information-pages/terms-of-use.
9
+ *
10
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
11
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
13
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
15
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
+ * SOFTWARE.
17
+ * */
18
+ import { x as l, E as d, B as w, r as x, n as s } from "./base-CawdqE7p.js";
19
+ import { r as v } from "./state-CYxk12SV.js";
20
+ import { e as b } from "./query-D_KR_GUc.js";
21
+ import { e as C } from "./class-map-CJko4aXp.js";
22
+ import { o as u } from "./if-defined-BSAr_4u4.js";
23
+ import { o as I } from "./style-map-Ct2LiEds.js";
24
+ import { F as S } from "./focusable-cj2QhwDT.js";
25
+ import { D as M } from "./dependency-manger-CEXvGQUV.js";
26
+ import { P as $ } from "./pending-state-TJj1x9xn.js";
27
+ import { S as E } from "./sized-mixin-BxMraZLS.js";
28
+ import { luzmoIcon as k, luzmoAngleDown as q, luzmoAlert as L } from "@luzmo/icons";
29
+ import "./menu/index.js";
30
+ import "./overlay/index.js";
31
+ import "./progress-circle/index.js";
32
+ import "./tooltip/index.js";
33
+ import { f as g } from "./platform-BM-uMWpX.js";
34
+ const F = "(max-width: 743px) and (hover: none) and (pointer: coarse)";
35
+ class A {
36
+ constructor(e, o) {
37
+ this.key = Symbol("match-media-key"), this.matches = !1, this.host = e, this.host.addController(this), this.media = window.matchMedia(o), this.matches = this.media.matches, this.onChange = this.onChange.bind(this), e.addController(this);
38
+ }
39
+ hostConnected() {
40
+ var e;
41
+ (e = this.media) == null || e.addEventListener("change", this.onChange);
42
+ }
43
+ hostDisconnected() {
44
+ var e;
45
+ (e = this.media) == null || e.removeEventListener("change", this.onChange);
46
+ }
47
+ onChange(e) {
48
+ this.matches !== e.matches && (this.matches = e.matches, this.host.requestUpdate(this.key, !this.matches));
49
+ }
50
+ }
51
+ const O = '#button{cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--luzmo-button-font-family, var(--luzmo-font-family));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:var(--luzmo-button-line-height, var(--luzmo-line-height, 1.3));text-transform:none;vertical-align:top;-webkit-appearance:button;transition:background var(--luzmo-button-animation-duration, var(--luzmo-animation-duration)) ease-out,border-color var(--luzmo-button-animation-duration, var(--luzmo-animation-duration)) ease-out,color var(--luzmo-button-animation-duration, var(--luzmo-animation-duration)) ease-out,box-shadow var(--luzmo-button-animation-duration, var(--luzmo-animation-duration)) ease-out;justify-content:center;align-items:center;margin:0;-webkit-text-decoration:none;text-decoration:none;display:inline-flex;position:relative;overflow:visible}#button::-moz-focus-inner{border-style:none;padding:0}#button:focus{outline:none}#icon{margin-inline-end:var(--luzmo-picker-spacing-text-to-icon, var(--picker-spacing-text-to-icon));font-size:var(--luzmo-picker-font-size, var(--picker-font-size))}@media (forced-colors: active){:host{--highcontrast-picker-focus-indicator-color: Highlight;--highcontrast-picker-border-color-default: ButtonBorder;--highcontrast-picker-border-color-hover: Highlight;--highcontrast-picker-border-color-disabled: GrayText;--highcontrast-picker-content-color-default: ButtonText;--highcontrast-picker-content-color-disabled: GrayText;--highcontrast-picker-background-color: ButtonFace}#button.is-keyboardFocused,#button:focus-visible{--highcontrast-picker-border-color-hover: ButtonText}#button .label,#button:after{forced-color-adjust:none}}#button{box-sizing:border-box;max-inline-size:100%;min-inline-size:calc(var(--picker-minimum-width-multiplier) * var(--luzmo-picker-block-size, var(--picker-block-size)));block-size:var(--luzmo-picker-block-size, var(--picker-block-size));border-width:var(--luzmo-picker-border-width, var(--picker-border-width));border-radius:var(--luzmo-picker-border-radius, var(--picker-border-radius));box-shadow:var(--luzmo-picker-box-shadow, var(--picker-box-shadow));transition:background-color var(--luzmo-picker-animation-duration, var(--picker-animation-duration)),box-shadow var(--luzmo-picker-animation-duration, var(--picker-animation-duration)),border-color var(--luzmo-picker-animation-duration, var(--picker-animation-duration)) ease-in-out;color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-default, var(--picker-font-color-default)));background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-default, var(--picker-background-color-default)));border-style:solid;border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-default, var(--picker-border-color-default)));margin-block-start:var(--luzmo-picker-spacing-label-to-picker, var(--picker-spacing-label-to-picker));padding-block:0;padding-inline-start:var(--luzmo-picker-spacing-edge-to-text, var(--picker-spacing-edge-to-text));padding-inline-end:var(--luzmo-picker-spacing-edge-to-disclosure-icon, var(--picker-spacing-edge-to-disclosure-icon));display:flex}#button:after{pointer-events:none;content:"";block-size:calc(100% + var(--luzmo-picker-focus-indicator-gap, var(--picker-focus-indicator-gap)) * 2 + var(--luzmo-picker-border-width, var(--picker-border-width)) * 2);inline-size:calc(100% + var(--luzmo-picker-focus-indicator-gap, var(--picker-focus-indicator-gap)) * 2 + var(--luzmo-picker-border-width, var(--picker-border-width)) * 2);border-style:solid;border-width:var(--luzmo-picker-focus-indicator-thickness, var(--picker-focus-indicator-thickness));border-radius:calc(var(--luzmo-picker-border-radius, var(--picker-border-radius)) + var(--luzmo-picker-focus-indicator-gap, var(--picker-focus-indicator-gap)) + var(--luzmo-picker-border-width, var(--picker-border-width)));border-color:#0000;margin-block-start:calc((var(--luzmo-picker-focus-indicator-gap, var(--picker-focus-indicator-gap)) + var(--luzmo-picker-focus-indicator-thickness, var(--picker-focus-indicator-thickness)) + var(--luzmo-picker-border-width, var(--picker-border-width))) * -1);margin-inline-start:calc((var(--luzmo-picker-focus-indicator-gap, var(--picker-focus-indicator-gap)) + var(--luzmo-picker-focus-indicator-thickness, var(--picker-focus-indicator-thickness)) + var(--luzmo-picker-border-width, var(--picker-border-width))) * -1);position:absolute;inset-block:0;inset-inline:0}#button:active{background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-active, var(--picker-background-color-active)));border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-active, var(--picker-border-color-active)))}#button:active:after{border-color:#0000}#button.placeholder:active .label{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-active, var(--picker-font-color-active)))}#button.is-keyboardFocused,#button:focus-visible{background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-key-focus, var(--picker-background-color-key-focus)));border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-key-focus, var(--picker-border-color-key-focus)));color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-key-focus, var(--picker-font-color-key-focus)));outline:none}#button.is-keyboardFocused:after,#button:focus-visible:after{border-color:var(--highcontrast-picker-focus-indicator-color, var(--luzmo-picker-focus-indicator-color, var(--picker-focus-indicator-color)))}#button.is-keyboardFocused.placeholder,#button.placeholder:focus-visible{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-key-focus, var(--picker-font-color-key-focus)))}#button.is-keyboardFocused .disclosure-icon,#button:focus-visible .disclosure-icon{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-icon-color-key-focus, var(--picker-icon-color-key-focus)))}:host([open]) #button:not(:disabled,.is-disabled){color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-default-open, var(--picker-font-color-default-open)));background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-default-open, var(--picker-background-color-default-open)));border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-default-open, var(--picker-border-color-default-open)))}:host([open]) #button:not(:disabled,.is-disabled) .disclosure-icon{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-icon-color-default-open, var(--picker-icon-color-default-open)))}:host([invalid]) #button:not(:disabled,.is-disabled){border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-error-default, var(--picker-border-color-error-default)))}:host([invalid]) #button:not(:disabled,.is-disabled) .validation-icon{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-icon-color-error, var(--picker-icon-color-error)))}:host([invalid]) #button:not(:disabled,.is-disabled):active{border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-error-active, var(--picker-border-color-error-active)))}:host([invalid][open]) #button:not(:disabled,.is-disabled){border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-error-default-open, var(--picker-border-color-error-default-open)))}:host([invalid]) #button.is-keyboardFocused:not(:disabled,.is-disabled),:host([invalid]) #button:not(:disabled,.is-disabled):focus-visible{border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-error-key-focus, var(--picker-border-color-error-key-focus)))}:host([pending]) #button .disclosure-icon{color:var(--highcontrast-picker-content-color-disabled, var(--luzmo-picker-icon-color-disabled, var(--picker-icon-color-disabled)))}.icon{flex-shrink:0}.label{white-space:nowrap;font-size:var(--luzmo-picker-font-size, var(--picker-font-size));line-height:var(--luzmo-picker-line-height, var(--picker-line-height));font-weight:var(--luzmo-picker-font-weight, var(--picker-font-weight));text-overflow:ellipsis;text-align:start;flex:auto;overflow:hidden}.label.placeholder{font-weight:var(--luzmo-picker-placeholder-font-weight, var(--picker-font-weight));font-style:var(--luzmo-picker-placeholder-font-style, var(--picker-placeholder-font-style));transition:color var(--luzmo-picker-animation-duration, var(--picker-animation-duration)) ease-in-out;color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-default, var(--picker-font-color-default)))}.label.placeholder:active{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-active, var(--picker-font-color-active)))}.disclosure-icon{vertical-align:top;transition:color var(--luzmo-picker-animation-duration, var(--picker-animation-duration)) ease-out;margin-inline-start:var(--luzmo-picker-spacing-icon-to-disclosure-icon, var(--picker-spacing-icon-to-disclosure-icon));color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-icon-color-default, var(--picker-icon-color-default)));flex-shrink:0;display:inline-block;position:relative}.disclosure-icon:active{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-icon-color-active, var(--picker-icon-color-active)))}luzmo-progress-circle,.validation-icon{margin-inline-start:var(--luzmo-picker-spacing-text-to-icon, var(--picker-spacing-text-to-icon))}.icon-container{display:flex;position:relative;height:100%;align-items:center;font-size:var(--luzmo-picker-disclosure-icon-size, var(--picker-disclosure-icon-size))}.icon-container.disclosure-icon{margin-inline-end:0}.label~.disclosure-icon{margin-inline-start:var(--luzmo-picker-spacing-text-to-icon, var(--picker-spacing-text-to-icon))}:host([quiet]) #button{inline-size:auto;min-inline-size:0;padding-inline:var(--luzmo-picker-spacing-edge-to-text-quiet, var(--picker-spacing-edge-to-text-quiet));color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-default, var(--picker-font-color-default)));background-color:initial;background-color:var(--highcontrast-picker-background-color, transparent);border:none;border-radius:0;box-shadow:none;margin-block-start:calc(var(--luzmo-picker-spacing-label-to-picker-quiet, var(--picker-spacing-label-to-picker-quiet)) + 1px)}:host([quiet]) #button.label-inline{margin-block-start:0}:host([quiet]) #button .disclosure-icon{margin-inline-end:var(--luzmo-picker-spacing-edge-to-disclosure-icon-quiet, var(--picker-spacing-edge-to-disclosure-icon-quiet))}:host([quiet]) #button:after{block-size:auto;inline-size:auto;border:none}@media (hover: hover){#button:hover{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-hover, var(--picker-font-color-hover)));background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-hover, var(--picker-background-color-hover)));border-color:var(--highcontrast-picker-border-color-hover, var(--luzmo-picker-border-color-hover, var(--picker-border-color-hover)))}#button:hover .disclosure-icon{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-icon-color-hover, var(--picker-icon-color-hover)))}:host([open]):not([quiet]) #button:not(:disabled,.is-disabled):hover{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-hover-open, var(--picker-font-color-hover-open)));background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-hover-open, var(--picker-background-color-hover-open)));border-color:var(--highcontrast-picker-border-color-hover, var(--luzmo-picker-border-color-hover-open, var(--picker-border-color-hover-open)))}:host([open]) #button:not(:disabled,.is-disabled):hover .disclosure-icon{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-icon-color-hover-open, var(--picker-icon-color-hover-open)))}:host([invalid]) #button:not(:disabled,.is-disabled):hover{border-color:var(--highcontrast-picker-border-color-hover, var(--luzmo-picker-border-color-error-hover, var(--picker-border-color-error-hover)))}:host([invalid][open]) #button:not(:disabled,.is-disabled):hover{border-color:var(--highcontrast-picker-border-color-hover, var(--luzmo-picker-border-color-error-hover-open, var(--picker-border-color-error-hover-open)))}.label.placeholder:hover{color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-hover, var(--picker-font-color-hover)))}:host([quiet]) #button:hover{background-color:initial;background-color:var(--highcontrast-picker-background-color, transparent)!important}}:host([quiet]) #button.is-keyboardFocused,:host([quiet]) #button:focus-visible{background-color:initial;background-color:var(--highcontrast-picker-background-color, transparent)}:host([quiet]) #button.is-keyboardFocused:after,:host([quiet]) #button:focus-visible:after{box-shadow:0 var(--luzmo-picker-focus-indicator-thickness, var(--picker-focus-indicator-thickness)) 0 0 var(--highcontrast-picker-focus-indicator-color, var(--luzmo-picker-focus-indicator-color, var(--picker-focus-indicator-color)));margin:calc((var(--luzmo-picker-focus-indicator-gap, var(--picker-focus-indicator-gap)) + var(--luzmo-picker-border-width, var(--picker-border-width))) * -1) 0;border:none;border-radius:0}:host([quiet][open]) #button,:host([quiet][disabled]) #button#button,:host([quiet]) #button#button:disabled,:host([quiet]) #button:active{background-color:initial;background-color:var(--highcontrast-picker-background-color, transparent)}.label-inline{vertical-align:top;display:inline-flex}:host([disabled]) #button,#button:disabled{cursor:default;background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-disabled, var(--picker-background-color-disabled)));border-color:#0000;border-color:var(--highcontrast-picker-border-color-disabled, transparent);color:var(--highcontrast-picker-content-color-disabled, var(--luzmo-picker-font-color-disabled, var(--picker-font-color-disabled)))}:host([disabled]) #button .icon,:host([disabled]) #button .disclosure-icon,:host([disabled]) #button .validation-icon,#button:disabled .icon,#button:disabled .disclosure-icon,#button:disabled .validation-icon{color:var(--highcontrast-picker-content-color-disabled, var(--luzmo-picker-icon-color-disabled, var(--picker-icon-color-disabled)))}:host([disabled]) #button .label.placeholder,#button:disabled .label.placeholder{color:var(--highcontrast-picker-content-color-disabled, var(--luzmo-picker-font-color-disabled, var(--picker-font-color-disabled)))}:host{--picker-box-shadow: 0px 1px 3px 0px rgba(var(--luzmo-border-color-rgb), .06);--picker-background-color-default: var(--luzmo-background-color);--picker-background-color-default-open: var(--luzmo-background-color-hover);--picker-background-color-active: var(--luzmo-background-color-down);--picker-background-color-hover: var(--luzmo-background-color-hover);--picker-background-color-hover-open: var(--luzmo-background-color-down);--picker-background-color-key-focus: var(--luzmo-background-color-down);--picker-border-color-default: var(--luzmo-border-color);--picker-border-color-default-open: var(--luzmo-border-color-hover);--picker-border-color-hover: var(--luzmo-border-color);--picker-border-color-hover-open: var(--luzmo-border-color-hover);--picker-border-color-active: var(--luzmo-border-color);--picker-border-color-key-focus: var(--luzmo-border-color);--picker-border-width: var(--luzmo-border-width);--picker-font-size: var(--luzmo-font-size);--picker-font-weight: var(--luzmo-font-weight);--picker-placeholder-font-style: var(--luzmo-font-style);--picker-line-height: var(--luzmo-line-height);--picker-block-size: 32px;--picker-border-radius: var(--luzmo-border-radius);--picker-spacing-edge-to-text: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--picker-spacing-text-to-icon: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--picker-spacing-text-to-icon-inline-end: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--picker-spacing-icon-to-disclosure-icon: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--picker-spacing-edge-to-text-quiet: 0px;--picker-spacing-label-to-picker: 0px;--picker-spacing-label-to-picker-quiet: calc( -1 * var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--picker-spacing-edge-to-disclosure-icon: calc( var(--luzmo-spacing-3) + var(--luzmo-spacing-1) );--picker-spacing-edge-to-disclosure-icon-quiet: 0px;--picker-animation-duration: var(--luzmo-animation-duration);--picker-font-color-default: var(--luzmo-font-color);--picker-font-color-default-open: var(--luzmo-font-color-hover);--picker-font-color-hover: var(--luzmo-font-color-hover);--picker-font-color-hover-open: var(--luzmo-font-color-down);--picker-font-color-active: var(--luzmo-font-color-focus);--picker-font-color-key-focus: var(--luzmo-font-color-focus);--picker-icon-color-default: var(--luzmo-font-color);--picker-icon-color-default-open: var(--luzmo-font-color-hover);--picker-icon-color-hover: var(--luzmo-font-color-hover);--picker-icon-color-hover-open: var(--luzmo-font-color-hover);--picker-icon-color-active: var(--luzmo-font-color-focus);--picker-icon-color-key-focus: var(--luzmo-font-color-focus);--picker-border-color-error-default: var(--luzmo-negative-color);--picker-border-color-error-default-open: var(--luzmo-negative-color-down);--picker-border-color-error-hover: var(--luzmo-negative-color-hover);--picker-border-color-error-hover-open: var(--luzmo-negative-color-down);--picker-border-color-error-active: var(--luzmo-negative-color-down);--picker-border-color-error-key-focus: var(--luzmo-negative-color-focus);--picker-icon-color-error: var(--luzmo-negative-color);--picker-background-color-disabled: var(--luzmo-background-color-disabled);--picker-font-color-disabled: var(--luzmo-disabled-color);--picker-icon-color-disabled: var(--luzmo-disabled-color);--picker-focus-indicator-gap: var(--luzmo-indicator-gap);--picker-focus-indicator-thickness: var(--luzmo-indicator-width);--picker-focus-indicator-color: var(--luzmo-indicator-color);--picker-disclosure-icon-size: var(--luzmo-font-size-s)}:host([size=s]){--picker-block-size: 28px;--picker-font-size: var(--luzmo-font-size-s);--picker-border-radius: var(--luzmo-border-radius);--picker-spacing-edge-to-text: var(--luzmo-spacing-3);--picker-spacing-text-to-icon: var(--luzmo-spacing-3);--picker-spacing-text-to-icon-inline-end: var(--luzmo-spacing-3);--picker-spacing-icon-to-disclosure-icon: var(--luzmo-spacing-3);--picker-spacing-label-to-picker-quiet: calc(-1 * var(--luzmo-spacing-3));--picker-spacing-edge-to-disclosure-icon: var(--luzmo-spacing-3);--picker-disclosure-icon-size: var(--luzmo-font-size-s)}:host([size=l]){--picker-block-size: 40px;--picker-font-size: var(--luzmo-font-size-l);--picker-border-radius: var(--luzmo-border-radius);--picker-spacing-edge-to-text: var(--luzmo-spacing-4);--picker-spacing-text-to-icon: var(--luzmo-spacing-4);--picker-spacing-text-to-icon-inline-end: var(--luzmo-spacing-4);--picker-spacing-icon-to-disclosure-icon: var(--luzmo-spacing-4);--picker-spacing-label-to-picker-quiet: calc(-1 * var(--luzmo-spacing-4));--picker-spacing-edge-to-disclosure-icon: var(--luzmo-spacing-4);--picker-disclosure-icon-size: var(--luzmo-font-size)}:host([size=xl]){--picker-block-size: 48px;--picker-font-size: var(--luzmo-font-size-xl);--picker-border-radius: var(--luzmo-border-radius-l);--picker-spacing-edge-to-text: calc( var(--luzmo-spacing-4) + var(--luzmo-spacing-1) );--picker-spacing-text-to-icon: calc( var(--luzmo-spacing-4) + var(--luzmo-spacing-1) );--picker-spacing-text-to-icon-inline-end: calc( var(--luzmo-spacing-4) + var(--luzmo-spacing-1) );--picker-spacing-icon-to-disclosure-icon: calc( var(--luzmo-spacing-4) + var(--luzmo-spacing-1) );--picker-spacing-label-to-picker-quiet: calc( -1 * var(--luzmo-spacing-4) + var(--luzmo-spacing-1) );--picker-spacing-edge-to-disclosure-icon: calc( var(--luzmo-spacing-4) + var(--luzmo-spacing-1) );--picker-disclosure-icon-size: var(--luzmo-font-size-l)}:host([variant=highlight]) ::slotted(luzmo-menu-item[selected]){--menu-item-highlight-label-content-color: var(--luzmo-primary-inverse-color);--menu-item-label-icon-color-default: var(--luzmo-primary-inverse-color);--menu-checkmark-display: var(--menu-checkmark-display-hidden);padding-inline-start:var(--luzmo-menu-item-label-inline-edge-to-content, var(--menu-item-label-inline-edge-to-content));background-color:var(--luzmo-menu-item-highlight-label-background-color, var(--menu-item-highlight-label-background-color, var(--luzmo-border-color)))}:host{display:inline-flex;vertical-align:top;max-inline-size:100%;inline-size:var(--luzmo-picker-inline-size, var(--picker-inline-size));min-inline-size:calc(var(--picker-minimum-width-multiplier) * var(--luzmo-picker-block-size, var(--picker-block-size)))}:host([quiet]){width:auto;min-width:0}:host([disabled]){pointer-events:none}#button{width:100%;min-width:100%;max-width:100%}#icon:not([hidden]){display:inline-flex}:host([readonly]) #button{-webkit-user-select:inherit;user-select:inherit}.picker,.validation-icon{flex-shrink:0}luzmo-overlay{pointer-events:none}luzmo-menu{pointer-events:initial}:host>luzmo-menu{display:none}:host([focused]:not([quiet])) #button #label.placeholder{color:var(--picker-placeholder-text-color-key-focus, var(--alias-placeholder-text-color-hover))}#label.visually-hidden~.picker{margin-inline-start:auto}:host([focused]:not([quiet],[pending])) #button .picker{color:var(--picker-icon-color-key-focus, var(--alias-icon-color-focus))}.visually-hidden{border:0;clip:rect(0,0,0,0);clip-path:inset(50%);height:1px;margin:0 -1px -1px 0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}luzmo-overlay:not(:defined){display:none}#button.remove-focus-ring-safari-hack:focus-visible{background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-default, var(--picker-background-color-default)));border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-default, var(--picker-border-color-default)));color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-default, var(--picker-font-color-default)))}#button.remove-focus-ring-safari-hack:after{border:none}#button.remove-focus-ring-safari-hack:focus-visible:after{box-shadow:none}#button.remove-focus-ring-safari-hack:active{background-color:var(--highcontrast-picker-background-color, var(--luzmo-picker-background-color-default, var(--picker-background-color-default)));border-color:var(--highcontrast-picker-border-color-default, var(--luzmo-picker-border-color-default, var(--picker-border-color-default)));color:var(--highcontrast-picker-content-color-default, var(--luzmo-picker-font-color-default, var(--picker-font-color-default)))}';
52
+ var m = /* @__PURE__ */ ((c) => (c[c.desktop = 0] = "desktop", c[c.mobile = 1] = "mobile", c))(m || {});
53
+ class y {
54
+ constructor(e, o) {
55
+ this.target = e, this.host = o, this.preventNextToggle = "no", this.pointerdownState = !1, this.enterKeydownOn = null, this._open = !1, this.target = e, this.host = o, this.host.addController(this), this.init();
56
+ }
57
+ get activelyOpening() {
58
+ return !1;
59
+ }
60
+ get open() {
61
+ return this._open;
62
+ }
63
+ /**
64
+ * Set `open`
65
+ */
66
+ set open(e) {
67
+ if (this._open !== e) {
68
+ if (this._open = e, this.overlay) {
69
+ this.host.open = e;
70
+ return;
71
+ }
72
+ customElements.whenDefined("luzmo-overlay").then(async () => {
73
+ const { LuzmoOverlay: o } = await import("./overlay/index.js");
74
+ this.overlay = new o(), this.host.open = !0, this.host.requestUpdate();
75
+ }), import("./overlay/index.js");
76
+ }
77
+ }
78
+ get overlay() {
79
+ return this._overlay;
80
+ }
81
+ set overlay(e) {
82
+ e && this.overlay !== e && (this._overlay = e, this.initOverlay());
83
+ }
84
+ releaseDescription() {
85
+ }
86
+ handleBeforetoggle(e) {
87
+ var o;
88
+ e.composedPath()[0] === e.target && (e.newState === "closed" && (this.preventNextToggle === "no" ? this.open = !1 : this.pointerdownState || (o = this.overlay) == null || o.manuallyKeepOpen()), this.open || (this.host.optionsMenu.updateSelectedItemIndex(), this.host.optionsMenu.closeDescendentOverlays()));
89
+ }
90
+ initOverlay() {
91
+ this.overlay && (this.overlay.addEventListener("beforetoggle", (e) => {
92
+ this.handleBeforetoggle(
93
+ e
94
+ );
95
+ }), this.overlay.type = this.host.isMobile.matches ? "modal" : "auto", this.overlay.triggerElement = this.host, this.overlay.placement = this.host.isMobile.matches ? void 0 : this.host.placement, this.overlay.receivesFocus = "true", this.overlay.willPreventClose = this.preventNextToggle !== "no" && this.open, this.overlay.addEventListener(
96
+ "slottable-request",
97
+ this.host.handleSlottableRequest
98
+ ));
99
+ }
100
+ handlePointerdown(e) {
101
+ }
102
+ handleButtonFocus(e) {
103
+ this.preventNextToggle === "maybe" && e.relatedTarget === this.host.optionsMenu && (this.preventNextToggle = "yes");
104
+ }
105
+ handleActivate(e) {
106
+ }
107
+ /* c8 ignore next 3 */
108
+ init() {
109
+ }
110
+ abort() {
111
+ var e;
112
+ this.releaseDescription(), (e = this.abortController) == null || e.abort();
113
+ }
114
+ hostConnected() {
115
+ this.init();
116
+ }
117
+ hostDisconnected() {
118
+ var e;
119
+ (e = this.abortController) == null || e.abort();
120
+ }
121
+ hostUpdated() {
122
+ this.overlay && this.host.dependencyManager.loaded && this.host.open !== this.overlay.open && (this.overlay.willPreventClose = this.preventNextToggle !== "no", this.overlay.open = this.host.open);
123
+ }
124
+ }
125
+ class _ extends y {
126
+ constructor() {
127
+ super(...arguments), this.type = m.desktop;
128
+ }
129
+ handlePointerdown(e) {
130
+ if (e.button !== 0 || e.pointerType === "touch")
131
+ return;
132
+ this.pointerdownState = this.open, this.preventNextToggle = "maybe";
133
+ let o = 0;
134
+ const r = () => {
135
+ cancelAnimationFrame(o), o = requestAnimationFrame(() => {
136
+ document.removeEventListener("pointerup", r), document.removeEventListener("pointercancel", r), this.target.removeEventListener("click", r), requestAnimationFrame(() => {
137
+ this.preventNextToggle = "no";
138
+ });
139
+ });
140
+ };
141
+ document.addEventListener("pointerup", r), document.addEventListener("pointercancel", r), this.target.addEventListener("click", r), this.handleActivate();
142
+ }
143
+ handleActivate(e) {
144
+ this.enterKeydownOn && this.enterKeydownOn !== this.target || this.preventNextToggle !== "yes" && ((e == null ? void 0 : e.type) === "click" && this.open !== this.pointerdownState || this.host.toggle());
145
+ }
146
+ init() {
147
+ var o;
148
+ (o = this.abortController) == null || o.abort(), this.abortController = new AbortController();
149
+ const { signal: e } = this.abortController;
150
+ this.target.addEventListener(
151
+ "click",
152
+ (r) => this.handleActivate(r),
153
+ {
154
+ signal: e
155
+ }
156
+ ), this.target.addEventListener(
157
+ "pointerdown",
158
+ (r) => this.handlePointerdown(r),
159
+ { signal: e }
160
+ ), this.target.addEventListener(
161
+ "focus",
162
+ (r) => this.handleButtonFocus(r),
163
+ {
164
+ signal: e
165
+ }
166
+ );
167
+ }
168
+ }
169
+ const h = "remove-focus-ring-safari-hack";
170
+ class D extends y {
171
+ constructor() {
172
+ super(...arguments), this.type = m.mobile;
173
+ }
174
+ handleClick() {
175
+ this.preventNextToggle === "no" && (this.open = !this.open), this.preventNextToggle = "no";
176
+ }
177
+ handlePointerdown() {
178
+ this.preventNextToggle = this.open ? "yes" : "no", g() && this.target.classList.add(h);
179
+ }
180
+ handleFocusOut() {
181
+ this.host.open || g() && this.target.classList.contains(h) && this.target.classList.remove(h);
182
+ }
183
+ init() {
184
+ var o;
185
+ (o = this.abortController) == null || o.abort(), this.abortController = new AbortController();
186
+ const { signal: e } = this.abortController;
187
+ this.target.addEventListener("click", () => this.handleClick(), {
188
+ signal: e
189
+ }), this.target.addEventListener(
190
+ "pointerdown",
191
+ () => this.handlePointerdown(),
192
+ { signal: e }
193
+ ), this.target.addEventListener("focusout", () => this.handleFocusOut(), {
194
+ signal: e
195
+ });
196
+ }
197
+ }
198
+ const f = {
199
+ desktop: _,
200
+ mobile: D
201
+ };
202
+ var B = Object.defineProperty, P = Object.getOwnPropertyDescriptor, i = (c, e, o, r) => {
203
+ for (var n = r > 1 ? void 0 : r ? P(e, o) : e, a = c.length - 1, p; a >= 0; a--)
204
+ (p = c[a]) && (n = (r ? p(e, o, n) : p(n)) || n);
205
+ return r && n && B(e, o, n), n;
206
+ };
207
+ const T = () => l`
208
+ <div class="disclosure-icon icon">
209
+ ${k(q, { className: "indicator" })}
210
+ </div>
211
+ `, K = () => l`
212
+ <div class="icon-container validation-icon icon">
213
+ ${k(L)}
214
+ </div>
215
+ `, z = "option-picker";
216
+ class t extends E(S, {
217
+ noDefaultSize: !0
218
+ }) {
219
+ /**
220
+ * Initializes the `PendingStateController` for the Picker component.
221
+ * The `PendingStateController` manages the pending state of the Picker.
222
+ */
223
+ constructor() {
224
+ super(), this.disabled = !1, this.focused = !1, this.invalid = !1, this.pending = !1, this.pendingLabel = "Pending", this.open = !1, this.readonly = !1, this.placement = "bottom-start", this.quiet = !1, this.value = "", this.selects = "single", this.dependencyManager = new M(this), this.isMobile = new A(this, F), this.listRole = "listbox", this.itemRole = "option", this.hasRenderedOverlay = !1, this._selfManageFocusElement = !1, this.deprecatedMenu = null, this.selectionPromise = Promise.resolve(), this.willManageSelection = !1, this.recentlyConnected = !1, this.enterKeydownOn = null, this.handleSlottableRequest = (e) => {
225
+ }, this.applyFocusElementLabel = (e, o) => {
226
+ this.appliedLabel = e, this.labelAlignment = o.sideAligned ? "inline" : void 0;
227
+ }, this.handleKeydown = (e) => {
228
+ this.focused = !0, !(e.code !== "ArrowDown" && e.code !== "ArrowUp") && (e.stopPropagation(), e.preventDefault(), this.toggle(!0));
229
+ }, this.renderAngleIcon = () => T(), this.renderAlertIcon = () => K(), this.handleEnterKeydown = (e) => {
230
+ if (e.code === "Enter") {
231
+ if (this.enterKeydownOn) {
232
+ e.preventDefault();
233
+ return;
234
+ }
235
+ this.enterKeydownOn = e.target, this.addEventListener(
236
+ "keyup",
237
+ (o) => {
238
+ o.code === "Enter" && (this.enterKeydownOn = null);
239
+ },
240
+ { once: !0 }
241
+ );
242
+ }
243
+ }, this.pendingStateController = new $(this);
244
+ }
245
+ get selectedItem() {
246
+ return this._selectedItem;
247
+ }
248
+ get selectedItemContent() {
249
+ return this._selectedItemContent || { icon: [], content: [] };
250
+ }
251
+ get selfManageFocusElement() {
252
+ return this._selfManageFocusElement;
253
+ }
254
+ get menuItems() {
255
+ return this.optionsMenu.childItems;
256
+ }
257
+ set selectedItem(e) {
258
+ const o = e == null ? void 0 : e.querySelector('[slot="icon"]');
259
+ if (this.selectedItemContent = e ? e.itemChildren : void 0, e === this.selectedItem)
260
+ return;
261
+ const r = this.selectedItem;
262
+ this._selectedItem = e, this._selectedItemIcon = (o == null ? void 0 : o.icon) ?? void 0, this.requestUpdate("selectedItem", r);
263
+ }
264
+ get focusElement() {
265
+ return this.open ? this.optionsMenu : this.button;
266
+ }
267
+ forceFocusVisible() {
268
+ this.disabled || (this.focused = !0);
269
+ }
270
+ click() {
271
+ this.disabled || this.toggle();
272
+ }
273
+ handleButtonBlur() {
274
+ this.focused = !1;
275
+ }
276
+ focus(e) {
277
+ super.focus(e), !this.disabled && this.focusElement && (this.focused = this.hasVisibleFocusInTree());
278
+ }
279
+ handleHelperFocus() {
280
+ this.focused = !0, this.button.focus();
281
+ }
282
+ handleChange(e) {
283
+ this.strategy && (this.strategy.preventNextToggle = "no");
284
+ const o = e.target, [r] = o.selectedItems;
285
+ e.stopPropagation(), e.cancelable ? this.setValueFromItem(r, e) : (this.open = !1, this.strategy && (this.strategy.open = !1));
286
+ }
287
+ handleButtonFocus(e) {
288
+ var o;
289
+ (o = this.strategy) == null || o.handleButtonFocus(e);
290
+ }
291
+ toggle(e) {
292
+ this.readonly || this.pending || (this.open = e === void 0 ? !this.open : e, this.strategy && (this.strategy.open = this.open), this._selfManageFocusElement = this.open);
293
+ }
294
+ close() {
295
+ this.readonly || this.strategy && (this.open = !1, this.strategy.open = !1);
296
+ }
297
+ bindEvents() {
298
+ var e;
299
+ (e = this.strategy) == null || e.abort(), this.strategy = this.isMobile.matches ? new f.mobile(this.button, this) : new f.desktop(this.button, this);
300
+ }
301
+ connectedCallback() {
302
+ super.connectedCallback(), this.recentlyConnected = this.hasUpdated;
303
+ }
304
+ disconnectedCallback() {
305
+ var e;
306
+ this.close(), (e = this.strategy) == null || e.releaseDescription(), super.disconnectedCallback();
307
+ }
308
+ async setValueFromItem(e, o) {
309
+ this.open = !1, this.strategy && (this.strategy.open = !1);
310
+ const r = this.selectedItem, n = this.value;
311
+ if (this.selectedItem = e, this.value = (e == null ? void 0 : e.value) ?? "", await this.updateComplete, !this.dispatchEvent(
312
+ new CustomEvent("change", {
313
+ bubbles: !0,
314
+ // Allow it to be prevented.
315
+ cancelable: !0,
316
+ composed: !0,
317
+ detail: this.value
318
+ })
319
+ ) && this.selects) {
320
+ o && o.preventDefault(), this.setMenuItemSelected(this.selectedItem, !1), r && this.setMenuItemSelected(r, !0), this.selectedItem = r, this.value = n, this.open = !0, this.strategy && (this.strategy.open = !0);
321
+ return;
322
+ } else if (!this.selects) {
323
+ this.selectedItem = r, this.value = n;
324
+ return;
325
+ }
326
+ r && this.setMenuItemSelected(r, !1), this.setMenuItemSelected(e, !!this.selects);
327
+ }
328
+ setMenuItemSelected(e, o) {
329
+ this.selects != null && (e.selected = o);
330
+ }
331
+ get containerStyles() {
332
+ return this.isMobile.matches ? {
333
+ "--swc-menu-width": "100%"
334
+ } : {};
335
+ }
336
+ set selectedItemContent(e) {
337
+ if (e === this.selectedItemContent)
338
+ return;
339
+ const o = this.selectedItemContent;
340
+ this._selectedItemContent = e, this.requestUpdate("selectedItemContent", o);
341
+ }
342
+ handleTooltipSlotchange(e) {
343
+ this.tooltipEl = e.target.assignedElements()[0];
344
+ }
345
+ renderLabelContent(e) {
346
+ return this.value && this.selectedItem ? e : l`
347
+ <slot name="label" id="label">
348
+ <span aria-hidden=${u(this.appliedLabel ? void 0 : "true")}>
349
+ ${this.label}
350
+ </span>
351
+ </slot>
352
+ `;
353
+ }
354
+ get buttonContent() {
355
+ const e = {
356
+ "visually-hidden": this.icons === "only" && !!this.value,
357
+ placeholder: !this.value,
358
+ label: !0
359
+ }, o = this.appliedLabel || this.label, r = l` <div id="icon" ?hidden=${this.icons === "none"}>
360
+ ${this._selectedItemIcon ? k(this._selectedItemIcon) : d}
361
+ </div>`;
362
+ return [
363
+ l`
364
+ ${this._selectedItemIcon ? r : d}
365
+ <div
366
+ id=${u(this.value && this.selectedItem ? "label" : void 0)}
367
+ class=${C(e)}
368
+ >
369
+ ${this.renderLabelContent(this.selectedItemContent.content)}
370
+ </div>
371
+ ${this.value && this.selectedItem ? l`
372
+ <div
373
+ aria-hidden="true"
374
+ class="visually-hidden"
375
+ id="applied-label"
376
+ >
377
+ ${o}
378
+ <slot name="label"></slot>
379
+ </div>
380
+ ` : l` <span hidden id="applied-label">${o}</span> `}
381
+ ${this.invalid && !this.pending ? l` ${this.renderAlertIcon()} ` : d}
382
+ ${this.pendingStateController.renderPendingState()}
383
+ ${this.readonly ? d : this.renderAngleIcon()}
384
+ <slot
385
+ aria-hidden="true"
386
+ name="tooltip"
387
+ id="tooltip"
388
+ @slotchange=${this.handleTooltipSlotchange}
389
+ ></slot>
390
+ `
391
+ ];
392
+ }
393
+ renderOverlay(e) {
394
+ var r, n, a;
395
+ if (((r = this.strategy) == null ? void 0 : r.overlay) === void 0)
396
+ return e;
397
+ const o = this.renderContainer(e);
398
+ return w(o, (n = this.strategy) == null ? void 0 : n.overlay, {
399
+ host: this
400
+ }), (a = this.strategy) == null ? void 0 : a.overlay;
401
+ }
402
+ get renderDescriptionSlot() {
403
+ return l`
404
+ <div id=${z}>
405
+ <slot name="description"></slot>
406
+ </div>
407
+ `;
408
+ }
409
+ // a helper to throw focus to the button is needed because Safari
410
+ // won't include buttons in the tab order even with tabindex="0"
411
+ render() {
412
+ return this.tooltipEl && (this.tooltipEl.disabled = this.open), l`
413
+ <span
414
+ id="focus-helper"
415
+ tabindex=${this.focused || this.open ? "-1" : "0"}
416
+ @focus=${this.handleHelperFocus}
417
+ aria-describedby=${z}
418
+ ></span>
419
+ <button
420
+ aria-controls=${u(this.open ? "menu" : void 0)}
421
+ aria-describedby="tooltip"
422
+ aria-expanded=${this.open ? "true" : "false"}
423
+ aria-haspopup="true"
424
+ aria-labelledby="loader icon label applied-label"
425
+ id="button"
426
+ class=${u(
427
+ this.labelAlignment ? `label-${this.labelAlignment}` : void 0
428
+ )}
429
+ @blur=${this.handleButtonBlur}
430
+ @keydown=${{
431
+ handleEvent: this.handleEnterKeydown,
432
+ capture: !0
433
+ }}
434
+ ?disabled=${this.disabled}
435
+ tabindex="-1"
436
+ >
437
+ ${this.buttonContent}
438
+ </button>
439
+ ${this.renderMenu} ${this.renderDescriptionSlot}
440
+ `;
441
+ }
442
+ update(e) {
443
+ var o, r;
444
+ this.selects && (this.selects = "single"), e.has("disabled") && this.disabled && this.strategy && (this.open = !1, this.strategy.open = !1), e.has("pending") && this.pending && this.strategy && (this.open = !1, this.strategy.open = !1), e.has("value") && this.shouldScheduleManageSelection(), this.hasUpdated || (this.deprecatedMenu = this.querySelector(":scope > luzmo-menu"), (o = this.deprecatedMenu) == null || o.toggleAttribute("ignore", !0), (r = this.deprecatedMenu) == null || r.setAttribute("selects", "inherit")), super.update(e);
445
+ }
446
+ bindButtonKeydownListener() {
447
+ this.button.addEventListener("keydown", this.handleKeydown);
448
+ }
449
+ updated(e) {
450
+ super.updated(e), e.has("open") && (this.strategy.open = this.open);
451
+ }
452
+ firstUpdated(e) {
453
+ super.firstUpdated(e), this.bindButtonKeydownListener(), this.bindEvents();
454
+ }
455
+ get dismissHelper() {
456
+ return l`
457
+ <div class="visually-hidden">
458
+ <button
459
+ tabindex="-1"
460
+ aria-label="Dismiss"
461
+ @click=${this.close}
462
+ ></button>
463
+ </div>
464
+ `;
465
+ }
466
+ renderContainer(e) {
467
+ const o = l`
468
+ ${this.dismissHelper} ${e} ${this.dismissHelper}
469
+ `;
470
+ return this.dependencyManager.add("luzmo-popover"), import("./popover/index.js"), l`
471
+ <luzmo-popover
472
+ id="popover"
473
+ size=${this.size}
474
+ role="presentation"
475
+ style=${I(this.containerStyles)}
476
+ placement=${this.placement}
477
+ >
478
+ ${o}
479
+ </luzmo-popover>
480
+ `;
481
+ }
482
+ get renderMenu() {
483
+ const e = l`
484
+ <luzmo-menu
485
+ aria-labelledby="applied-label"
486
+ @change=${this.handleChange}
487
+ id="menu"
488
+ @keydown=${{
489
+ handleEvent: this.handleEnterKeydown,
490
+ capture: !0
491
+ }}
492
+ @scroll=${this.onScroll}
493
+ role=${this.listRole}
494
+ .selects=${this.selects}
495
+ .selected=${this.value ? [this.value] : []}
496
+ size=${this.size}
497
+ @luzmo-menu-item-added-or-updated=${this.shouldManageSelection}
498
+ >
499
+ <slot @slotchange=${this.shouldScheduleManageSelection}></slot>
500
+ </luzmo-menu>
501
+ `;
502
+ return this.hasRenderedOverlay = this.hasRenderedOverlay || this.focused || this.open || !!this.deprecatedMenu, this.hasRenderedOverlay ? (this.dependencyManager.loaded && this.dependencyManager.add("luzmo-overlay"), this.renderOverlay(e)) : e;
503
+ }
504
+ shouldScheduleManageSelection(e) {
505
+ !this.willManageSelection && (!e || e.target.getRootNode().host === this) && (this.willManageSelection = !0, requestAnimationFrame(() => {
506
+ requestAnimationFrame(() => {
507
+ this.manageSelection();
508
+ });
509
+ }));
510
+ }
511
+ shouldManageSelection() {
512
+ this.willManageSelection || (this.willManageSelection = !0, this.manageSelection());
513
+ }
514
+ async manageSelection() {
515
+ if (this.selects == null)
516
+ return;
517
+ this.selectionPromise = new Promise(
518
+ (o) => this.selectionResolver = o
519
+ );
520
+ let e;
521
+ await this.optionsMenu.updateComplete, this.recentlyConnected && (await new Promise((o) => requestAnimationFrame(() => o(!0))), this.recentlyConnected = !1), this.menuItems.forEach((o) => {
522
+ this.value === o.value && !o.disabled ? e = o : o.selected = !1;
523
+ }), e ? (e.selected = !!this.selects, this.selectedItem = e) : (this.value = "", this.selectedItem = void 0), this.open && (await this.optionsMenu.updateComplete, this.optionsMenu.updateSelectedItemIndex()), this.selectionResolver(), this.willManageSelection = !1;
524
+ }
525
+ async getUpdateComplete() {
526
+ const e = await super.getUpdateComplete();
527
+ return await this.selectionPromise, e;
528
+ }
529
+ onScroll() {
530
+ this.dispatchEvent(
531
+ new Event("scroll", {
532
+ cancelable: !0,
533
+ composed: !0
534
+ })
535
+ );
536
+ }
537
+ }
538
+ i([
539
+ v()
540
+ ], t.prototype, "appliedLabel", 2);
541
+ i([
542
+ b("#button")
543
+ ], t.prototype, "button", 2);
544
+ i([
545
+ s({ type: Boolean, reflect: !0 })
546
+ ], t.prototype, "disabled", 2);
547
+ i([
548
+ s({ type: Boolean, reflect: !0 })
549
+ ], t.prototype, "focused", 2);
550
+ i([
551
+ s({ type: String, reflect: !0 })
552
+ ], t.prototype, "icons", 2);
553
+ i([
554
+ s({ type: String, reflect: !0 })
555
+ ], t.prototype, "variant", 2);
556
+ i([
557
+ s({ type: Boolean, reflect: !0 })
558
+ ], t.prototype, "invalid", 2);
559
+ i([
560
+ s({ type: Boolean, reflect: !0 })
561
+ ], t.prototype, "pending", 2);
562
+ i([
563
+ s({ type: String, attribute: "pending-label" })
564
+ ], t.prototype, "pendingLabel", 2);
565
+ i([
566
+ s()
567
+ ], t.prototype, "label", 2);
568
+ i([
569
+ s({ type: Boolean, reflect: !0 })
570
+ ], t.prototype, "open", 2);
571
+ i([
572
+ s({ type: Boolean, reflect: !0 })
573
+ ], t.prototype, "readonly", 2);
574
+ i([
575
+ v()
576
+ ], t.prototype, "labelAlignment", 2);
577
+ i([
578
+ b("luzmo-menu")
579
+ ], t.prototype, "optionsMenu", 2);
580
+ i([
581
+ b("luzmo-overlay")
582
+ ], t.prototype, "overlayElement", 2);
583
+ i([
584
+ s()
585
+ ], t.prototype, "placement", 2);
586
+ i([
587
+ s({ type: Boolean, reflect: !0 })
588
+ ], t.prototype, "quiet", 2);
589
+ i([
590
+ s({ type: String })
591
+ ], t.prototype, "value", 2);
592
+ i([
593
+ s({ attribute: !1 })
594
+ ], t.prototype, "selectedItem", 1);
595
+ i([
596
+ v()
597
+ ], t.prototype, "selectedItemContent", 1);
598
+ class te extends t {
599
+ constructor() {
600
+ super(...arguments), this.handleKeydown = (e) => {
601
+ const { code: o } = e;
602
+ if (this.focused = !0, !o.startsWith("Arrow") || this.readonly || this.pending)
603
+ return;
604
+ if (o === "ArrowUp" || o === "ArrowDown") {
605
+ this.toggle(!0), e.preventDefault();
606
+ return;
607
+ }
608
+ e.preventDefault();
609
+ const r = this.selectedItem ? this.menuItems.indexOf(this.selectedItem) : -1, n = r < 0 || o === "ArrowRight" ? 1 : -1;
610
+ let a = r + n;
611
+ for (; this.menuItems[a] && this.menuItems[a].disabled; )
612
+ a += n;
613
+ !this.menuItems[a] || this.menuItems[a].disabled || (!this.value || a !== r) && this.setValueFromItem(this.menuItems[a]);
614
+ };
615
+ }
616
+ static get styles() {
617
+ return [x(O)];
618
+ }
619
+ get containerStyles() {
620
+ const e = super.containerStyles;
621
+ return this.quiet || (e["min-width"] = `${this.offsetWidth}px`), e;
622
+ }
623
+ }
624
+ export {
625
+ z as D,
626
+ t as L,
627
+ te as a
628
+ };