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