@vonage/vivid 4.19.0-preview.0 → 4.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/custom-elements.json +1616 -313
  2. package/index.cjs +5 -0
  3. package/index.d.ts +1 -0
  4. package/index.js +2 -2
  5. package/lib/accordion-item/accordion-item.d.ts +332 -5
  6. package/lib/action-group/action-group.d.ts +3 -120
  7. package/lib/alert/alert.d.ts +654 -6
  8. package/lib/audio-player/audio-player.d.ts +330 -5
  9. package/lib/avatar/avatar.d.ts +5 -4
  10. package/lib/badge/badge.d.ts +334 -7
  11. package/lib/banner/banner.d.ts +662 -133
  12. package/lib/breadcrumb-item/breadcrumb-item.d.ts +0 -118
  13. package/lib/button/button.d.ts +335 -8
  14. package/lib/calendar-event/calendar-event.d.ts +3 -2
  15. package/lib/card/card.d.ts +2 -1
  16. package/lib/checkbox/checkbox.d.ts +2 -119
  17. package/lib/combobox/combobox.d.ts +335 -6
  18. package/lib/date-picker/date-picker.d.ts +12 -484
  19. package/lib/date-range-picker/date-range-picker.d.ts +6 -242
  20. package/lib/date-time-picker/date-time-picker.d.ts +12 -484
  21. package/lib/date-time-picker/definition.d.ts +2 -0
  22. package/lib/dial-pad/dial-pad.d.ts +328 -4
  23. package/lib/dialog/dialog.d.ts +326 -122
  24. package/lib/divider/divider.d.ts +0 -118
  25. package/lib/empty-state/empty-state.d.ts +3 -2
  26. package/lib/fab/fab.d.ts +333 -6
  27. package/lib/file-picker/file-picker.d.ts +334 -4
  28. package/lib/icon/icon.d.ts +2 -1
  29. package/lib/layout/layout.d.ts +6 -5
  30. package/lib/menu/menu.d.ts +0 -236
  31. package/lib/menu-item/menu-item.d.ts +332 -10
  32. package/lib/nav-disclosure/nav-disclosure.d.ts +330 -124
  33. package/lib/nav-item/nav-item.d.ts +329 -4
  34. package/lib/note/note.d.ts +329 -4
  35. package/lib/number-field/number-field.d.ts +658 -124
  36. package/lib/option/option.d.ts +332 -7
  37. package/lib/pagination/pagination.d.ts +4 -2
  38. package/lib/progress/progress.d.ts +0 -118
  39. package/lib/progress-ring/progress-ring.d.ts +0 -118
  40. package/lib/radio/radio.d.ts +2 -1
  41. package/lib/range-slider/range-slider.d.ts +330 -3
  42. package/lib/rich-text-editor/definition.d.ts +2 -0
  43. package/lib/rich-text-editor/facades/prose-mirror-vivid.schema.d.ts +3 -2
  44. package/lib/rich-text-editor/facades/vivid-prose-mirror.facade.d.ts +2 -0
  45. package/lib/rich-text-editor/menubar/definition.d.ts +2 -0
  46. package/lib/rich-text-editor/menubar/menubar.d.ts +4 -0
  47. package/lib/rich-text-editor/menubar/menubar.template.d.ts +4 -0
  48. package/lib/rich-text-editor/rich-text-editor.d.ts +8 -0
  49. package/lib/searchable-select/locale.d.ts +1 -0
  50. package/lib/searchable-select/option-tag.d.ts +330 -5
  51. package/lib/searchable-select/searchable-select.d.ts +661 -6
  52. package/lib/select/select.d.ts +336 -6
  53. package/lib/selectable-box/selectable-box.d.ts +0 -118
  54. package/lib/slider/slider.d.ts +326 -122
  55. package/lib/split-button/split-button.d.ts +667 -138
  56. package/lib/switch/switch.d.ts +0 -118
  57. package/lib/tab/tab.d.ts +658 -7
  58. package/lib/tabs/tabs.d.ts +2 -1
  59. package/lib/tag/tag.d.ts +333 -7
  60. package/lib/tag-group/tag-group.d.ts +0 -118
  61. package/lib/tag-name-map.d.ts +73 -0
  62. package/lib/text-anchor/text-anchor.d.ts +331 -123
  63. package/lib/text-area/text-area.d.ts +0 -118
  64. package/lib/text-field/text-field.d.ts +333 -124
  65. package/lib/time-picker/time-picker.d.ts +6 -242
  66. package/lib/toggletip/toggletip.d.ts +0 -118
  67. package/lib/tooltip/tooltip.d.ts +0 -118
  68. package/lib/tree-item/tree-item.d.ts +329 -4
  69. package/lib/video-player/video-player.d.ts +328 -4
  70. package/locales/de-DE.cjs +1 -0
  71. package/locales/de-DE.js +1 -0
  72. package/locales/en-GB.cjs +1 -0
  73. package/locales/en-GB.js +1 -0
  74. package/locales/en-US.cjs +1 -0
  75. package/locales/en-US.js +1 -0
  76. package/locales/ja-JP.cjs +1 -0
  77. package/locales/ja-JP.js +1 -0
  78. package/locales/zh-CN.cjs +1 -0
  79. package/locales/zh-CN.js +1 -0
  80. package/package.json +1 -1
  81. package/shared/_has.cjs +0 -4
  82. package/shared/_has.js +0 -4
  83. package/shared/affix.cjs +25 -19
  84. package/shared/affix.js +26 -20
  85. package/shared/apply-mixins.js +1 -1
  86. package/shared/aria/delegates-aria.d.ts +0 -118
  87. package/shared/calendar-picker.template.cjs +1 -1
  88. package/shared/calendar-picker.template.js +1 -1
  89. package/shared/children.js +1 -1
  90. package/shared/definition.cjs +2 -4
  91. package/shared/definition.js +2 -4
  92. package/shared/definition11.cjs +2 -4
  93. package/shared/definition11.js +2 -4
  94. package/shared/definition13.cjs +85 -159
  95. package/shared/definition13.js +85 -159
  96. package/shared/definition15.cjs +1 -1
  97. package/shared/definition15.js +1 -1
  98. package/shared/definition16.cjs +2 -3
  99. package/shared/definition16.js +2 -3
  100. package/shared/definition17.cjs +1 -1
  101. package/shared/definition17.js +1 -1
  102. package/shared/definition20.cjs +10 -10
  103. package/shared/definition20.js +1 -1
  104. package/shared/definition21.cjs +2 -4
  105. package/shared/definition21.js +2 -4
  106. package/shared/definition22.cjs +2 -4
  107. package/shared/definition22.js +2 -4
  108. package/shared/definition25.cjs +2 -4
  109. package/shared/definition25.js +2 -4
  110. package/shared/definition26.cjs +3 -3
  111. package/shared/definition26.js +3 -3
  112. package/shared/definition28.cjs +27 -38
  113. package/shared/definition28.js +27 -38
  114. package/shared/definition30.cjs +4 -11
  115. package/shared/definition30.js +4 -11
  116. package/shared/definition31.cjs +2 -4
  117. package/shared/definition31.js +2 -4
  118. package/shared/definition32.cjs +2 -4
  119. package/shared/definition32.js +2 -4
  120. package/shared/definition34.cjs +1 -3
  121. package/shared/definition34.js +1 -3
  122. package/shared/definition35.cjs +6 -6
  123. package/shared/definition35.js +6 -6
  124. package/shared/definition36.cjs +7 -7
  125. package/shared/definition36.js +7 -7
  126. package/shared/definition37.cjs +20 -2
  127. package/shared/definition37.js +20 -2
  128. package/shared/definition4.cjs +14 -19
  129. package/shared/definition4.js +14 -19
  130. package/shared/definition41.cjs +1 -1
  131. package/shared/definition41.js +1 -1
  132. package/shared/definition42.cjs +3 -5
  133. package/shared/definition42.js +3 -5
  134. package/shared/definition43.cjs +419 -19
  135. package/shared/definition43.js +420 -21
  136. package/shared/definition44.cjs +43 -48
  137. package/shared/definition44.js +43 -48
  138. package/shared/definition45.cjs +3 -4
  139. package/shared/definition45.js +3 -4
  140. package/shared/definition46.cjs +1 -1
  141. package/shared/definition46.js +1 -1
  142. package/shared/definition48.cjs +3 -5
  143. package/shared/definition48.js +3 -5
  144. package/shared/definition49.cjs +4 -7
  145. package/shared/definition49.js +4 -7
  146. package/shared/definition5.cjs +1 -3
  147. package/shared/definition5.js +2 -4
  148. package/shared/definition50.cjs +1 -1
  149. package/shared/definition50.js +1 -1
  150. package/shared/definition52.cjs +2 -5
  151. package/shared/definition52.js +2 -5
  152. package/shared/definition55.cjs +2 -4
  153. package/shared/definition55.js +2 -4
  154. package/shared/definition56.cjs +1 -1
  155. package/shared/definition56.js +1 -1
  156. package/shared/definition57.cjs +3 -2
  157. package/shared/definition57.js +3 -2
  158. package/shared/definition61.cjs +2 -4
  159. package/shared/definition61.js +2 -4
  160. package/shared/definition63.cjs +233 -160
  161. package/shared/definition63.js +233 -160
  162. package/shared/definition7.cjs +1 -3
  163. package/shared/definition7.js +1 -3
  164. package/shared/definition8.cjs +2 -5
  165. package/shared/definition8.js +2 -5
  166. package/shared/definition9.cjs +1 -1
  167. package/shared/definition9.js +1 -1
  168. package/shared/form-associated.js +1 -1
  169. package/shared/foundation/button/button.d.ts +0 -118
  170. package/shared/localized.cjs +10 -4
  171. package/shared/localized.js +10 -4
  172. package/shared/option.cjs +17 -22
  173. package/shared/option.js +18 -23
  174. package/shared/patterns/affix.d.ts +659 -7
  175. package/shared/patterns/anchored.d.ts +0 -236
  176. package/shared/patterns/localized.d.ts +328 -3
  177. package/shared/patterns/trapped-focus.d.ts +329 -6
  178. package/shared/picker-field/mixins/calendar-picker.d.ts +3 -121
  179. package/shared/picker-field/mixins/calendar-picker.template.d.ts +3 -121
  180. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +328 -4
  181. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +6 -242
  182. package/shared/picker-field/mixins/single-date-picker.d.ts +9 -363
  183. package/shared/picker-field/mixins/single-value-picker.d.ts +3 -121
  184. package/shared/picker-field/mixins/time-selection-picker.d.ts +6 -242
  185. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +6 -242
  186. package/shared/picker-field/picker-field.d.ts +655 -3
  187. package/shared/picker-field.template.cjs +33 -35
  188. package/shared/picker-field.template.js +34 -36
  189. package/shared/ref.js +1 -1
  190. package/shared/slotted.js +1 -1
  191. package/shared/text-anchor.cjs +2 -2
  192. package/shared/text-anchor.js +2 -2
  193. package/shared/text-field.cjs +1 -1
  194. package/shared/text-field.js +1 -1
  195. package/shared/time-selection-picker.template.cjs +3 -5
  196. package/shared/time-selection-picker.template.js +4 -6
  197. package/shared/utils/enums.d.ts +1 -0
  198. package/shared/vivid-element.cjs +1 -1
  199. package/shared/vivid-element.js +2 -2
  200. package/styles/core/all.css +1 -1
  201. package/styles/core/theme.css +1 -1
  202. package/styles/core/typography.css +1 -1
  203. package/styles/tokens/theme-dark.css +4 -4
  204. package/styles/tokens/theme-light.css +4 -4
  205. package/styles/tokens/vivid-2-compat.css +1 -1
  206. package/vivid.api.json +1265 -1364
@@ -3,6 +3,7 @@
3
3
  const definition$1 = require('./definition11.cjs');
4
4
  const definition = require('./definition65.cjs');
5
5
  const definition$3 = require('./definition28.cjs');
6
+ const definition$2 = require('./definition38.cjs');
6
7
  const vividElement = require('./vivid-element.cjs');
7
8
  const applyMixinsWithObservables = require('./applyMixinsWithObservables.cjs');
8
9
  const scrollIntoView = require('./scrollIntoView.cjs');
@@ -10,18 +11,16 @@ const formAssociated = require('./form-associated.cjs');
10
11
  const affix = require('./affix.cjs');
11
12
  const localized = require('./localized.cjs');
12
13
  const formElements = require('./form-elements.cjs');
13
- const applyMixins = require('./apply-mixins.cjs');
14
14
  const option = require('./option.cjs');
15
- const definition$2 = require('./definition38.cjs');
16
15
  const when = require('./when.cjs');
17
16
  const ref = require('./ref.cjs');
18
17
  const slotted = require('./slotted.cjs');
19
18
  const classNames = require('./class-names.cjs');
20
19
  const repeat = require('./repeat.cjs');
21
20
 
22
- const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([aria-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}.fieldset:focus-within{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:100px;outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}";
21
+ const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([aria-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}.fieldset:focus-within{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:100px;outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}";
23
22
 
24
- const optionTagStyles = ".base{--_connotation-color-contrast: var(--vvd-option-tag-accent-contrast, var(--vvd-color-neutral-800))}.base{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--fill-color);block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--outline-color);color:var(--text-color);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;user-select:none;vertical-align:middle}.base:not(.disabled){--text-color: var(--_connotation-color-contrast);--fill-color: color-mix( in srgb, var(--_connotation-color-contrast), transparent 87.5% );--outline-color: transparent}.base.disabled{--text-color: var(--vvd-color-neutral-300);--fill-color: color-mix( in srgb, var(--vvd-color-neutral-800), transparent 87.5% );--outline-color: transparent}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5);line-height:1}.icon-placeholder{inline-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5)}.remove-button{display:flex;align-items:center;border-radius:inherit;cursor:pointer;outline:none}.disabled .remove-button{pointer-events:none}.remove-button:focus-visible:before{--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));position:absolute;z-index:1;display:block;border-radius:inherit;content:\"\";inset:0;pointer-events:none}";
23
+ const optionTagStyles = ".base{--_connotation-color-contrast: var(--vvd-option-tag-accent-contrast, var(--vvd-color-neutral-800))}.base{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--fill-color);block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--outline-color);color:var(--text-color);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;user-select:none;vertical-align:middle}.base:not(.disabled){--text-color: var(--_connotation-color-contrast);--fill-color: color-mix( in srgb, var(--_connotation-color-contrast), transparent 87.5% );--outline-color: transparent}.base.disabled{--text-color: var(--vvd-color-neutral-300);--fill-color: color-mix( in srgb, var(--vvd-color-neutral-800), transparent 87.5% );--outline-color: transparent}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5);line-height:1}.icon-placeholder{inline-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5)}.remove-button{display:flex;align-items:center;border-radius:inherit;cursor:pointer;outline:none}.disabled .remove-button{pointer-events:none}.remove-button:focus-visible:before{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));position:absolute;z-index:1;display:block;border-radius:inherit;content:\"\";inset:0;pointer-events:none}";
25
24
 
26
25
  class _SearchableSelect extends vividElement.VividElement {
27
26
  }
@@ -56,7 +55,9 @@ const TagGapPx = 8;
56
55
  const InputMinWidthPx = 100;
57
56
  const PageSize = 10;
58
57
  const isFormAssociatedTryingToSetFormValue = (value) => typeof value === "string";
59
- exports.SearchableSelect = class SearchableSelect extends FormAssociatedSearchableSelect {
58
+ exports.SearchableSelect = class SearchableSelect extends affix.AffixIconWithTrailing(
59
+ localized.Localized(FormAssociatedSearchableSelect)
60
+ ) {
60
61
  constructor() {
61
62
  super(...arguments);
62
63
  __privateAdd(this, _SearchableSelect_instances);
@@ -67,7 +68,7 @@ exports.SearchableSelect = class SearchableSelect extends FormAssociatedSearchab
67
68
  this.maxLines = null;
68
69
  this.values = [];
69
70
  this.initialValues = [];
70
- this._internalSearchText = null;
71
+ this._currentSearchText = null;
71
72
  // --- Slotted options ---
72
73
  /**
73
74
  * @internal
@@ -181,29 +182,30 @@ exports.SearchableSelect = class SearchableSelect extends FormAssociatedSearchab
181
182
  /**
182
183
  * @internal
183
184
  */
184
- _internalSearchTextChanged(newValue, oldValue) {
185
- if (oldValue !== newValue) {
186
- __privateMethod(this, _SearchableSelect_instances, updateFilteredOptions_fn).call(this);
187
- this.$emit("input:search-text", void 0, {
188
- bubbles: false,
189
- composed: false
190
- });
191
- }
185
+ _currentSearchTextChanged() {
186
+ __privateMethod(this, _SearchableSelect_instances, updateFilteredOptions_fn).call(this);
187
+ this.$emit("search-text-change", void 0, {
188
+ bubbles: false,
189
+ composed: false
190
+ });
192
191
  }
192
+ /**
193
+ * The current search text of the component.
194
+ */
193
195
  get searchText() {
194
- return this._internalSearchText ?? "";
196
+ return this._currentSearchText ?? "";
195
197
  }
196
198
  /**
197
199
  * @internal
198
200
  */
199
201
  get _inputValue() {
200
- return this._internalSearchText ?? (!this.multiple && this.value !== "" ? __privateMethod(this, _SearchableSelect_instances, textForValue_fn).call(this, this.value) : "");
202
+ return this._currentSearchText ?? (!this.multiple && this.value !== "" ? __privateMethod(this, _SearchableSelect_instances, textForValue_fn).call(this, this.value) ?? "" : "");
201
203
  }
202
204
  /**
203
205
  * @internal
204
206
  */
205
207
  _onInputInput(event) {
206
- this._internalSearchText = event.target.value;
208
+ this._currentSearchText = event.target.value;
207
209
  }
208
210
  /**
209
211
  * @internal
@@ -217,7 +219,7 @@ exports.SearchableSelect = class SearchableSelect extends FormAssociatedSearchab
217
219
  */
218
220
  _onInputBlur(_) {
219
221
  this.open = false;
220
- this._internalSearchText = null;
222
+ this._currentSearchText = null;
221
223
  this._changeDescription = "";
222
224
  }
223
225
  /**
@@ -335,6 +337,12 @@ exports.SearchableSelect = class SearchableSelect extends FormAssociatedSearchab
335
337
  _tagIconSlotName(value) {
336
338
  return `_tag-icon-${this.values.indexOf(value)}`;
337
339
  }
340
+ /**
341
+ * @internal
342
+ */
343
+ optionFilterChanged() {
344
+ __privateMethod(this, _SearchableSelect_instances, updateFilteredOptions_fn).call(this);
345
+ }
338
346
  // --- Tags ---
339
347
  /**
340
348
  * @internal
@@ -474,7 +482,8 @@ exports.SearchableSelect = class SearchableSelect extends FormAssociatedSearchab
474
482
  * @internal
475
483
  */
476
484
  _onMouseDown(event) {
477
- if (!event.defaultPrevented) {
485
+ const originalTarget = event.composedPath()[0];
486
+ if (!event.defaultPrevented && originalTarget !== this._input) {
478
487
  this._input.focus();
479
488
  return false;
480
489
  }
@@ -494,9 +503,6 @@ updateValuesThroughUserInteraction_fn = function(newValues) {
494
503
  updateValuesWhileMaintainingOrder_fn = function(newValues) {
495
504
  const oldSet = new Set(this.values);
496
505
  const newSet = new Set(newValues);
497
- if (oldSet.size === newSet.size && [...oldSet].every((v) => newSet.has(v))) {
498
- return;
499
- }
500
506
  this.values = [...this.values].filter((v) => newSet.has(v)).concat([...newValues].filter((v) => !oldSet.has(v)));
501
507
  };
502
508
  isValidValue_fn = function(value) {
@@ -533,7 +539,7 @@ handleOptionInteraction_fn = function(option) {
533
539
  this._changeDescription = isSelection ? this.locale.searchableSelect.optionSelectedMessage(option.text) : this.locale.searchableSelect.optionDeselectedMessage(option.text);
534
540
  __privateMethod(this, _SearchableSelect_instances, updateValuesThroughUserInteraction_fn).call(this, newValues);
535
541
  if (shouldClearSearchText) {
536
- this._internalSearchText = null;
542
+ this._currentSearchText = null;
537
543
  }
538
544
  };
539
545
  _clonedTagIcons = new WeakMap();
@@ -559,17 +565,12 @@ updateClonedTagIconOfOption_fn = function(option) {
559
565
  };
560
566
  updateFilteredOptions_fn = function() {
561
567
  const newFilteredOptions = [];
562
- const filterOption = this.filterOption ?? ((option, searchText) => option.text.toLowerCase().includes(searchText.toLowerCase()));
568
+ const optionFilter = this.optionFilter ?? ((option, searchText) => option.text.toLowerCase().includes(searchText.toLowerCase()));
563
569
  for (const option of this._slottedOptions ?? []) {
564
- if (this.searchText === "") {
565
- option._hidden = false;
566
- option._internalHighlightText = "";
567
- } else {
568
- const matches = filterOption(option, this.searchText);
569
- option._hidden = !matches;
570
- option._internalHighlightText = matches ? this.searchText : "";
571
- }
572
- if (!option.hidden && !option._hidden) {
570
+ option._vvdSearchText = this.searchText;
571
+ const matches = !this.searchText || optionFilter(option, this.searchText);
572
+ option._isNotMatching = !matches;
573
+ if (!option.hidden && matches) {
573
574
  newFilteredOptions.push(option);
574
575
  }
575
576
  }
@@ -630,10 +631,7 @@ highlightNextOption_fn = function() {
630
631
  __privateMethod(this, _SearchableSelect_instances, transitionHighlightedOptionTo_fn).call(this, (this._highlightedOptionIndex ?? -1) + 1);
631
632
  };
632
633
  textForValue_fn = function(value) {
633
- const option = this._slottedOptions.find(
634
- (option2) => option2.value === value
635
- );
636
- return option.text;
634
+ return this._slottedOptions?.find((option) => option.value === value)?.text;
637
635
  };
638
636
  /**
639
637
  * @internal
@@ -801,19 +799,19 @@ __decorateClass$1([
801
799
  ], exports.SearchableSelect.prototype, "_input", 2);
802
800
  __decorateClass$1([
803
801
  vividElement.observable
804
- ], exports.SearchableSelect.prototype, "_internalSearchText", 2);
802
+ ], exports.SearchableSelect.prototype, "_currentSearchText", 2);
805
803
  __decorateClass$1([
806
804
  vividElement.observable
807
805
  ], exports.SearchableSelect.prototype, "_slottedOptions", 2);
808
806
  __decorateClass$1([
809
807
  vividElement.observable
810
- ], exports.SearchableSelect.prototype, "_filteredOptions", 2);
808
+ ], exports.SearchableSelect.prototype, "optionFilter", 2);
811
809
  __decorateClass$1([
812
810
  vividElement.observable
813
- ], exports.SearchableSelect.prototype, "_filteredEnabledOptions", 2);
811
+ ], exports.SearchableSelect.prototype, "_filteredOptions", 2);
814
812
  __decorateClass$1([
815
813
  vividElement.observable
816
- ], exports.SearchableSelect.prototype, "filterOption", 2);
814
+ ], exports.SearchableSelect.prototype, "_filteredEnabledOptions", 2);
817
815
  __decorateClass$1([
818
816
  vividElement.attr({
819
817
  mode: "boolean"
@@ -852,10 +850,8 @@ exports.SearchableSelect = __decorateClass$1([
852
850
  ], exports.SearchableSelect);
853
851
  applyMixinsWithObservables.applyMixinsWithObservables(
854
852
  exports.SearchableSelect,
855
- affix.AffixIconWithTrailing,
856
853
  formElements.FormElementHelperText,
857
- formElements.FormElementSuccessText,
858
- localized.Localized
854
+ formElements.FormElementSuccessText
859
855
  );
860
856
 
861
857
  var __defProp = Object.defineProperty;
@@ -867,7 +863,7 @@ var __decorateClass = (decorators, target, key, kind) => {
867
863
  if (result) __defProp(target, key, result);
868
864
  return result;
869
865
  };
870
- class OptionTag extends vividElement.VividElement {
866
+ class OptionTag extends localized.Localized(vividElement.VividElement) {
871
867
  constructor() {
872
868
  super(...arguments);
873
869
  this.removable = false;
@@ -895,7 +891,6 @@ __decorateClass([
895
891
  __decorateClass([
896
892
  vividElement.observable
897
893
  ], OptionTag.prototype, "hasIconPlaceholder");
898
- applyMixins.applyMixins(OptionTag, localized.Localized);
899
894
 
900
895
  const getStateClasses = (x) => classNames.classNames(
901
896
  ["disabled", x.disabled],
@@ -1084,8 +1079,8 @@ function renderControl(context) {
1084
1079
  vividElement.html`<div class="empty-message">
1085
1080
  ${when.when(
1086
1081
  (x) => x.loading,
1087
- vividElement.html` <slot name="loading-options">
1088
- Loading...
1082
+ vividElement.html`<slot name="loading-options">
1083
+ ${(x) => x.locale.searchableSelect.loadingOptionsMessage}
1089
1084
  </slot>`
1090
1085
  )}
1091
1086
  ${when.when(
@@ -1,6 +1,7 @@
1
1
  import { B as Button, c as chevronTemplateFactory, b as buttonDefinition } from './definition11.js';
2
2
  import { P as Popup, p as popupDefinition } from './definition65.js';
3
3
  import { I as Icon, i as iconDefinition } from './definition28.js';
4
+ import { P as ProgressRing, p as progressRingDefinition } from './definition38.js';
4
5
  import { V as VividElement, O as Observable, D as DOM, a as attr, n as nullableNumberConverter, o as observable, h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
5
6
  import { a as applyMixinsWithObservables } from './applyMixinsWithObservables.js';
6
7
  import { s as scrollIntoView } from './scrollIntoView.js';
@@ -8,18 +9,16 @@ import { F as FormAssociated } from './form-associated.js';
8
9
  import { A as AffixIconWithTrailing, a as affixIconTemplateFactory, I as IconWrapper } from './affix.js';
9
10
  import { L as Localized } from './localized.js';
10
11
  import { F as FormElementSuccessText, a as FormElementHelperText, e as errorText, f as formElements, g as getFeedbackTemplate } from './form-elements.js';
11
- import { a as applyMixins } from './apply-mixins.js';
12
12
  import { i as isListboxOption } from './option.js';
13
- import { P as ProgressRing, p as progressRingDefinition } from './definition38.js';
14
13
  import { w as when } from './when.js';
15
14
  import { r as ref } from './ref.js';
16
15
  import { s as slotted } from './slotted.js';
17
16
  import { c as classNames } from './class-names.js';
18
17
  import { r as repeat } from './repeat.js';
19
18
 
20
- const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([aria-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}.fieldset:focus-within{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:100px;outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}";
19
+ const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([aria-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:not(.disabled) .chevron{cursor:pointer}.disabled .chevron{color:var(--_low-ink-color);cursor:not-allowed}:host(:focus-visible){outline:none}:host{display:inline-block;inline-size:300px;--_low-ink-color: var(--vvd-color-neutral-600)}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.control-wrapper{display:flex;flex-direction:column;gap:4px}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.fieldset{--_connotation-color-primary: var(--vvd-searchable-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-searchable-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-searchable-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-searchable-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-searchable-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-searchable-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-searchable-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-searchable-select-accent-fierce, var(--vvd-color-neutral-700))}.fieldset{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.fieldset.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.fieldset:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.fieldset:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.fieldset:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.fieldset:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.fieldset:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.fieldset:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.fieldset:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.fieldset:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.fieldset{display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;padding-block:8px;padding-inline:16px;transition:box-shadow .2s,background-color .2s}.fieldset:focus-within{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}:host(:not([shape=pill])) .fieldset{border-radius:8px}:host([shape=pill]) .fieldset{border-radius:24px}.popup-wrapper{position:relative}.content-area{display:flex;overflow:hidden;flex:1;flex-direction:column;gap:8px;min-block-size:24px}.tag-row{display:flex;gap:8px;inline-size:100%}.tag-row.contains-only-input:not(:focus-within){display:contents}.tag-wrapper{overflow:hidden}.tag{max-inline-size:100%}input{box-sizing:border-box;flex:1;border:none;background:none;block-size:24px;font:var(--vvd-typography-base);max-inline-size:100%;min-inline-size:100px;outline:none}.contains-only-input input:not(:focus){position:absolute;block-size:0;inline-size:0;min-inline-size:0;opacity:0;pointer-events:none}.listbox{display:flex;flex-direction:column;padding:4px;gap:2px;max-block-size:var(--searchable-select-height, 408px);overflow-y:auto}.empty-message{display:flex;align-items:center;justify-content:center;color:var(--vvd-color-neutral-300);min-block-size:40px;text-align:center}::part(popup-base){inline-size:max-content;min-inline-size:var(--_searchable-select-fixed-width, 100%)}slot[name=icon]{font-size:20px}.visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}";
21
20
 
22
- const optionTagStyles = ".base{--_connotation-color-contrast: var(--vvd-option-tag-accent-contrast, var(--vvd-color-neutral-800))}.base{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--fill-color);block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--outline-color);color:var(--text-color);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;user-select:none;vertical-align:middle}.base:not(.disabled){--text-color: var(--_connotation-color-contrast);--fill-color: color-mix( in srgb, var(--_connotation-color-contrast), transparent 87.5% );--outline-color: transparent}.base.disabled{--text-color: var(--vvd-color-neutral-300);--fill-color: color-mix( in srgb, var(--vvd-color-neutral-800), transparent 87.5% );--outline-color: transparent}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5);line-height:1}.icon-placeholder{inline-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5)}.remove-button{display:flex;align-items:center;border-radius:inherit;cursor:pointer;outline:none}.disabled .remove-button{pointer-events:none}.remove-button:focus-visible:before{--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));position:absolute;z-index:1;display:block;border-radius:inherit;content:\"\";inset:0;pointer-events:none}";
21
+ const optionTagStyles = ".base{--_connotation-color-contrast: var(--vvd-option-tag-accent-contrast, var(--vvd-color-neutral-800))}.base{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--fill-color);block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--outline-color);color:var(--text-color);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;user-select:none;vertical-align:middle}.base:not(.disabled){--text-color: var(--_connotation-color-contrast);--fill-color: color-mix( in srgb, var(--_connotation-color-contrast), transparent 87.5% );--outline-color: transparent}.base.disabled{--text-color: var(--vvd-color-neutral-300);--fill-color: color-mix( in srgb, var(--vvd-color-neutral-800), transparent 87.5% );--outline-color: transparent}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5);line-height:1}.icon-placeholder{inline-size:calc(calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))) / 1.5)}.remove-button{display:flex;align-items:center;border-radius:inherit;cursor:pointer;outline:none}.disabled .remove-button{pointer-events:none}.remove-button:focus-visible:before{--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));position:absolute;z-index:1;display:block;border-radius:inherit;content:\"\";inset:0;pointer-events:none}";
23
22
 
24
23
  class _SearchableSelect extends VividElement {
25
24
  }
@@ -54,7 +53,9 @@ const TagGapPx = 8;
54
53
  const InputMinWidthPx = 100;
55
54
  const PageSize = 10;
56
55
  const isFormAssociatedTryingToSetFormValue = (value) => typeof value === "string";
57
- let SearchableSelect = class extends FormAssociatedSearchableSelect {
56
+ let SearchableSelect = class extends AffixIconWithTrailing(
57
+ Localized(FormAssociatedSearchableSelect)
58
+ ) {
58
59
  constructor() {
59
60
  super(...arguments);
60
61
  __privateAdd(this, _SearchableSelect_instances);
@@ -65,7 +66,7 @@ let SearchableSelect = class extends FormAssociatedSearchableSelect {
65
66
  this.maxLines = null;
66
67
  this.values = [];
67
68
  this.initialValues = [];
68
- this._internalSearchText = null;
69
+ this._currentSearchText = null;
69
70
  // --- Slotted options ---
70
71
  /**
71
72
  * @internal
@@ -179,29 +180,30 @@ let SearchableSelect = class extends FormAssociatedSearchableSelect {
179
180
  /**
180
181
  * @internal
181
182
  */
182
- _internalSearchTextChanged(newValue, oldValue) {
183
- if (oldValue !== newValue) {
184
- __privateMethod(this, _SearchableSelect_instances, updateFilteredOptions_fn).call(this);
185
- this.$emit("input:search-text", void 0, {
186
- bubbles: false,
187
- composed: false
188
- });
189
- }
183
+ _currentSearchTextChanged() {
184
+ __privateMethod(this, _SearchableSelect_instances, updateFilteredOptions_fn).call(this);
185
+ this.$emit("search-text-change", void 0, {
186
+ bubbles: false,
187
+ composed: false
188
+ });
190
189
  }
190
+ /**
191
+ * The current search text of the component.
192
+ */
191
193
  get searchText() {
192
- return this._internalSearchText ?? "";
194
+ return this._currentSearchText ?? "";
193
195
  }
194
196
  /**
195
197
  * @internal
196
198
  */
197
199
  get _inputValue() {
198
- return this._internalSearchText ?? (!this.multiple && this.value !== "" ? __privateMethod(this, _SearchableSelect_instances, textForValue_fn).call(this, this.value) : "");
200
+ return this._currentSearchText ?? (!this.multiple && this.value !== "" ? __privateMethod(this, _SearchableSelect_instances, textForValue_fn).call(this, this.value) ?? "" : "");
199
201
  }
200
202
  /**
201
203
  * @internal
202
204
  */
203
205
  _onInputInput(event) {
204
- this._internalSearchText = event.target.value;
206
+ this._currentSearchText = event.target.value;
205
207
  }
206
208
  /**
207
209
  * @internal
@@ -215,7 +217,7 @@ let SearchableSelect = class extends FormAssociatedSearchableSelect {
215
217
  */
216
218
  _onInputBlur(_) {
217
219
  this.open = false;
218
- this._internalSearchText = null;
220
+ this._currentSearchText = null;
219
221
  this._changeDescription = "";
220
222
  }
221
223
  /**
@@ -333,6 +335,12 @@ let SearchableSelect = class extends FormAssociatedSearchableSelect {
333
335
  _tagIconSlotName(value) {
334
336
  return `_tag-icon-${this.values.indexOf(value)}`;
335
337
  }
338
+ /**
339
+ * @internal
340
+ */
341
+ optionFilterChanged() {
342
+ __privateMethod(this, _SearchableSelect_instances, updateFilteredOptions_fn).call(this);
343
+ }
336
344
  // --- Tags ---
337
345
  /**
338
346
  * @internal
@@ -472,7 +480,8 @@ let SearchableSelect = class extends FormAssociatedSearchableSelect {
472
480
  * @internal
473
481
  */
474
482
  _onMouseDown(event) {
475
- if (!event.defaultPrevented) {
483
+ const originalTarget = event.composedPath()[0];
484
+ if (!event.defaultPrevented && originalTarget !== this._input) {
476
485
  this._input.focus();
477
486
  return false;
478
487
  }
@@ -492,9 +501,6 @@ updateValuesThroughUserInteraction_fn = function(newValues) {
492
501
  updateValuesWhileMaintainingOrder_fn = function(newValues) {
493
502
  const oldSet = new Set(this.values);
494
503
  const newSet = new Set(newValues);
495
- if (oldSet.size === newSet.size && [...oldSet].every((v) => newSet.has(v))) {
496
- return;
497
- }
498
504
  this.values = [...this.values].filter((v) => newSet.has(v)).concat([...newValues].filter((v) => !oldSet.has(v)));
499
505
  };
500
506
  isValidValue_fn = function(value) {
@@ -531,7 +537,7 @@ handleOptionInteraction_fn = function(option) {
531
537
  this._changeDescription = isSelection ? this.locale.searchableSelect.optionSelectedMessage(option.text) : this.locale.searchableSelect.optionDeselectedMessage(option.text);
532
538
  __privateMethod(this, _SearchableSelect_instances, updateValuesThroughUserInteraction_fn).call(this, newValues);
533
539
  if (shouldClearSearchText) {
534
- this._internalSearchText = null;
540
+ this._currentSearchText = null;
535
541
  }
536
542
  };
537
543
  _clonedTagIcons = new WeakMap();
@@ -557,17 +563,12 @@ updateClonedTagIconOfOption_fn = function(option) {
557
563
  };
558
564
  updateFilteredOptions_fn = function() {
559
565
  const newFilteredOptions = [];
560
- const filterOption = this.filterOption ?? ((option, searchText) => option.text.toLowerCase().includes(searchText.toLowerCase()));
566
+ const optionFilter = this.optionFilter ?? ((option, searchText) => option.text.toLowerCase().includes(searchText.toLowerCase()));
561
567
  for (const option of this._slottedOptions ?? []) {
562
- if (this.searchText === "") {
563
- option._hidden = false;
564
- option._internalHighlightText = "";
565
- } else {
566
- const matches = filterOption(option, this.searchText);
567
- option._hidden = !matches;
568
- option._internalHighlightText = matches ? this.searchText : "";
569
- }
570
- if (!option.hidden && !option._hidden) {
568
+ option._vvdSearchText = this.searchText;
569
+ const matches = !this.searchText || optionFilter(option, this.searchText);
570
+ option._isNotMatching = !matches;
571
+ if (!option.hidden && matches) {
571
572
  newFilteredOptions.push(option);
572
573
  }
573
574
  }
@@ -628,10 +629,7 @@ highlightNextOption_fn = function() {
628
629
  __privateMethod(this, _SearchableSelect_instances, transitionHighlightedOptionTo_fn).call(this, (this._highlightedOptionIndex ?? -1) + 1);
629
630
  };
630
631
  textForValue_fn = function(value) {
631
- const option = this._slottedOptions.find(
632
- (option2) => option2.value === value
633
- );
634
- return option.text;
632
+ return this._slottedOptions?.find((option) => option.value === value)?.text;
635
633
  };
636
634
  /**
637
635
  * @internal
@@ -799,19 +797,19 @@ __decorateClass$1([
799
797
  ], SearchableSelect.prototype, "_input", 2);
800
798
  __decorateClass$1([
801
799
  observable
802
- ], SearchableSelect.prototype, "_internalSearchText", 2);
800
+ ], SearchableSelect.prototype, "_currentSearchText", 2);
803
801
  __decorateClass$1([
804
802
  observable
805
803
  ], SearchableSelect.prototype, "_slottedOptions", 2);
806
804
  __decorateClass$1([
807
805
  observable
808
- ], SearchableSelect.prototype, "_filteredOptions", 2);
806
+ ], SearchableSelect.prototype, "optionFilter", 2);
809
807
  __decorateClass$1([
810
808
  observable
811
- ], SearchableSelect.prototype, "_filteredEnabledOptions", 2);
809
+ ], SearchableSelect.prototype, "_filteredOptions", 2);
812
810
  __decorateClass$1([
813
811
  observable
814
- ], SearchableSelect.prototype, "filterOption", 2);
812
+ ], SearchableSelect.prototype, "_filteredEnabledOptions", 2);
815
813
  __decorateClass$1([
816
814
  attr({
817
815
  mode: "boolean"
@@ -850,10 +848,8 @@ SearchableSelect = __decorateClass$1([
850
848
  ], SearchableSelect);
851
849
  applyMixinsWithObservables(
852
850
  SearchableSelect,
853
- AffixIconWithTrailing,
854
851
  FormElementHelperText,
855
- FormElementSuccessText,
856
- Localized
852
+ FormElementSuccessText
857
853
  );
858
854
 
859
855
  var __defProp = Object.defineProperty;
@@ -865,7 +861,7 @@ var __decorateClass = (decorators, target, key, kind) => {
865
861
  if (result) __defProp(target, key, result);
866
862
  return result;
867
863
  };
868
- class OptionTag extends VividElement {
864
+ class OptionTag extends Localized(VividElement) {
869
865
  constructor() {
870
866
  super(...arguments);
871
867
  this.removable = false;
@@ -893,7 +889,6 @@ __decorateClass([
893
889
  __decorateClass([
894
890
  observable
895
891
  ], OptionTag.prototype, "hasIconPlaceholder");
896
- applyMixins(OptionTag, Localized);
897
892
 
898
893
  const getStateClasses = (x) => classNames(
899
894
  ["disabled", x.disabled],
@@ -1082,8 +1077,8 @@ function renderControl(context) {
1082
1077
  html`<div class="empty-message">
1083
1078
  ${when(
1084
1079
  (x) => x.loading,
1085
- html` <slot name="loading-options">
1086
- Loading...
1080
+ html`<slot name="loading-options">
1081
+ ${(x) => x.locale.searchableSelect.loadingOptionsMessage}
1087
1082
  </slot>`
1088
1083
  )}
1089
1084
  ${when(
@@ -8,10 +8,10 @@ const applyMixinsWithObservables = require('./applyMixinsWithObservables.cjs');
8
8
  const listbox = require('./listbox.cjs');
9
9
  const formAssociated = require('./form-associated.cjs');
10
10
  const numbers = require('./numbers.cjs');
11
+ const affix = require('./affix.cjs');
11
12
  const strings = require('./strings.cjs');
12
13
  const keyCodes = require('./key-codes.cjs');
13
14
  const formElements = require('./form-elements.cjs');
14
- const affix = require('./affix.cjs');
15
15
  const option = require('./option.cjs');
16
16
  const definition$1 = require('./definition11.cjs');
17
17
  const index = require('./index.cjs');
@@ -20,7 +20,7 @@ const when = require('./when.cjs');
20
20
  const slotted = require('./slotted.cjs');
21
21
  const classNames = require('./class-names.cjs');
22
22
 
23
- const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([aria-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:host(:focus-visible){outline:none}:host{display:inline-flex;flex-direction:column;gap:4px;--_low-ink-color: var(--vvd-color-neutral-600);--focus-stroke-gap-color: transparent}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.label{color:var(--vvd-color-canvas-text);contain:inline-size;font:var(--vvd-typography-base)}.control{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.control.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.control:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.control:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.control:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.control:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.control:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.control{--_connotation-color-primary: var(--vvd-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-select-accent-fierce, var(--vvd-color-neutral-700))}.control{border-radius:var(--_select-control-border-radius);block-size:var(--_select-block-size);padding-inline:var(--_select-padding-inline)}.control{--_select-icon-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) ;--_select-block-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_select-padding-inline: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) ;display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;transition:box-shadow .2s,background-color .2s}.control.size-condensed{--_select-icon-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) ;--_select-block-size: calc(1px*(32 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_select-padding-inline: calc(1px*(24 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) }.control-wrapper{position:relative}.control:not(.disabled){cursor:pointer}.control.disabled{pointer-events:none}.control:not(.shape-pill){--_select-control-border-radius: 8px}.control.shape-pill{--_select-control-border-radius: 24px}:host(:focus-visible) .control{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.listbox{display:flex;max-height:var(--select-height, 408px);flex-direction:column;padding:4px;gap:2px;overflow-y:auto}:host([multiple]:focus-visible) .listbox{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));border-radius:8px}.selected-value{display:flex;overflow:hidden;flex-grow:1;align-items:center;column-gap:12px;white-space:nowrap}.selected-value .text{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis}.control.shows-placeholder .selected-value .text{color:var(--vvd-color-neutral-600)}.selected-value slot[name=icon]{flex:0 0 var(--_select-icon-size);font-size:var(--_select-icon-size);line-height:1}.control.has-meta .selected-value{padding-inline-end:8px}.feedback-wrapper{display:contents}::part(popup-base){inline-size:max-content;min-inline-size:var(--_select-fixed-width, 100%)}:host([multiple]) ::part(popup-base){position:static}";
23
+ const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([aria-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:host(:focus-visible){outline:none}:host{display:inline-flex;flex-direction:column;gap:4px;--_low-ink-color: var(--vvd-color-neutral-600);--focus-stroke-gap-color: transparent}:host([disabled]){--_low-ink-color: var(--vvd-color-neutral-400);cursor:not-allowed}.label{color:var(--vvd-color-canvas-text);contain:inline-size;font:var(--vvd-typography-base)}.control{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.control.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.control:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.control:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.control:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.control:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.control:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.control{--_connotation-color-primary: var(--vvd-select-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-select-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-select-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-select-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-faint: var(--vvd-select-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-select-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-select-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-select-accent-fierce, var(--vvd-color-neutral-700))}.control{border-radius:var(--_select-control-border-radius);block-size:var(--_select-block-size);padding-inline:var(--_select-padding-inline)}.control{--_select-icon-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) ;--_select-block-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_select-padding-inline: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) ;display:flex;align-items:center;justify-content:space-between;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);gap:8px;transition:box-shadow .2s,background-color .2s}.control.size-condensed{--_select-icon-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) ;--_select-block-size: calc(1px*(32 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_select-padding-inline: calc(1px*(24 + 4*clamp(-1, var(--vvd-size-density, 0), 2))/2) }.control.size-condensed:not(.shape-pill){--_select-control-border-radius: 4px}.control-wrapper{position:relative}.control:not(.disabled){cursor:pointer}.control.disabled{pointer-events:none}.control:not(.shape-pill){--_select-control-border-radius: 8px}.control.shape-pill{--_select-control-border-radius: 24px}:host(:focus-visible) .control{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px))}.listbox{display:flex;max-height:var(--select-height, 408px);flex-direction:column;padding:4px;gap:2px;overflow-y:auto}:host([multiple]:focus-visible) .listbox{box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));border-radius:8px}.selected-value{display:flex;overflow:hidden;flex-grow:1;align-items:center;column-gap:12px;white-space:nowrap}.selected-value .text{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis}.control.shows-placeholder .selected-value .text{color:var(--vvd-color-neutral-600)}.selected-value slot[name=icon]{flex:0 0 var(--_select-icon-size);font-size:var(--_select-icon-size);line-height:1}.control.has-meta .selected-value{padding-inline-end:8px}.feedback-wrapper{display:contents}::part(popup-base){inline-size:max-content;min-inline-size:var(--_select-fixed-width, 100%)}:host([multiple]) ::part(popup-base){position:static}";
24
24
 
25
25
  class _Select extends listbox.Listbox {
26
26
  }
@@ -41,7 +41,7 @@ var __decorateClass = (decorators, target, key, kind) => {
41
41
  if (kind && result) __defProp(target, key, result);
42
42
  return result;
43
43
  };
44
- exports.Select = class Select extends FormAssociatedSelect {
44
+ exports.Select = class Select extends affix.AffixIconWithTrailing(FormAssociatedSelect) {
45
45
  constructor() {
46
46
  super(...arguments);
47
47
  this.activeIndex = -1;
@@ -752,7 +752,6 @@ exports.Select = __decorateClass([
752
752
  ], exports.Select);
753
753
  applyMixinsWithObservables.applyMixinsWithObservables(
754
754
  exports.Select,
755
- affix.AffixIconWithTrailing,
756
755
  formElements.FormElementHelperText,
757
756
  formElements.FormElementSuccessText
758
757
  );