@vonage/vivid 5.24.0 → 5.27.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 (777) hide show
  1. package/README.md +1 -1
  2. package/accordion/index.cjs +1 -1
  3. package/accordion/index.js +8 -8
  4. package/accordion-item/index.cjs +1 -1
  5. package/action-group/index.cjs +3 -3
  6. package/action-group/index.js +10 -5
  7. package/alert/index.cjs +7 -7
  8. package/alert/index.js +47 -35
  9. package/audio-player/index.cjs +18 -18
  10. package/audio-player/index.js +15 -11
  11. package/avatar/index.cjs +10 -10
  12. package/avatar/index.js +29 -19
  13. package/badge/index.cjs +1 -1
  14. package/banner/index.cjs +5 -5
  15. package/banner/index.js +33 -27
  16. package/breadcrumb/index.cjs +1 -1
  17. package/breadcrumb/index.js +5 -1
  18. package/breadcrumb-item/index.cjs +9 -5
  19. package/breadcrumb-item/index.js +15 -10
  20. package/bundled/affix.cjs +3 -3
  21. package/bundled/affix.js +2 -2
  22. package/bundled/anchored.cjs +2 -2
  23. package/bundled/anchored.js +13 -1
  24. package/bundled/aria-binding-directive.cjs +1 -1
  25. package/bundled/aria-binding-directive.js +2 -2
  26. package/bundled/aria.cjs +1 -1
  27. package/bundled/base-color-picker.cjs +2 -2
  28. package/bundled/base-color-picker.js +1 -1
  29. package/bundled/base-progress.cjs +1 -1
  30. package/bundled/breadcrumb-item.cjs +1 -1
  31. package/bundled/button.cjs +1 -1
  32. package/bundled/calendar-event.cjs +1 -1
  33. package/bundled/calendar-event.js +17 -4
  34. package/bundled/calendar-picker.template.cjs +5 -5
  35. package/bundled/calendar-picker.template.js +53 -55
  36. package/bundled/char-count.cjs +2 -2
  37. package/bundled/children.cjs +1 -1
  38. package/bundled/children.js +1 -1
  39. package/bundled/class-names.cjs +1 -1
  40. package/bundled/component-enum.cjs +1 -0
  41. package/bundled/component-enum.js +9 -0
  42. package/bundled/data-grid.options.cjs +1 -1
  43. package/bundled/data-grid.options.js +7 -6
  44. package/bundled/decorate.cjs +1 -1
  45. package/bundled/decorate.js +1 -1
  46. package/bundled/definition.cjs +1 -1
  47. package/bundled/definition10.cjs +10 -19
  48. package/bundled/definition10.js +23 -71
  49. package/bundled/definition11.cjs +74 -10
  50. package/bundled/definition11.js +194 -23
  51. package/bundled/definition12.cjs +18 -70
  52. package/bundled/definition12.js +48 -185
  53. package/bundled/definition13.cjs +5 -22
  54. package/bundled/definition13.js +9 -58
  55. package/bundled/definition14.cjs +1 -5
  56. package/bundled/definition14.js +9 -9
  57. package/bundled/definition15.cjs +6 -6
  58. package/bundled/definition15.js +19 -18
  59. package/bundled/definition16.cjs +3 -3
  60. package/bundled/definition16.js +23 -17
  61. package/bundled/definition17.cjs +7 -7
  62. package/bundled/definition17.js +22 -109
  63. package/bundled/definition18.cjs +3 -3
  64. package/bundled/definition18.js +9 -31
  65. package/bundled/definition19.cjs +21 -21
  66. package/bundled/definition19.js +68 -62
  67. package/bundled/definition2.cjs +13 -1
  68. package/bundled/definition2.js +22 -185
  69. package/bundled/definition20.cjs +3 -3
  70. package/bundled/definition20.js +6 -7
  71. package/bundled/definition21.cjs +9 -9
  72. package/bundled/definition21.js +25 -25
  73. package/bundled/definition22.cjs +5 -5
  74. package/bundled/definition22.js +27 -27
  75. package/bundled/definition23.cjs +3 -3
  76. package/bundled/definition23.js +26 -8
  77. package/bundled/definition24.cjs +4 -4
  78. package/bundled/definition24.js +4 -3
  79. package/bundled/definition25.cjs +7 -7
  80. package/bundled/definition25.js +37 -28
  81. package/bundled/definition3.cjs +25 -12
  82. package/bundled/definition3.js +83 -44
  83. package/bundled/definition4.cjs +29 -25
  84. package/bundled/definition4.js +50 -88
  85. package/bundled/definition5.cjs +28 -29
  86. package/bundled/definition5.js +143 -45
  87. package/bundled/definition6.cjs +6 -29
  88. package/bundled/definition6.js +20 -129
  89. package/bundled/definition7.cjs +14 -6
  90. package/bundled/definition7.js +159 -20
  91. package/bundled/definition8.cjs +22 -14
  92. package/bundled/definition8.js +88 -144
  93. package/bundled/definition9.cjs +20 -16
  94. package/bundled/definition9.js +59 -62
  95. package/bundled/delegates-aria.cjs +1 -1
  96. package/bundled/delegates-aria.js +3 -2
  97. package/bundled/dialog.cjs +1 -1
  98. package/bundled/dialog.js +1 -1
  99. package/bundled/divider.cjs +1 -1
  100. package/bundled/divider.js +9 -9
  101. package/bundled/dom.cjs +1 -1
  102. package/bundled/enums.cjs +1 -1
  103. package/bundled/extractOptions.cjs +1 -1
  104. package/bundled/extractOptions.js +2 -2
  105. package/bundled/feedback-message.cjs +8 -0
  106. package/bundled/feedback-message.js +41 -0
  107. package/bundled/floating-ui.dom.cjs +1 -1
  108. package/bundled/floating-ui.dom.js +163 -197
  109. package/bundled/form-associated.cjs +1 -1
  110. package/bundled/form-associated.js +3 -4
  111. package/bundled/form-element.cjs +1 -1
  112. package/bundled/host-semantics.cjs +1 -1
  113. package/bundled/icon.cjs +1 -0
  114. package/bundled/icon.js +34 -0
  115. package/bundled/kbd-shortcut.cjs +1 -1
  116. package/bundled/key-codes.cjs +1 -1
  117. package/bundled/linkable.cjs +2 -2
  118. package/bundled/listbox.cjs +1 -1
  119. package/bundled/listbox.js +8 -7
  120. package/bundled/localized.cjs +1 -1
  121. package/bundled/localized.js +33 -32
  122. package/bundled/mixins.cjs +9 -16
  123. package/bundled/mixins.js +23 -56
  124. package/bundled/numberConverter.cjs +2 -2
  125. package/bundled/numberConverter.js +1 -1
  126. package/bundled/numbers.cjs +1 -1
  127. package/bundled/optgroup.cjs +1 -0
  128. package/bundled/optgroup.js +27 -0
  129. package/bundled/option.cjs +1 -0
  130. package/bundled/option.js +95 -0
  131. package/bundled/picker-field.template.cjs +2 -2
  132. package/bundled/picker-field.template.js +8 -8
  133. package/bundled/platform.cjs +1 -1
  134. package/bundled/playbackRates.cjs +1 -1
  135. package/bundled/ref.cjs +1 -1
  136. package/bundled/ref.js +1 -1
  137. package/bundled/render-in-light-dom.cjs +1 -1
  138. package/bundled/render-in-light-dom.js +1 -1
  139. package/bundled/repeat.cjs +1 -1
  140. package/bundled/repeat.js +16 -15
  141. package/bundled/scrollIntoView.cjs +1 -1
  142. package/bundled/scrollIntoView.js +1 -3
  143. package/bundled/single-date-picker.cjs +1 -1
  144. package/bundled/single-value-picker.cjs +1 -1
  145. package/bundled/single-value-picker.js +1 -1
  146. package/bundled/slider.template.cjs +12 -12
  147. package/bundled/slider.template.js +209 -32
  148. package/bundled/slottable-request.cjs +3 -3
  149. package/bundled/slottable-request.js +26 -17
  150. package/bundled/slotted.cjs +1 -1
  151. package/bundled/slotted.js +1 -1
  152. package/bundled/text-field.cjs +1 -1
  153. package/bundled/text-field.js +1 -1
  154. package/bundled/time-selection-picker.template.cjs +4 -4
  155. package/bundled/time-selection-picker.template.js +10 -7
  156. package/bundled/trapped-focus.cjs +1 -1
  157. package/bundled/utils.cjs +1 -1
  158. package/bundled/vivid-element.cjs +3 -3
  159. package/bundled/vivid-element.js +397 -358
  160. package/bundled/when.cjs +1 -1
  161. package/bundled/when.js +1 -1
  162. package/bundled/with-contextual-help.cjs +1 -1
  163. package/bundled/with-contextual-help.js +1 -1
  164. package/bundled/with-error-text.cjs +1 -1
  165. package/bundled/with-success-text.cjs +1 -1
  166. package/button/index.cjs +1 -1
  167. package/button/index.js +1 -1
  168. package/calendar/index.cjs +1 -1
  169. package/calendar/index.js +7 -7
  170. package/calendar-event/index.cjs +2 -2
  171. package/calendar-event/index.js +10 -8
  172. package/card/index.cjs +24 -22
  173. package/card/index.js +14 -8
  174. package/checkbox/index.cjs +1 -1
  175. package/color-picker/index.cjs +13 -13
  176. package/color-picker/index.js +22 -19
  177. package/combobox/index.cjs +9 -9
  178. package/combobox/index.js +46 -42
  179. package/contextual-help/index.cjs +1 -1
  180. package/contextual-help/index.js +1 -1
  181. package/country/index.cjs +1 -1
  182. package/country-group/index.cjs +1 -1
  183. package/country-group/index.js +8 -4
  184. package/custom-elements.json +4208 -3828
  185. package/data-grid/index.cjs +28 -28
  186. package/data-grid/index.js +92 -98
  187. package/date-picker/index.cjs +1 -1
  188. package/date-picker/index.js +10 -6
  189. package/date-range-picker/index.cjs +1 -1
  190. package/date-range-picker/index.js +13 -9
  191. package/date-time-picker/index.cjs +1 -1
  192. package/date-time-picker/index.js +11 -7
  193. package/dial-pad/index.cjs +24 -23
  194. package/dial-pad/index.js +17 -11
  195. package/dialog/index.cjs +14 -14
  196. package/dialog/index.js +12 -8
  197. package/divider/index.cjs +1 -1
  198. package/elevation/definition.cjs +1 -0
  199. package/elevation/definition.js +2 -2
  200. package/elevation/index.cjs +1 -1
  201. package/elevation/index.js +1 -1
  202. package/empty-state/index.cjs +4 -4
  203. package/empty-state/index.js +20 -7
  204. package/fab/index.cjs +3 -3
  205. package/fab/index.js +14 -6
  206. package/file-picker/index.cjs +11 -13
  207. package/file-picker/index.js +28 -24
  208. package/flag/index.cjs +1 -1
  209. package/flag/index.js +7 -3
  210. package/form-field/definition.cjs +5 -0
  211. package/form-field/definition.js +2 -0
  212. package/form-field/index.cjs +29 -0
  213. package/form-field/index.js +57 -0
  214. package/header/definition.cjs +1 -1
  215. package/header/definition.js +1 -1
  216. package/header/index.cjs +1 -1
  217. package/header/index.js +9 -5
  218. package/icon/definition.cjs +2 -1
  219. package/icon/definition.js +2 -1
  220. package/icon/index.cjs +1 -1
  221. package/icon/index.js +1 -1
  222. package/index.cjs +166 -154
  223. package/index.js +48 -42
  224. package/kbd-key/definition.cjs +1 -1
  225. package/kbd-key/definition.js +1 -1
  226. package/kbd-key/index.cjs +3 -3
  227. package/kbd-key/index.js +22 -13
  228. package/kbd-shortcut/definition.cjs +1 -1
  229. package/kbd-shortcut/definition.js +1 -1
  230. package/kbd-shortcut/index.cjs +1 -1
  231. package/kbd-shortcut/index.js +6 -6
  232. package/layout/definition.cjs +1 -1
  233. package/layout/definition.js +1 -1
  234. package/layout/index.cjs +1 -1
  235. package/layout/index.js +7 -3
  236. package/lib/accordion-item/accordion-item.d.ts +12 -6
  237. package/lib/action-group/action-group.d.ts +10 -5
  238. package/lib/alert/alert.d.ts +15 -18
  239. package/lib/avatar/avatar.d.ts +16 -7
  240. package/lib/badge/badge.d.ts +17 -7
  241. package/lib/banner/banner.d.ts +18 -20
  242. package/lib/button/button.d.ts +25 -16
  243. package/lib/calendar-event/calendar-event.d.ts +14 -7
  244. package/lib/checkbox/checkbox.d.ts +31 -28
  245. package/lib/combobox/combobox.d.ts +38 -33
  246. package/lib/components.d.ts +2 -0
  247. package/lib/data-grid/data-grid.options.d.ts +6 -1
  248. package/lib/dial-pad/dial-pad.d.ts +0 -1
  249. package/lib/dial-pad/locale.d.ts +1 -0
  250. package/lib/divider/divider.d.ts +9 -6
  251. package/lib/elevation/definition.d.ts +2 -0
  252. package/lib/empty-state/empty-state.d.ts +7 -2
  253. package/lib/fab/fab.d.ts +3 -2
  254. package/lib/form-field/definition.d.ts +4 -0
  255. package/lib/form-field/form-field.d.ts +6 -0
  256. package/lib/form-field/form-field.template.d.ts +3 -0
  257. package/lib/kbd-key/kbd-key.d.ts +7 -2
  258. package/lib/listbox/definition.d.ts +3 -0
  259. package/lib/listbox/listbox.d.ts +1303 -0
  260. package/lib/listbox/listbox.template.d.ts +3 -0
  261. package/lib/menu/menu.d.ts +0 -1
  262. package/lib/menu-item/menu-item.d.ts +17 -14
  263. package/lib/nav-disclosure/nav-disclosure.d.ts +18 -11
  264. package/lib/nav-item/nav-item.d.ts +19 -12
  265. package/lib/note/note.d.ts +10 -6
  266. package/lib/number-field/number-field.d.ts +45 -41
  267. package/lib/option/option.d.ts +13 -10
  268. package/lib/popup/definition.d.ts +2 -0
  269. package/lib/progress/progress.d.ts +10 -5
  270. package/lib/progress-ring/progress-ring.d.ts +9 -5
  271. package/lib/radio/radio.d.ts +18 -15
  272. package/lib/range-slider/range-slider.d.ts +19 -15
  273. package/lib/rich-text-editor/rich-text-editor.d.ts +9 -5
  274. package/lib/rich-text-editor/rte/features/base.d.ts +1 -0
  275. package/lib/rich-text-editor/rte/utils/default-textblock.d.ts +2 -2
  276. package/lib/rich-text-editor/rte/utils/ui.d.ts +2 -1
  277. package/lib/searchable-select/option-tag.d.ts +12 -7
  278. package/lib/searchable-select/searchable-select.d.ts +7 -2
  279. package/lib/select/select.d.ts +45 -40
  280. package/lib/selectable-box/selectable-box.d.ts +9 -5
  281. package/lib/slider/slider.d.ts +18 -14
  282. package/lib/split-button/split-button.d.ts +24 -15
  283. package/lib/status/status.d.ts +10 -7
  284. package/lib/switch/switch.d.ts +13 -9
  285. package/lib/tab/tab.d.ts +19 -14
  286. package/lib/tabs/tabs.d.ts +6 -3
  287. package/lib/tag/tag.d.ts +24 -15
  288. package/lib/tag-name-map.d.ts +3 -1
  289. package/lib/text-field/text-field.d.ts +47 -41
  290. package/lib/toggletip/toggletip.d.ts +1 -0
  291. package/lib/tooltip/tooltip.d.ts +1 -0
  292. package/lib/video-player/__tests__/video-fixtures.d.ts +3 -0
  293. package/listbox/definition.cjs +5 -0
  294. package/listbox/definition.js +2 -0
  295. package/listbox/index.cjs +13 -0
  296. package/listbox/index.js +554 -0
  297. package/locales/de-DE.cjs +34 -33
  298. package/locales/de-DE.js +34 -33
  299. package/locales/en-GB.cjs +34 -33
  300. package/locales/en-GB.js +34 -33
  301. package/locales/ja-JP.cjs +35 -33
  302. package/locales/ja-JP.js +35 -33
  303. package/locales/zh-CN.cjs +34 -33
  304. package/locales/zh-CN.js +34 -33
  305. package/menu/index.cjs +1 -1
  306. package/menu-item/index.cjs +1 -1
  307. package/nav/definition.cjs +1 -1
  308. package/nav/definition.js +1 -1
  309. package/nav/index.cjs +1 -1
  310. package/nav/index.js +6 -4
  311. package/nav-disclosure/definition.cjs +1 -1
  312. package/nav-disclosure/definition.js +1 -1
  313. package/nav-disclosure/index.cjs +5 -5
  314. package/nav-disclosure/index.js +15 -9
  315. package/nav-item/definition.cjs +1 -1
  316. package/nav-item/definition.js +1 -1
  317. package/nav-item/index.cjs +2 -2
  318. package/nav-item/index.js +15 -10
  319. package/note/definition.cjs +1 -1
  320. package/note/definition.js +1 -1
  321. package/note/index.cjs +6 -4
  322. package/note/index.js +22 -9
  323. package/number-field/definition.cjs +1 -1
  324. package/number-field/definition.js +1 -1
  325. package/number-field/index.cjs +11 -11
  326. package/number-field/index.js +41 -36
  327. package/optgroup/definition.cjs +2 -1
  328. package/optgroup/definition.js +2 -1
  329. package/optgroup/index.cjs +1 -1
  330. package/option/definition.cjs +2 -1
  331. package/option/definition.js +2 -1
  332. package/option/index.cjs +1 -1
  333. package/package.json +32 -38
  334. package/pagination/definition.cjs +1 -1
  335. package/pagination/definition.js +1 -1
  336. package/pagination/index.cjs +1 -1
  337. package/pagination/index.js +9 -9
  338. package/platform-switch/definition.cjs +1 -1
  339. package/platform-switch/definition.js +1 -1
  340. package/platform-switch/index.cjs +1 -1
  341. package/platform-switch/index.js +6 -2
  342. package/popover/definition.cjs +1 -1
  343. package/popover/definition.js +1 -1
  344. package/popover/index.cjs +5 -5
  345. package/popover/index.js +46 -37
  346. package/popup/definition.cjs +1 -0
  347. package/popup/definition.js +2 -2
  348. package/popup/index.cjs +1 -1
  349. package/popup/index.js +1 -1
  350. package/progress/definition.cjs +1 -1
  351. package/progress/definition.js +1 -1
  352. package/progress/index.cjs +7 -7
  353. package/progress/index.js +21 -11
  354. package/progress-ring/index.cjs +1 -1
  355. package/progress-ring/index.js +1 -1
  356. package/radio/definition.cjs +1 -1
  357. package/radio/definition.js +1 -1
  358. package/radio/index.cjs +1 -1
  359. package/radio-group/definition.cjs +1 -1
  360. package/radio-group/definition.js +1 -1
  361. package/radio-group/index.cjs +2 -2
  362. package/radio-group/index.js +14 -9
  363. package/range-slider/definition.cjs +1 -1
  364. package/range-slider/definition.js +1 -1
  365. package/range-slider/index.cjs +8 -8
  366. package/range-slider/index.js +31 -32
  367. package/rich-text-editor/definition.cjs +1 -1
  368. package/rich-text-editor/definition.js +1 -1
  369. package/rich-text-editor/index.cjs +17 -14
  370. package/rich-text-editor/index.js +1955 -1721
  371. package/rich-text-view/definition.cjs +1 -1
  372. package/rich-text-view/definition.js +1 -1
  373. package/rich-text-view/index.cjs +1 -1
  374. package/rich-text-view/index.js +6 -4
  375. package/searchable-select/definition.cjs +1 -1
  376. package/searchable-select/definition.js +1 -1
  377. package/searchable-select/index.cjs +26 -26
  378. package/searchable-select/index.js +97 -90
  379. package/select/definition.cjs +1 -1
  380. package/select/definition.js +1 -1
  381. package/select/index.cjs +1 -1
  382. package/selectable-box/definition.cjs +1 -1
  383. package/selectable-box/definition.js +1 -1
  384. package/selectable-box/index.cjs +8 -8
  385. package/selectable-box/index.js +24 -20
  386. package/shared/listbox/commands.d.ts +17 -0
  387. package/shared/listbox/move.d.ts +6 -0
  388. package/shared/listbox/options.d.ts +12 -0
  389. package/shared/listbox/selection.d.ts +28 -0
  390. package/shared/listbox/state.d.ts +26 -0
  391. package/shared/listbox/typeahead.d.ts +8 -0
  392. package/shared/listbox/with-options-filter.d.ts +440 -0
  393. package/shared/listbox/with-options.d.ts +862 -0
  394. package/shared/patterns/anchored.d.ts +2 -0
  395. package/shared/styles/appearance.d.ts +2 -0
  396. package/shared/styles/connotation.d.ts +2 -0
  397. package/shared/styles/connotationOverrides.d.ts +1 -0
  398. package/shared/utils/component-enum.d.ts +7 -0
  399. package/side-drawer/definition.cjs +1 -1
  400. package/side-drawer/definition.js +1 -1
  401. package/side-drawer/index.cjs +1 -1
  402. package/side-drawer/index.js +10 -7
  403. package/simple-color-picker/definition.cjs +1 -1
  404. package/simple-color-picker/definition.js +1 -1
  405. package/simple-color-picker/index.cjs +6 -6
  406. package/simple-color-picker/index.js +22 -21
  407. package/slider/definition.cjs +2 -1
  408. package/slider/definition.js +2 -1
  409. package/slider/index.cjs +1 -1
  410. package/slider/index.js +1 -1
  411. package/split-button/definition.cjs +1 -1
  412. package/split-button/definition.js +1 -1
  413. package/split-button/index.cjs +9 -7
  414. package/split-button/index.js +58 -37
  415. package/status/definition.cjs +1 -1
  416. package/status/definition.js +1 -1
  417. package/status/index.cjs +5 -5
  418. package/status/index.js +22 -13
  419. package/switch/definition.cjs +1 -1
  420. package/switch/definition.js +1 -1
  421. package/switch/index.cjs +3 -3
  422. package/switch/index.js +22 -11
  423. package/tab/definition.cjs +1 -1
  424. package/tab/definition.js +1 -1
  425. package/tab/index.cjs +1 -1
  426. package/tab/index.js +1 -1
  427. package/tab-panel/definition.cjs +1 -1
  428. package/tab-panel/definition.js +1 -1
  429. package/tab-panel/index.cjs +1 -1
  430. package/tab-panel/index.js +1 -1
  431. package/table/definition.cjs +1 -1
  432. package/table/definition.js +1 -1
  433. package/table/index.cjs +16 -14
  434. package/table/index.js +14 -11
  435. package/tabs/definition.cjs +1 -1
  436. package/tabs/definition.js +1 -1
  437. package/tabs/index.cjs +4 -4
  438. package/tabs/index.js +32 -30
  439. package/tag/definition.cjs +1 -1
  440. package/tag/definition.js +1 -1
  441. package/tag/index.cjs +11 -11
  442. package/tag/index.js +31 -14
  443. package/tag-group/definition.cjs +1 -1
  444. package/tag-group/definition.js +1 -1
  445. package/tag-group/index.cjs +1 -1
  446. package/tag-group/index.js +6 -4
  447. package/text-area/definition.cjs +1 -1
  448. package/text-area/definition.js +1 -1
  449. package/text-area/index.cjs +5 -5
  450. package/text-area/index.js +18 -15
  451. package/text-field/index.cjs +1 -1
  452. package/text-field/index.js +1 -1
  453. package/time-picker/definition.cjs +1 -1
  454. package/time-picker/definition.js +1 -1
  455. package/time-picker/index.cjs +1 -1
  456. package/time-picker/index.js +9 -6
  457. package/toggletip/index.cjs +1 -1
  458. package/toggletip/index.js +1 -1
  459. package/tooltip/index.cjs +1 -1
  460. package/tooltip/index.js +1 -1
  461. package/tree-item/definition.cjs +1 -1
  462. package/tree-item/definition.js +1 -1
  463. package/tree-item/index.cjs +1 -1
  464. package/tree-item/index.js +1 -1
  465. package/tree-view/definition.cjs +1 -1
  466. package/tree-view/definition.js +1 -1
  467. package/tree-view/index.cjs +1 -1
  468. package/tree-view/index.js +7 -5
  469. package/unbundled/affix.cjs +2 -3
  470. package/unbundled/affix.js +1 -1
  471. package/unbundled/anchored.cjs +39 -1
  472. package/unbundled/anchored.js +28 -1
  473. package/unbundled/aria-binding-directive.cjs +2 -2
  474. package/unbundled/aria-binding-directive.js +2 -1
  475. package/unbundled/base-color-picker.cjs +0 -1
  476. package/unbundled/base-progress.cjs +1 -2
  477. package/unbundled/base-progress.js +1 -1
  478. package/unbundled/breadcrumb-item.cjs +0 -1
  479. package/unbundled/button.cjs +2 -3
  480. package/unbundled/button.js +2 -2
  481. package/unbundled/calendar-event.cjs +29 -1
  482. package/unbundled/calendar-event.js +18 -1
  483. package/unbundled/calendar-picker.template.cjs +109 -91
  484. package/unbundled/calendar-picker.template.js +109 -90
  485. package/unbundled/char-count.cjs +0 -1
  486. package/unbundled/component-enum.cjs +18 -0
  487. package/unbundled/component-enum.js +13 -0
  488. package/unbundled/data-grid.options.cjs +8 -0
  489. package/unbundled/data-grid.options.js +3 -1
  490. package/unbundled/decorate.cjs +1 -1
  491. package/unbundled/decorate.js +1 -1
  492. package/unbundled/definition.cjs +3 -67
  493. package/unbundled/definition.js +5 -62
  494. package/unbundled/definition10.cjs +2 -343
  495. package/unbundled/definition10.js +4 -338
  496. package/unbundled/definition11.cjs +10 -10
  497. package/unbundled/definition11.js +9 -8
  498. package/unbundled/definition12.cjs +7 -6
  499. package/unbundled/definition12.js +8 -6
  500. package/unbundled/definition13.cjs +2 -2
  501. package/unbundled/definition13.js +2 -1
  502. package/unbundled/definition14.cjs +13 -4
  503. package/unbundled/definition14.js +13 -3
  504. package/unbundled/definition15.cjs +26 -5
  505. package/unbundled/definition15.js +26 -4
  506. package/unbundled/definition16.cjs +20 -14
  507. package/unbundled/definition16.js +20 -13
  508. package/unbundled/definition17.cjs +9 -5
  509. package/unbundled/definition17.js +9 -4
  510. package/unbundled/definition18.cjs +4 -3
  511. package/unbundled/definition18.js +4 -2
  512. package/unbundled/definition19.cjs +2 -3
  513. package/unbundled/definition19.js +9 -8
  514. package/unbundled/definition2.cjs +15 -5
  515. package/unbundled/definition2.js +16 -5
  516. package/unbundled/definition20.cjs +1 -2
  517. package/unbundled/definition20.js +7 -6
  518. package/unbundled/definition21.cjs +6 -4
  519. package/unbundled/definition21.js +6 -3
  520. package/unbundled/definition22.cjs +0 -1
  521. package/unbundled/definition23.cjs +14 -7
  522. package/unbundled/definition23.js +13 -5
  523. package/unbundled/definition24.cjs +10 -8
  524. package/unbundled/definition24.js +11 -8
  525. package/unbundled/definition25.cjs +4 -4
  526. package/unbundled/definition25.js +4 -3
  527. package/unbundled/definition26.cjs +13 -8
  528. package/unbundled/definition26.js +12 -6
  529. package/unbundled/definition27.cjs +41 -7
  530. package/unbundled/definition27.js +42 -7
  531. package/unbundled/definition28.cjs +7 -6
  532. package/unbundled/definition28.js +6 -4
  533. package/unbundled/definition29.cjs +5 -169
  534. package/unbundled/definition29.js +11 -162
  535. package/unbundled/definition3.cjs +5 -6
  536. package/unbundled/definition3.js +5 -5
  537. package/unbundled/definition30.cjs +2 -64
  538. package/unbundled/definition30.js +5 -54
  539. package/unbundled/definition31.cjs +20 -16
  540. package/unbundled/definition31.js +19 -14
  541. package/unbundled/definition32.cjs +2 -2
  542. package/unbundled/definition32.js +2 -1
  543. package/unbundled/definition33.cjs +0 -1
  544. package/unbundled/definition34.cjs +0 -1
  545. package/unbundled/definition35.cjs +41 -52
  546. package/unbundled/definition35.js +42 -52
  547. package/unbundled/definition36.cjs +2 -3
  548. package/unbundled/definition36.js +9 -8
  549. package/unbundled/definition37.cjs +1 -2
  550. package/unbundled/definition37.js +1 -1
  551. package/unbundled/definition38.cjs +0 -1
  552. package/unbundled/definition39.cjs +1 -2
  553. package/unbundled/definition39.js +1 -1
  554. package/unbundled/definition4.cjs +4 -3
  555. package/unbundled/definition4.js +11 -6
  556. package/unbundled/definition40.cjs +9 -6
  557. package/unbundled/definition40.js +9 -5
  558. package/unbundled/definition41.cjs +11 -7
  559. package/unbundled/definition41.js +11 -6
  560. package/unbundled/definition42.cjs +16 -7
  561. package/unbundled/definition42.js +16 -6
  562. package/unbundled/definition43.cjs +7 -3
  563. package/unbundled/definition43.js +7 -2
  564. package/unbundled/definition44.cjs +15 -13
  565. package/unbundled/definition44.js +14 -11
  566. package/unbundled/definition45.cjs +73 -52
  567. package/unbundled/definition45.js +69 -47
  568. package/unbundled/definition46.cjs +53 -46
  569. package/unbundled/definition46.js +49 -41
  570. package/unbundled/definition47.cjs +40 -165
  571. package/unbundled/definition47.js +36 -160
  572. package/unbundled/definition48.cjs +177 -32
  573. package/unbundled/definition48.js +174 -22
  574. package/unbundled/definition49.cjs +30 -90
  575. package/unbundled/definition49.js +27 -86
  576. package/unbundled/definition5.cjs +9 -3
  577. package/unbundled/definition5.js +15 -7
  578. package/unbundled/definition50.cjs +617 -48
  579. package/unbundled/definition50.js +615 -47
  580. package/unbundled/definition51.cjs +93 -22
  581. package/unbundled/definition51.js +91 -16
  582. package/unbundled/definition52.cjs +52 -33
  583. package/unbundled/definition52.js +49 -29
  584. package/unbundled/definition53.cjs +22 -324
  585. package/unbundled/definition53.js +18 -319
  586. package/unbundled/definition54.cjs +44 -213
  587. package/unbundled/definition54.js +40 -208
  588. package/unbundled/definition55.cjs +321 -42
  589. package/unbundled/definition55.js +317 -37
  590. package/unbundled/definition56.cjs +199 -254
  591. package/unbundled/definition56.js +193 -247
  592. package/unbundled/definition57.cjs +45 -54
  593. package/unbundled/definition57.js +42 -49
  594. package/unbundled/definition58.cjs +271 -134
  595. package/unbundled/definition58.js +269 -128
  596. package/unbundled/definition59.cjs +59 -246
  597. package/unbundled/definition59.js +58 -244
  598. package/unbundled/definition6.cjs +22 -7
  599. package/unbundled/definition6.js +22 -6
  600. package/unbundled/definition60.cjs +129 -445
  601. package/unbundled/definition60.js +127 -442
  602. package/unbundled/definition61.cjs +230 -3746
  603. package/unbundled/definition61.js +224 -3576
  604. package/unbundled/definition62.cjs +428 -742
  605. package/unbundled/definition62.js +426 -739
  606. package/unbundled/definition63.cjs +3776 -103
  607. package/unbundled/definition63.js +3607 -97
  608. package/unbundled/definition64.cjs +693 -906
  609. package/unbundled/definition64.js +685 -894
  610. package/unbundled/definition65.cjs +104 -109
  611. package/unbundled/definition65.js +100 -104
  612. package/unbundled/definition66.cjs +1004 -66
  613. package/unbundled/definition66.js +1003 -58
  614. package/unbundled/definition67.cjs +107 -156
  615. package/unbundled/definition67.js +103 -151
  616. package/unbundled/definition68.cjs +71 -123
  617. package/unbundled/definition68.js +67 -118
  618. package/unbundled/definition69.cjs +163 -52
  619. package/unbundled/definition69.js +159 -47
  620. package/unbundled/definition7.cjs +0 -1
  621. package/unbundled/definition7.js +10 -4
  622. package/unbundled/definition70.cjs +146 -76
  623. package/unbundled/definition70.js +145 -71
  624. package/unbundled/definition71.cjs +66 -22
  625. package/unbundled/definition71.js +63 -15
  626. package/unbundled/definition72.cjs +88 -76
  627. package/unbundled/definition72.js +85 -72
  628. package/unbundled/definition73.cjs +20 -306
  629. package/unbundled/definition73.js +16 -229
  630. package/unbundled/definition74.cjs +77 -316
  631. package/unbundled/definition74.js +76 -307
  632. package/unbundled/definition75.cjs +310 -31
  633. package/unbundled/definition75.js +233 -24
  634. package/unbundled/definition76.cjs +316 -110
  635. package/unbundled/definition76.js +307 -106
  636. package/unbundled/definition77.cjs +26 -251
  637. package/unbundled/definition77.js +22 -246
  638. package/unbundled/definition78.cjs +147 -27
  639. package/unbundled/definition78.js +139 -25
  640. package/unbundled/definition79.cjs +230 -117
  641. package/unbundled/definition79.js +227 -107
  642. package/unbundled/definition8.cjs +17 -10
  643. package/unbundled/definition8.js +17 -9
  644. package/unbundled/definition80.cjs +28 -203
  645. package/unbundled/definition80.js +26 -193
  646. package/unbundled/definition81.cjs +125 -477
  647. package/unbundled/definition81.js +118 -473
  648. package/unbundled/definition82.cjs +220 -0
  649. package/unbundled/definition82.js +203 -0
  650. package/unbundled/definition83.cjs +517 -0
  651. package/unbundled/definition83.js +498 -0
  652. package/unbundled/definition9.cjs +4 -3
  653. package/unbundled/definition9.js +4 -2
  654. package/unbundled/delegates-aria.cjs +4 -2
  655. package/unbundled/delegates-aria.js +4 -2
  656. package/unbundled/divider.cjs +8 -3
  657. package/unbundled/divider.js +3 -3
  658. package/unbundled/en-US.cjs +34 -33
  659. package/unbundled/en-US.js +34 -33
  660. package/unbundled/extractOptions.cjs +5 -5
  661. package/unbundled/extractOptions.js +2 -2
  662. package/unbundled/feedback-message.cjs +59 -0
  663. package/unbundled/feedback-message.js +48 -0
  664. package/unbundled/form-associated.cjs +1 -4
  665. package/unbundled/form-associated.js +1 -3
  666. package/unbundled/form-element.cjs +0 -1
  667. package/unbundled/icon.cjs +66 -0
  668. package/unbundled/icon.js +61 -0
  669. package/unbundled/kbd-shortcut.cjs +0 -1
  670. package/unbundled/linkable.cjs +1 -2
  671. package/unbundled/linkable.js +1 -1
  672. package/unbundled/listbox.cjs +8 -5
  673. package/unbundled/listbox.js +7 -3
  674. package/unbundled/localized.cjs +0 -1
  675. package/unbundled/mixins.cjs +3 -53
  676. package/unbundled/mixins.js +3 -46
  677. package/unbundled/numberConverter.cjs +8 -3
  678. package/unbundled/numberConverter.js +8 -3
  679. package/unbundled/optgroup.cjs +65 -0
  680. package/unbundled/optgroup.js +54 -0
  681. package/unbundled/option.cjs +183 -0
  682. package/unbundled/option.js +166 -0
  683. package/unbundled/picker-field.template.cjs +1 -2
  684. package/unbundled/picker-field.template.js +1 -1
  685. package/unbundled/randomId.cjs +0 -1
  686. package/unbundled/{chunk.cjs → rolldown-runtime.cjs} +1 -1
  687. package/unbundled/scrollIntoView.cjs +0 -1
  688. package/unbundled/scrollIntoView.js +0 -1
  689. package/unbundled/slider.template.cjs +340 -2
  690. package/unbundled/slider.template.js +338 -5
  691. package/unbundled/text-field.cjs +1 -1
  692. package/unbundled/text-field.js +1 -1
  693. package/unbundled/time-selection-picker.template.cjs +3 -4
  694. package/unbundled/time-selection-picker.template.js +3 -3
  695. package/unbundled/vivid-element.cjs +63 -4
  696. package/unbundled/vivid-element.js +63 -3
  697. package/unbundled/with-contextual-help.cjs +0 -1
  698. package/unbundled/with-error-text.cjs +0 -1
  699. package/unbundled/with-success-text.cjs +0 -1
  700. package/video-player/definition.cjs +1 -1
  701. package/video-player/definition.js +1 -1
  702. package/video-player/index.cjs +31 -31
  703. package/video-player/index.js +2094 -2085
  704. package/visually-hidden/index.cjs +1 -1
  705. package/vivid.api.json +807 -1341
  706. package/lib/action-group/variations.browser-spec.d.ts +0 -1
  707. package/lib/alert/variations.browser-spec.d.ts +0 -1
  708. package/lib/audio-player/variations.browser-spec.d.ts +0 -1
  709. package/lib/avatar/variations.browser-spec.d.ts +0 -1
  710. package/lib/badge/variations.browser-spec.d.ts +0 -1
  711. package/lib/banner/variations.browser-spec.d.ts +0 -1
  712. package/lib/breadcrumb-item/variations.browser-spec.d.ts +0 -1
  713. package/lib/button/variations.browser-spec.d.ts +0 -1
  714. package/lib/calendar/variations.browser-spec.d.ts +0 -1
  715. package/lib/calendar-event/variations.browser-spec.d.ts +0 -1
  716. package/lib/card/variations.browser-spec.d.ts +0 -1
  717. package/lib/checkbox/variations.browser-spec.d.ts +0 -1
  718. package/lib/color-picker/variations.browser-spec.d.ts +0 -1
  719. package/lib/combobox/variations.browser-spec.d.ts +0 -1
  720. package/lib/contextual-help/variations.browser-spec.d.ts +0 -1
  721. package/lib/country/variations.browser-spec.d.ts +0 -1
  722. package/lib/data-grid/variations.browser-spec.d.ts +0 -1
  723. package/lib/date-picker/variations.browser-spec.d.ts +0 -1
  724. package/lib/date-range-picker/variations.browser-spec.d.ts +0 -1
  725. package/lib/date-time-picker/variations.browser-spec.d.ts +0 -1
  726. package/lib/dial-pad/variations.browser-spec.d.ts +0 -1
  727. package/lib/dialog/variations.browser-spec.d.ts +0 -1
  728. package/lib/divider/variations.browser-spec.d.ts +0 -1
  729. package/lib/empty-state/variations.browser-spec.d.ts +0 -1
  730. package/lib/fab/variations.browser-spec.d.ts +0 -1
  731. package/lib/file-picker/variations.browser-spec.d.ts +0 -1
  732. package/lib/flag/variations.browser-spec.d.ts +0 -1
  733. package/lib/header/variations.browser-spec.d.ts +0 -1
  734. package/lib/icon/variations.browser-spec.d.ts +0 -1
  735. package/lib/kbd-key/variations.browser-spec.d.ts +0 -1
  736. package/lib/kbd-shortcut/variations.browser-spec.d.ts +0 -1
  737. package/lib/layout/variations.browser-spec.d.ts +0 -1
  738. package/lib/menu/variations.browser-spec.d.ts +0 -1
  739. package/lib/menu-item/variations.browser-spec.d.ts +0 -1
  740. package/lib/nav/variations.browser-spec.d.ts +0 -1
  741. package/lib/nav-disclosure/variations.browser-spec.d.ts +0 -1
  742. package/lib/nav-item/variations.browser-spec.d.ts +0 -1
  743. package/lib/note/variations.browser-spec.d.ts +0 -1
  744. package/lib/number-field/variations.browser-spec.d.ts +0 -1
  745. package/lib/optgroup/variations.browser-spec.d.ts +0 -1
  746. package/lib/option/variations.browser-spec.d.ts +0 -1
  747. package/lib/pagination/variations.browser-spec.d.ts +0 -1
  748. package/lib/popover/variations.browser-spec.d.ts +0 -1
  749. package/lib/progress/variations.browser-spec.d.ts +0 -1
  750. package/lib/progress-ring/variations.browser-spec.d.ts +0 -1
  751. package/lib/radio/variations.browser-spec.d.ts +0 -1
  752. package/lib/radio-group/variations.browser-spec.d.ts +0 -1
  753. package/lib/range-slider/variations.browser-spec.d.ts +0 -1
  754. package/lib/rich-text-editor/variations.browser-spec.d.ts +0 -1
  755. package/lib/rich-text-view/variations.browser-spec.d.ts +0 -1
  756. package/lib/searchable-select/variations.browser-spec.d.ts +0 -1
  757. package/lib/select/variations.browser-spec.d.ts +0 -1
  758. package/lib/selectable-box/variations.browser-spec.d.ts +0 -1
  759. package/lib/side-drawer/variations.browser-spec.d.ts +0 -1
  760. package/lib/simple-color-picker/variations.browser-spec.d.ts +0 -1
  761. package/lib/slider/variations.browser-spec.d.ts +0 -1
  762. package/lib/split-button/variations.browser-spec.d.ts +0 -1
  763. package/lib/status/variations.browser-spec.d.ts +0 -1
  764. package/lib/switch/variations.browser-spec.d.ts +0 -1
  765. package/lib/table/variations.browser-spec.d.ts +0 -1
  766. package/lib/tabs/variations.browser-spec.d.ts +0 -1
  767. package/lib/tag/variations.browser-spec.d.ts +0 -1
  768. package/lib/text-area/variations.browser-spec.d.ts +0 -1
  769. package/lib/text-field/variations.browser-spec.d.ts +0 -1
  770. package/lib/time-picker/variations.browser-spec.d.ts +0 -1
  771. package/lib/toggletip/variations.browser-spec.d.ts +0 -1
  772. package/lib/tooltip/variations.browser-spec.d.ts +0 -1
  773. package/lib/tree-item/variations.browser-spec.d.ts +0 -1
  774. package/lib/video-player/variations.browser-spec.d.ts +0 -1
  775. /package/lib/{accordion-item/variations.browser-spec.d.ts → form-field/index.d.ts} +0 -0
  776. /package/lib/{accordion/variations.browser-spec.d.ts → listbox/index.d.ts} +0 -0
  777. /package/unbundled/{chunk.js → rolldown-runtime.js} +0 -0
@@ -1,813 +1,499 @@
1
- require("./chunk.cjs");
2
1
  const require_vivid_element = require("./vivid-element.cjs");
3
- const require_definition = require("./definition.cjs");
4
2
  const require_decorate = require("./decorate.cjs");
5
- const require_affix = require("./affix.cjs");
3
+ const require_component_enum = require("./component-enum.cjs");
6
4
  const require_form_associated = require("./form-associated.cjs");
7
5
  const require_localized = require("./localized.cjs");
8
- const require_definition$1 = require("./definition6.cjs");
9
- const require_dialog = require("./dialog.cjs");
10
- const require_definition$2 = require("./definition9.cjs");
11
- const require_host_semantics = require("./host-semantics.cjs");
12
- const require_mixins = require("./mixins.cjs");
6
+ const require_definition = require("./definition9.cjs");
7
+ const require_key_codes = require("./key-codes.cjs");
8
+ const require_slider_template = require("./slider.template.cjs");
13
9
  const require_form_element = require("./form-element.cjs");
14
- const require_with_error_text = require("./with-error-text.cjs");
15
- const require_with_success_text = require("./with-success-text.cjs");
16
- const require_with_contextual_help = require("./with-contextual-help.cjs");
17
- const require_definition$3 = require("./definition29.cjs");
18
- const require_definition$4 = require("./definition30.cjs");
19
- const require_listbox = require("./listbox.cjs");
20
10
  let _microsoft_fast_element = require("@microsoft/fast-element");
21
11
  let _microsoft_fast_web_utilities = require("@microsoft/fast-web-utilities");
22
- //#region src/lib/select/select.scss?inline
23
- var select_default = ".label-wrapper{align-items:center;gap:var(--label-wrapper-gap,4px);flex-direction:row;display:flex}.label-wrapper[hidden]{display:none}.label:not(slot),.label::slotted(label){flex:0 auto}.chevron{font:var(--vvd-typography-base-extended);flex-shrink:0;display:flex;transform:rotate(0)}@media (prefers-reduced-motion:no-preference){.chevron{transition:transform .2s}}:host([data-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:host(:focus-visible){outline:none}:host{--_low-ink-color:var(--vvd-color-neutral-600);--focus-stroke-gap-color:transparent;flex-direction:column;gap:4px;display:inline-flex}:host([disabled]){--_low-ink-color:var(--vvd-color-neutral-600);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-600);--_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-600);--_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));border-radius:var(--_select-control-border-radius);block-size:var(--_select-block-size);padding-inline:var(--_select-padding-inline);--_select-icon-size:calc(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(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) / 2.5);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);justify-content:space-between;align-items:center;gap:8px;transition:box-shadow .2s,background-color .2s;display:flex}.control.size-condensed{--_select-icon-size:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) / 2.5);--_select-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 8));--_select-padding-inline:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16)) / 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{max-height:var(--select-height,408px);flex-direction:column;gap:2px;padding:4px;display:flex;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{white-space:nowrap;flex-grow:1;align-items:center;column-gap:12px;display:flex;overflow:hidden}.selected-value .text{text-overflow:ellipsis;max-inline-size:100%;overflow:hidden}.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([multiple]),:host(:not(:focus-visible)){--_suppressable-focus-shadow:none;--_suppressable-focus-outline:none;--_suppressable-focus-outline-offset:0}:host([multiple]) .clear-button{margin-inline-start:auto}:host([multiple][clearable]) .label-wrapper{min-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16))}";
12
+ //#region src/lib/range-slider/range-slider.scss?inline
13
+ var range_slider_default = ":host{display:inline-block}:host(:not([orientation=vertical])){inline-size:100%}:host([orientation=vertical]){block-size:100%;min-block-size:calc(var(--_thumb-interaction-indicator-size) * 5)}:host([disabled]){cursor:not-allowed}.control{--_thumb-size:12px;--_thumb-interaction-indicator-size:36px;--_track-start-inset-inline-start:0;--_track-start-inset-block-start:0;cursor:pointer;user-select:none;outline:none}.control .positioning-region{position:relative}.control .track{background:var(--_track-background-color);border-radius:4px;position:absolute}.control .track-start{border-radius:inherit;background:var(--_track-start-background-color);block-size:100%;position:absolute;inset-inline-start:var(--_track-start-inset-inline-start)}.control.horizontal{block-size:var(--_thumb-interaction-indicator-size);inline-size:calc(100% - var(--_thumb-size));min-inline-size:var(--_thumb-size);margin-inline-start:calc(var(--_thumb-size) / 2)}.control.horizontal .track{top:calc((var(--_thumb-interaction-indicator-size) - 2px) / 2);block-size:2px;left:0;right:0}:host([markers]) .control.horizontal .track-start{--_track-start-inset-inline-start:1px;border-top-left-radius:0;border-bottom-left-radius:0}.control.horizontal .track .mark{block-size:6px;inline-size:100%;position:absolute;inset-block-start:-2px;inset-inline-start:0}.control.vertical{margin-top:calc(var(--_thumb-interaction-indicator-size) / 2);block-size:calc(100% - var(--_thumb-interaction-indicator-size));inline-size:var(--_thumb-interaction-indicator-size);min-block-size:var(--_thumb-interaction-indicator-size)}.control.vertical .positioning-region{block-size:100%}.control.vertical .track{left:calc((var(--_thumb-interaction-indicator-size) - 2px) / 2);block-size:100%;inline-size:2px}.control.vertical .track .mark{block-size:100%;inline-size:6px;position:absolute;inset-block-start:0;inset-inline-start:-2px}.control.vertical .track-start{block-size:auto;inline-size:100%;inset-block-start:var(--_track-start-inset-block-start)}:host([markers]) .control.vertical .track-start{--_track-start-inset-block-start:1px;border-radius:0}.control.disabled{--_track-background-color:var(--vvd-color-neutral-100);--_track-start-background-color:var(--vvd-color-neutral-300);pointer-events:none}.control:not(.disabled){--_track-background-color:var(--vvd-color-neutral-300);--_track-start-background-color:var(--_appearance-color-fill)}.control:not(.disabled) .mark{color:var(--vvd-color-neutral-950)}.control.disabled .mark{color:var(--_track-start-background-color)}.thumb-container{block-size:var(--_thumb-interaction-indicator-size);cursor:inherit;inline-size:var(--_thumb-interaction-indicator-size);touch-action:none;border-radius:50%;outline:none;position:absolute}.thumb-container.focus-visible{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;--_thumb-interaction-indicator-alpha:.05;border-radius:50%}.control.horizontal .thumb-container{transform:translateX(calc(var(--_thumb-interaction-indicator-size) / 2))}.control.vertical .thumb-container{transform:translateY(calc(var(--_thumb-interaction-indicator-size) / 2))}@media (hover:hover){.control:not(.disabled) .thumb-container:hover{--_thumb-interaction-indicator-alpha:.12}}.control:not(.disabled) .thumb-container:active{--_thumb-interaction-indicator-alpha:.25}.thumb-container:before{border-radius:inherit;background-color:var(--_track-start-background-color);block-size:var(--_thumb-interaction-indicator-size);content:\"\";inline-size:var(--_thumb-interaction-indicator-size);opacity:var(--_thumb-interaction-indicator-alpha,0);display:block;position:absolute}@media (prefers-reduced-motion:no-preference){.thumb-container:before{transition:opacity .2s ease-out}}.thumb-container:after{border-radius:inherit;background-color:var(--_track-start-background-color);block-size:var(--_thumb-size);content:\"\";inline-size:var(--_thumb-size);inset:calc((var(--_thumb-interaction-indicator-size) - var(--_thumb-size)) / 2);display:block;position:absolute}.popup{pointer-events:none}.tooltip{width:auto;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base-bold);padding:8px 12px}:host([internal-part]) .thumb-container{opacity:0}@media (prefers-reduced-motion:no-preference){:host([internal-part]) .thumb-container{transition:opacity .2s}}:host([internal-part]) .control.horizontal .track{block-size:4px;top:16px;overflow:hidden}:host([internal-part]) .control:focus .thumb-container{opacity:1}@media (hover:hover){:host([internal-part]) .control:hover .thumb-container{opacity:1}}.control,:host([markers]) .control.horizontal .track-start,:host([markers]) .control.vertical .track-start{--_track-start-inset-inline-start:auto;--_track-start-inset-block-start:auto}";
24
14
  //#endregion
25
- //#region src/lib/select/select.ts
15
+ //#region src/lib/range-slider/range-slider.ts
16
+ var rangeSliderConnotation = require_component_enum.componentEnum(["accent", "cta"], "accent");
17
+ var Direction = {
18
+ Increment: 1,
19
+ Decrement: -1
20
+ };
26
21
  /**
22
+ * Base class for range-slider
23
+ *
24
+ * @component range-slider
27
25
  * @public
28
- * @component select
29
- * @slot - Default slot.
30
- * @slot icon - The preferred way to add an icon to the select control.
31
- * @slot meta - Slot to add meta content to the select control.
32
- * @slot helper-text - Describes how to use the select. Alternative to the `helper-text` attribute.
33
- * @event {CustomEvent<undefined>} input - Fires a custom 'input' event when the value updates
34
- * @event {CustomEvent<HTMLElement>} change - Fires a custom 'change' event when the value updates
35
- * @vueModel modelValue value input,@lazy:change `event.currentTarget.value`
36
- * @testAction selectOptionByValue selectOptionByValue
37
- * @testAction selectOptionByText selectOptionByText
26
+ * @event {CustomEvent<undefined>} input:start - Event emitted when the start value changes
27
+ * @event {CustomEvent<undefined>} input:end - Event emitted when the end value changes
28
+ * @event {CustomEvent<undefined>} input - Event emitted when either the start or end value changes.
29
+ * @event {CustomEvent<undefined>} change - Event emitted when either the start or end value changes.
30
+ * @vueModel start start input:start `event.currentTarget.start`
31
+ * @vueModel end end input:end `event.currentTarget.end`
32
+ * @vueModel startAsNumber startAsNumber input:start `event.currentTarget.startAsNumber`
33
+ * @vueModel endAsNumber endAsNumber input:end `event.currentTarget.endAsNumber`
34
+ * @testSelector byLabel byLabel
35
+ * @testAction slideStartTo slideTo #track #startThumb
36
+ * @testAction slideEndTo slideTo #track #endThumb
37
+ * @testQuery range rangeAsNumber
38
+ * @testRef track shadow .control
39
+ * @testRef startThumb shadow #start-thumb
40
+ * @testRef endThumb shadow #end-thumb
38
41
  */
39
- var Select = class extends require_mixins.WithLightDOMFeedback(require_with_contextual_help.WithContextualHelp(require_with_error_text.WithErrorText(require_with_success_text.WithSuccessText(require_localized.Localized(require_form_element.FormElement(require_host_semantics.HostSemantics(require_affix.AffixIconWithTrailing(require_form_associated.FormAssociated(require_listbox.Listbox))))))))) {
42
+ var RangeSlider = class extends require_localized.Localized(require_form_element.FormElement(require_form_associated.FormAssociated(require_vivid_element.VividElement))) {
40
43
  constructor(..._args) {
41
44
  super(..._args);
42
- this.proxy = document.createElement("select");
43
- this.activeIndex = -1;
44
- this.rangeStartIndex = -1;
45
- this.open = false;
46
- this.listboxId = (0, _microsoft_fast_web_utilities.uniqueId)("listbox-");
47
- this.maxHeight = 0;
48
- this.fixedDropdown = false;
49
- this._feedbackWrapper = null;
50
- this._isResetting = false;
51
- this.clearable = false;
52
- this._isClearButtonFocused = false;
53
- }
54
- /**
55
- * Returns the last checked option.
56
- *
57
- * @internal
58
- */
59
- get activeOption() {
60
- return this.options[this.activeIndex];
61
- }
62
- /**
63
- * Returns the list of checked options.
64
- *
65
- * @internal
66
- */
67
- get checkedOptions() {
68
- return this.options.filter((o) => o.checked);
69
- }
70
- /**
71
- * Returns the index of the first selected option.
72
- *
73
- * @internal
74
- */
75
- get firstSelectedOptionIndex() {
76
- return this.options.indexOf(this.firstSelectedOption);
77
- }
78
- /**
79
- * Updates the `ariaActiveDescendant` property when the active index changes.
80
- *
81
- * @internal
82
- */
83
- activeIndexChanged(_, next) {
84
- this._activeDescendant = this.options[next]?.id ?? "";
85
- this.focusAndScrollOptionIntoView();
86
- }
87
- /**
88
- * Toggles the checked state for the currently active option.
89
- *
90
- * @remarks
91
- * Multiple-selection mode only.
92
- *
93
- * @internal
94
- */
95
- checkActiveIndex() {
96
- const activeItem = this.activeOption;
97
- /* v8 ignore else -- @preserve */
98
- if (activeItem) activeItem.checked = true;
99
- }
100
- /**
101
- * Sets the active index to the first option and marks it as checked.
102
- *
103
- * @remarks
104
- * Multi-selection mode only.
105
- *
106
- * @param preserveChecked - mark all options unchecked before changing the active index
107
- *
108
- * @internal
109
- */
110
- checkFirstOption(preserveChecked) {
111
- const firstSelectableIndex = this.getNextSelectableIndex(0);
112
- if (firstSelectableIndex === -1) return;
113
- if (preserveChecked) {
114
- if (this.rangeStartIndex === -1) this.rangeStartIndex = this.activeIndex;
115
- this.options.forEach((o, i) => {
116
- o.checked = (0, _microsoft_fast_web_utilities.inRange)(i, firstSelectableIndex, this.rangeStartIndex + 1) && !o.disabled;
117
- });
118
- } else this.uncheckAllOptions();
119
- this.activeIndex = firstSelectableIndex;
120
- this.checkActiveIndex();
121
- }
122
- /**
123
- * Decrements the active index and sets the matching option as checked.
124
- *
125
- * @remarks
126
- * Multi-selection mode only.
127
- *
128
- * @param preserveChecked - mark all options unchecked before changing the active index
129
- *
130
- * @internal
131
- */
132
- checkLastOption(preserveChecked) {
133
- const lastSelectableIndex = this.getPreviousSelectableIndex(this.length - 1);
134
- if (lastSelectableIndex === -1) return;
135
- if (preserveChecked) {
136
- if (this.rangeStartIndex === -1) this.rangeStartIndex = this.activeIndex;
137
- this.options.forEach((o, i) => {
138
- o.checked = (0, _microsoft_fast_web_utilities.inRange)(i, this.rangeStartIndex, lastSelectableIndex + 1) && !o.disabled;
139
- });
140
- } else this.uncheckAllOptions();
141
- this.activeIndex = lastSelectableIndex;
142
- this.checkActiveIndex();
143
- }
144
- /**
145
- * Increments the active index and marks the matching option as checked.
146
- *
147
- * @remarks
148
- * Multiple-selection mode only.
149
- *
150
- * @param preserveChecked - mark all options unchecked before changing the active index
151
- *
152
- * @internal
153
- */
154
- checkNextOption(preserveChecked) {
155
- const nextIndex = this.getNextSelectableIndex(this.activeIndex + 1);
156
- if (nextIndex === -1) return;
157
- if (preserveChecked) {
158
- if (this.rangeStartIndex === -1) this.rangeStartIndex = this.activeIndex;
159
- this.options.forEach((o, i) => {
160
- o.checked = (0, _microsoft_fast_web_utilities.inRange)(i, this.rangeStartIndex, nextIndex + 1) && !o.disabled;
161
- });
162
- } else this.uncheckAllOptions();
163
- this.activeIndex = nextIndex;
164
- this.checkActiveIndex();
165
- }
166
- /**
167
- * Decrements the active index and marks the matching option as checked.
168
- *
169
- * @remarks
170
- * Multiple-selection mode only.
171
- *
172
- * @param preserveChecked - mark all options unchecked before changing the active index
173
- *
174
- * @internal
175
- */
176
- checkPreviousOption(preserveChecked) {
177
- const previousIndex = this.getPreviousSelectableIndex(this.activeIndex - 1);
178
- if (previousIndex === -1) return;
179
- if (preserveChecked) {
180
- if (this.rangeStartIndex === -1) this.rangeStartIndex = this.activeIndex;
181
- if (this.checkedOptions.length === 1) this.rangeStartIndex += 1;
182
- this.options.forEach((o, i) => {
183
- o.checked = (0, _microsoft_fast_web_utilities.inRange)(i, previousIndex, this.rangeStartIndex + 1) && !o.disabled;
184
- });
185
- } else this.uncheckAllOptions();
186
- this.activeIndex = previousIndex;
187
- this.checkActiveIndex();
188
- }
45
+ this.#isInternalValueUpdate = false;
46
+ this.start = "";
47
+ this.end = "";
48
+ this.min = 0;
49
+ this.max = 10;
50
+ this.step = 1;
51
+ this.orientation = _microsoft_fast_web_utilities.Orientation.horizontal;
52
+ this.ariaStartLabel = null;
53
+ this.ariaEndLabel = null;
54
+ this.markers = false;
55
+ this.pin = false;
56
+ this.valueTextFormatter = (value) => parseFloat(value).toLocaleString(this.locale.lang);
57
+ this.proxy = document.createElement("input");
58
+ this._trackEl = null;
59
+ this._startThumbEl = null;
60
+ this._endThumbEl = null;
61
+ this._draggingThumb = false;
62
+ this._visiblyFocusedThumb = null;
63
+ this._hoveredThumb = null;
64
+ this._startThumbCss = "";
65
+ this._endThumbCss = "";
66
+ this._selectedRangeCss = "";
67
+ this.#isNonVisibleFocus = false;
68
+ this.#onThumbFocus = (e) => {
69
+ if (!this.#isNonVisibleFocus) this._visiblyFocusedThumb = this.#getThumbIdFromEvent(e);
70
+ this.#isNonVisibleFocus = false;
71
+ };
72
+ this.#onThumbBlur = () => {
73
+ this._visiblyFocusedThumb = null;
74
+ };
75
+ this.#onVisibilityChange = () => {
76
+ if (document.hidden && (this.shadowRoot.activeElement === this._startThumbEl || this.shadowRoot.activeElement === this._endThumbEl)) this.#isNonVisibleFocus = true;
77
+ };
78
+ this.#onMouseOver = (e) => {
79
+ this._hoveredThumb = this.#getThumbIdFromEvent(e);
80
+ };
81
+ this.#onMouseOut = () => {
82
+ this._hoveredThumb = null;
83
+ };
84
+ this.#onThumbMousedown = (event) => {
85
+ if (this.disabled || event.defaultPrevented) return;
86
+ let target = event.target;
87
+ if (target === this._endThumbEl && this.startAsNumber === this.max && this.endAsNumber === this.max) target = this._startThumbEl;
88
+ this.#focusThumbNonVisibly(target);
89
+ this._draggingThumb = this.#getThumbId(target);
90
+ this.#registerDragHandlers();
91
+ };
92
+ this.#onThumbKeydown = (e) => {
93
+ const thumb = this.#getThumbIdFromEvent(e);
94
+ this._visiblyFocusedThumb = thumb;
95
+ if (e.key === _microsoft_fast_web_utilities.keyHome) {
96
+ e.preventDefault();
97
+ this.#updateValues({ [thumb]: `${this.#thumbConstraints[thumb].min}` });
98
+ } else if (e.key === _microsoft_fast_web_utilities.keyEnd) {
99
+ e.preventDefault();
100
+ this.#updateValues({ [thumb]: `${this.#thumbConstraints[thumb].max}` });
101
+ } else {
102
+ if (e.shiftKey) return;
103
+ switch (e.key) {
104
+ case require_key_codes.keyArrowRight:
105
+ case _microsoft_fast_web_utilities.keyArrowDown:
106
+ e.preventDefault();
107
+ this.#applyStep(thumb, Direction.Increment);
108
+ break;
109
+ case require_key_codes.keyArrowLeft:
110
+ case _microsoft_fast_web_utilities.keyArrowUp:
111
+ e.preventDefault();
112
+ this.#applyStep(thumb, Direction.Decrement);
113
+ }
114
+ }
115
+ };
116
+ this.#onDragMove = (e) => {
117
+ if (this.disabled || e.defaultPrevented || !this._draggingThumb) return;
118
+ const sourceEvent = "TouchEvent" in window && e instanceof TouchEvent ? e.touches[0] : e;
119
+ const value = this.#calculateValueFromMouseEvent(sourceEvent);
120
+ this.#updateValues({ [this._draggingThumb]: `${this.#roundToNearestStep(this._draggingThumb, value)}` });
121
+ };
122
+ this.#onDragEnd = () => {
123
+ this._draggingThumb = false;
124
+ this.#unregisterDragListeners();
125
+ };
126
+ }
127
+ #isInternalValueUpdate;
189
128
  /** @internal */
190
- focusAndScrollOptionIntoView() {
191
- super.focusAndScrollOptionIntoView(this.activeOption);
192
- }
193
- /**
194
- * In multiple-selection mode:
195
- * If any options are selected, the first selected option is checked when
196
- * the listbox receives focus. If no options are selected, the first
197
- * selectable option is checked.
198
- *
199
- * @internal
200
- */
201
- focusinHandler(e) {
202
- if (!this.multiple) {
203
- super.focusinHandler(e);
204
- return;
205
- }
206
- /* v8 ignore else -- @preserve */
207
- if (!this.shouldSkipFocus && e.target === e.currentTarget) {
208
- this.uncheckAllOptions();
209
- if (this.activeIndex === -1) this.activeIndex = this.firstSelectedOptionIndex !== -1 ? this.firstSelectedOptionIndex : 0;
210
- this.checkActiveIndex();
211
- this.setSelectedOptions();
212
- this.focusAndScrollOptionIntoView();
129
+ startChanged() {
130
+ this.currentStart = this.start;
131
+ if (!this.#isInternalValueUpdate) {
132
+ this.dirtyValue = true;
133
+ this.#updateFormValue();
213
134
  }
214
- this.shouldSkipFocus = false;
215
- }
216
- /** Sets an option as selected and gives it focus. */
217
- setSelectedOptions() {
218
- if (!this.multiple) {
219
- super.setSelectedOptions();
220
- return;
221
- }
222
- /* v8 ignore else -- @preserve */
223
- if (this.$fastController.isConnected && this.options) {
224
- this.selectedOptions = this.options.filter((o) => o.selected);
225
- this.focusAndScrollOptionIntoView();
226
- }
227
- }
228
- /**
229
- * Toggles the selected state of the provided options. If any provided items
230
- * are in an unselected state, all items are set to selected. If every
231
- * provided item is selected, they are all unselected.
232
- *
233
- * @internal
234
- */
235
- toggleSelectedForAllCheckedOptions() {
236
- const enabledCheckedOptions = this.checkedOptions.filter((o) => !o.disabled);
237
- const force = !enabledCheckedOptions.every((o) => o.selected);
238
- enabledCheckedOptions.forEach((o) => o.selected = force);
239
- this.selectedIndex = this.options.indexOf(enabledCheckedOptions[enabledCheckedOptions.length - 1]);
240
- this.setSelectedOptions();
241
- this.updateValue(true);
135
+ if (this.$fastController.isConnected) this.#updateThumbPositions();
242
136
  }
243
137
  /** @internal */
244
- typeaheadBufferChanged(prev, next) {
245
- if (!this.multiple) {
246
- super.typeaheadBufferChanged(prev, next);
247
- return;
248
- }
249
- /* v8 ignore if -- @preserve */
250
- if (this.$fastController.isConnected) {
251
- const typeaheadMatches = this.getTypeaheadMatches();
252
- const activeIndex = this.options.indexOf(typeaheadMatches[0]);
253
- if (activeIndex > -1) {
254
- this.activeIndex = activeIndex;
255
- this.uncheckAllOptions();
256
- this.checkActiveIndex();
257
- }
258
- this.typeaheadExpired = false;
259
- }
260
- }
261
- /**
262
- * Unchecks all options.
263
- *
264
- * @remarks
265
- * Multiple-selection mode only.
266
- *
267
- * @param preserveChecked - reset the rangeStartIndex
268
- *
269
- * @internal
270
- */
271
- uncheckAllOptions(preserveChecked = false) {
272
- this.options.forEach((o) => o.checked = false);
273
- /* v8 ignore else -- @preserve */
274
- if (!preserveChecked) this.rangeStartIndex = -1;
275
- }
276
- /**
277
- * Sets focus when the open property changes.
278
- *
279
- * @internal
280
- */
281
- openChanged(prev, next) {
282
- if (!this.collapsible) return;
283
- if (this.open) {
284
- this.focusAndScrollOptionIntoView();
285
- this.indexWhenOpened = this.selectedIndex;
286
- _microsoft_fast_element.Updates.enqueue(() => this.focus());
287
- return;
138
+ initialStartChanged(_, newValue) {
139
+ if (newValue && !this.dirtyValue) {
140
+ this.start = newValue;
141
+ this.dirtyValue = false;
288
142
  }
289
- const didClose = prev && !next;
290
- const selectionChangedWhileOpen = this.indexWhenOpened !== this.selectedIndex;
291
- if (didClose && selectionChangedWhileOpen) this.updateValue(true);
292
- }
293
- /**
294
- * The component is collapsible when in single-selection mode.
295
- *
296
- * @internal
297
- */
298
- get collapsible() {
299
- return !this.multiple;
300
143
  }
301
144
  /** @internal */
302
- valueChanged(prev, next) {
303
- const nextSelectedIndex = this.options.findIndex((el) => el.value === next);
304
- const validNextSelectedIndex = this._validSelectedIndex(nextSelectedIndex);
305
- const nextValue = this.options[validNextSelectedIndex]?.value ?? "";
306
- if (this.selectedIndex !== validNextSelectedIndex) this.selectedIndex = validNextSelectedIndex;
307
- if (next !== nextValue) return;
308
- super.valueChanged(prev, next);
309
- this.updateDisplayValue();
310
- }
311
- /**
312
- * Sets the value and display value to match the first selected option.
313
- *
314
- * @param shouldEmit - if true, the input and change events will be emitted
315
- *
316
- * @internal
317
- */
318
- updateValue(shouldEmit) {
319
- if (this.$fastController.isConnected) this.value = this.firstSelectedOption?.value ?? "";
320
- if (shouldEmit) {
321
- this.$emit("input");
322
- this.$emit("change", this, {
323
- bubbles: true,
324
- composed: void 0
325
- });
326
- }
145
+ currentStartChanged() {
146
+ this.start = this.currentStart;
327
147
  }
328
- /**
329
- * Updates the proxy value when the selected index changes.
330
- *
331
- * @param prev - the previous selected index
332
- * @param next - the next selected index
333
- *
334
- * @internal
335
- */
336
- selectedIndexChanged(prev, next) {
337
- super.selectedIndexChanged(prev, next);
338
- this.updateValue();
339
- }
340
- /**
341
- * Handle opening and closing the listbox when the select is clicked.
342
- *
343
- * @param e - the mouse event
344
- * @internal
345
- */
346
- clickHandler(e) {
347
- if (this.disabled || this._isFromContextualHelp(e)) return;
348
- const clickedOption = e.target.closest(`option,[role=option],[data-vvd-component=option]`);
349
- if (clickedOption && clickedOption.disabled) return;
350
- if (this.multiple) {
351
- this.uncheckAllOptions();
352
- this.activeIndex = this.options.indexOf(clickedOption);
353
- this.checkActiveIndex();
354
- this.toggleSelectedForAllCheckedOptions();
355
- } else super.clickHandler(e);
356
- if (this.collapsible) this.open = !this.open;
357
- return true;
358
- }
359
- /**
360
- * Handles focus state when the element or its children lose focus.
361
- *
362
- * @param e - The focus event
363
- * @internal
364
- */
365
- focusoutHandler(e) {
366
- if (this.multiple) this.uncheckAllOptions();
367
- if (!this.open) return true;
368
- const focusTarget = e.relatedTarget;
369
- if (this.isSameNode(focusTarget)) {
370
- this.focus();
371
- return;
372
- }
373
- /* v8 ignore else -- @preserve */
374
- if (!this.options.includes(focusTarget)) {
375
- this.open = false;
376
- if (this.indexWhenOpened !== this.selectedIndex) this.updateValue(true);
377
- }
148
+ /** The start property, typed as a number. */
149
+ get startAsNumber() {
150
+ return parseFloat(this.start);
378
151
  }
379
- /**
380
- * Updates the value when an option's value changes.
381
- *
382
- * @param source - the source object
383
- * @param propertyName - the property to evaluate
384
- *
385
- * @internal
386
- */
387
- handleChange(source, propertyName) {
388
- super.handleChange(source, propertyName);
389
- if (propertyName === "value") this.updateValue();
390
- }
391
- /**
392
- * Prevents focus when a scrollbar is clicked.
393
- *
394
- * @param e - the mouse event object
395
- *
396
- * @internal
397
- */
398
- mousedownHandler(e) {
399
- if (e.offsetX >= 0 && e.offsetX <= this.listbox.scrollWidth) return super.mousedownHandler(e);
400
- return this.collapsible;
152
+ set startAsNumber(next) {
153
+ this.start = next.toString();
401
154
  }
402
155
  /** @internal */
403
- multipleChanged(_, next) {
404
- this.options.forEach((o) => {
405
- o.checked = next ? false : void 0;
406
- });
407
- this.setSelectedOptions();
408
- /* v8 ignore if -- @preserve */
409
- if (this.proxy) this.proxy.multiple = next;
410
- }
411
- /**
412
- * Updates the selectedness of each option when the list of selected options changes.
413
- *
414
- * @param prev - the previous list of selected options
415
- * @param next - the current list of selected options
416
- *
417
- * @internal
418
- */
419
- selectedOptionsChanged(prev, next) {
420
- super.selectedOptionsChanged(prev, next);
421
- this.options.forEach((o, i) => {
422
- const proxyOption = this.proxy.options.item(i);
423
- if (proxyOption) proxyOption.selected = o.selected;
424
- });
425
- }
426
- /**
427
- * Resets and fills the proxy to match the component's options.
428
- *
429
- * @internal
430
- */
431
- setProxyOptions() {
432
- /* v8 ignore else -- @preserve */
433
- if (this.proxy instanceof HTMLSelectElement && this.options) {
434
- this.proxy.length = 0;
435
- this.options.forEach((option) => {
436
- const proxyOption = option.proxy || (option instanceof HTMLOptionElement ? option.cloneNode() : null);
437
- if (proxyOption) this.proxy.options.add(proxyOption);
438
- });
156
+ endChanged() {
157
+ this.currentEnd = this.end;
158
+ if (!this.#isInternalValueUpdate) {
159
+ this.dirtyValue = true;
160
+ this.#updateFormValue();
439
161
  }
162
+ if (this.$fastController.isConnected) this.#updateThumbPositions();
440
163
  }
441
- /**
442
- * Handles keydown actions when the select is in multiple selection mode.
443
- *
444
- * @internal
445
- */
446
- multipleKeydownHandler(e) {
447
- if (this.disabled) return;
448
- const { key, shiftKey } = e;
449
- this.shouldSkipFocus = false;
450
- switch (key) {
451
- case _microsoft_fast_web_utilities.keyHome:
452
- this.checkFirstOption(shiftKey);
453
- return;
454
- case _microsoft_fast_web_utilities.keyArrowDown:
455
- this.checkNextOption(shiftKey);
456
- return;
457
- case _microsoft_fast_web_utilities.keyArrowUp:
458
- this.checkPreviousOption(shiftKey);
459
- return;
460
- case _microsoft_fast_web_utilities.keyEnd:
461
- this.checkLastOption(shiftKey);
462
- return;
463
- case _microsoft_fast_web_utilities.keyTab:
464
- this.focusAndScrollOptionIntoView();
465
- return;
466
- case _microsoft_fast_web_utilities.keyEscape:
467
- this.uncheckAllOptions();
468
- this.checkActiveIndex();
469
- return;
470
- case _microsoft_fast_web_utilities.keySpace:
471
- e.preventDefault();
472
- /* v8 ignore else -- @preserve */
473
- if (this.typeaheadExpired) {
474
- this.toggleSelectedForAllCheckedOptions();
475
- return;
476
- }
477
- default:
478
- /* v8 ignore else -- @preserve */
479
- if (key.length === 1) this.handleTypeAhead(key);
480
- return;
164
+ /** @internal */
165
+ initialEndChanged(_, newValue) {
166
+ if (newValue && !this.dirtyValue) {
167
+ this.end = newValue;
168
+ this.dirtyValue = false;
481
169
  }
482
170
  }
483
- /**
484
- * Handle keyboard interaction for the select.
485
- *
486
- * @param e - the keyboard event
487
- * @internal
488
- */
489
- keydownHandler(e) {
490
- const selectedIndexBefore = this.selectedIndex;
491
- if (this.multiple) this.multipleKeydownHandler(e);
492
- else super.keydownHandler(e);
493
- switch (e.key) {
494
- case _microsoft_fast_web_utilities.keySpace:
495
- e.preventDefault();
496
- if (this.collapsible && this.typeaheadExpired) this.open = !this.open;
497
- break;
498
- case _microsoft_fast_web_utilities.keyHome:
499
- case _microsoft_fast_web_utilities.keyEnd:
500
- e.preventDefault();
501
- break;
502
- case _microsoft_fast_web_utilities.keyEnter:
503
- e.preventDefault();
504
- this.open = !this.open;
505
- break;
506
- case _microsoft_fast_web_utilities.keyEscape:
507
- if (this.collapsible && this.open) {
508
- e.preventDefault();
509
- this.open = false;
510
- }
511
- break;
512
- case _microsoft_fast_web_utilities.keyTab:
513
- if (this.collapsible && this.open) {
514
- e.preventDefault();
515
- this.open = false;
516
- }
517
- return true;
171
+ /** @internal */
172
+ currentEndChanged() {
173
+ this.end = this.currentEnd;
174
+ }
175
+ /** The end property, typed as a number. */
176
+ get endAsNumber() {
177
+ return parseFloat(this.end);
178
+ }
179
+ set endAsNumber(next) {
180
+ this.end = next.toString();
181
+ }
182
+ #updateValues({ start, end }, emitEvents = true) {
183
+ if (start === this.start) start = void 0;
184
+ if (end === this.end) end = void 0;
185
+ if (start === void 0 && end === void 0) return;
186
+ this.#isInternalValueUpdate = true;
187
+ if (start !== void 0) this.start = start;
188
+ if (end !== void 0) this.end = end;
189
+ this.#isInternalValueUpdate = false;
190
+ if (emitEvents) {
191
+ if (start !== void 0) this.$emit("input:start");
192
+ if (end !== void 0) this.$emit("input:end");
193
+ this.$emit("input");
194
+ this.$emit("change");
195
+ this.dirtyValue = true;
518
196
  }
519
- if (this.collapsible && !this.open && this.selectedIndex !== selectedIndexBefore) this.updateValue(true);
520
- return !(e.key === _microsoft_fast_web_utilities.keyArrowDown || e.key === _microsoft_fast_web_utilities.keyArrowUp);
197
+ this.#updateFormValue();
521
198
  }
522
- connectedCallback() {
523
- super.connectedCallback();
524
- this.addEventListener("focusout", this.focusoutHandler);
525
- this.addEventListener("contentchange", this.updateDisplayValue);
199
+ #applyStep(thumb, direction) {
200
+ this.#updateValues({ [thumb]: this.#roundToNearestStep(thumb, Number(this[thumb]) + direction * this.step).toString() });
526
201
  }
527
- disconnectedCallback() {
528
- this.removeEventListener("focusout", this.focusoutHandler);
529
- this.removeEventListener("contentchange", this.updateDisplayValue);
530
- super.disconnectedCallback();
202
+ /** @internal */
203
+ orientationChanged() {
204
+ if (this.$fastController.isConnected) this.#updateThumbPositions();
531
205
  }
532
206
  /** @internal */
533
- updateDisplayValue() {
534
- if (this.collapsible) _microsoft_fast_element.Observable.notify(this, "displayValue");
535
- }
536
- get displayValue() {
537
- _microsoft_fast_element.Observable.track(this, "displayValue");
538
- return this.firstSelectedOption?.getAttribute("label") ?? this.firstSelectedOption?.text ?? this.placeholder ?? "";
539
- }
540
- _newDefaultSelectedIndex(prev, next, currentSelectIndex) {
541
- const defaultSelectedIndex = super._newDefaultSelectedIndex(prev, next, currentSelectIndex);
542
- if (defaultSelectedIndex === null && currentSelectIndex === -1 && !this.placeholder) {
543
- const firstSelectableIndex = this.getNextSelectableIndex(0);
544
- if (firstSelectableIndex !== -1) return firstSelectableIndex;
207
+ nameChanged(previous, next) {
208
+ super.nameChanged(previous, next);
209
+ this.#updateFormValue();
210
+ }
211
+ #updateFormValue() {
212
+ if (!this.name) this.setFormValue(null);
213
+ else {
214
+ const formData = new FormData();
215
+ formData.append(this.name, this.start);
216
+ formData.append(this.name, this.end);
217
+ this.setFormValue(formData);
545
218
  }
546
- return defaultSelectedIndex;
547
- }
548
- _isDefaultSelected(option) {
549
- return super._isDefaultSelected(option) || option.value === this.initialValue || !this._isResetting && option.value === this.value;
550
219
  }
551
- slottedOptionsChanged(prev, next) {
552
- this.options.forEach((o) => {
553
- _microsoft_fast_element.Observable.getNotifier(o).unsubscribe(this, "value");
554
- });
555
- super.slottedOptionsChanged(prev, next);
556
- this.options.forEach((o) => {
557
- _microsoft_fast_element.Observable.getNotifier(o).subscribe(this, "value");
220
+ /** Resets `start` and `end` to their initial values when the form is reset. */
221
+ formResetCallback() {
222
+ this.#updateValues({
223
+ start: this.initialStart ?? this.min.toString(),
224
+ end: this.initialEnd ?? this.max.toString()
558
225
  });
559
- this.setProxyOptions();
560
- this.updateValue();
561
- const scale = this.getAttribute("scale") || this.scale;
562
- next.forEach((element) => {
563
- if (scale) {
564
- element.setAttribute("scale", scale);
565
- element.scale = scale;
226
+ super.formResetCallback();
227
+ }
228
+ get #thumbs() {
229
+ return {
230
+ start: this._startThumbEl,
231
+ end: this._endThumbEl
232
+ };
233
+ }
234
+ get #thumbConstraints() {
235
+ return {
236
+ start: {
237
+ min: this.min,
238
+ max: this.endAsNumber
239
+ },
240
+ end: {
241
+ min: this.startAsNumber,
242
+ max: this.max
566
243
  }
567
- });
568
- this.proxy.value = this.value;
569
- this.validate();
570
- }
571
- formResetCallback() {
572
- this.setProxyOptions();
573
- this._isResetting = true;
574
- this.selectedIndex = this._newDefaultSelectedIndex([], this.options, -1) ?? -1;
575
- this._isResetting = false;
244
+ };
245
+ }
246
+ #getThumbId(thumb) {
247
+ return thumb === this._startThumbEl ? "start" : "end";
248
+ }
249
+ #getThumbIdFromEvent(e) {
250
+ return this.#getThumbId(e.target);
251
+ }
252
+ #updateThumbPositions() {
253
+ const startOffsetPct = this.#thumbTrackEndOffset(this.startAsNumber);
254
+ const endOffsetPct = this.#thumbTrackEndOffset(this.endAsNumber);
255
+ const [dirProp, dimProp] = this.orientation === _microsoft_fast_web_utilities.Orientation.horizontal ? ["right", "width"] : ["bottom", "height"];
256
+ const transition = `transition: ${this._draggingThumb ? "none" : "all 0.2s ease"};`;
257
+ this._startThumbCss = `${dirProp}: ${startOffsetPct}%; ${transition}`;
258
+ this._endThumbCss = `${dirProp}: ${endOffsetPct}%; ${transition}`;
259
+ this._selectedRangeCss = `${dirProp}: ${endOffsetPct}%; ${dimProp}: ${startOffsetPct - endOffsetPct}%; ${transition}`;
260
+ }
261
+ #thumbTrackEndOffset(value) {
262
+ return (1 - require_slider_template.inverseLerp(this.min, this.max, value)) * 100;
263
+ }
264
+ #calculateValueFromMouseEvent(e) {
265
+ const trackClientRect = this._trackEl.getBoundingClientRect();
266
+ const [minPos, maxPos, valuePos] = this.orientation === _microsoft_fast_web_utilities.Orientation.horizontal ? [
267
+ this._trackEl.clientLeft,
268
+ this._trackEl.clientWidth,
269
+ e.pageX - document.documentElement.scrollLeft - this.getBoundingClientRect().left
270
+ ] : [
271
+ trackClientRect.top,
272
+ trackClientRect.bottom,
273
+ e.pageY - document.documentElement.scrollTop
274
+ ];
275
+ return require_slider_template.lerp(this.min, this.max, require_slider_template.inverseLerp(minPos, maxPos, valuePos));
276
+ }
277
+ #roundToNearestStep(thumb, value) {
278
+ return (0, _microsoft_fast_web_utilities.limit)(this.#thumbConstraints[thumb].min, this.#thumbConstraints[thumb].max, require_slider_template.roundToStepValue(value - this.min, this.step) + this.min);
279
+ }
280
+ #isNonVisibleFocus;
281
+ #focusThumbNonVisibly(thumb) {
282
+ this.#isNonVisibleFocus = true;
283
+ thumb.focus();
284
+ this.#isNonVisibleFocus = false;
576
285
  }
577
286
  /** @internal */
578
- get _shouldShowClearButton() {
579
- if (!this.clearable) return false;
580
- if (this.multiple) return this.selectedOptions?.length > 0;
581
- return this.value !== "";
287
+ _isThumbPopupOpen(thumb) {
288
+ return this._visiblyFocusedThumb === thumb || this._hoveredThumb === thumb || this._draggingThumb === thumb;
582
289
  }
583
- /** @internal */
584
- _onClearButtonFocus() {
585
- this._isClearButtonFocused = true;
586
- this.activeIndex = -1;
587
- this.uncheckAllOptions();
290
+ connectedCallback() {
291
+ super.connectedCallback();
292
+ this.#updateValues({
293
+ start: this.start || this.initialStart || this.min.toString(),
294
+ end: this.end || this.initialEnd || this.max.toString()
295
+ }, false);
296
+ this.#registerThumbListeners();
297
+ this.#updateThumbPositions();
298
+ document.addEventListener("visibilitychange", this.#onVisibilityChange);
588
299
  }
589
- /** @internal */
590
- _onClearButtonBlur() {
591
- this._isClearButtonFocused = false;
300
+ disconnectedCallback() {
301
+ super.disconnectedCallback();
302
+ this.#unregisterThumbListeners();
303
+ this.#unregisterDragListeners();
304
+ document.removeEventListener("visibilitychange", this.#onVisibilityChange);
305
+ }
306
+ #registerThumbListeners() {
307
+ for (const thumb of ["start", "end"]) {
308
+ this.#thumbs[thumb].addEventListener("keydown", this.#onThumbKeydown);
309
+ this.#thumbs[thumb].addEventListener("mousedown", this.#onThumbMousedown, { passive: true });
310
+ this.#thumbs[thumb].addEventListener("touchstart", this.#onThumbMousedown, { passive: true });
311
+ this.#thumbs[thumb].addEventListener("mouseover", this.#onMouseOver, { passive: true });
312
+ this.#thumbs[thumb].addEventListener("mouseout", this.#onMouseOut, { passive: true });
313
+ this.#thumbs[thumb].addEventListener("focus", this.#onThumbFocus);
314
+ this.#thumbs[thumb].addEventListener("blur", this.#onThumbBlur);
315
+ }
592
316
  }
593
- /** @internal */
594
- get _shouldShowLabelWrapper() {
595
- return Boolean(this.label || this._hasContextualHelp || this.multiple && this._shouldShowClearButton);
317
+ #unregisterThumbListeners() {
318
+ for (const thumb of ["start", "end"]) {
319
+ this.#thumbs[thumb].removeEventListener("keydown", this.#onThumbKeydown);
320
+ this.#thumbs[thumb].removeEventListener("mousedown", this.#onThumbMousedown);
321
+ this.#thumbs[thumb].removeEventListener("touchstart", this.#onThumbMousedown);
322
+ this.#thumbs[thumb].removeEventListener("mouseover", this.#onMouseOver);
323
+ this.#thumbs[thumb].removeEventListener("mouseout", this.#onMouseOut);
324
+ this.#thumbs[thumb].removeEventListener("focus", this.#onThumbFocus);
325
+ this.#thumbs[thumb].removeEventListener("blur", this.#onThumbBlur);
326
+ }
596
327
  }
597
328
  /** @internal */
598
- _onClearButtonClick() {
599
- if (this.multiple) this.selectedOptions.forEach((o) => {
600
- /* v8 ignore else -- @preserve */
601
- if (!o.disabled) o.selected = false;
602
- });
603
- else this.selectedIndex = -1;
604
- this.updateValue(true);
605
- }
329
+ _onMouseDown(e) {
330
+ if (this.disabled || this._draggingThumb) return;
331
+ const value = this.#calculateValueFromMouseEvent(e);
332
+ const startDistance = Math.abs(value - Number(this.start));
333
+ const endDistance = Math.abs(value - Number(this.end));
334
+ const thumb = startDistance < endDistance || startDistance === endDistance && value < Number(this.start) ? "start" : "end";
335
+ this.#updateValues({ [thumb]: `${this.#roundToNearestStep(thumb, value)}` });
336
+ this._draggingThumb = thumb;
337
+ this.#focusThumbNonVisibly(this.#thumbs[thumb]);
338
+ this.#registerDragHandlers();
339
+ }
340
+ #onThumbFocus;
341
+ #onThumbBlur;
342
+ #onVisibilityChange;
343
+ #onMouseOver;
344
+ #onMouseOut;
345
+ #onThumbMousedown;
346
+ #onThumbKeydown;
347
+ #registerDragHandlers() {
348
+ window.addEventListener("mousemove", this.#onDragMove, { passive: true });
349
+ window.addEventListener("touchmove", this.#onDragMove, { passive: true });
350
+ window.addEventListener("mouseup", this.#onDragEnd);
351
+ window.addEventListener("touchend", this.#onDragEnd);
352
+ window.document.addEventListener("mouseleave", this.#onDragEnd);
353
+ }
354
+ #unregisterDragListeners() {
355
+ window.removeEventListener("mouseup", this.#onDragEnd);
356
+ window.document.removeEventListener("mouseleave", this.#onDragEnd);
357
+ window.removeEventListener("mousemove", this.#onDragMove);
358
+ window.removeEventListener("touchmove", this.#onDragMove);
359
+ window.removeEventListener("touchend", this.#onDragEnd);
360
+ }
361
+ #onDragMove;
362
+ #onDragEnd;
606
363
  };
607
- require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "activeIndex", void 0);
608
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], Select.prototype, "multiple", void 0);
364
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "start", void 0);
609
365
  require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
610
- attribute: "open",
611
- mode: "boolean"
612
- })], Select.prototype, "open", void 0);
613
- require_decorate.__decorate([_microsoft_fast_element.volatile], Select.prototype, "collapsible", null);
614
- require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "control", void 0);
615
- require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "maxHeight", void 0);
616
- require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "_anchor", void 0);
617
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)()], Select.prototype, "scale", void 0);
618
- require_decorate.__decorate([_microsoft_fast_element.attr], Select.prototype, "appearance", void 0);
619
- require_decorate.__decorate([_microsoft_fast_element.attr], Select.prototype, "shape", void 0);
366
+ mode: "fromView",
367
+ attribute: "start"
368
+ })], RangeSlider.prototype, "initialStart", void 0);
369
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "current-start" })], RangeSlider.prototype, "currentStart", void 0);
370
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "end", void 0);
620
371
  require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
621
- mode: "boolean",
622
- attribute: "fixed-dropdown"
623
- })], Select.prototype, "fixedDropdown", void 0);
624
- require_decorate.__decorate([_microsoft_fast_element.attr], Select.prototype, "placeholder", void 0);
625
- require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "_feedbackWrapper", void 0);
626
- require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "metaSlottedContent", void 0);
627
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], Select.prototype, "clearable", void 0);
628
- require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "_isClearButtonFocused", void 0);
372
+ mode: "fromView",
373
+ attribute: "end"
374
+ })], RangeSlider.prototype, "initialEnd", void 0);
375
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "current-end" })], RangeSlider.prototype, "currentEnd", void 0);
376
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ converter: _microsoft_fast_element.nullableNumberConverter })], RangeSlider.prototype, "min", void 0);
377
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ converter: _microsoft_fast_element.nullableNumberConverter })], RangeSlider.prototype, "max", void 0);
378
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ converter: require_slider_template.defaultToOneConverter })], RangeSlider.prototype, "step", void 0);
379
+ require_decorate.__decorate([_microsoft_fast_element.attr], RangeSlider.prototype, "orientation", void 0);
380
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "aria-start-label" })], RangeSlider.prototype, "ariaStartLabel", void 0);
381
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "aria-end-label" })], RangeSlider.prototype, "ariaEndLabel", void 0);
382
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], RangeSlider.prototype, "markers", void 0);
383
+ require_decorate.__decorate([_microsoft_fast_element.attr], RangeSlider.prototype, "connotation", void 0);
384
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], RangeSlider.prototype, "pin", void 0);
385
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "valueTextFormatter", void 0);
386
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "_draggingThumb", void 0);
387
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "_visiblyFocusedThumb", void 0);
388
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "_hoveredThumb", void 0);
389
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "_startThumbCss", void 0);
390
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "_endThumbCss", void 0);
391
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "_selectedRangeCss", void 0);
629
392
  //#endregion
630
- //#region src/lib/select/select.template.ts
631
- function renderLabel() {
632
- return _microsoft_fast_element.html` <label
633
- for="${(x) => x.multiple ? null : "control"}"
634
- class="label"
635
- id="label"
393
+ //#region src/lib/range-slider/range-slider.template.ts
394
+ var getThumbClassesFor = (thumb) => ({ _visiblyFocusedThumb }) => (0, _microsoft_fast_web_utilities.classNames)("thumb-container", ["focus-visible", _visiblyFocusedThumb === thumb]);
395
+ var RangeSliderTemplate = (context) => {
396
+ const popupTag = context.tagFor(require_definition.Popup);
397
+ return _microsoft_fast_element.html` <template
398
+ @mousedown="${(x, c) => x._onMouseDown(c.event)}"
636
399
  >
637
- ${(x) => x.label}
638
- </label>`;
639
- }
640
- function renderPlaceholder(context) {
641
- const optionTag = context.tagFor(require_definition$3.ListboxOption);
642
- return _microsoft_fast_element.html`
643
- <${optionTag} text="${(x) => x.placeholder}" hidden disabled>
644
- </${optionTag}>`;
645
- }
646
- function renderClearButton(context) {
647
- const buttonTag = context.tagFor(require_definition$1.Button);
648
- return _microsoft_fast_element.html`
649
- <${buttonTag}
650
- aria-label="${(x) => x.locale.select.clearButtonLabel}"
651
- aria-hidden="${(x) => x._isClearButtonFocused ? "false" : "true"}"
652
- @click="${(x, c) => {
653
- x._onClearButtonClick();
654
- c.event.stopPropagation();
655
- }}"
656
- @mousedown="${() => false}"
657
- @keydown="${(x, c) => {
658
- /* v8 ignore next -- @preserve */
659
- if (c.event.key === "Tab") x._onClearButtonBlur();
660
- c.event.stopPropagation();
661
- return true;
662
- }}"
663
- @focusin="${(x, c) => {
664
- c.event.stopPropagation();
665
- x._onClearButtonFocus();
666
- }}"
667
- @focusout="${(x) => x._onClearButtonBlur()}"
668
- ?disabled="${(x) => x.disabled}"
669
- :shape="${(x) => x.shape}"
670
- size="super-condensed"
671
- icon="close-line"
672
- appearance="ghost-light"
673
- class="clear-button"
674
- tabindex="0"
675
- ></${buttonTag}>
676
- `;
677
- }
678
- function selectValue(context) {
679
- const affixIconTemplate = require_affix.affixIconTemplateFactory(context);
680
- const chevronTemplate = require_definition$1.chevronTemplateFactory(context);
681
- return _microsoft_fast_element.html` <div
682
- class="control ${(x) => (0, _microsoft_fast_web_utilities.classNames)(["has-activedescendant", Boolean(x._activeDescendant) && x.open], ["disabled", x.disabled], [`appearance-${x.appearance}`, Boolean(x.appearance)], [`shape-${x.shape}`, Boolean(x.shape)], ["has-meta", Boolean(x.metaSlottedContent?.length)], ["error", Boolean(x.errorValidationMessage)], ["success", !!x.successText], ["shows-placeholder", Boolean(x.placeholder) && !x.value], [`size-${x.scale}`, Boolean(x.scale)])}"
683
- ${(0, _microsoft_fast_element.ref)("_anchor")}
684
- id="control"
685
- ?disabled="${(x) => x.disabled}"
686
- >
687
- <div class="selected-value">
688
- ${(x) => affixIconTemplate(x.icon, require_affix.IconWrapper.Slot)}
689
- <span class="text">${(x) => x.displayValue}</span>
690
- <slot name="meta" ${(0, _microsoft_fast_element.slotted)("metaSlottedContent")}></slot>
691
- </div>
692
- ${(0, _microsoft_fast_element.when)((x) => x._shouldShowClearButton, renderClearButton(context))}
693
- ${chevronTemplate}
694
- </div>`;
695
- }
696
- function setFixedDropdownVarWidth(x) {
697
- return x.open && x.fixedDropdown ? `--_select-fixed-width: ${Math.round(x.getBoundingClientRect().width)}px` : null;
698
- }
699
- /** @param context - element definition context */
700
- function renderControl(context) {
701
- const popupTag = context.tagFor(require_definition$2.Popup);
702
- return _microsoft_fast_element.html`
703
- <div class="label-wrapper" ?hidden=${(x) => !x._shouldShowLabelWrapper}>
704
- ${(0, _microsoft_fast_element.when)((x) => x.label, renderLabel())}
705
- ${(0, _microsoft_fast_element.when)((x) => x.multiple && x._shouldShowClearButton, renderClearButton(context))}
706
- <slot name="contextual-help" ${(0, _microsoft_fast_element.slotted)("_contextualHelpSlottedContent")}></slot>
707
- </div>
708
- <div class="control-wrapper">
709
- ${(0, _microsoft_fast_element.when)((x) => !x.multiple, selectValue(context))}
710
- <${popupTag} class="popup"
711
- style="${setFixedDropdownVarWidth}"
712
- ?open="${(x) => x.collapsible ? x.open : true}"
713
- :anchor="${(x) => x._anchor}"
714
- placement="bottom-start"
715
- strategy="${(x) => x.fixedDropdown ? null : "absolute"}">
716
- <div class="listbox"
717
- id="${(x) => x.listboxId}"
718
- role="listbox"
719
- aria-multiselectable="${(x) => x.multiple}"
720
- aria-label="${(x) => x.multiple && !x.label && x.ariaLabel ? x.ariaLabel : null}"
721
- aria-labelledby="${(x) => x.multiple && x.label ? "label" : null}"
722
- ?disabled="${(x) => x.disabled}"
723
- ?hidden="${(x) => x.collapsible ? !x.open : false}"
724
- ${(0, _microsoft_fast_element.ref)("listbox")}>
725
- ${(0, _microsoft_fast_element.when)((x) => x.placeholder, renderPlaceholder(context))}
726
- <slot
727
- ${(0, _microsoft_fast_element.slotted)({
728
- filter: require_listbox.Listbox.slottedOptionFilter,
729
- flatten: true,
730
- property: "slottedOptions"
731
- })}>
732
- </slot>
733
- </div>
734
- </${popupTag}>
735
- </div>
736
- `;
737
- }
738
- /** Ignore events that originate from feedback, e.g. a click on link */
739
- function ifNotFromFeedback(handler) {
740
- return (x, c) => {
741
- if (!c.event.composedPath().includes(x._feedbackWrapper)) {
742
- handler(x, c.event);
743
- return;
744
- }
745
- return true;
746
- };
747
- }
748
- var SelectTemplate = (context) => {
749
- return _microsoft_fast_element.html`
750
- <template
751
- ${require_host_semantics.applyHostSemantics({
752
- role: "combobox",
753
- ariaLabel: (x) => x.ariaLabel ?? x.label,
754
- ariaHasPopup: (x) => x.collapsible ? "listbox" : "false",
755
- ariaExpanded: (x) => x.open,
756
- ariaDisabled: (x) => x.disabled
757
- })}
758
- aria-controls="${(x) => x.listboxId}"
759
- aria-activedescendant="${(x) => x.open ? x._activeDescendant : null}"
760
- aria-describedby="${(x) => x._feedbackDescribedBy}"
761
- tabindex="${(x) => !x.disabled ? "0" : null}"
762
- @click="${ifNotFromFeedback((x, e) => x.clickHandler(e))}"
763
- @focusin="${ifNotFromFeedback((x, e) => x.focusinHandler(e))}"
764
- @focusout="${ifNotFromFeedback((x, e) => x.focusoutHandler(e))}"
765
- @keydown="${ifNotFromFeedback((x, e) => {
766
- if (x.open) require_dialog.handleEscapeKeyAndStopPropogation(e);
767
- return x.keydownHandler(e);
768
- })}"
769
- @mousedown="${ifNotFromFeedback((x, e) => x.mousedownHandler(e))}"
400
+ <div
401
+ class="${(x) => (0, _microsoft_fast_web_utilities.classNames)("control", ["disabled", x.disabled], `connotation-${rangeSliderConnotation.parse(x.connotation)}`, "appearance-filled", "with-idle")} ${(x) => x.orientation}"
770
402
  >
771
- ${renderControl(context)}
772
- <div class="feedback-wrapper" ${(0, _microsoft_fast_element.ref)("_feedbackWrapper")}>
773
- ${(x) => x._getFeedbackTemplate(context)}
403
+ <div class="positioning-region">
404
+ <div ${(0, _microsoft_fast_element.ref)("_trackEl")} class="track">
405
+ <div class="track-start" style="${(x) => x._selectedRangeCss}"></div>
406
+ ${(0, _microsoft_fast_element.when)((x) => x.markers, _microsoft_fast_element.html`${(x) => require_slider_template.getMarkersTemplate(x.orientation === _microsoft_fast_web_utilities.Orientation.horizontal, Math.floor((x.max - x.min) / x.step))}`)}
407
+ </div>
408
+ <div
409
+ id="start-thumb"
410
+ ${(0, _microsoft_fast_element.ref)("_startThumbEl")}
411
+ class="${getThumbClassesFor("start")}"
412
+ style="${(x) => x._startThumbCss}"
413
+ role="slider"
414
+ tabindex="${(x) => x.disabled ? null : 0}"
415
+ aria-label="${(x) => x.ariaStartLabel || x.locale.rangeSlider.startThumbLabel}"
416
+ aria-valuetext="${(x) => x.valueTextFormatter(x.start)}"
417
+ aria-valuenow="${(x) => x.start}"
418
+ aria-valuemin="${(x) => x.min}"
419
+ aria-valuemax="${(x) => x.end}"
420
+ aria-disabled="${(x) => x.disabled}"
421
+ aria-orientation="${(x) => x.orientation}"
422
+ ></div>
423
+ ${(0, _microsoft_fast_element.when)((x) => x.pin, _microsoft_fast_element.html`<${popupTag}
424
+ class="popup"
425
+ arrow
426
+ alternate
427
+ :anchor="${(x) => x._startThumbEl}"
428
+ :open=${(x) => x._isThumbPopupOpen("start")}
429
+ :placementStrategy=${(x) => x.orientation === _microsoft_fast_web_utilities.Orientation.horizontal ? require_definition.PlacementStrategy.AutoPlacementHorizontal : require_definition.PlacementStrategy.AutoPlacementVertical}
430
+ animation-frame
431
+ exportparts="vvd-theme-alternate"
432
+ aria-hidden="true"
433
+ >
434
+ <div class="tooltip">${(x) => x.valueTextFormatter(x.start)}</div>
435
+ </${popupTag}>`)}
436
+ <div
437
+ id="end-thumb"
438
+ ${(0, _microsoft_fast_element.ref)("_endThumbEl")}
439
+ class="${getThumbClassesFor("end")}"
440
+ style="${(x) => x._endThumbCss}"
441
+ role="slider"
442
+ tabindex="${(x) => x.disabled ? null : 0}"
443
+ aria-label="${(x) => x.ariaEndLabel || x.locale.rangeSlider.endThumbLabel}"
444
+ aria-valuetext="${(x) => x.valueTextFormatter(x.end)}"
445
+ aria-valuenow="${(x) => x.end}"
446
+ aria-valuemin="${(x) => x.start}"
447
+ aria-valuemax="${(x) => x.max}"
448
+ aria-disabled="${(x) => x.disabled}"
449
+ aria-orientation="${(x) => x.orientation}"
450
+ ></div>
451
+ ${(0, _microsoft_fast_element.when)((x) => x.pin, _microsoft_fast_element.html`<${popupTag}
452
+ class="popup"
453
+ arrow
454
+ alternate
455
+ :anchor="${(x) => x._endThumbEl}"
456
+ :open=${(x) => x._isThumbPopupOpen("end")}
457
+ :placementStrategy=${(x) => x.orientation === _microsoft_fast_web_utilities.Orientation.horizontal ? require_definition.PlacementStrategy.AutoPlacementHorizontal : require_definition.PlacementStrategy.AutoPlacementVertical}
458
+ animation-frame
459
+ exportparts="vvd-theme-alternate"
460
+ aria-hidden="true"
461
+ >
462
+ <div class="tooltip">${(x) => x.valueTextFormatter(x.end)}</div>
463
+ </${popupTag}>`)}
774
464
  </div>
775
- </template>
776
- `;
465
+ </div>
466
+ </template>`;
777
467
  };
778
468
  //#endregion
779
- //#region src/lib/select/definition.ts
469
+ //#region src/lib/range-slider/definition.ts
780
470
  /** @internal */
781
- var selectDefinition = require_vivid_element.defineVividComponent("select", Select, SelectTemplate, [
782
- require_definition$2.popupDefinition,
783
- require_definition.iconDefinition,
784
- require_definition$3.listboxOptionDefinition,
785
- require_definition$4.optgroupDefinition,
786
- require_definition$1.buttonDefinition,
787
- require_mixins.feedbackMessageDefinition
788
- ], { styles: select_default });
471
+ var rangeSliderDefinition = require_vivid_element.defineVividComponent("range-slider", RangeSlider, RangeSliderTemplate, [require_definition.popupDefinition], {
472
+ styles: range_slider_default,
473
+ shadowOptions: { delegatesFocus: true }
474
+ });
789
475
  /**
790
- * Registers the select elements with the design system.
476
+ * Registers the range-slider element with the design system.
791
477
  *
792
478
  * @param prefix - the prefix to use for the component name
793
479
  */
794
- var registerSelect = require_vivid_element.createRegisterFunction(selectDefinition);
480
+ var registerRangeSlider = require_vivid_element.createRegisterFunction(rangeSliderDefinition);
795
481
  //#endregion
796
- Object.defineProperty(exports, "Select", {
482
+ Object.defineProperty(exports, "RangeSlider", {
797
483
  enumerable: true,
798
484
  get: function() {
799
- return Select;
485
+ return RangeSlider;
800
486
  }
801
487
  });
802
- Object.defineProperty(exports, "registerSelect", {
488
+ Object.defineProperty(exports, "rangeSliderDefinition", {
803
489
  enumerable: true,
804
490
  get: function() {
805
- return registerSelect;
491
+ return rangeSliderDefinition;
806
492
  }
807
493
  });
808
- Object.defineProperty(exports, "selectDefinition", {
494
+ Object.defineProperty(exports, "registerRangeSlider", {
809
495
  enumerable: true,
810
496
  get: function() {
811
- return selectDefinition;
497
+ return registerRangeSlider;
812
498
  }
813
499
  });