@vonage/vivid 5.18.0 → 5.20.0

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