@vonage/vivid 5.16.0 → 5.18.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 (564) hide show
  1. package/accordion/definition.cjs +6 -6
  2. package/accordion/definition.js +1 -1
  3. package/accordion/index.cjs +1 -1
  4. package/accordion/index.js +2 -2
  5. package/accordion-item/definition.cjs +5 -5
  6. package/accordion-item/definition.js +1 -1
  7. package/accordion-item/index.cjs +1 -1
  8. package/accordion-item/index.js +2 -2
  9. package/action-group/index.cjs +3 -3
  10. package/action-group/index.js +5 -5
  11. package/alert/definition.cjs +5 -5
  12. package/alert/definition.js +1 -1
  13. package/alert/index.cjs +3 -3
  14. package/alert/index.js +15 -14
  15. package/audio-player/definition.cjs +5 -5
  16. package/audio-player/definition.js +1 -1
  17. package/audio-player/index.cjs +16 -16
  18. package/audio-player/index.js +29 -28
  19. package/avatar/definition.cjs +5 -5
  20. package/avatar/definition.js +1 -1
  21. package/avatar/index.cjs +4 -4
  22. package/avatar/index.js +12 -11
  23. package/badge/definition.cjs +5 -5
  24. package/badge/definition.js +1 -1
  25. package/badge/index.cjs +1 -4
  26. package/badge/index.js +4 -20
  27. package/banner/definition.cjs +5 -5
  28. package/banner/definition.js +1 -1
  29. package/banner/index.cjs +3 -3
  30. package/banner/index.js +14 -13
  31. package/breadcrumb-item/definition.cjs +4 -4
  32. package/breadcrumb-item/definition.js +1 -1
  33. package/breadcrumb-item/index.cjs +1 -1
  34. package/breadcrumb-item/index.js +1 -0
  35. package/bundled/affix.cjs +1 -1
  36. package/bundled/affix.js +5 -5
  37. package/bundled/base-color-picker.cjs +2 -2
  38. package/bundled/base-color-picker.js +5 -5
  39. package/bundled/button.cjs +1 -1
  40. package/bundled/button.js +2 -2
  41. package/bundled/calendar-picker.template.cjs +2 -2
  42. package/bundled/calendar-picker.template.js +498 -498
  43. package/bundled/definition10.cjs +18 -30
  44. package/bundled/definition10.js +53 -155
  45. package/bundled/definition11.cjs +10 -19
  46. package/bundled/definition11.js +25 -74
  47. package/bundled/definition12.cjs +72 -18
  48. package/bundled/definition12.js +171 -107
  49. package/bundled/definition13.cjs +18 -17
  50. package/bundled/definition13.js +46 -66
  51. package/bundled/definition14.cjs +5 -10
  52. package/bundled/definition14.js +9 -27
  53. package/bundled/definition15.cjs +17 -71
  54. package/bundled/definition15.js +64 -181
  55. package/bundled/definition16.cjs +12 -4
  56. package/bundled/definition16.js +79 -14
  57. package/bundled/definition17.cjs +19 -13
  58. package/bundled/definition17.js +118 -69
  59. package/bundled/definition18.cjs +87 -12
  60. package/bundled/definition18.js +409 -52
  61. package/bundled/definition19.cjs +5 -87
  62. package/bundled/definition19.js +14 -422
  63. package/bundled/definition2.cjs +3 -14
  64. package/bundled/definition2.js +16 -49
  65. package/bundled/definition20.cjs +30 -5
  66. package/bundled/definition20.js +159 -9
  67. package/bundled/definition21.cjs +28 -19
  68. package/bundled/definition21.js +164 -47
  69. package/bundled/definition22.cjs +4 -24
  70. package/bundled/definition22.js +18 -88
  71. package/bundled/definition23.cjs +12 -0
  72. package/bundled/definition23.js +37 -0
  73. package/bundled/definition24.cjs +39 -0
  74. package/bundled/definition24.js +72 -0
  75. package/bundled/definition3.cjs +1 -1
  76. package/bundled/definition3.js +24 -21
  77. package/bundled/definition4.cjs +23 -38
  78. package/bundled/definition4.js +81 -63
  79. package/bundled/definition5.cjs +2 -2
  80. package/bundled/definition5.js +5 -5
  81. package/bundled/definition6.cjs +11 -11
  82. package/bundled/definition6.js +57 -41
  83. package/bundled/definition9.cjs +12 -30
  84. package/bundled/definition9.js +55 -148
  85. package/bundled/divider.cjs +1 -1
  86. package/bundled/divider.js +5 -5
  87. package/bundled/listbox.cjs +1 -1
  88. package/bundled/listbox.js +1 -1
  89. package/bundled/localized.cjs +1 -1
  90. package/bundled/localized.js +1 -0
  91. package/bundled/mixins.cjs +5 -5
  92. package/bundled/mixins.js +49 -49
  93. package/bundled/numberConverter.cjs +12 -0
  94. package/bundled/numberConverter.js +38 -0
  95. package/bundled/picker-field.template.cjs +8 -7
  96. package/bundled/picker-field.template.js +16 -15
  97. package/bundled/slider.template.cjs +7 -7
  98. package/bundled/slider.template.js +12 -12
  99. package/bundled/slottable-request.cjs +1 -1
  100. package/bundled/slottable-request.js +8 -38
  101. package/bundled/time-selection-picker.template.cjs +4 -4
  102. package/bundled/time-selection-picker.template.js +35 -35
  103. package/bundled/utils.cjs +1 -0
  104. package/bundled/utils.js +1420 -0
  105. package/bundled/vivid-element.cjs +1 -1
  106. package/bundled/vivid-element.js +1 -1
  107. package/button/definition.cjs +5 -5
  108. package/button/definition.js +1 -1
  109. package/button/index.cjs +1 -1
  110. package/button/index.js +1 -1
  111. package/calendar/index.cjs +11 -11
  112. package/calendar/index.js +30 -237
  113. package/calendar-event/index.cjs +3 -3
  114. package/calendar-event/index.js +4 -4
  115. package/card/definition.cjs +5 -5
  116. package/card/definition.js +1 -1
  117. package/card/index.cjs +15 -12
  118. package/card/index.js +17 -13
  119. package/checkbox/definition.cjs +5 -5
  120. package/checkbox/definition.js +1 -1
  121. package/checkbox/index.cjs +1 -1
  122. package/checkbox/index.js +2 -2
  123. package/color-picker/definition.cjs +5 -5
  124. package/color-picker/definition.js +2 -2
  125. package/color-picker/index.cjs +10 -10
  126. package/color-picker/index.js +58 -57
  127. package/combobox/definition.cjs +5 -5
  128. package/combobox/definition.js +2 -2
  129. package/combobox/index.cjs +9 -8
  130. package/combobox/index.js +40 -35
  131. package/contextual-help/definition.cjs +5 -5
  132. package/contextual-help/definition.js +2 -2
  133. package/contextual-help/index.cjs +1 -1
  134. package/contextual-help/index.js +2 -2
  135. package/country/definition.cjs +5 -5
  136. package/country/definition.js +1 -1
  137. package/country/index.cjs +1 -12
  138. package/country/index.js +4 -1216
  139. package/country-group/definition.cjs +6 -0
  140. package/country-group/definition.js +3 -0
  141. package/country-group/index.cjs +43 -0
  142. package/country-group/index.js +166 -0
  143. package/custom-elements.json +1274 -200
  144. package/data-grid/definition.cjs +9 -9
  145. package/data-grid/definition.js +2 -2
  146. package/data-grid/index.cjs +18 -18
  147. package/data-grid/index.js +260 -262
  148. package/date-picker/definition.cjs +5 -5
  149. package/date-picker/definition.js +2 -2
  150. package/date-picker/index.cjs +1 -1
  151. package/date-picker/index.js +13 -13
  152. package/date-range-picker/definition.cjs +5 -5
  153. package/date-range-picker/definition.js +2 -2
  154. package/date-range-picker/index.cjs +1 -1
  155. package/date-range-picker/index.js +8 -8
  156. package/date-time-picker/definition.cjs +5 -5
  157. package/date-time-picker/definition.js +2 -2
  158. package/date-time-picker/index.cjs +4 -4
  159. package/date-time-picker/index.js +25 -25
  160. package/dial-pad/definition.cjs +5 -5
  161. package/dial-pad/definition.js +2 -2
  162. package/dial-pad/index.cjs +6 -5
  163. package/dial-pad/index.js +14 -12
  164. package/dialog/definition.cjs +5 -5
  165. package/dialog/definition.js +2 -2
  166. package/dialog/index.cjs +6 -6
  167. package/dialog/index.js +17 -16
  168. package/divider/definition.cjs +1 -1
  169. package/divider/definition.js +1 -1
  170. package/divider/index.cjs +1 -1
  171. package/divider/index.js +1 -1
  172. package/empty-state/definition.cjs +5 -5
  173. package/empty-state/definition.js +2 -2
  174. package/empty-state/index.cjs +2 -2
  175. package/empty-state/index.js +6 -5
  176. package/fab/definition.cjs +5 -5
  177. package/fab/definition.js +2 -2
  178. package/fab/index.cjs +4 -4
  179. package/fab/index.js +13 -12
  180. package/file-picker/definition.cjs +5 -5
  181. package/file-picker/definition.js +2 -2
  182. package/file-picker/index.cjs +20 -17
  183. package/file-picker/index.js +40 -36
  184. package/flag/definition.cjs +6 -0
  185. package/flag/definition.js +3 -0
  186. package/flag/index.cjs +10 -0
  187. package/flag/index.js +61 -0
  188. package/header/definition.cjs +1 -1
  189. package/header/definition.js +1 -1
  190. package/header/index.cjs +4 -4
  191. package/header/index.js +5 -5
  192. package/icon/definition.cjs +1 -0
  193. package/icon/definition.js +1 -0
  194. package/icon/index.cjs +1 -1
  195. package/icon/index.js +1 -0
  196. package/index.cjs +204 -192
  197. package/index.js +55 -52
  198. package/layout/definition.cjs +1 -1
  199. package/layout/definition.js +1 -1
  200. package/lib/button/button.d.ts +1 -0
  201. package/lib/combobox/combobox.d.ts +0 -3
  202. package/lib/components.d.ts +2 -0
  203. package/lib/country/countries-data.d.ts +1 -0
  204. package/lib/country/{country-code-to-flag-icon.d.ts → utils.d.ts} +0 -3
  205. package/lib/country-group/country-group.d.ts +829 -0
  206. package/lib/country-group/country-group.template.d.ts +3 -0
  207. package/lib/country-group/definition.d.ts +3 -0
  208. package/lib/country-group/index.d.ts +1 -0
  209. package/lib/country-group/locale.d.ts +3 -0
  210. package/lib/date-picker/date-picker.d.ts +4 -0
  211. package/lib/date-range-picker/date-range-picker.d.ts +2 -0
  212. package/lib/date-time-picker/date-time-picker.d.ts +4 -4
  213. package/lib/dial-pad/dial-pad.d.ts +6 -2
  214. package/lib/dialog/dialog.d.ts +0 -1
  215. package/lib/flag/definition.d.ts +3 -0
  216. package/lib/flag/flag.d.ts +8 -0
  217. package/lib/flag/flag.template.d.ts +3 -0
  218. package/lib/flag/index.d.ts +1 -0
  219. package/lib/icon/icon.d.ts +1 -2
  220. package/lib/menu/menu.d.ts +0 -1
  221. package/lib/option/option.d.ts +0 -1
  222. package/lib/rich-text-editor/rte/exports.d.ts +1 -0
  223. package/lib/rich-text-editor/rte/features/alignment.d.ts +1 -1
  224. package/lib/rich-text-editor/rte/features/character-count.d.ts +21 -0
  225. package/lib/rich-text-editor/rte/features/font-size-picker.d.ts +1 -1
  226. package/lib/rich-text-editor/rte/features/internal/basic-text-blocks.d.ts +1 -1
  227. package/lib/rich-text-editor/rte/features/keyboard-shortcuts.d.ts +1 -1
  228. package/lib/rich-text-editor/rte/features/text-color-picker.d.ts +1 -1
  229. package/lib/rich-text-editor/rte/public-interface.d.ts +6 -0
  230. package/lib/searchable-select/option-tag.d.ts +3 -2
  231. package/lib/searchable-select/searchable-select.d.ts +3 -1
  232. package/lib/table/definition.d.ts +2 -1
  233. package/lib/table/table-header-cell.d.ts +3 -0
  234. package/lib/table/table-sorting-button.d.ts +415 -0
  235. package/lib/table/table-sorting-button.template.d.ts +3 -0
  236. package/lib/tag-name-map.d.ts +2 -1
  237. package/lib/time-picker/time-picker.d.ts +2 -0
  238. package/locales/de-DE.cjs +5 -178
  239. package/locales/de-DE.js +3 -179
  240. package/locales/en-GB.cjs +5 -9
  241. package/locales/en-GB.js +3 -10
  242. package/locales/en-US.cjs +269 -2
  243. package/locales/en-US.js +266 -1
  244. package/locales/ja-JP.cjs +5 -171
  245. package/locales/ja-JP.js +3 -172
  246. package/locales/zh-CN.cjs +5 -172
  247. package/locales/zh-CN.js +3 -173
  248. package/menu/definition.cjs +5 -5
  249. package/menu/definition.js +1 -1
  250. package/menu/index.cjs +1 -1
  251. package/menu/index.js +2 -2
  252. package/menu-item/definition.cjs +6 -6
  253. package/menu-item/definition.js +1 -1
  254. package/menu-item/index.cjs +1 -1
  255. package/menu-item/index.js +2 -2
  256. package/nav/definition.cjs +1 -1
  257. package/nav/definition.js +1 -1
  258. package/nav-disclosure/definition.cjs +5 -5
  259. package/nav-disclosure/definition.js +2 -2
  260. package/nav-disclosure/index.cjs +4 -4
  261. package/nav-disclosure/index.js +13 -12
  262. package/nav-item/definition.cjs +5 -5
  263. package/nav-item/definition.js +2 -2
  264. package/nav-item/index.cjs +2 -2
  265. package/nav-item/index.js +12 -11
  266. package/note/definition.cjs +5 -5
  267. package/note/definition.js +2 -2
  268. package/note/index.cjs +3 -3
  269. package/note/index.js +11 -10
  270. package/number-field/definition.cjs +5 -5
  271. package/number-field/definition.js +2 -2
  272. package/number-field/index.cjs +4 -4
  273. package/number-field/index.js +29 -28
  274. package/option/definition.cjs +5 -5
  275. package/option/definition.js +2 -2
  276. package/option/index.cjs +1 -1
  277. package/option/index.js +2 -2
  278. package/package.json +9 -10
  279. package/pagination/definition.cjs +5 -5
  280. package/pagination/definition.js +2 -2
  281. package/pagination/index.cjs +3 -3
  282. package/pagination/index.js +16 -16
  283. package/popover/definition.cjs +5 -5
  284. package/popover/definition.js +2 -2
  285. package/popover/index.cjs +7 -7
  286. package/popover/index.js +12 -11
  287. package/popup/definition.cjs +4 -4
  288. package/popup/definition.js +1 -1
  289. package/popup/index.cjs +1 -1
  290. package/popup/index.js +1 -1
  291. package/progress/definition.cjs +1 -1
  292. package/progress/definition.js +1 -1
  293. package/progress/index.cjs +2 -2
  294. package/progress/index.js +5 -5
  295. package/radio/definition.cjs +1 -1
  296. package/radio/definition.js +1 -1
  297. package/radio/index.cjs +1 -1
  298. package/radio/index.js +1 -1
  299. package/radio-group/definition.cjs +5 -5
  300. package/radio-group/definition.js +2 -2
  301. package/radio-group/index.cjs +4 -4
  302. package/radio-group/index.js +11 -11
  303. package/range-slider/definition.cjs +5 -5
  304. package/range-slider/definition.js +2 -2
  305. package/range-slider/index.cjs +4 -4
  306. package/range-slider/index.js +39 -36
  307. package/rich-text-editor/definition.cjs +32 -31
  308. package/rich-text-editor/definition.js +3 -3
  309. package/rich-text-editor/index.cjs +13 -13
  310. package/rich-text-editor/index.js +1887 -1830
  311. package/rich-text-view/definition.cjs +1 -1
  312. package/rich-text-view/definition.js +1 -1
  313. package/rich-text-view/index.cjs +1 -1
  314. package/rich-text-view/index.js +8 -8
  315. package/searchable-select/definition.cjs +4 -4
  316. package/searchable-select/definition.js +2 -2
  317. package/searchable-select/index.cjs +15 -13
  318. package/searchable-select/index.js +75 -72
  319. package/select/definition.cjs +5 -5
  320. package/select/definition.js +2 -2
  321. package/select/index.cjs +1 -1
  322. package/select/index.js +2 -2
  323. package/selectable-box/definition.cjs +5 -5
  324. package/selectable-box/definition.js +2 -2
  325. package/selectable-box/index.cjs +7 -7
  326. package/selectable-box/index.js +12 -12
  327. package/shared/foundation/test-utilities/fixture.d.ts +1 -1
  328. package/shared/icon/utils.d.ts +1 -0
  329. package/shared/localization/Locale.d.ts +2 -0
  330. package/shared/patterns/linkable.d.ts +1 -1
  331. package/shared/picker-field/mixins/calendar-picker.d.ts +1 -0
  332. package/shared/picker-field/mixins/calendar-picker.template.d.ts +1 -0
  333. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +1 -0
  334. package/shared/picker-field/mixins/single-date-picker.d.ts +1 -0
  335. package/shared/picker-field/mixins/single-value-picker.d.ts +1 -0
  336. package/shared/picker-field/mixins/time-selection-picker.d.ts +1 -0
  337. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +2 -0
  338. package/shared/picker-field/picker-field.d.ts +2 -0
  339. package/side-drawer/definition.cjs +1 -1
  340. package/side-drawer/definition.js +1 -1
  341. package/simple-color-picker/definition.cjs +5 -5
  342. package/simple-color-picker/definition.js +2 -2
  343. package/simple-color-picker/index.cjs +3 -3
  344. package/simple-color-picker/index.js +15 -14
  345. package/slider/definition.cjs +5 -5
  346. package/slider/definition.js +1 -1
  347. package/slider/index.cjs +1 -1
  348. package/slider/index.js +1 -1
  349. package/split-button/definition.cjs +5 -5
  350. package/split-button/definition.js +2 -2
  351. package/split-button/index.cjs +6 -6
  352. package/split-button/index.js +17 -16
  353. package/status/definition.cjs +5 -5
  354. package/status/definition.js +2 -2
  355. package/status/index.cjs +2 -2
  356. package/status/index.js +11 -10
  357. package/switch/definition.cjs +5 -5
  358. package/switch/definition.js +2 -2
  359. package/switch/index.cjs +4 -4
  360. package/switch/index.js +11 -10
  361. package/tab/definition.cjs +5 -5
  362. package/tab/definition.js +2 -2
  363. package/tab/index.cjs +1 -1
  364. package/tab/index.js +2 -2
  365. package/tab-panel/definition.cjs +1 -1
  366. package/tab-panel/definition.js +1 -1
  367. package/tab-panel/index.cjs +1 -1
  368. package/tab-panel/index.js +1 -1
  369. package/table/definition.cjs +4 -1
  370. package/table/definition.js +3 -2
  371. package/table/index.cjs +19 -10
  372. package/table/index.js +70 -21
  373. package/tabs/definition.cjs +6 -6
  374. package/tabs/definition.js +2 -2
  375. package/tabs/index.cjs +2 -2
  376. package/tabs/index.js +5 -5
  377. package/tag/definition.cjs +5 -5
  378. package/tag/definition.js +2 -2
  379. package/tag/index.cjs +8 -8
  380. package/tag/index.js +14 -13
  381. package/tag-group/definition.cjs +1 -1
  382. package/tag-group/definition.js +1 -1
  383. package/tag-group/index.cjs +3 -3
  384. package/tag-group/index.js +5 -5
  385. package/text-area/definition.cjs +5 -5
  386. package/text-area/definition.js +2 -2
  387. package/text-area/index.cjs +2 -2
  388. package/text-area/index.js +13 -13
  389. package/text-field/definition.cjs +5 -5
  390. package/text-field/definition.js +2 -2
  391. package/text-field/index.cjs +1 -1
  392. package/text-field/index.js +2 -2
  393. package/time-picker/definition.cjs +4 -4
  394. package/time-picker/definition.js +2 -2
  395. package/time-picker/index.cjs +1 -1
  396. package/time-picker/index.js +2 -2
  397. package/toggletip/definition.cjs +5 -5
  398. package/toggletip/definition.js +2 -2
  399. package/toggletip/index.cjs +1 -1
  400. package/toggletip/index.js +2 -2
  401. package/tooltip/definition.cjs +5 -5
  402. package/tooltip/definition.js +2 -2
  403. package/tooltip/index.cjs +1 -1
  404. package/tooltip/index.js +2 -2
  405. package/tree-item/definition.cjs +5 -5
  406. package/tree-item/definition.js +2 -2
  407. package/tree-item/index.cjs +1 -1
  408. package/tree-item/index.js +2 -2
  409. package/tree-view/definition.cjs +5 -5
  410. package/tree-view/definition.js +2 -2
  411. package/tree-view/index.cjs +3 -3
  412. package/tree-view/index.js +18 -18
  413. package/unbundled/button.cjs +2 -2
  414. package/unbundled/button.js +2 -2
  415. package/unbundled/calendar-picker.template.cjs +4347 -9
  416. package/unbundled/calendar-picker.template.js +4345 -7
  417. package/unbundled/chunk.cjs +0 -22
  418. package/unbundled/definition11.cjs +6 -0
  419. package/unbundled/definition11.js +6 -0
  420. package/unbundled/definition13.cjs +1 -8
  421. package/unbundled/definition13.js +1 -8
  422. package/unbundled/definition14.cjs +3 -2
  423. package/unbundled/definition14.js +3 -2
  424. package/unbundled/definition2.cjs +5 -75
  425. package/unbundled/definition2.js +1 -71
  426. package/unbundled/definition21.cjs +1 -2
  427. package/unbundled/definition21.js +1 -2
  428. package/unbundled/definition22.cjs +7 -2
  429. package/unbundled/definition22.js +7 -2
  430. package/unbundled/definition24.cjs +98 -979
  431. package/unbundled/definition24.js +93 -974
  432. package/unbundled/definition25.cjs +37 -322
  433. package/unbundled/definition25.js +33 -318
  434. package/unbundled/definition26.cjs +317 -91
  435. package/unbundled/definition26.js +313 -87
  436. package/unbundled/definition27.cjs +94 -192
  437. package/unbundled/definition27.js +91 -183
  438. package/unbundled/definition28.cjs +388 -395
  439. package/unbundled/definition28.js +388 -395
  440. package/unbundled/definition29.cjs +189 -110
  441. package/unbundled/definition29.js +180 -107
  442. package/unbundled/definition30.cjs +520 -36
  443. package/unbundled/definition30.js +519 -35
  444. package/unbundled/definition31.cjs +2 -1189
  445. package/unbundled/definition31.js +1 -1188
  446. package/unbundled/definition32.cjs +207 -1835
  447. package/unbundled/definition32.js +203 -1807
  448. package/unbundled/definition33.cjs +85 -228
  449. package/unbundled/definition33.js +82 -165
  450. package/unbundled/definition34.cjs +1887 -25
  451. package/unbundled/definition34.js +1857 -24
  452. package/unbundled/definition35.cjs +315 -121
  453. package/unbundled/definition35.js +236 -114
  454. package/unbundled/definition36.cjs +25 -405
  455. package/unbundled/definition36.js +22 -397
  456. package/unbundled/definition37.cjs +49 -140
  457. package/unbundled/definition37.js +46 -137
  458. package/unbundled/definition38.cjs +346 -329
  459. package/unbundled/definition38.js +343 -326
  460. package/unbundled/definition39.cjs +183 -234
  461. package/unbundled/definition39.js +181 -232
  462. package/unbundled/definition40.cjs +377 -47
  463. package/unbundled/definition40.js +372 -42
  464. package/unbundled/definition41.cjs +256 -57
  465. package/unbundled/definition41.js +255 -56
  466. package/unbundled/definition42.cjs +45 -421
  467. package/unbundled/definition42.js +41 -417
  468. package/unbundled/definition43.cjs +63 -49
  469. package/unbundled/definition43.js +61 -47
  470. package/unbundled/definition44.cjs +438 -30
  471. package/unbundled/definition44.js +434 -25
  472. package/unbundled/definition45.cjs +46 -84
  473. package/unbundled/definition45.js +43 -81
  474. package/unbundled/definition46.cjs +29 -54
  475. package/unbundled/definition46.js +24 -50
  476. package/unbundled/definition47.cjs +93 -21
  477. package/unbundled/definition47.js +91 -16
  478. package/unbundled/definition48.cjs +49 -33
  479. package/unbundled/definition48.js +46 -30
  480. package/unbundled/definition49.cjs +22 -347
  481. package/unbundled/definition49.js +16 -344
  482. package/unbundled/definition50.cjs +34 -211
  483. package/unbundled/definition50.js +30 -207
  484. package/unbundled/definition51.cjs +282 -242
  485. package/unbundled/definition51.js +275 -235
  486. package/unbundled/definition52.cjs +211 -51
  487. package/unbundled/definition52.js +209 -48
  488. package/unbundled/definition53.cjs +275 -131
  489. package/unbundled/definition53.js +272 -127
  490. package/unbundled/definition54.cjs +50 -261
  491. package/unbundled/definition54.js +48 -260
  492. package/unbundled/definition55.cjs +126 -443
  493. package/unbundled/definition55.js +123 -441
  494. package/unbundled/definition56.cjs +238 -12669
  495. package/unbundled/definition56.js +232 -12506
  496. package/unbundled/definition57.cjs +408 -729
  497. package/unbundled/definition57.js +406 -727
  498. package/unbundled/definition58.cjs +3619 -106
  499. package/unbundled/definition58.js +3449 -99
  500. package/unbundled/definition59.cjs +625 -868
  501. package/unbundled/definition59.js +620 -863
  502. package/unbundled/definition60.cjs +106 -108
  503. package/unbundled/definition60.js +102 -104
  504. package/unbundled/definition61.cjs +1040 -71
  505. package/unbundled/definition61.js +1035 -65
  506. package/unbundled/definition62.cjs +105 -169
  507. package/unbundled/definition62.js +101 -165
  508. package/unbundled/definition63.cjs +70 -113
  509. package/unbundled/definition63.js +65 -109
  510. package/unbundled/definition64.cjs +181 -53
  511. package/unbundled/definition64.js +178 -50
  512. package/unbundled/definition65.cjs +109 -76
  513. package/unbundled/definition65.js +109 -75
  514. package/unbundled/definition66.cjs +58 -21
  515. package/unbundled/definition66.js +55 -15
  516. package/unbundled/definition67.cjs +81 -74
  517. package/unbundled/definition67.js +79 -73
  518. package/unbundled/definition68.cjs +19 -344
  519. package/unbundled/definition68.js +14 -335
  520. package/unbundled/definition69.cjs +88 -26
  521. package/unbundled/definition69.js +85 -22
  522. package/unbundled/definition7.cjs +18 -3
  523. package/unbundled/definition7.js +18 -3
  524. package/unbundled/definition70.cjs +330 -111
  525. package/unbundled/definition70.js +320 -108
  526. package/unbundled/definition71.cjs +26 -271
  527. package/unbundled/definition71.js +21 -267
  528. package/unbundled/definition72.cjs +134 -28
  529. package/unbundled/definition72.js +125 -26
  530. package/unbundled/definition73.cjs +245 -113
  531. package/unbundled/definition73.js +242 -104
  532. package/unbundled/definition74.cjs +28 -212
  533. package/unbundled/definition74.js +26 -202
  534. package/unbundled/definition75.cjs +120 -52190
  535. package/unbundled/definition75.js +112 -52188
  536. package/unbundled/definition76.cjs +232 -0
  537. package/unbundled/definition76.js +213 -0
  538. package/unbundled/definition77.cjs +533 -0
  539. package/unbundled/definition77.js +513 -0
  540. package/unbundled/listbox.cjs +1 -1
  541. package/unbundled/listbox.js +1 -1
  542. package/unbundled/localized.cjs +2 -2
  543. package/unbundled/localized.js +1 -1
  544. package/unbundled/numberConverter.cjs +91 -0
  545. package/unbundled/numberConverter.js +74 -0
  546. package/unbundled/picker-field.template.cjs +3 -1
  547. package/unbundled/picker-field.template.js +3 -1
  548. package/unbundled/slottable-request.cjs +2 -3168
  549. package/unbundled/slottable-request.js +3 -3097
  550. package/unbundled/time-selection-picker.template.cjs +1 -1
  551. package/unbundled/time-selection-picker.template.js +1 -1
  552. package/unbundled/utils.cjs +1439 -0
  553. package/unbundled/utils.js +1428 -0
  554. package/unbundled/vivid-element.cjs +1 -1
  555. package/unbundled/vivid-element.js +1 -1
  556. package/video-player/definition.cjs +1 -1
  557. package/video-player/definition.js +1 -1
  558. package/video-player/index.cjs +3 -3
  559. package/video-player/index.js +9 -9
  560. package/vivid.api.json +860 -409
  561. package/unbundled/chunk.js +0 -33
  562. package/unbundled/en-US.cjs +0 -447
  563. package/unbundled/en-US.js +0 -443
  564. /package/{lib/icon/icon.placeholder.d.ts → shared/icon/icon-placeholder.d.ts} +0 -0
@@ -1,837 +1,516 @@
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("./definition27.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.ts
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}";
14
+ //#endregion
15
+ //#region src/lib/range-slider/range-slider.ts
16
+ var Direction = {
17
+ Increment: 1,
18
+ Decrement: -1
19
+ };
22
20
  /**
21
+ * Base class for range-slider
22
+ *
23
+ * @component range-slider
23
24
  * @public
24
- * @component select
25
- * @slot - Default slot.
26
- * @slot icon - The preferred way to add an icon to the select control.
27
- * @slot meta - Slot to add meta content to the select control.
28
- * @slot helper-text - Describes how to use the select. Alternative to the `helper-text` attribute.
29
- * @event {CustomEvent<undefined>} input - Fires a custom 'input' event when the value updates
30
- * @event {CustomEvent<HTMLElement>} change - Fires a custom 'change' event when the value updates
31
- * @vueModel modelValue value input `event.currentTarget.value`
32
- * @testAction selectOptionByValue selectOptionByValue
33
- * @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
34
40
  */
35
- 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))) {
36
42
  constructor(..._args) {
37
43
  super(..._args);
38
- this.proxy = document.createElement("select");
39
- this.activeIndex = -1;
40
- this.rangeStartIndex = -1;
41
- this.open = false;
42
- this.listboxId = (0, _microsoft_fast_web_utilities.uniqueId)("listbox-");
43
- this.maxHeight = 0;
44
- this.fixedDropdown = false;
45
- this._feedbackWrapper = null;
46
- this._isResetting = false;
47
- this.clearable = false;
48
- this._isClearButtonFocused = false;
49
- }
50
- /**
51
- * Returns the last checked option.
52
- *
53
- * @internal
54
- */
55
- get activeOption() {
56
- return this.options[this.activeIndex];
57
- }
58
- /**
59
- * Returns the list of checked options.
60
- *
61
- * @internal
62
- */
63
- get checkedOptions() {
64
- return this.options.filter((o) => o.checked);
65
- }
66
- /**
67
- * Returns the index of the first selected option.
68
- *
69
- * @internal
70
- */
71
- get firstSelectedOptionIndex() {
72
- return this.options.indexOf(this.firstSelectedOption);
73
- }
74
- /**
75
- * Updates the `ariaActiveDescendant` property when the active index changes.
76
- *
77
- * @internal
78
- */
79
- activeIndexChanged(_, next) {
80
- this._activeDescendant = this.options[next]?.id ?? "";
81
- this.focusAndScrollOptionIntoView();
82
- }
83
- /**
84
- * Toggles the checked state for the currently active option.
85
- *
86
- * @remarks
87
- * Multiple-selection mode only.
88
- *
89
- * @internal
90
- */
91
- checkActiveIndex() {
92
- const activeItem = this.activeOption;
93
- /* v8 ignore else -- @preserve */
94
- if (activeItem) activeItem.checked = true;
95
- }
96
- /**
97
- * Sets the active index to the first option and marks it as checked.
98
- *
99
- * @remarks
100
- * Multi-selection mode only.
101
- *
102
- * @param preserveChecked - mark all options unchecked before changing the active index
103
- *
104
- * @internal
105
- */
106
- checkFirstOption(preserveChecked) {
107
- const firstSelectableIndex = this.getNextSelectableIndex(0);
108
- if (firstSelectableIndex === -1) return;
109
- if (preserveChecked) {
110
- if (this.rangeStartIndex === -1) this.rangeStartIndex = this.activeIndex;
111
- this.options.forEach((o, i) => {
112
- o.checked = (0, _microsoft_fast_web_utilities.inRange)(i, firstSelectableIndex, this.rangeStartIndex + 1) && !o.disabled;
113
- });
114
- } else this.uncheckAllOptions();
115
- this.activeIndex = firstSelectableIndex;
116
- this.checkActiveIndex();
117
- }
118
- /**
119
- * Decrements the active index and sets the matching option as checked.
120
- *
121
- * @remarks
122
- * Multi-selection mode only.
123
- *
124
- * @param preserveChecked - mark all options unchecked before changing the active index
125
- *
126
- * @internal
127
- */
128
- checkLastOption(preserveChecked) {
129
- const lastSelectableIndex = this.getPreviousSelectableIndex(this.length - 1);
130
- if (lastSelectableIndex === -1) return;
131
- if (preserveChecked) {
132
- if (this.rangeStartIndex === -1) this.rangeStartIndex = this.activeIndex;
133
- this.options.forEach((o, i) => {
134
- o.checked = (0, _microsoft_fast_web_utilities.inRange)(i, this.rangeStartIndex, lastSelectableIndex + 1) && !o.disabled;
135
- });
136
- } else this.uncheckAllOptions();
137
- this.activeIndex = lastSelectableIndex;
138
- this.checkActiveIndex();
139
- }
140
- /**
141
- * Increments the active index and marks the matching option as checked.
142
- *
143
- * @remarks
144
- * Multiple-selection mode only.
145
- *
146
- * @param preserveChecked - mark all options unchecked before changing the active index
147
- *
148
- * @internal
149
- */
150
- checkNextOption(preserveChecked) {
151
- const nextIndex = this.getNextSelectableIndex(this.activeIndex + 1);
152
- if (nextIndex === -1) return;
153
- if (preserveChecked) {
154
- if (this.rangeStartIndex === -1) this.rangeStartIndex = this.activeIndex;
155
- this.options.forEach((o, i) => {
156
- o.checked = (0, _microsoft_fast_web_utilities.inRange)(i, this.rangeStartIndex, nextIndex + 1) && !o.disabled;
157
- });
158
- } else this.uncheckAllOptions();
159
- this.activeIndex = nextIndex;
160
- this.checkActiveIndex();
161
- }
162
- /**
163
- * Decrements the active index and marks the matching option as checked.
164
- *
165
- * @remarks
166
- * Multiple-selection mode only.
167
- *
168
- * @param preserveChecked - mark all options unchecked before changing the active index
169
- *
170
- * @internal
171
- */
172
- checkPreviousOption(preserveChecked) {
173
- const previousIndex = this.getPreviousSelectableIndex(this.activeIndex - 1);
174
- if (previousIndex === -1) return;
175
- if (preserveChecked) {
176
- if (this.rangeStartIndex === -1) this.rangeStartIndex = this.activeIndex;
177
- if (this.checkedOptions.length === 1) this.rangeStartIndex += 1;
178
- this.options.forEach((o, i) => {
179
- o.checked = (0, _microsoft_fast_web_utilities.inRange)(i, previousIndex, this.rangeStartIndex + 1) && !o.disabled;
180
- });
181
- } else this.uncheckAllOptions();
182
- this.activeIndex = previousIndex;
183
- this.checkActiveIndex();
44
+ this.start = "";
45
+ this.end = "";
46
+ this.min = 0;
47
+ this.max = 10;
48
+ this.step = 1;
49
+ this.orientation = _microsoft_fast_web_utilities.Orientation.horizontal;
50
+ this.ariaStartLabel = null;
51
+ this.ariaEndLabel = null;
52
+ this.markers = false;
53
+ this.pin = false;
54
+ this.valueTextFormatter = (value) => parseFloat(value).toLocaleString(this.locale.lang);
55
+ this.proxy = document.createElement("input");
56
+ this._trackEl = null;
57
+ this._startThumbEl = null;
58
+ this._endThumbEl = null;
59
+ this._draggingThumb = false;
60
+ this._visiblyFocusedThumb = null;
61
+ this._hoveredThumb = null;
62
+ this._startThumbCss = "";
63
+ this._endThumbCss = "";
64
+ this._selectedRangeCss = "";
65
+ }
66
+ #isInternalValueUpdate = false;
67
+ /**
68
+ * @internal
69
+ */
70
+ startChanged() {
71
+ this.currentStart = this.start;
72
+ if (!this.#isInternalValueUpdate) {
73
+ this.dirtyValue = true;
74
+ this.#updateFormValue();
75
+ }
76
+ if (this.$fastController.isConnected) this.#updateThumbPositions();
184
77
  }
185
78
  /**
186
79
  * @internal
187
80
  */
188
- focusAndScrollOptionIntoView() {
189
- super.focusAndScrollOptionIntoView(this.activeOption);
81
+ initialStartChanged(_, newValue) {
82
+ if (newValue && !this.dirtyValue) {
83
+ this.start = newValue;
84
+ this.dirtyValue = false;
85
+ }
190
86
  }
191
87
  /**
192
- * In multiple-selection mode:
193
- * If any options are selected, the first selected option is checked when
194
- * the listbox receives focus. If no options are selected, the first
195
- * selectable option is checked.
196
- *
197
88
  * @internal
198
89
  */
199
- focusinHandler(e) {
200
- if (!this.multiple) return super.focusinHandler(e);
201
- /* v8 ignore else -- @preserve */
202
- if (!this.shouldSkipFocus && e.target === e.currentTarget) {
203
- this.uncheckAllOptions();
204
- if (this.activeIndex === -1) this.activeIndex = this.firstSelectedOptionIndex !== -1 ? this.firstSelectedOptionIndex : 0;
205
- this.checkActiveIndex();
206
- this.setSelectedOptions();
207
- this.focusAndScrollOptionIntoView();
208
- }
209
- this.shouldSkipFocus = false;
90
+ currentStartChanged() {
91
+ this.start = this.currentStart;
210
92
  }
211
93
  /**
212
- * Sets an option as selected and gives it focus.
94
+ * The start property, typed as a number.
213
95
  *
214
96
  * @public
215
97
  */
216
- setSelectedOptions() {
217
- if (!this.multiple) {
218
- super.setSelectedOptions();
219
- return;
220
- }
221
- /* v8 ignore else -- @preserve */
222
- if (this.$fastController.isConnected && this.options) {
223
- this.selectedOptions = this.options.filter((o) => o.selected);
224
- this.focusAndScrollOptionIntoView();
225
- }
98
+ get startAsNumber() {
99
+ return parseFloat(this.start);
226
100
  }
227
- /**
228
- * Toggles the selected state of the provided options. If any provided items
229
- * are in an unselected state, all items are set to selected. If every
230
- * provided item is selected, they are all unselected.
231
- *
232
- * @internal
233
- */
234
- toggleSelectedForAllCheckedOptions() {
235
- const enabledCheckedOptions = this.checkedOptions.filter((o) => !o.disabled);
236
- const force = !enabledCheckedOptions.every((o) => o.selected);
237
- enabledCheckedOptions.forEach((o) => o.selected = force);
238
- this.selectedIndex = this.options.indexOf(enabledCheckedOptions[enabledCheckedOptions.length - 1]);
239
- this.setSelectedOptions();
240
- this.updateValue(true);
101
+ set startAsNumber(next) {
102
+ this.start = next.toString();
241
103
  }
242
104
  /**
243
105
  * @internal
244
106
  */
245
- typeaheadBufferChanged(prev, next) {
246
- if (!this.multiple) {
247
- super.typeaheadBufferChanged(prev, next);
248
- return;
249
- }
250
- /* v8 ignore if -- @preserve */
251
- if (this.$fastController.isConnected) {
252
- const typeaheadMatches = this.getTypeaheadMatches();
253
- const activeIndex = this.options.indexOf(typeaheadMatches[0]);
254
- if (activeIndex > -1) {
255
- this.activeIndex = activeIndex;
256
- this.uncheckAllOptions();
257
- this.checkActiveIndex();
258
- }
259
- this.typeaheadExpired = false;
107
+ endChanged() {
108
+ this.currentEnd = this.end;
109
+ if (!this.#isInternalValueUpdate) {
110
+ this.dirtyValue = true;
111
+ this.#updateFormValue();
260
112
  }
113
+ if (this.$fastController.isConnected) this.#updateThumbPositions();
261
114
  }
262
115
  /**
263
- * Unchecks all options.
264
- *
265
- * @remarks
266
- * Multiple-selection mode only.
267
- *
268
- * @param preserveChecked - reset the rangeStartIndex
269
- *
270
- * @internal
271
- */
272
- uncheckAllOptions(preserveChecked = false) {
273
- this.options.forEach((o) => o.checked = false);
274
- /* v8 ignore else -- @preserve */
275
- if (!preserveChecked) this.rangeStartIndex = -1;
276
- }
277
- /**
278
- * Sets focus when the open property changes.
279
- *
280
116
  * @internal
281
117
  */
282
- openChanged(prev, next) {
283
- if (!this.collapsible) return;
284
- if (this.open) {
285
- this.focusAndScrollOptionIntoView();
286
- this.indexWhenOpened = this.selectedIndex;
287
- _microsoft_fast_element.Updates.enqueue(() => this.focus());
288
- return;
118
+ initialEndChanged(_, newValue) {
119
+ if (newValue && !this.dirtyValue) {
120
+ this.end = newValue;
121
+ this.dirtyValue = false;
289
122
  }
290
- const didClose = prev === true && next === false;
291
- const selectionChangedWhileOpen = this.indexWhenOpened !== this.selectedIndex;
292
- if (didClose && selectionChangedWhileOpen) this.updateValue(true);
293
- }
294
- /**
295
- * The component is collapsible when in single-selection mode.
296
- *
297
- * @internal
298
- */
299
- get collapsible() {
300
- return !this.multiple;
301
123
  }
302
124
  /**
303
125
  * @internal
304
126
  */
305
- valueChanged(prev, next) {
306
- const nextSelectedIndex = this.options.findIndex((el) => el.value === next);
307
- const validNextSelectedIndex = this._validSelectedIndex(nextSelectedIndex);
308
- const nextValue = this.options[validNextSelectedIndex]?.value ?? "";
309
- if (this.selectedIndex !== validNextSelectedIndex) this.selectedIndex = validNextSelectedIndex;
310
- if (next !== nextValue) return;
311
- super.valueChanged(prev, next);
312
- this.updateDisplayValue();
127
+ currentEndChanged() {
128
+ this.end = this.currentEnd;
313
129
  }
314
130
  /**
315
- * Sets the value and display value to match the first selected option.
316
- *
317
- * @param shouldEmit - if true, the input and change events will be emitted
131
+ * The end property, typed as a number.
318
132
  *
319
- * @internal
133
+ * @public
320
134
  */
321
- updateValue(shouldEmit) {
322
- if (this.$fastController.isConnected) this.value = this.firstSelectedOption?.value ?? "";
323
- if (shouldEmit) {
135
+ get endAsNumber() {
136
+ return parseFloat(this.end);
137
+ }
138
+ set endAsNumber(next) {
139
+ this.end = next.toString();
140
+ }
141
+ #updateValues({ start, end }, emitEvents = true) {
142
+ if (start === this.start) start = void 0;
143
+ if (end === this.end) end = void 0;
144
+ if (start === void 0 && end === void 0) return;
145
+ this.#isInternalValueUpdate = true;
146
+ if (start !== void 0) this.start = start;
147
+ if (end !== void 0) this.end = end;
148
+ this.#isInternalValueUpdate = false;
149
+ if (emitEvents) {
150
+ if (start !== void 0) this.$emit("input:start");
151
+ if (end !== void 0) this.$emit("input:end");
324
152
  this.$emit("input");
325
- this.$emit("change", this, {
326
- bubbles: true,
327
- composed: void 0
328
- });
153
+ this.$emit("change");
154
+ this.dirtyValue = true;
329
155
  }
156
+ this.#updateFormValue();
330
157
  }
331
- /**
332
- * Updates the proxy value when the selected index changes.
333
- *
334
- * @param prev - the previous selected index
335
- * @param next - the next selected index
336
- *
337
- * @internal
338
- */
339
- selectedIndexChanged(prev, next) {
340
- super.selectedIndexChanged(prev, next);
341
- this.updateValue();
158
+ #applyStep(thumb, direction) {
159
+ this.#updateValues({ [thumb]: this.#roundToNearestStep(thumb, Number(this[thumb]) + direction * this.step).toString() });
342
160
  }
343
161
  /**
344
- * Handle opening and closing the listbox when the select is clicked.
345
- *
346
- * @param e - the mouse event
347
162
  * @internal
348
163
  */
349
- clickHandler(e) {
350
- if (this.disabled || this._isFromContextualHelp(e)) return;
351
- const clickedOption = e.target.closest(`option,[role=option],[data-vvd-component=option]`);
352
- if (clickedOption && clickedOption.disabled) return;
353
- if (this.multiple) {
354
- this.uncheckAllOptions();
355
- this.activeIndex = this.options.indexOf(clickedOption);
356
- this.checkActiveIndex();
357
- this.toggleSelectedForAllCheckedOptions();
358
- } else super.clickHandler(e);
359
- if (this.collapsible) this.open = !this.open;
360
- return true;
164
+ orientationChanged() {
165
+ if (this.$fastController.isConnected) this.#updateThumbPositions();
361
166
  }
362
167
  /**
363
- * Handles focus state when the element or its children lose focus.
364
- *
365
- * @param e - The focus event
366
168
  * @internal
367
169
  */
368
- focusoutHandler(e) {
369
- if (this.multiple) this.uncheckAllOptions();
370
- if (!this.open) return true;
371
- const focusTarget = e.relatedTarget;
372
- if (this.isSameNode(focusTarget)) {
373
- this.focus();
374
- return;
375
- }
376
- /* v8 ignore else -- @preserve */
377
- if (!this.options.includes(focusTarget)) {
378
- this.open = false;
379
- if (this.indexWhenOpened !== this.selectedIndex) this.updateValue(true);
170
+ nameChanged(previous, next) {
171
+ super.nameChanged(previous, next);
172
+ this.#updateFormValue();
173
+ }
174
+ #updateFormValue() {
175
+ if (!this.name) this.setFormValue(null);
176
+ else {
177
+ const formData = new FormData();
178
+ formData.append(this.name, this.start);
179
+ formData.append(this.name, this.end);
180
+ this.setFormValue(formData);
380
181
  }
381
182
  }
382
- /**
383
- * Updates the value when an option's value changes.
384
- *
385
- * @param source - the source object
386
- * @param propertyName - the property to evaluate
387
- *
388
- * @internal
389
- */
390
- handleChange(source, propertyName) {
391
- super.handleChange(source, propertyName);
392
- if (propertyName === "value") this.updateValue();
183
+ formResetCallback() {
184
+ this.#updateValues({
185
+ start: this.initialStart ?? this.min.toString(),
186
+ end: this.initialEnd ?? this.max.toString()
187
+ });
188
+ super.formResetCallback();
189
+ }
190
+ get #thumbs() {
191
+ return {
192
+ start: this._startThumbEl,
193
+ end: this._endThumbEl
194
+ };
195
+ }
196
+ get #thumbConstraints() {
197
+ return {
198
+ start: {
199
+ min: this.min,
200
+ max: this.endAsNumber
201
+ },
202
+ end: {
203
+ min: this.startAsNumber,
204
+ max: this.max
205
+ }
206
+ };
393
207
  }
394
- /**
395
- * Prevents focus when a scrollbar is clicked.
396
- *
397
- * @param e - the mouse event object
398
- *
399
- * @internal
400
- */
401
- mousedownHandler(e) {
402
- if (e.offsetX >= 0 && e.offsetX <= this.listbox.scrollWidth) return super.mousedownHandler(e);
403
- return this.collapsible;
208
+ #getThumbId(thumb) {
209
+ return thumb === this._startThumbEl ? "start" : "end";
404
210
  }
405
- /**
406
- * @internal
407
- */
408
- multipleChanged(_, next) {
409
- this.options.forEach((o) => {
410
- o.checked = next ? false : void 0;
411
- });
412
- this.setSelectedOptions();
413
- /* v8 ignore if -- @preserve */
414
- if (this.proxy) this.proxy.multiple = next;
211
+ #getThumbIdFromEvent(e) {
212
+ return this.#getThumbId(e.target);
415
213
  }
416
- /**
417
- * Updates the selectedness of each option when the list of selected options changes.
418
- *
419
- * @param prev - the previous list of selected options
420
- * @param next - the current list of selected options
421
- *
422
- * @internal
423
- */
424
- selectedOptionsChanged(prev, next) {
425
- super.selectedOptionsChanged(prev, next);
426
- this.options.forEach((o, i) => {
427
- const proxyOption = this.proxy.options.item(i);
428
- if (proxyOption) proxyOption.selected = o.selected;
429
- });
214
+ #updateThumbPositions() {
215
+ const startOffsetPct = this.#thumbTrackEndOffset(this.startAsNumber);
216
+ const endOffsetPct = this.#thumbTrackEndOffset(this.endAsNumber);
217
+ const [dirProp, dimProp] = this.orientation === _microsoft_fast_web_utilities.Orientation.horizontal ? ["right", "width"] : ["bottom", "height"];
218
+ const transition = `transition: ${this._draggingThumb ? "none" : "all 0.2s ease"};`;
219
+ this._startThumbCss = `${dirProp}: ${startOffsetPct}%; ${transition}`;
220
+ this._endThumbCss = `${dirProp}: ${endOffsetPct}%; ${transition}`;
221
+ this._selectedRangeCss = `${dirProp}: ${endOffsetPct}%; ${dimProp}: ${startOffsetPct - endOffsetPct}%; ${transition}`;
430
222
  }
431
- /**
432
- * Resets and fills the proxy to match the component's options.
433
- *
434
- * @internal
435
- */
436
- setProxyOptions() {
437
- /* v8 ignore else -- @preserve */
438
- if (this.proxy instanceof HTMLSelectElement && this.options) {
439
- this.proxy.length = 0;
440
- this.options.forEach((option) => {
441
- const proxyOption = option.proxy || (option instanceof HTMLOptionElement ? option.cloneNode() : null);
442
- if (proxyOption) this.proxy.options.add(proxyOption);
443
- });
444
- }
223
+ #thumbTrackEndOffset(value) {
224
+ return (1 - require_slider_template.inverseLerp(this.min, this.max, value)) * 100;
445
225
  }
446
- /**
447
- * Handles keydown actions when the select is in multiple selection mode.
448
- *
449
- * @internal
450
- */
451
- multipleKeydownHandler(e) {
452
- if (this.disabled) return;
453
- const { key, shiftKey } = e;
454
- this.shouldSkipFocus = false;
455
- switch (key) {
456
- case _microsoft_fast_web_utilities.keyHome:
457
- this.checkFirstOption(shiftKey);
458
- return;
459
- case _microsoft_fast_web_utilities.keyArrowDown:
460
- this.checkNextOption(shiftKey);
461
- return;
462
- case _microsoft_fast_web_utilities.keyArrowUp:
463
- this.checkPreviousOption(shiftKey);
464
- return;
465
- case _microsoft_fast_web_utilities.keyEnd:
466
- this.checkLastOption(shiftKey);
467
- return;
468
- case _microsoft_fast_web_utilities.keyTab:
469
- this.focusAndScrollOptionIntoView();
470
- return;
471
- case _microsoft_fast_web_utilities.keyEscape:
472
- this.uncheckAllOptions();
473
- this.checkActiveIndex();
474
- return;
475
- case _microsoft_fast_web_utilities.keySpace:
476
- e.preventDefault();
477
- /* v8 ignore else -- @preserve */
478
- if (this.typeaheadExpired) {
479
- this.toggleSelectedForAllCheckedOptions();
480
- return;
481
- }
482
- default:
483
- /* v8 ignore else -- @preserve */
484
- if (key.length === 1) this.handleTypeAhead(`${key}`);
485
- return;
486
- }
226
+ #calculateValueFromMouseEvent(e) {
227
+ const trackClientRect = this._trackEl.getBoundingClientRect();
228
+ const [minPos, maxPos, valuePos] = this.orientation === _microsoft_fast_web_utilities.Orientation.horizontal ? [
229
+ this._trackEl.clientLeft,
230
+ this._trackEl.clientWidth,
231
+ e.pageX - document.documentElement.scrollLeft - this.getBoundingClientRect().left
232
+ ] : [
233
+ trackClientRect.top,
234
+ trackClientRect.bottom,
235
+ e.pageY - document.documentElement.scrollTop
236
+ ];
237
+ return require_slider_template.lerp(this.min, this.max, require_slider_template.inverseLerp(minPos, maxPos, valuePos));
238
+ }
239
+ #roundToNearestStep(thumb, value) {
240
+ 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);
241
+ }
242
+ #isNonVisibleFocus = false;
243
+ #focusThumbNonVisibly(thumb) {
244
+ this.#isNonVisibleFocus = true;
245
+ thumb.focus();
246
+ this.#isNonVisibleFocus = false;
487
247
  }
488
248
  /**
489
- * Handle keyboard interaction for the select.
490
- *
491
- * @param e - the keyboard event
492
249
  * @internal
493
250
  */
494
- keydownHandler(e) {
495
- const selectedIndexBefore = this.selectedIndex;
496
- if (this.multiple) this.multipleKeydownHandler(e);
497
- else super.keydownHandler(e);
498
- switch (e.key) {
499
- case _microsoft_fast_web_utilities.keySpace:
500
- e.preventDefault();
501
- if (this.collapsible && this.typeaheadExpired) this.open = !this.open;
502
- break;
503
- case _microsoft_fast_web_utilities.keyHome:
504
- case _microsoft_fast_web_utilities.keyEnd:
505
- e.preventDefault();
506
- break;
507
- case _microsoft_fast_web_utilities.keyEnter:
508
- e.preventDefault();
509
- this.open = !this.open;
510
- break;
511
- case _microsoft_fast_web_utilities.keyEscape:
512
- if (this.collapsible && this.open) {
513
- e.preventDefault();
514
- this.open = false;
515
- }
516
- break;
517
- case _microsoft_fast_web_utilities.keyTab:
518
- if (this.collapsible && this.open) {
519
- e.preventDefault();
520
- this.open = false;
521
- }
522
- return true;
523
- }
524
- if (this.collapsible && !this.open && this.selectedIndex !== selectedIndexBefore) this.updateValue(true);
525
- return !(e.key === _microsoft_fast_web_utilities.keyArrowDown || e.key === _microsoft_fast_web_utilities.keyArrowUp);
251
+ _isThumbPopupOpen(thumb) {
252
+ return this._visiblyFocusedThumb === thumb || this._hoveredThumb === thumb || this._draggingThumb === thumb;
526
253
  }
527
254
  connectedCallback() {
528
255
  super.connectedCallback();
529
- this.addEventListener("focusout", this.focusoutHandler);
530
- this.addEventListener("contentchange", this.updateDisplayValue);
256
+ this.#updateValues({
257
+ start: this.start || this.initialStart || this.min.toString(),
258
+ end: this.end || this.initialEnd || this.max.toString()
259
+ }, false);
260
+ this.#registerThumbListeners();
261
+ this.#updateThumbPositions();
262
+ document.addEventListener("visibilitychange", this.#onVisibilityChange);
531
263
  }
532
264
  disconnectedCallback() {
533
- this.removeEventListener("focusout", this.focusoutHandler);
534
- this.removeEventListener("contentchange", this.updateDisplayValue);
535
265
  super.disconnectedCallback();
536
- }
537
- /**
538
- *
539
- * @internal
540
- */
541
- updateDisplayValue() {
542
- if (this.collapsible) _microsoft_fast_element.Observable.notify(this, "displayValue");
543
- }
544
- get displayValue() {
545
- _microsoft_fast_element.Observable.track(this, "displayValue");
546
- return this.firstSelectedOption?.getAttribute("label") ?? this.firstSelectedOption?.text ?? this.placeholder ?? "";
547
- }
548
- _newDefaultSelectedIndex(prev, next, currentSelectIndex) {
549
- const defaultSelectedIndex = super._newDefaultSelectedIndex(prev, next, currentSelectIndex);
550
- if (defaultSelectedIndex === null && currentSelectIndex === -1 && !this.placeholder) {
551
- const firstSelectableIndex = this.getNextSelectableIndex(0);
552
- if (firstSelectableIndex !== -1) return firstSelectableIndex;
266
+ this.#unregisterThumbListeners();
267
+ this.#unregisterDragListeners();
268
+ document.removeEventListener("visibilitychange", this.#onVisibilityChange);
269
+ }
270
+ #registerThumbListeners() {
271
+ for (const thumb of ["start", "end"]) {
272
+ this.#thumbs[thumb].addEventListener("keydown", this.#onThumbKeydown);
273
+ this.#thumbs[thumb].addEventListener("mousedown", this.#onThumbMousedown, { passive: true });
274
+ this.#thumbs[thumb].addEventListener("touchstart", this.#onThumbMousedown, { passive: true });
275
+ this.#thumbs[thumb].addEventListener("mouseover", this.#onMouseOver, { passive: true });
276
+ this.#thumbs[thumb].addEventListener("mouseout", this.#onMouseOut, { passive: true });
277
+ this.#thumbs[thumb].addEventListener("focus", this.#onThumbFocus);
278
+ this.#thumbs[thumb].addEventListener("blur", this.#onThumbBlur);
553
279
  }
554
- return defaultSelectedIndex;
555
- }
556
- _isDefaultSelected(option) {
557
- return super._isDefaultSelected(option) || option.value === this.initialValue || !this._isResetting && option.value === this.value;
558
- }
559
- slottedOptionsChanged(prev, next) {
560
- this.options.forEach((o) => {
561
- _microsoft_fast_element.Observable.getNotifier(o).unsubscribe(this, "value");
562
- });
563
- super.slottedOptionsChanged(prev, next);
564
- this.options.forEach((o) => {
565
- _microsoft_fast_element.Observable.getNotifier(o).subscribe(this, "value");
566
- });
567
- this.setProxyOptions();
568
- this.updateValue();
569
- const scale = this.getAttribute("scale") || this.scale;
570
- next.forEach((element) => {
571
- if (scale) {
572
- element.setAttribute("scale", scale);
573
- element.scale = scale;
574
- }
575
- });
576
- this.proxy.value = this.value;
577
- this.validate();
578
- }
579
- formResetCallback() {
580
- this.setProxyOptions();
581
- this._isResetting = true;
582
- this.selectedIndex = this._newDefaultSelectedIndex([], this.options, -1) ?? -1;
583
- this._isResetting = false;
584
- }
585
- /**
586
- * @internal
587
- */
588
- get _shouldShowClearButton() {
589
- if (!this.clearable) return false;
590
- if (this.multiple) return this.selectedOptions?.length > 0;
591
- return this.value !== "";
592
- }
593
- /**
594
- * @internal
595
- */
596
- _onClearButtonFocus() {
597
- this._isClearButtonFocused = true;
598
- this.activeIndex = -1;
599
- this.uncheckAllOptions();
600
- }
601
- /**
602
- * @internal
603
- */
604
- _onClearButtonBlur() {
605
- this._isClearButtonFocused = false;
606
280
  }
607
- /**
608
- * @internal
609
- */
610
- get _shouldShowLabelWrapper() {
611
- return Boolean(this.label || this._hasContextualHelp || this.multiple && this._shouldShowClearButton);
281
+ #unregisterThumbListeners() {
282
+ for (const thumb of ["start", "end"]) {
283
+ this.#thumbs[thumb].removeEventListener("keydown", this.#onThumbKeydown);
284
+ this.#thumbs[thumb].removeEventListener("mousedown", this.#onThumbMousedown);
285
+ this.#thumbs[thumb].removeEventListener("touchstart", this.#onThumbMousedown);
286
+ this.#thumbs[thumb].removeEventListener("mouseover", this.#onMouseOver);
287
+ this.#thumbs[thumb].removeEventListener("mouseout", this.#onMouseOut);
288
+ this.#thumbs[thumb].removeEventListener("focus", this.#onThumbFocus);
289
+ this.#thumbs[thumb].removeEventListener("blur", this.#onThumbBlur);
290
+ }
612
291
  }
613
292
  /**
614
293
  * @internal
615
294
  */
616
- _onClearButtonClick() {
617
- if (this.multiple) this.selectedOptions?.forEach((o) => {
618
- /* v8 ignore else -- @preserve */
619
- if (!o.disabled) o.selected = false;
620
- });
621
- else this.selectedIndex = -1;
622
- this.updateValue(true);
295
+ _onMouseDown(e) {
296
+ if (this.disabled || this._draggingThumb) return;
297
+ const value = this.#calculateValueFromMouseEvent(e);
298
+ const startDistance = Math.abs(value - Number(this.start));
299
+ const endDistance = Math.abs(value - Number(this.end));
300
+ const thumb = startDistance < endDistance || startDistance === endDistance && value < Number(this.start) ? "start" : "end";
301
+ this.#updateValues({ [thumb]: `${this.#roundToNearestStep(thumb, value)}` });
302
+ this._draggingThumb = thumb;
303
+ this.#focusThumbNonVisibly(this.#thumbs[thumb]);
304
+ this.#registerDragHandlers();
623
305
  }
306
+ #onThumbFocus = (e) => {
307
+ if (!this.#isNonVisibleFocus) this._visiblyFocusedThumb = this.#getThumbIdFromEvent(e);
308
+ this.#isNonVisibleFocus = false;
309
+ };
310
+ #onThumbBlur = () => {
311
+ this._visiblyFocusedThumb = null;
312
+ };
313
+ #onVisibilityChange = () => {
314
+ if (document.hidden && (this.shadowRoot.activeElement === this._startThumbEl || this.shadowRoot.activeElement === this._endThumbEl)) this.#isNonVisibleFocus = true;
315
+ };
316
+ #onMouseOver = (e) => {
317
+ this._hoveredThumb = this.#getThumbIdFromEvent(e);
318
+ };
319
+ #onMouseOut = () => {
320
+ this._hoveredThumb = null;
321
+ };
322
+ #onThumbMousedown = (event) => {
323
+ if (this.disabled || event.defaultPrevented) return;
324
+ let target = event.target;
325
+ if (target === this._endThumbEl && this.startAsNumber === this.max && this.endAsNumber === this.max) target = this._startThumbEl;
326
+ this.#focusThumbNonVisibly(target);
327
+ this._draggingThumb = this.#getThumbId(target);
328
+ this.#registerDragHandlers();
329
+ };
330
+ #onThumbKeydown = (e) => {
331
+ const thumb = this.#getThumbIdFromEvent(e);
332
+ this._visiblyFocusedThumb = thumb;
333
+ if (e.key === _microsoft_fast_web_utilities.keyHome) {
334
+ e.preventDefault();
335
+ this.#updateValues({ [thumb]: `${this.#thumbConstraints[thumb].min}` });
336
+ } else if (e.key === _microsoft_fast_web_utilities.keyEnd) {
337
+ e.preventDefault();
338
+ this.#updateValues({ [thumb]: `${this.#thumbConstraints[thumb].max}` });
339
+ } else {
340
+ if (e.shiftKey) return;
341
+ switch (e.key) {
342
+ case require_key_codes.keyArrowRight:
343
+ case _microsoft_fast_web_utilities.keyArrowDown:
344
+ e.preventDefault();
345
+ this.#applyStep(thumb, Direction.Increment);
346
+ break;
347
+ case require_key_codes.keyArrowLeft:
348
+ case _microsoft_fast_web_utilities.keyArrowUp:
349
+ e.preventDefault();
350
+ this.#applyStep(thumb, Direction.Decrement);
351
+ break;
352
+ }
353
+ }
354
+ };
355
+ #registerDragHandlers() {
356
+ window.addEventListener("mousemove", this.#onDragMove, { passive: true });
357
+ window.addEventListener("touchmove", this.#onDragMove, { passive: true });
358
+ window.addEventListener("mouseup", this.#onDragEnd);
359
+ window.addEventListener("touchend", this.#onDragEnd);
360
+ window.document.addEventListener("mouseleave", this.#onDragEnd);
361
+ }
362
+ #unregisterDragListeners() {
363
+ window.removeEventListener("mouseup", this.#onDragEnd);
364
+ window.document.removeEventListener("mouseleave", this.#onDragEnd);
365
+ window.removeEventListener("mousemove", this.#onDragMove);
366
+ window.removeEventListener("touchmove", this.#onDragMove);
367
+ window.removeEventListener("touchend", this.#onDragEnd);
368
+ }
369
+ #onDragMove = (e) => {
370
+ if (this.disabled || e.defaultPrevented || !this._draggingThumb) return;
371
+ const sourceEvent = "TouchEvent" in window && e instanceof TouchEvent ? e.touches[0] : e;
372
+ const value = this.#calculateValueFromMouseEvent(sourceEvent);
373
+ this.#updateValues({ [this._draggingThumb]: `${this.#roundToNearestStep(this._draggingThumb, value)}` });
374
+ };
375
+ #onDragEnd = () => {
376
+ this._draggingThumb = false;
377
+ this.#unregisterDragListeners();
378
+ };
624
379
  };
625
- require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "activeIndex", void 0);
626
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], Select.prototype, "multiple", void 0);
380
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "start", void 0);
627
381
  require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
628
- attribute: "open",
629
- mode: "boolean"
630
- })], Select.prototype, "open", void 0);
631
- require_decorate.__decorate([_microsoft_fast_element.volatile], Select.prototype, "collapsible", null);
632
- require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "control", void 0);
633
- require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "maxHeight", void 0);
634
- require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "_anchor", void 0);
635
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)()], Select.prototype, "scale", void 0);
636
- require_decorate.__decorate([_microsoft_fast_element.attr], Select.prototype, "appearance", void 0);
637
- require_decorate.__decorate([_microsoft_fast_element.attr], Select.prototype, "shape", void 0);
382
+ mode: "fromView",
383
+ attribute: "start"
384
+ })], RangeSlider.prototype, "initialStart", void 0);
385
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "current-start" })], RangeSlider.prototype, "currentStart", void 0);
386
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "end", void 0);
638
387
  require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
639
- mode: "boolean",
640
- attribute: "fixed-dropdown"
641
- })], Select.prototype, "fixedDropdown", void 0);
642
- require_decorate.__decorate([_microsoft_fast_element.attr], Select.prototype, "placeholder", void 0);
643
- require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "_feedbackWrapper", void 0);
644
- require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "metaSlottedContent", void 0);
645
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], Select.prototype, "clearable", void 0);
646
- require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "_isClearButtonFocused", void 0);
647
- //#endregion
648
- //#region src/lib/select/select.scss?inline
649
- 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])) ::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))}";
388
+ mode: "fromView",
389
+ attribute: "end"
390
+ })], RangeSlider.prototype, "initialEnd", void 0);
391
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "current-end" })], RangeSlider.prototype, "currentEnd", void 0);
392
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ converter: _microsoft_fast_element.nullableNumberConverter })], RangeSlider.prototype, "min", void 0);
393
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ converter: _microsoft_fast_element.nullableNumberConverter })], RangeSlider.prototype, "max", void 0);
394
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ converter: require_slider_template.defaultToOneConverter })], RangeSlider.prototype, "step", void 0);
395
+ require_decorate.__decorate([_microsoft_fast_element.attr], RangeSlider.prototype, "orientation", void 0);
396
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "aria-start-label" })], RangeSlider.prototype, "ariaStartLabel", void 0);
397
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "aria-end-label" })], RangeSlider.prototype, "ariaEndLabel", void 0);
398
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], RangeSlider.prototype, "markers", void 0);
399
+ require_decorate.__decorate([_microsoft_fast_element.attr], RangeSlider.prototype, "connotation", void 0);
400
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], RangeSlider.prototype, "pin", void 0);
401
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "valueTextFormatter", void 0);
402
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "_draggingThumb", void 0);
403
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "_visiblyFocusedThumb", void 0);
404
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "_hoveredThumb", void 0);
405
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "_startThumbCss", void 0);
406
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "_endThumbCss", void 0);
407
+ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "_selectedRangeCss", void 0);
650
408
  //#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"
409
+ //#region src/lib/range-slider/range-slider.template.ts
410
+ var getClasses = ({ disabled, connotation }) => (0, _microsoft_fast_web_utilities.classNames)("control", ["disabled", Boolean(disabled)], [`connotation-${connotation}`, Boolean(connotation)]);
411
+ var getThumbClassesFor = (thumb) => ({ _visiblyFocusedThumb }) => (0, _microsoft_fast_web_utilities.classNames)("thumb-container", ["focus-visible", _visiblyFocusedThumb === thumb]);
412
+ var RangeSliderTemplate = (context) => {
413
+ const popupTag = context.tagFor(require_definition.Popup);
414
+ return _microsoft_fast_element.html` <template
415
+ @mousedown="${(x, c) => x._onMouseDown(c.event)}"
658
416
  >
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}"
708
- >
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}>
417
+ <div class="${getClasses} ${(x) => x.orientation}">
418
+ <div class="positioning-region">
419
+ <div ${(0, _microsoft_fast_element.ref)("_trackEl")} class="track">
420
+ <div class="track-start" style="${(x) => x._selectedRangeCss}"></div>
421
+ ${(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))}`)}
422
+ </div>
423
+ <div
424
+ id="start-thumb"
425
+ ${(0, _microsoft_fast_element.ref)("_startThumbEl")}
426
+ class="${getThumbClassesFor("start")}"
427
+ style="${(x) => x._startThumbCss}"
428
+ role="slider"
429
+ tabindex="${(x) => x.disabled ? null : 0}"
430
+ aria-label="${(x) => x.ariaStartLabel || x.locale.rangeSlider.startThumbLabel}"
431
+ aria-valuetext="${(x) => x.valueTextFormatter(x.start)}"
432
+ aria-valuenow="${(x) => x.start}"
433
+ aria-valuemin="${(x) => x.min}"
434
+ aria-valuemax="${(x) => x.end}"
435
+ aria-disabled="${(x) => x.disabled}"
436
+ aria-orientation="${(x) => x.orientation}"
437
+ ></div>
438
+ ${(0, _microsoft_fast_element.when)((x) => x.pin, _microsoft_fast_element.html`<${popupTag}
439
+ class="popup"
440
+ arrow
441
+ alternate
442
+ :anchor="${(x) => x._startThumbEl}"
443
+ :open=${(x) => x._isThumbPopupOpen("start")}
444
+ :placementStrategy=${(x) => x.orientation === _microsoft_fast_web_utilities.Orientation.horizontal ? require_definition.PlacementStrategy.AutoPlacementHorizontal : require_definition.PlacementStrategy.AutoPlacementVertical}
445
+ animation-frame
446
+ exportparts="vvd-theme-alternate"
447
+ aria-hidden="true"
448
+ >
449
+ <div class="tooltip">${(x) => x.valueTextFormatter(x.start)}</div>
450
+ </${popupTag}>`)}
451
+ <div
452
+ id="end-thumb"
453
+ ${(0, _microsoft_fast_element.ref)("_endThumbEl")}
454
+ class="${getThumbClassesFor("end")}"
455
+ style="${(x) => x._endThumbCss}"
456
+ role="slider"
457
+ tabindex="${(x) => x.disabled ? null : 0}"
458
+ aria-label="${(x) => x.ariaEndLabel || x.locale.rangeSlider.endThumbLabel}"
459
+ aria-valuetext="${(x) => x.valueTextFormatter(x.end)}"
460
+ aria-valuenow="${(x) => x.end}"
461
+ aria-valuemin="${(x) => x.start}"
462
+ aria-valuemax="${(x) => x.max}"
463
+ aria-disabled="${(x) => x.disabled}"
464
+ aria-orientation="${(x) => x.orientation}"
465
+ ></div>
466
+ ${(0, _microsoft_fast_element.when)((x) => x.pin, _microsoft_fast_element.html`<${popupTag}
467
+ class="popup"
468
+ arrow
469
+ alternate
470
+ :anchor="${(x) => x._endThumbEl}"
471
+ :open=${(x) => x._isThumbPopupOpen("end")}
472
+ :placementStrategy=${(x) => x.orientation === _microsoft_fast_web_utilities.Orientation.horizontal ? require_definition.PlacementStrategy.AutoPlacementHorizontal : require_definition.PlacementStrategy.AutoPlacementVertical}
473
+ animation-frame
474
+ exportparts="vvd-theme-alternate"
475
+ aria-hidden="true"
476
+ >
477
+ <div class="tooltip">${(x) => x.valueTextFormatter(x.end)}</div>
478
+ </${popupTag}>`)}
759
479
  </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
- `;
480
+ </div>
481
+ </template>`;
800
482
  };
801
483
  //#endregion
802
- //#region src/lib/select/definition.ts
484
+ //#region src/lib/range-slider/definition.ts
803
485
  /**
804
486
  * @internal
805
487
  */
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 });
488
+ var rangeSliderDefinition = require_vivid_element.defineVividComponent("range-slider", RangeSlider, RangeSliderTemplate, [require_definition.popupDefinition], {
489
+ styles: range_slider_default,
490
+ shadowOptions: { delegatesFocus: true }
491
+ });
813
492
  /**
814
- * Registers the select elements with the design system.
493
+ * Registers the range-slider element with the design system.
815
494
  *
816
495
  * @param prefix - the prefix to use for the component name
817
496
  */
818
- var registerSelect = require_vivid_element.createRegisterFunction(selectDefinition);
497
+ var registerRangeSlider = require_vivid_element.createRegisterFunction(rangeSliderDefinition);
819
498
  //#endregion
820
- Object.defineProperty(exports, "Select", {
499
+ Object.defineProperty(exports, "RangeSlider", {
821
500
  enumerable: true,
822
501
  get: function() {
823
- return Select;
502
+ return RangeSlider;
824
503
  }
825
504
  });
826
- Object.defineProperty(exports, "registerSelect", {
505
+ Object.defineProperty(exports, "rangeSliderDefinition", {
827
506
  enumerable: true,
828
507
  get: function() {
829
- return registerSelect;
508
+ return rangeSliderDefinition;
830
509
  }
831
510
  });
832
- Object.defineProperty(exports, "selectDefinition", {
511
+ Object.defineProperty(exports, "registerRangeSlider", {
833
512
  enumerable: true,
834
513
  get: function() {
835
- return selectDefinition;
514
+ return registerRangeSlider;
836
515
  }
837
516
  });