@vonage/vivid 5.12.0 → 5.14.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 (413) hide show
  1. package/bundled/definition19.cjs +63 -44
  2. package/bundled/definition19.js +322 -246
  3. package/bundled/definition2.cjs +1 -1
  4. package/bundled/definition2.js +1 -1
  5. package/bundled/localized.cjs +1 -1
  6. package/bundled/localized.js +16 -13
  7. package/bundled/slottable-request.cjs +4 -4
  8. package/bundled/slottable-request.js +70 -70
  9. package/bundled/vivid-element.cjs +1 -1
  10. package/bundled/vivid-element.js +1 -1
  11. package/custom-elements.json +2640 -2580
  12. package/data-grid/definition.cjs +37 -13
  13. package/data-grid/definition.js +37 -13
  14. package/data-grid/index.cjs +38 -32
  15. package/data-grid/index.js +201 -178
  16. package/icon/definition.cjs +1 -1
  17. package/icon/definition.js +1 -1
  18. package/lib/accordion/accordion.template.d.ts +2 -2
  19. package/lib/accordion/index.d.ts +1 -0
  20. package/lib/accordion-item/accordion-item.d.ts +98 -67
  21. package/lib/accordion-item/accordion-item.template.d.ts +3 -3
  22. package/lib/accordion-item/index.d.ts +1 -0
  23. package/lib/action-group/action-group.d.ts +95 -64
  24. package/lib/action-group/action-group.template.d.ts +2 -2
  25. package/lib/action-group/index.d.ts +1 -0
  26. package/lib/alert/alert.d.ts +192 -130
  27. package/lib/alert/alert.template.d.ts +3 -3
  28. package/lib/alert/index.d.ts +1 -0
  29. package/lib/audio-player/audio-player.d.ts +97 -67
  30. package/lib/audio-player/audio-player.template.d.ts +2 -2
  31. package/lib/audio-player/index.d.ts +1 -0
  32. package/lib/avatar/avatar.d.ts +105 -117
  33. package/lib/avatar/avatar.template.d.ts +1 -1
  34. package/lib/avatar/index.d.ts +1 -0
  35. package/lib/badge/badge.d.ts +98 -67
  36. package/lib/badge/badge.template.d.ts +3 -3
  37. package/lib/badge/index.d.ts +1 -0
  38. package/lib/banner/banner.d.ts +286 -193
  39. package/lib/banner/banner.template.d.ts +3 -3
  40. package/lib/banner/index.d.ts +1 -0
  41. package/lib/breadcrumb/breadcrumb.d.ts +93 -62
  42. package/lib/breadcrumb/breadcrumb.template.d.ts +2 -2
  43. package/lib/breadcrumb/index.d.ts +1 -0
  44. package/lib/breadcrumb-item/breadcrumb-item.d.ts +103 -115
  45. package/lib/breadcrumb-item/breadcrumb-item.template.d.ts +3 -3
  46. package/lib/breadcrumb-item/index.d.ts +1 -0
  47. package/lib/button/button.d.ts +297 -247
  48. package/lib/button/button.template.d.ts +3 -3
  49. package/lib/button/index.d.ts +1 -0
  50. package/lib/calendar/calendar.d.ts +2 -2
  51. package/lib/calendar/calendar.template.d.ts +2 -2
  52. package/lib/calendar/helpers/calendar.event-context.d.ts +1 -1
  53. package/lib/calendar/helpers/calendar.keyboard-interactions.d.ts +1 -1
  54. package/lib/calendar/index.d.ts +1 -0
  55. package/lib/calendar-event/calendar-event.d.ts +95 -64
  56. package/lib/calendar-event/calendar-event.template.d.ts +2 -2
  57. package/lib/calendar-event/index.d.ts +1 -0
  58. package/lib/card/card.d.ts +105 -117
  59. package/lib/card/card.template.d.ts +2 -2
  60. package/lib/card/index.d.ts +1 -0
  61. package/lib/checkbox/checkbox.d.ts +628 -437
  62. package/lib/checkbox/checkbox.template.d.ts +3 -3
  63. package/lib/checkbox/index.d.ts +1 -0
  64. package/lib/color-picker/color-picker.d.ts +726 -506
  65. package/lib/color-picker/color-picker.template.d.ts +2 -2
  66. package/lib/color-picker/definition.d.ts +1 -1
  67. package/lib/color-picker/index.d.ts +1 -0
  68. package/lib/combobox/combobox.d.ts +741 -520
  69. package/lib/combobox/combobox.template.d.ts +3 -3
  70. package/lib/combobox/index.d.ts +1 -0
  71. package/lib/contextual-help/contextual-help.d.ts +1 -1
  72. package/lib/contextual-help/contextual-help.template.d.ts +3 -3
  73. package/lib/contextual-help/index.d.ts +1 -0
  74. package/lib/country/country-code-to-flag-icon.d.ts +1 -1
  75. package/lib/country/country.template.d.ts +3 -3
  76. package/lib/country/index.d.ts +1 -0
  77. package/lib/data-grid/data-grid-cell.d.ts +190 -128
  78. package/lib/data-grid/data-grid-cell.template.d.ts +3 -3
  79. package/lib/data-grid/data-grid-row.d.ts +95 -64
  80. package/lib/data-grid/data-grid-row.template.d.ts +3 -3
  81. package/lib/data-grid/data-grid.d.ts +1 -1
  82. package/lib/data-grid/data-grid.template.d.ts +3 -3
  83. package/lib/data-grid/index.d.ts +1 -0
  84. package/lib/data-grid/locale.d.ts +1 -1
  85. package/lib/date-picker/date-picker.d.ts +1045 -792
  86. package/lib/date-picker/date-picker.template.d.ts +2 -2
  87. package/lib/date-picker/index.d.ts +1 -0
  88. package/lib/date-range-picker/date-range-picker.d.ts +538 -411
  89. package/lib/date-range-picker/date-range-picker.template.d.ts +2 -2
  90. package/lib/date-range-picker/index.d.ts +1 -0
  91. package/lib/date-time-picker/date-time-picker.d.ts +1026 -772
  92. package/lib/date-time-picker/date-time-picker.template.d.ts +2 -2
  93. package/lib/date-time-picker/index.d.ts +1 -0
  94. package/lib/dial-pad/dial-pad.d.ts +95 -64
  95. package/lib/dial-pad/dial-pad.template.d.ts +2 -2
  96. package/lib/dial-pad/index.d.ts +1 -0
  97. package/lib/dialog/dialog.d.ts +189 -127
  98. package/lib/dialog/dialog.template.d.ts +3 -3
  99. package/lib/dialog/index.d.ts +1 -0
  100. package/lib/divider/divider.d.ts +94 -63
  101. package/lib/divider/divider.template.d.ts +2 -2
  102. package/lib/divider/index.d.ts +1 -0
  103. package/lib/elevation/elevation.template.d.ts +2 -2
  104. package/lib/elevation/index.d.ts +1 -0
  105. package/lib/empty-state/empty-state.d.ts +2 -2
  106. package/lib/empty-state/empty-state.template.d.ts +3 -3
  107. package/lib/empty-state/index.d.ts +1 -0
  108. package/lib/fab/fab.d.ts +98 -67
  109. package/lib/fab/fab.template.d.ts +3 -3
  110. package/lib/fab/index.d.ts +1 -0
  111. package/lib/file-picker/__mocks__/data-transfer.d.ts +21 -0
  112. package/lib/file-picker/file-picker.d.ts +736 -515
  113. package/lib/file-picker/file-picker.template.d.ts +3 -3
  114. package/lib/file-picker/index.d.ts +1 -0
  115. package/lib/header/header.d.ts +93 -62
  116. package/lib/header/header.template.d.ts +3 -3
  117. package/lib/header/index.d.ts +1 -0
  118. package/lib/icon/icon.d.ts +2 -2
  119. package/lib/icon/icon.template.d.ts +3 -3
  120. package/lib/icon/index.d.ts +1 -0
  121. package/lib/layout/index.d.ts +1 -0
  122. package/lib/layout/layout.d.ts +2 -2
  123. package/lib/layout/layout.template.d.ts +2 -2
  124. package/lib/menu/index.d.ts +1 -0
  125. package/lib/menu/menu.d.ts +195 -133
  126. package/lib/menu/menu.template.d.ts +3 -3
  127. package/lib/menu-item/index.d.ts +1 -0
  128. package/lib/menu-item/menu-item.d.ts +191 -129
  129. package/lib/menu-item/menu-item.template.d.ts +2 -2
  130. package/lib/nav/index.d.ts +1 -0
  131. package/lib/nav/nav.d.ts +93 -62
  132. package/lib/nav/nav.template.d.ts +2 -2
  133. package/lib/nav-disclosure/index.d.ts +1 -0
  134. package/lib/nav-disclosure/nav-disclosure.d.ts +191 -129
  135. package/lib/nav-disclosure/nav-disclosure.template.d.ts +3 -3
  136. package/lib/nav-item/index.d.ts +1 -0
  137. package/lib/nav-item/nav-item.d.ts +200 -181
  138. package/lib/nav-item/nav-item.template.d.ts +3 -3
  139. package/lib/note/index.d.ts +1 -0
  140. package/lib/note/note.d.ts +97 -66
  141. package/lib/note/note.template.d.ts +3 -3
  142. package/lib/number-field/index.d.ts +1 -0
  143. package/lib/number-field/number-field.d.ts +929 -646
  144. package/lib/number-field/number-field.template.d.ts +3 -3
  145. package/lib/option/index.d.ts +1 -0
  146. package/lib/option/option.d.ts +191 -129
  147. package/lib/option/option.template.d.ts +3 -3
  148. package/lib/pagination/index.d.ts +1 -0
  149. package/lib/pagination/pagination.d.ts +98 -67
  150. package/lib/pagination/pagination.template.d.ts +3 -3
  151. package/lib/popover/definition.d.ts +1 -1
  152. package/lib/popover/index.d.ts +1 -0
  153. package/lib/popover/popover.d.ts +190 -128
  154. package/lib/popover/popover.template.d.ts +2 -2
  155. package/lib/popup/index.d.ts +1 -0
  156. package/lib/popup/popup.d.ts +1 -1
  157. package/lib/popup/popup.template.d.ts +3 -3
  158. package/lib/progress/index.d.ts +1 -0
  159. package/lib/progress/progress.d.ts +94 -63
  160. package/lib/progress/progress.template.d.ts +2 -2
  161. package/lib/progress-ring/index.d.ts +1 -0
  162. package/lib/progress-ring/progress-ring.d.ts +94 -63
  163. package/lib/progress-ring/progress-ring.template.d.ts +2 -2
  164. package/lib/radio/index.d.ts +1 -0
  165. package/lib/radio/radio.d.ts +340 -242
  166. package/lib/radio/radio.template.d.ts +2 -2
  167. package/lib/radio-group/index.d.ts +1 -0
  168. package/lib/radio-group/radio-group.d.ts +99 -68
  169. package/lib/radio-group/radio-group.template.d.ts +3 -3
  170. package/lib/range-slider/index.d.ts +1 -0
  171. package/lib/range-slider/range-slider.d.ts +313 -218
  172. package/lib/range-slider/range-slider.template.d.ts +3 -3
  173. package/lib/rich-text-editor/definition.d.ts +1 -1
  174. package/lib/rich-text-editor/index.d.ts +1 -0
  175. package/lib/rich-text-editor/popover.d.ts +1 -1
  176. package/lib/rich-text-editor/rich-text-editor.d.ts +99 -68
  177. package/lib/rich-text-editor/rich-text-editor.template.d.ts +2 -2
  178. package/lib/rich-text-editor/rte/__tests__/async-generator.d.ts +5 -0
  179. package/lib/rich-text-editor/rte/__tests__/doc-factories.d.ts +106 -0
  180. package/lib/rich-text-editor/rte/__tests__/font-sizes.d.ts +2 -0
  181. package/lib/rich-text-editor/rte/__tests__/promise.d.ts +5 -0
  182. package/lib/rich-text-editor/rte/__tests__/test-utils.d.ts +68 -0
  183. package/lib/rich-text-editor/rte/config.d.ts +4 -4
  184. package/lib/rich-text-editor/rte/feature.d.ts +10 -12
  185. package/lib/rich-text-editor/rte/features/alignment.d.ts +19 -0
  186. package/lib/rich-text-editor/rte/features/atom.d.ts +9 -0
  187. package/lib/rich-text-editor/rte/features/base.d.ts +33 -0
  188. package/lib/rich-text-editor/rte/features/bold.d.ts +17 -0
  189. package/lib/rich-text-editor/rte/features/drop-handler.d.ts +21 -0
  190. package/lib/rich-text-editor/rte/features/file-handler.d.ts +25 -0
  191. package/lib/rich-text-editor/rte/features/font-size-picker.d.ts +46 -0
  192. package/lib/rich-text-editor/rte/features/hard-break.d.ts +10 -0
  193. package/lib/rich-text-editor/rte/features/inline-image.d.ts +43 -0
  194. package/lib/rich-text-editor/rte/features/input-rule.d.ts +10 -0
  195. package/lib/rich-text-editor/rte/features/internal/basic-text-blocks.d.ts +6 -6
  196. package/lib/rich-text-editor/rte/features/internal/core.d.ts +37 -0
  197. package/lib/rich-text-editor/rte/features/internal/cursor-fix.d.ts +16 -0
  198. package/lib/rich-text-editor/rte/features/internal/foreign-html.d.ts +1 -1
  199. package/lib/rich-text-editor/rte/features/internal/history.d.ts +2 -2
  200. package/lib/rich-text-editor/rte/features/internal/input-rules.d.ts +4 -4
  201. package/lib/rich-text-editor/rte/features/italic.d.ts +17 -0
  202. package/lib/rich-text-editor/rte/features/link.d.ts +33 -0
  203. package/lib/rich-text-editor/rte/features/list.d.ts +24 -0
  204. package/lib/rich-text-editor/rte/features/monospace.d.ts +22 -0
  205. package/lib/rich-text-editor/rte/features/placeholder.d.ts +23 -0
  206. package/lib/rich-text-editor/rte/features/strikethrough.d.ts +17 -0
  207. package/lib/rich-text-editor/rte/features/suggest.d.ts +14 -0
  208. package/lib/rich-text-editor/rte/features/text-block-picker.d.ts +18 -0
  209. package/lib/rich-text-editor/rte/features/text-color-picker.d.ts +31 -0
  210. package/lib/rich-text-editor/rte/features/toolbar-button.d.ts +13 -0
  211. package/lib/rich-text-editor/rte/features/toolbar.d.ts +37 -0
  212. package/lib/rich-text-editor/rte/features/underline.d.ts +17 -0
  213. package/lib/rich-text-editor/rte/html-parser.d.ts +3 -3
  214. package/lib/rich-text-editor/rte/html-serializer.d.ts +3 -3
  215. package/lib/rich-text-editor/rte/instance.d.ts +8 -7
  216. package/lib/rich-text-editor/rte/public-interface.d.ts +13 -0
  217. package/lib/rich-text-editor/rte/utils/default-textblock.d.ts +2 -2
  218. package/lib/rich-text-editor/rte/utils/feature-state.d.ts +1 -1
  219. package/lib/rich-text-editor/rte/utils/text-before-cursor.d.ts +1 -1
  220. package/lib/rich-text-editor/rte/utils/ui.d.ts +8 -8
  221. package/lib/rich-text-editor/rte/view.d.ts +3 -6
  222. package/lib/rich-text-view/definition.d.ts +1 -1
  223. package/lib/rich-text-view/index.d.ts +2 -0
  224. package/lib/rich-text-view/rich-text-view.d.ts +1 -1
  225. package/lib/rich-text-view/rich-text-view.template.d.ts +2 -2
  226. package/lib/searchable-select/index.d.ts +1 -0
  227. package/lib/searchable-select/option-tag.d.ts +96 -65
  228. package/lib/searchable-select/option-tag.template.d.ts +3 -3
  229. package/lib/searchable-select/searchable-select.d.ts +929 -646
  230. package/lib/searchable-select/searchable-select.template.d.ts +3 -3
  231. package/lib/select/index.d.ts +1 -0
  232. package/lib/select/locale.d.ts +3 -0
  233. package/lib/select/select.d.ts +1240 -579
  234. package/lib/select/select.template.d.ts +3 -3
  235. package/lib/selectable-box/index.d.ts +1 -0
  236. package/lib/selectable-box/selectable-box.d.ts +94 -63
  237. package/lib/selectable-box/selectable-box.template.d.ts +2 -2
  238. package/lib/side-drawer/index.d.ts +1 -0
  239. package/lib/side-drawer/side-drawer.template.d.ts +2 -2
  240. package/lib/simple-color-picker/definition.d.ts +1 -1
  241. package/lib/simple-color-picker/index.d.ts +1 -0
  242. package/lib/simple-color-picker/simple-color-picker.d.ts +216 -153
  243. package/lib/simple-color-picker/simple-color-picker.template.d.ts +2 -2
  244. package/lib/slider/index.d.ts +1 -0
  245. package/lib/slider/slider.d.ts +299 -205
  246. package/lib/slider/slider.template.d.ts +4 -4
  247. package/lib/split-button/index.d.ts +1 -0
  248. package/lib/split-button/split-button.d.ts +288 -195
  249. package/lib/split-button/split-button.template.d.ts +3 -3
  250. package/lib/status/index.d.ts +1 -0
  251. package/lib/status/status.d.ts +98 -67
  252. package/lib/status/status.template.d.ts +3 -3
  253. package/lib/switch/index.d.ts +1 -0
  254. package/lib/switch/switch.d.ts +207 -142
  255. package/lib/switch/switch.template.d.ts +2 -2
  256. package/lib/tab/index.d.ts +1 -0
  257. package/lib/tab/tab.d.ts +288 -195
  258. package/lib/tab/tab.template.d.ts +3 -3
  259. package/lib/tab-panel/index.d.ts +1 -0
  260. package/lib/tab-panel/tab-panel.d.ts +93 -62
  261. package/lib/tab-panel/tab-panel.template.d.ts +2 -2
  262. package/lib/table/index.d.ts +1 -0
  263. package/lib/table/table-body.template.d.ts +3 -3
  264. package/lib/table/table-cell.d.ts +93 -62
  265. package/lib/table/table-cell.template.d.ts +3 -3
  266. package/lib/table/table-head.template.d.ts +3 -3
  267. package/lib/table/table-header-cell.d.ts +93 -62
  268. package/lib/table/table-header-cell.template.d.ts +3 -3
  269. package/lib/table/table-row.d.ts +93 -62
  270. package/lib/table/table-row.template.d.ts +3 -3
  271. package/lib/table/table.template.d.ts +3 -3
  272. package/lib/tabs/index.d.ts +1 -0
  273. package/lib/tabs/tabs.d.ts +2 -2
  274. package/lib/tabs/tabs.template.d.ts +2 -2
  275. package/lib/tag/index.d.ts +1 -0
  276. package/lib/tag/tag.d.ts +288 -195
  277. package/lib/tag/tag.template.d.ts +3 -3
  278. package/lib/tag-group/index.d.ts +1 -0
  279. package/lib/tag-group/tag-group.d.ts +93 -62
  280. package/lib/tag-group/tag-group.template.d.ts +2 -2
  281. package/lib/tag-name-map.d.ts +1 -1
  282. package/lib/text-area/index.d.ts +1 -0
  283. package/lib/text-area/text-area.d.ts +832 -581
  284. package/lib/text-area/text-area.template.d.ts +3 -3
  285. package/lib/text-field/index.d.ts +1 -0
  286. package/lib/text-field/text-field.d.ts +931 -649
  287. package/lib/text-field/text-field.template.d.ts +3 -3
  288. package/lib/time-picker/index.d.ts +1 -0
  289. package/lib/time-picker/time-picker.d.ts +486 -359
  290. package/lib/time-picker/time-picker.template.d.ts +3 -3
  291. package/lib/toggletip/index.d.ts +1 -0
  292. package/lib/toggletip/toggletip.d.ts +197 -135
  293. package/lib/toggletip/toggletip.template.d.ts +3 -3
  294. package/lib/tooltip/index.d.ts +1 -0
  295. package/lib/tooltip/tooltip.d.ts +101 -70
  296. package/lib/tooltip/tooltip.template.d.ts +3 -3
  297. package/lib/tree-item/index.d.ts +1 -0
  298. package/lib/tree-item/tree-item.d.ts +190 -128
  299. package/lib/tree-item/tree-item.template.d.ts +3 -3
  300. package/lib/tree-view/index.d.ts +1 -0
  301. package/lib/tree-view/tree-view.d.ts +93 -62
  302. package/lib/tree-view/tree-view.template.d.ts +2 -2
  303. package/lib/video-player/index.d.ts +1 -0
  304. package/lib/video-player/video-player.d.ts +96 -65
  305. package/lib/video-player/video-player.template.d.ts +1 -1
  306. package/lib/video-player/vivid-video-svg.d.ts +1 -1
  307. package/lib/visually-hidden/definition.d.ts +1 -1
  308. package/lib/visually-hidden/index.d.ts +1 -0
  309. package/lib/visually-hidden/visually-hidden.template.d.ts +1 -1
  310. package/locales/de-DE.cjs +3 -0
  311. package/locales/de-DE.d.ts +1 -1
  312. package/locales/de-DE.js +3 -0
  313. package/locales/en-GB.cjs +3 -0
  314. package/locales/en-GB.d.ts +1 -1
  315. package/locales/en-GB.js +3 -0
  316. package/locales/en-US.cjs +3 -0
  317. package/locales/en-US.d.ts +1 -1
  318. package/locales/en-US.js +3 -0
  319. package/locales/ja-JP.cjs +3 -0
  320. package/locales/ja-JP.d.ts +1 -1
  321. package/locales/ja-JP.js +3 -0
  322. package/locales/zh-CN.cjs +3 -0
  323. package/locales/zh-CN.d.ts +1 -1
  324. package/locales/zh-CN.js +3 -0
  325. package/package.json +6 -6
  326. package/rich-text-editor/definition.cjs +2 -4
  327. package/rich-text-editor/definition.js +3 -5
  328. package/rich-text-editor/index.cjs +7 -7
  329. package/rich-text-editor/index.js +975 -977
  330. package/rich-text-view/index.js +1 -1
  331. package/select/definition.cjs +104 -5
  332. package/select/definition.js +104 -5
  333. package/shared/aria/aria-change-subscription.d.ts +1 -1
  334. package/shared/aria/aria-mixin.d.ts +94 -63
  335. package/shared/aria/attribute-removal.d.ts +1 -1
  336. package/shared/aria/delegate-aria-behavior.d.ts +2 -2
  337. package/shared/aria/delegates-aria.d.ts +96 -65
  338. package/shared/aria/host-semantics-behavior.d.ts +2 -2
  339. package/shared/aria/host-semantics.d.ts +97 -66
  340. package/shared/color-picker/base-color-picker.d.ts +114 -82
  341. package/shared/datetime/dateRange.d.ts +1 -1
  342. package/shared/datetime/dateTimeStr.d.ts +4 -4
  343. package/shared/datetime/month.d.ts +1 -1
  344. package/shared/datetime/presentationDate.d.ts +2 -2
  345. package/shared/datetime/presentationDateRange.d.ts +2 -2
  346. package/shared/datetime/presentationDateTime.d.ts +2 -2
  347. package/shared/datetime/presentationTime.d.ts +1 -1
  348. package/shared/datetime/year.d.ts +1 -1
  349. package/shared/deprecation/replaced-props.d.ts +95 -60
  350. package/shared/design-system/createRegisterFunction.d.ts +1 -1
  351. package/shared/design-system/defineVividComponent.d.ts +1 -1
  352. package/shared/feedback/feedback-message.d.ts +96 -65
  353. package/shared/feedback/mixins.d.ts +200 -138
  354. package/shared/foundation/button/button.d.ts +202 -139
  355. package/shared/foundation/button/button.template.d.ts +2 -2
  356. package/shared/foundation/form-associated/form-associated.d.ts +213 -147
  357. package/shared/foundation/listbox/listbox.d.ts +1 -1
  358. package/shared/foundation/test-utilities/fixture.d.ts +18 -0
  359. package/shared/foundation/vivid-element/vivid-element.d.ts +194 -131
  360. package/shared/localization/Locale.d.ts +31 -29
  361. package/shared/localization/index.d.ts +1 -1
  362. package/shared/patterns/affix.d.ts +195 -133
  363. package/shared/patterns/anchored.d.ts +202 -140
  364. package/shared/patterns/char-count/char-count.d.ts +99 -68
  365. package/shared/patterns/chevron.d.ts +2 -2
  366. package/shared/patterns/form-elements/form-element.d.ts +114 -488
  367. package/shared/patterns/form-elements/with-contextual-help.d.ts +117 -903
  368. package/shared/patterns/form-elements/with-error-text.d.ts +120 -906
  369. package/shared/patterns/form-elements/with-success-text.d.ts +97 -66
  370. package/shared/patterns/linkable.d.ts +106 -117
  371. package/shared/patterns/localized.d.ts +197 -135
  372. package/shared/patterns/trapped-focus.d.ts +95 -64
  373. package/shared/picker-field/mixins/calendar-picker.d.ts +251 -188
  374. package/shared/picker-field/mixins/calendar-picker.template.d.ts +271 -208
  375. package/shared/picker-field/mixins/calendar-segments/calendarGrid.d.ts +3 -3
  376. package/shared/picker-field/mixins/calendar-segments/monthPickerGrid.d.ts +2 -2
  377. package/shared/picker-field/mixins/calendar-segments/segment.d.ts +2 -2
  378. package/shared/picker-field/mixins/inline-time-picker/columns.d.ts +2 -2
  379. package/shared/picker-field/mixins/inline-time-picker/index.d.ts +1 -0
  380. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +95 -64
  381. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.template.d.ts +3 -3
  382. package/shared/picker-field/mixins/inline-time-picker/picker-option.d.ts +1 -1
  383. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +277 -1102
  384. package/shared/picker-field/mixins/single-date-picker.d.ts +274 -1953
  385. package/shared/picker-field/mixins/single-value-picker.d.ts +236 -173
  386. package/shared/picker-field/mixins/time-selection-picker.d.ts +257 -1046
  387. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +486 -360
  388. package/shared/picker-field/picker-field.d.ts +735 -514
  389. package/shared/picker-field/picker-field.template.d.ts +2 -2
  390. package/shared/templating/attribute-binding-behaviour.d.ts +1 -1
  391. package/shared/templating/render-in-light-dom.d.ts +2 -2
  392. package/shared/utils/closest-of-type.d.ts +2 -0
  393. package/shared/utils/direct-children-of-type.d.ts +2 -0
  394. package/shared/utils/dom-traversal-types.d.ts +3 -0
  395. package/shared/utils/first-of-type.d.ts +2 -0
  396. package/shared/utils/last-of-type.d.ts +2 -0
  397. package/shared/utils/nested-children-of-type.d.ts +2 -0
  398. package/shared/utils/next-of-type.d.ts +2 -0
  399. package/shared/utils/numberConverter.d.ts +1 -1
  400. package/shared/utils/prev-of-type.d.ts +2 -0
  401. package/shared/utils/promise.d.ts +2 -2
  402. package/shared/utils/siblings-of-type.d.ts +2 -0
  403. package/styles/core/all.css +2 -2
  404. package/styles/core/theme.css +2 -2
  405. package/styles/core/typography.css +1 -1
  406. package/styles/tokens/theme-dark.css +4 -4
  407. package/styles/tokens/theme-light.css +4 -4
  408. package/styles/tokens/vivid-2-compat.css +1 -1
  409. package/unbundled/slottable-request.cjs +7 -5
  410. package/unbundled/slottable-request.js +7 -6
  411. package/unbundled/vivid-element.cjs +1 -1
  412. package/unbundled/vivid-element.js +1 -1
  413. package/vivid.api.json +727 -38
@@ -1,5 +1,5 @@
1
1
  import { V as _, w as f, o as y, h as C, c as g, d as v } from "../bundled/vivid-element.js";
2
- import { i as r, s as S, h as a, N as h, M as b, D as x, r as R } from "../bundled/slottable-request.js";
2
+ import { i as r, s as S, j as a, N as h, M as b, D as x, r as R } from "../bundled/slottable-request.js";
3
3
  import { r as w } from "../bundled/ref.js";
4
4
  const D = ":host{display:contents}.content{display:contents;overflow-wrap:break-word;white-space:break-spaces}";
5
5
  var E = Object.defineProperty, k = (d, e, s, o) => {
@@ -5,6 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const popup_definition = require('../unbundled/definition5.cjs');
6
6
  const icon_definition = require('../icon/definition.cjs');
7
7
  const option_definition = require('../unbundled/definition3.cjs');
8
+ const button_definition = require('../unbundled/definition.cjs');
8
9
  const vividElement = require('../unbundled/vivid-element.cjs');
9
10
  const mixins = require('../unbundled/mixins.cjs');
10
11
  const fastElement = require('@microsoft/fast-element');
@@ -15,9 +16,9 @@ const formAssociated = require('../unbundled/form-associated.cjs');
15
16
  const withContextualHelp = require('../unbundled/with-contextual-help.cjs');
16
17
  const withErrorText = require('../unbundled/with-error-text.cjs');
17
18
  const withSuccessText = require('../unbundled/with-success-text.cjs');
19
+ const localized = require('../unbundled/localized.cjs');
18
20
  const formElement = require('../unbundled/form-element.cjs');
19
21
  const affix = require('../unbundled/affix.cjs');
20
- const button_definition = require('../unbundled/definition.cjs');
21
22
  const index = require('../unbundled/index.cjs');
22
23
 
23
24
  var __defProp = Object.defineProperty;
@@ -34,8 +35,10 @@ class Select extends mixins.WithLightDOMFeedback(
34
35
  withContextualHelp.WithContextualHelp(
35
36
  withErrorText.WithErrorText(
36
37
  withSuccessText.WithSuccessText(
37
- formElement.FormElement(
38
- hostSemantics.HostSemantics(affix.AffixIconWithTrailing(formAssociated.FormAssociated(listbox.Listbox)))
38
+ localized.Localized(
39
+ formElement.FormElement(
40
+ hostSemantics.HostSemantics(affix.AffixIconWithTrailing(formAssociated.FormAssociated(listbox.Listbox)))
41
+ )
39
42
  )
40
43
  )
41
44
  )
@@ -64,6 +67,8 @@ class Select extends mixins.WithLightDOMFeedback(
64
67
  this.maxHeight = 0;
65
68
  this.fixedDropdown = false;
66
69
  this._feedbackWrapper = null;
70
+ this.clearable = false;
71
+ this._isClearButtonFocused = false;
67
72
  }
68
73
  /**
69
74
  * Returns the last checked option.
@@ -707,6 +712,54 @@ class Select extends mixins.WithLightDOMFeedback(
707
712
  this.setProxyOptions();
708
713
  this.selectedIndex = this._newDefaultSelectedIndex([], this.options, -1) ?? -1;
709
714
  }
715
+ /**
716
+ * @internal
717
+ */
718
+ get _shouldShowClearButton() {
719
+ if (!this.clearable) return false;
720
+ if (this.multiple) {
721
+ return this.selectedOptions?.length > 0;
722
+ }
723
+ return this.value !== "";
724
+ }
725
+ /**
726
+ * @internal
727
+ */
728
+ _onClearButtonFocus() {
729
+ this._isClearButtonFocused = true;
730
+ this.activeIndex = -1;
731
+ this.uncheckAllOptions();
732
+ }
733
+ /**
734
+ * @internal
735
+ */
736
+ _onClearButtonBlur() {
737
+ this._isClearButtonFocused = false;
738
+ }
739
+ /**
740
+ * @internal
741
+ */
742
+ get _shouldShowLabelWrapper() {
743
+ return Boolean(
744
+ this.label || this._hasContextualHelp || this.multiple && this._shouldShowClearButton
745
+ );
746
+ }
747
+ /**
748
+ * @internal
749
+ */
750
+ _onClearButtonClick() {
751
+ if (this.multiple) {
752
+ this.selectedOptions?.forEach((o) => {
753
+ /* v8 ignore else -- @preserve */
754
+ if (!o.disabled) {
755
+ o.selected = false;
756
+ }
757
+ });
758
+ } else {
759
+ this.selectedIndex = -1;
760
+ }
761
+ this.updateValue(true);
762
+ }
710
763
  }
711
764
  __decorateClass([
712
765
  fastElement.observable
@@ -751,8 +804,14 @@ __decorateClass([
751
804
  __decorateClass([
752
805
  fastElement.observable
753
806
  ], Select.prototype, "metaSlottedContent", 2);
807
+ __decorateClass([
808
+ fastElement.attr({ mode: "boolean" })
809
+ ], Select.prototype, "clearable", 2);
810
+ __decorateClass([
811
+ fastElement.observable
812
+ ], Select.prototype, "_isClearButtonFocused", 2);
754
813
 
755
- const styles = ".label-wrapper{display:flex;flex-direction:row;align-items:center;gap:var(--label-wrapper-gap, 4px)}.label-wrapper[hidden]{display:none}.label:not(slot),.label::slotted(label){flex:0 1 auto}.chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-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);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(--vvd-color-neutral-500)}.control.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.control: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(--vvd-color-neutral-700)}.control: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.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(--vvd-color-neutral-700)}.control.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: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:disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.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.disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.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.readonly:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.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.error:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.control.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.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}.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(--focus-stroke-color, 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}:host(:focus-within) .control:not(.has-activedescendant){--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--focus-stroke-color, 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))}:host(:not([multiple])) ::slotted([data-vvd-component=option][current-selected]){border-radius:8px;box-shadow:0 0 0 4px color-mix(in srgb,var(--focus-stroke-color, 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}";
814
+ const styles = ".label-wrapper{display:flex;flex-direction:row;align-items:center;gap:var(--label-wrapper-gap, 4px)}.label-wrapper[hidden]{display:none}.label:not(slot),.label::slotted(label){flex:0 1 auto}.chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-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);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(--vvd-color-neutral-500)}.control.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.control: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(--vvd-color-neutral-700)}.control: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.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(--vvd-color-neutral-700)}.control.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: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:disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.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.disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.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.readonly:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.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.error:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.control.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.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}.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(--focus-stroke-color, 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}@supports selector(:has(*)){:host(:focus-within) .control:not(.has-activedescendant,:has(.clear-button:focus)){--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--focus-stroke-color, 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))}}@supports not selector(:has(*)){:host(:focus-within) .control:not(.has-activedescendant){--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--focus-stroke-color, 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))}}:host(:not([multiple])) ::slotted([data-vvd-component=option][current-selected]){border-radius:8px;box-shadow:0 0 0 4px color-mix(in srgb,var(--focus-stroke-color, 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([multiple]) .clear-button{margin-inline-start:auto}:host([multiple][clearable]) .label-wrapper{min-block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}";
756
815
 
757
816
  const getStateClasses = ({
758
817
  shape,
@@ -792,6 +851,40 @@ function renderPlaceholder(context) {
792
851
  <${optionTag} text="${(x) => x.placeholder}" hidden disabled>
793
852
  </${optionTag}>`;
794
853
  }
854
+ function renderClearButton(context) {
855
+ const buttonTag = context.tagFor(button_definition.Button);
856
+ return fastElement.html`
857
+ <${buttonTag}
858
+ aria-label="${(x) => x.locale.select.clearButtonLabel}"
859
+ aria-hidden="${(x) => x._isClearButtonFocused ? "false" : "true"}"
860
+ @click="${(x, c) => {
861
+ x._onClearButtonClick();
862
+ c.event.stopPropagation();
863
+ }}"
864
+ @mousedown="${() => false}"
865
+ @keydown="${(x, c) => {
866
+ /* v8 ignore next -- @preserve */
867
+ if (c.event.key === "Tab") {
868
+ x._onClearButtonBlur();
869
+ }
870
+ c.event.stopPropagation();
871
+ return true;
872
+ }}"
873
+ @focusin="${(x, c) => {
874
+ c.event.stopPropagation();
875
+ x._onClearButtonFocus();
876
+ }}"
877
+ @focusout="${(x) => x._onClearButtonBlur()}"
878
+ ?disabled="${(x) => x.disabled}"
879
+ :shape="${(x) => x.shape}"
880
+ size="super-condensed"
881
+ icon="close-line"
882
+ appearance="ghost-light"
883
+ class="clear-button"
884
+ tabindex="0"
885
+ ></${buttonTag}>
886
+ `;
887
+ }
795
888
  function selectValue(context) {
796
889
  const affixIconTemplate = affix.affixIconTemplateFactory(context);
797
890
  const chevronTemplate = button_definition.chevronTemplateFactory(context);
@@ -806,6 +899,7 @@ function selectValue(context) {
806
899
  <span class="text">${(x) => x.displayValue}</span>
807
900
  <slot name="meta" ${fastElement.slotted("metaSlottedContent")}></slot>
808
901
  </div>
902
+ ${fastElement.when((x) => x._shouldShowClearButton, renderClearButton(context))}
809
903
  ${chevronTemplate}
810
904
  </div>`;
811
905
  }
@@ -815,8 +909,12 @@ function setFixedDropdownVarWidth(x) {
815
909
  function renderControl(context) {
816
910
  const popupTag = context.tagFor(popup_definition.Popup);
817
911
  return fastElement.html`
818
- <div class="label-wrapper" ?hidden=${(x) => !x.label && !x._hasContextualHelp}>
912
+ <div class="label-wrapper" ?hidden=${(x) => !x._shouldShowLabelWrapper}>
819
913
  ${fastElement.when((x) => x.label, renderLabel())}
914
+ ${fastElement.when(
915
+ (x) => x.multiple && x._shouldShowClearButton,
916
+ renderClearButton(context)
917
+ )}
820
918
  <slot name="contextual-help" ${fastElement.slotted("_contextualHelpSlottedContent")}></slot>
821
919
  </div>
822
920
  <div class="control-wrapper">
@@ -900,6 +998,7 @@ const selectDefinition = vividElement.defineVividComponent(
900
998
  popup_definition.popupDefinition,
901
999
  icon_definition.iconDefinition,
902
1000
  option_definition.listboxOptionDefinition,
1001
+ button_definition.buttonDefinition,
903
1002
  mixins.feedbackMessageDefinition
904
1003
  ],
905
1004
  {
@@ -1,6 +1,7 @@
1
1
  import { P as Popup, p as popupDefinition } from '../unbundled/definition5.js';
2
2
  import { iconDefinition } from '../icon/definition.js';
3
3
  import { L as ListboxOption, l as listboxOptionDefinition } from '../unbundled/definition3.js';
4
+ import { B as Button, c as chevronTemplateFactory, b as buttonDefinition } from '../unbundled/definition.js';
4
5
  import { d as defineVividComponent, c as createRegisterFunction } from '../unbundled/vivid-element.js';
5
6
  import { W as WithLightDOMFeedback, f as feedbackMessageDefinition } from '../unbundled/mixins.js';
6
7
  import { Updates, Observable, observable, attr, volatile, ref, html, when, slotted } from '@microsoft/fast-element';
@@ -11,9 +12,9 @@ import { F as FormAssociated } from '../unbundled/form-associated.js';
11
12
  import { W as WithContextualHelp } from '../unbundled/with-contextual-help.js';
12
13
  import { W as WithErrorText } from '../unbundled/with-error-text.js';
13
14
  import { W as WithSuccessText } from '../unbundled/with-success-text.js';
15
+ import { L as Localized } from '../unbundled/localized.js';
14
16
  import { F as FormElement } from '../unbundled/form-element.js';
15
17
  import { b as AffixIconWithTrailing, a as affixIconTemplateFactory, I as IconWrapper } from '../unbundled/affix.js';
16
- import { c as chevronTemplateFactory } from '../unbundled/definition.js';
17
18
  import { h as handleEscapeKeyAndStopPropogation } from '../unbundled/index.js';
18
19
 
19
20
  var __defProp = Object.defineProperty;
@@ -30,8 +31,10 @@ class Select extends WithLightDOMFeedback(
30
31
  WithContextualHelp(
31
32
  WithErrorText(
32
33
  WithSuccessText(
33
- FormElement(
34
- HostSemantics(AffixIconWithTrailing(FormAssociated(Listbox)))
34
+ Localized(
35
+ FormElement(
36
+ HostSemantics(AffixIconWithTrailing(FormAssociated(Listbox)))
37
+ )
35
38
  )
36
39
  )
37
40
  )
@@ -60,6 +63,8 @@ class Select extends WithLightDOMFeedback(
60
63
  this.maxHeight = 0;
61
64
  this.fixedDropdown = false;
62
65
  this._feedbackWrapper = null;
66
+ this.clearable = false;
67
+ this._isClearButtonFocused = false;
63
68
  }
64
69
  /**
65
70
  * Returns the last checked option.
@@ -703,6 +708,54 @@ class Select extends WithLightDOMFeedback(
703
708
  this.setProxyOptions();
704
709
  this.selectedIndex = this._newDefaultSelectedIndex([], this.options, -1) ?? -1;
705
710
  }
711
+ /**
712
+ * @internal
713
+ */
714
+ get _shouldShowClearButton() {
715
+ if (!this.clearable) return false;
716
+ if (this.multiple) {
717
+ return this.selectedOptions?.length > 0;
718
+ }
719
+ return this.value !== "";
720
+ }
721
+ /**
722
+ * @internal
723
+ */
724
+ _onClearButtonFocus() {
725
+ this._isClearButtonFocused = true;
726
+ this.activeIndex = -1;
727
+ this.uncheckAllOptions();
728
+ }
729
+ /**
730
+ * @internal
731
+ */
732
+ _onClearButtonBlur() {
733
+ this._isClearButtonFocused = false;
734
+ }
735
+ /**
736
+ * @internal
737
+ */
738
+ get _shouldShowLabelWrapper() {
739
+ return Boolean(
740
+ this.label || this._hasContextualHelp || this.multiple && this._shouldShowClearButton
741
+ );
742
+ }
743
+ /**
744
+ * @internal
745
+ */
746
+ _onClearButtonClick() {
747
+ if (this.multiple) {
748
+ this.selectedOptions?.forEach((o) => {
749
+ /* v8 ignore else -- @preserve */
750
+ if (!o.disabled) {
751
+ o.selected = false;
752
+ }
753
+ });
754
+ } else {
755
+ this.selectedIndex = -1;
756
+ }
757
+ this.updateValue(true);
758
+ }
706
759
  }
707
760
  __decorateClass([
708
761
  observable
@@ -747,8 +800,14 @@ __decorateClass([
747
800
  __decorateClass([
748
801
  observable
749
802
  ], Select.prototype, "metaSlottedContent", 2);
803
+ __decorateClass([
804
+ attr({ mode: "boolean" })
805
+ ], Select.prototype, "clearable", 2);
806
+ __decorateClass([
807
+ observable
808
+ ], Select.prototype, "_isClearButtonFocused", 2);
750
809
 
751
- const styles = ".label-wrapper{display:flex;flex-direction:row;align-items:center;gap:var(--label-wrapper-gap, 4px)}.label-wrapper[hidden]{display:none}.label:not(slot),.label::slotted(label){flex:0 1 auto}.chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-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);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(--vvd-color-neutral-500)}.control.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.control: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(--vvd-color-neutral-700)}.control: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.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(--vvd-color-neutral-700)}.control.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: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:disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.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.disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.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.readonly:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.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.error:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.control.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.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}.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(--focus-stroke-color, 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}:host(:focus-within) .control:not(.has-activedescendant){--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--focus-stroke-color, 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))}:host(:not([multiple])) ::slotted([data-vvd-component=option][current-selected]){border-radius:8px;box-shadow:0 0 0 4px color-mix(in srgb,var(--focus-stroke-color, 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}";
810
+ const styles = ".label-wrapper{display:flex;flex-direction:row;align-items:center;gap:var(--label-wrapper-gap, 4px)}.label-wrapper[hidden]{display:none}.label:not(slot),.label::slotted(label){flex:0 1 auto}.chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-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);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(--vvd-color-neutral-500)}.control.appearance-ghost{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.control: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(--vvd-color-neutral-700)}.control: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.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(--vvd-color-neutral-700)}.control.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: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:disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.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.disabled.appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.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.readonly:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.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.error:where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.control.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.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}.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(--focus-stroke-color, 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}@supports selector(:has(*)){:host(:focus-within) .control:not(.has-activedescendant,:has(.clear-button:focus)){--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--focus-stroke-color, 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))}}@supports not selector(:has(*)){:host(:focus-within) .control:not(.has-activedescendant){--focus-stroke-gap-color: transparent;box-shadow:0 0 0 4px color-mix(in srgb,var(--focus-stroke-color, 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))}}:host(:not([multiple])) ::slotted([data-vvd-component=option][current-selected]){border-radius:8px;box-shadow:0 0 0 4px color-mix(in srgb,var(--focus-stroke-color, 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([multiple]) .clear-button{margin-inline-start:auto}:host([multiple][clearable]) .label-wrapper{min-block-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}";
752
811
 
753
812
  const getStateClasses = ({
754
813
  shape,
@@ -788,6 +847,40 @@ function renderPlaceholder(context) {
788
847
  <${optionTag} text="${(x) => x.placeholder}" hidden disabled>
789
848
  </${optionTag}>`;
790
849
  }
850
+ function renderClearButton(context) {
851
+ const buttonTag = context.tagFor(Button);
852
+ return html`
853
+ <${buttonTag}
854
+ aria-label="${(x) => x.locale.select.clearButtonLabel}"
855
+ aria-hidden="${(x) => x._isClearButtonFocused ? "false" : "true"}"
856
+ @click="${(x, c) => {
857
+ x._onClearButtonClick();
858
+ c.event.stopPropagation();
859
+ }}"
860
+ @mousedown="${() => false}"
861
+ @keydown="${(x, c) => {
862
+ /* v8 ignore next -- @preserve */
863
+ if (c.event.key === "Tab") {
864
+ x._onClearButtonBlur();
865
+ }
866
+ c.event.stopPropagation();
867
+ return true;
868
+ }}"
869
+ @focusin="${(x, c) => {
870
+ c.event.stopPropagation();
871
+ x._onClearButtonFocus();
872
+ }}"
873
+ @focusout="${(x) => x._onClearButtonBlur()}"
874
+ ?disabled="${(x) => x.disabled}"
875
+ :shape="${(x) => x.shape}"
876
+ size="super-condensed"
877
+ icon="close-line"
878
+ appearance="ghost-light"
879
+ class="clear-button"
880
+ tabindex="0"
881
+ ></${buttonTag}>
882
+ `;
883
+ }
791
884
  function selectValue(context) {
792
885
  const affixIconTemplate = affixIconTemplateFactory(context);
793
886
  const chevronTemplate = chevronTemplateFactory(context);
@@ -802,6 +895,7 @@ function selectValue(context) {
802
895
  <span class="text">${(x) => x.displayValue}</span>
803
896
  <slot name="meta" ${slotted("metaSlottedContent")}></slot>
804
897
  </div>
898
+ ${when((x) => x._shouldShowClearButton, renderClearButton(context))}
805
899
  ${chevronTemplate}
806
900
  </div>`;
807
901
  }
@@ -811,8 +905,12 @@ function setFixedDropdownVarWidth(x) {
811
905
  function renderControl(context) {
812
906
  const popupTag = context.tagFor(Popup);
813
907
  return html`
814
- <div class="label-wrapper" ?hidden=${(x) => !x.label && !x._hasContextualHelp}>
908
+ <div class="label-wrapper" ?hidden=${(x) => !x._shouldShowLabelWrapper}>
815
909
  ${when((x) => x.label, renderLabel())}
910
+ ${when(
911
+ (x) => x.multiple && x._shouldShowClearButton,
912
+ renderClearButton(context)
913
+ )}
816
914
  <slot name="contextual-help" ${slotted("_contextualHelpSlottedContent")}></slot>
817
915
  </div>
818
916
  <div class="control-wrapper">
@@ -896,6 +994,7 @@ const selectDefinition = defineVividComponent(
896
994
  popupDefinition,
897
995
  iconDefinition,
898
996
  listboxOptionDefinition,
997
+ buttonDefinition,
899
998
  feedbackMessageDefinition
900
999
  ],
901
1000
  {
@@ -1,4 +1,4 @@
1
- import type { AriaMixinElement, AriaPropertyName } from './aria-mixin';
1
+ import { AriaMixinElement, AriaPropertyName } from './aria-mixin';
2
2
  type AriaChangeSubscriber = (source: AriaMixinElement, changedAriaProperty: AriaPropertyName) => void;
3
3
  export declare const subscribeToAriaPropertyChanges: (source: AriaMixinElement, listener: AriaChangeSubscriber) => void;
4
4
  export declare const publishAriaPropertyChange: (source: AriaMixinElement, changedAriaProperty: AriaPropertyName) => void;