@vonage/vivid 5.17.0 → 5.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/accordion/definition.cjs +6 -6
  2. package/accordion/definition.js +1 -1
  3. package/accordion/index.cjs +1 -1
  4. package/accordion/index.js +2 -2
  5. package/accordion-item/definition.cjs +5 -5
  6. package/accordion-item/definition.js +1 -1
  7. package/accordion-item/index.cjs +1 -1
  8. package/accordion-item/index.js +2 -2
  9. package/alert/definition.cjs +5 -5
  10. package/alert/definition.js +1 -1
  11. package/alert/index.cjs +2 -2
  12. package/alert/index.js +6 -5
  13. package/audio-player/definition.cjs +5 -5
  14. package/audio-player/definition.js +1 -1
  15. package/audio-player/index.cjs +1 -1
  16. package/audio-player/index.js +2 -1
  17. package/avatar/definition.cjs +5 -5
  18. package/avatar/definition.js +1 -1
  19. package/avatar/index.cjs +3 -3
  20. package/avatar/index.js +6 -5
  21. package/badge/definition.cjs +5 -5
  22. package/badge/definition.js +1 -1
  23. package/badge/index.cjs +1 -4
  24. package/badge/index.js +4 -20
  25. package/banner/definition.cjs +5 -5
  26. package/banner/definition.js +1 -1
  27. package/banner/index.cjs +2 -2
  28. package/banner/index.js +5 -4
  29. package/breadcrumb-item/definition.cjs +4 -4
  30. package/breadcrumb-item/definition.js +1 -1
  31. package/breadcrumb-item/index.cjs +1 -1
  32. package/breadcrumb-item/index.js +1 -0
  33. package/bundled/affix.cjs +1 -1
  34. package/bundled/affix.js +5 -5
  35. package/bundled/definition11.cjs +2 -2
  36. package/bundled/definition11.js +5 -5
  37. package/bundled/definition12.cjs +3 -3
  38. package/bundled/definition12.js +5 -5
  39. package/bundled/definition13.cjs +2 -2
  40. package/bundled/definition13.js +4 -4
  41. package/bundled/definition15.cjs +3 -3
  42. package/bundled/definition15.js +7 -7
  43. package/bundled/definition17.cjs +3 -3
  44. package/bundled/definition17.js +8 -8
  45. package/bundled/definition18.cjs +2 -2
  46. package/bundled/definition18.js +6 -6
  47. package/bundled/definition2.cjs +3 -14
  48. package/bundled/definition2.js +15 -48
  49. package/bundled/definition20.cjs +5 -5
  50. package/bundled/definition20.js +8 -8
  51. package/bundled/definition22.cjs +4 -39
  52. package/bundled/definition22.js +18 -70
  53. package/bundled/definition23.cjs +12 -0
  54. package/bundled/definition23.js +37 -0
  55. package/bundled/definition24.cjs +39 -0
  56. package/bundled/definition24.js +72 -0
  57. package/bundled/definition3.cjs +1 -1
  58. package/bundled/definition3.js +9 -6
  59. package/bundled/definition4.cjs +2 -2
  60. package/bundled/definition4.js +5 -5
  61. package/bundled/definition6.cjs +11 -11
  62. package/bundled/definition6.js +45 -29
  63. package/bundled/localized.cjs +1 -1
  64. package/bundled/localized.js +1 -0
  65. package/bundled/mixins.cjs +4 -4
  66. package/bundled/mixins.js +7 -7
  67. package/bundled/numberConverter.cjs +12 -0
  68. package/bundled/numberConverter.js +38 -0
  69. package/bundled/picker-field.template.cjs +2 -1
  70. package/bundled/picker-field.template.js +2 -1
  71. package/bundled/utils.cjs +1 -0
  72. package/bundled/utils.js +1420 -0
  73. package/bundled/vivid-element.cjs +1 -1
  74. package/bundled/vivid-element.js +1 -1
  75. package/button/definition.cjs +5 -5
  76. package/button/definition.js +1 -1
  77. package/button/index.cjs +1 -1
  78. package/button/index.js +1 -1
  79. package/card/definition.cjs +5 -5
  80. package/card/definition.js +1 -1
  81. package/card/index.cjs +4 -4
  82. package/card/index.js +7 -6
  83. package/checkbox/definition.cjs +5 -5
  84. package/checkbox/definition.js +1 -1
  85. package/checkbox/index.cjs +1 -1
  86. package/checkbox/index.js +1 -1
  87. package/color-picker/definition.cjs +5 -5
  88. package/color-picker/definition.js +1 -1
  89. package/color-picker/index.cjs +7 -7
  90. package/color-picker/index.js +55 -54
  91. package/combobox/definition.cjs +5 -5
  92. package/combobox/definition.js +1 -1
  93. package/combobox/index.cjs +2 -2
  94. package/combobox/index.js +8 -7
  95. package/contextual-help/definition.cjs +5 -5
  96. package/contextual-help/definition.js +1 -1
  97. package/contextual-help/index.cjs +1 -1
  98. package/contextual-help/index.js +1 -1
  99. package/country/definition.cjs +5 -5
  100. package/country/definition.js +1 -1
  101. package/country/index.cjs +1 -12
  102. package/country/index.js +4 -1216
  103. package/country-group/definition.cjs +6 -0
  104. package/country-group/definition.js +3 -0
  105. package/country-group/index.cjs +43 -0
  106. package/country-group/index.js +166 -0
  107. package/custom-elements.json +1112 -450
  108. package/data-grid/definition.cjs +9 -9
  109. package/data-grid/definition.js +2 -2
  110. package/data-grid/index.cjs +4 -4
  111. package/data-grid/index.js +47 -46
  112. package/date-picker/definition.cjs +5 -5
  113. package/date-picker/definition.js +2 -2
  114. package/date-picker/index.cjs +1 -1
  115. package/date-picker/index.js +1 -1
  116. package/date-range-picker/definition.cjs +5 -5
  117. package/date-range-picker/definition.js +2 -2
  118. package/date-range-picker/index.cjs +1 -1
  119. package/date-range-picker/index.js +1 -1
  120. package/date-time-picker/definition.cjs +5 -5
  121. package/date-time-picker/definition.js +2 -2
  122. package/date-time-picker/index.cjs +1 -1
  123. package/date-time-picker/index.js +1 -1
  124. package/dial-pad/definition.cjs +5 -5
  125. package/dial-pad/definition.js +2 -2
  126. package/dial-pad/index.cjs +4 -4
  127. package/dial-pad/index.js +9 -8
  128. package/dialog/definition.cjs +5 -5
  129. package/dialog/definition.js +2 -2
  130. package/dialog/index.cjs +4 -4
  131. package/dialog/index.js +12 -11
  132. package/divider/definition.cjs +1 -1
  133. package/divider/definition.js +1 -1
  134. package/empty-state/definition.cjs +5 -5
  135. package/empty-state/definition.js +2 -2
  136. package/empty-state/index.cjs +2 -2
  137. package/empty-state/index.js +6 -5
  138. package/fab/definition.cjs +5 -5
  139. package/fab/definition.js +2 -2
  140. package/fab/index.cjs +2 -2
  141. package/fab/index.js +5 -4
  142. package/file-picker/definition.cjs +5 -5
  143. package/file-picker/definition.js +2 -2
  144. package/file-picker/index.cjs +6 -6
  145. package/file-picker/index.js +9 -8
  146. package/flag/definition.cjs +6 -0
  147. package/flag/definition.js +3 -0
  148. package/flag/index.cjs +10 -0
  149. package/flag/index.js +61 -0
  150. package/header/definition.cjs +1 -1
  151. package/header/definition.js +1 -1
  152. package/icon/definition.cjs +1 -0
  153. package/icon/definition.js +1 -0
  154. package/icon/index.cjs +1 -1
  155. package/icon/index.js +1 -0
  156. package/index.cjs +183 -174
  157. package/index.js +48 -45
  158. package/layout/definition.cjs +1 -1
  159. package/layout/definition.js +1 -1
  160. package/lib/button/button.d.ts +1 -0
  161. package/lib/components.d.ts +2 -0
  162. package/lib/country/countries-data.d.ts +1 -0
  163. package/lib/country/{country-code-to-flag-icon.d.ts → utils.d.ts} +0 -3
  164. package/lib/country-group/country-group.d.ts +829 -0
  165. package/lib/country-group/country-group.template.d.ts +3 -0
  166. package/lib/country-group/definition.d.ts +3 -0
  167. package/lib/country-group/index.d.ts +1 -0
  168. package/lib/country-group/locale.d.ts +3 -0
  169. package/lib/date-picker/date-picker.d.ts +4 -0
  170. package/lib/date-range-picker/date-range-picker.d.ts +2 -0
  171. package/lib/date-time-picker/date-time-picker.d.ts +4 -0
  172. package/lib/flag/definition.d.ts +3 -0
  173. package/lib/flag/flag.d.ts +8 -0
  174. package/lib/flag/flag.template.d.ts +3 -0
  175. package/lib/flag/index.d.ts +1 -0
  176. package/lib/icon/icon.d.ts +1 -2
  177. package/lib/searchable-select/option-tag.d.ts +3 -1
  178. package/lib/searchable-select/searchable-select.d.ts +3 -1
  179. package/lib/tag-name-map.d.ts +2 -1
  180. package/lib/time-picker/time-picker.d.ts +2 -0
  181. package/locales/de-DE.cjs +1 -0
  182. package/locales/de-DE.js +1 -0
  183. package/locales/en-GB.cjs +1 -0
  184. package/locales/en-GB.js +1 -0
  185. package/locales/en-US.cjs +1 -0
  186. package/locales/en-US.js +1 -0
  187. package/locales/ja-JP.cjs +1 -0
  188. package/locales/ja-JP.js +1 -0
  189. package/locales/zh-CN.cjs +1 -0
  190. package/locales/zh-CN.js +1 -0
  191. package/menu/definition.cjs +5 -5
  192. package/menu/definition.js +1 -1
  193. package/menu/index.cjs +1 -1
  194. package/menu/index.js +1 -1
  195. package/menu-item/definition.cjs +6 -6
  196. package/menu-item/definition.js +1 -1
  197. package/menu-item/index.cjs +1 -1
  198. package/menu-item/index.js +1 -1
  199. package/nav/definition.cjs +1 -1
  200. package/nav/definition.js +1 -1
  201. package/nav-disclosure/definition.cjs +5 -5
  202. package/nav-disclosure/definition.js +2 -2
  203. package/nav-disclosure/index.cjs +2 -2
  204. package/nav-disclosure/index.js +6 -5
  205. package/nav-item/definition.cjs +5 -5
  206. package/nav-item/definition.js +2 -2
  207. package/nav-item/index.cjs +2 -2
  208. package/nav-item/index.js +5 -4
  209. package/note/definition.cjs +5 -5
  210. package/note/definition.js +2 -2
  211. package/note/index.cjs +2 -2
  212. package/note/index.js +5 -4
  213. package/number-field/definition.cjs +5 -5
  214. package/number-field/definition.js +2 -2
  215. package/number-field/index.cjs +2 -2
  216. package/number-field/index.js +6 -5
  217. package/option/definition.cjs +5 -5
  218. package/option/definition.js +1 -1
  219. package/option/index.cjs +1 -1
  220. package/option/index.js +1 -1
  221. package/package.json +4 -4
  222. package/pagination/definition.cjs +5 -5
  223. package/pagination/definition.js +2 -2
  224. package/pagination/index.cjs +1 -1
  225. package/pagination/index.js +1 -1
  226. package/popover/definition.cjs +5 -5
  227. package/popover/definition.js +2 -2
  228. package/popover/index.cjs +4 -4
  229. package/popover/index.js +7 -6
  230. package/popup/definition.cjs +4 -4
  231. package/popup/definition.js +1 -1
  232. package/popup/index.cjs +1 -1
  233. package/popup/index.js +1 -1
  234. package/progress/definition.cjs +1 -1
  235. package/progress/definition.js +1 -1
  236. package/radio/definition.cjs +1 -1
  237. package/radio/definition.js +1 -1
  238. package/radio-group/definition.cjs +5 -5
  239. package/radio-group/definition.js +2 -2
  240. package/radio-group/index.cjs +1 -1
  241. package/radio-group/index.js +1 -1
  242. package/range-slider/definition.cjs +5 -5
  243. package/range-slider/definition.js +2 -2
  244. package/range-slider/index.cjs +1 -1
  245. package/range-slider/index.js +22 -19
  246. package/rich-text-editor/definition.cjs +32 -32
  247. package/rich-text-editor/definition.js +2 -2
  248. package/rich-text-editor/index.cjs +1 -1
  249. package/rich-text-editor/index.js +2 -2
  250. package/rich-text-view/definition.cjs +1 -1
  251. package/rich-text-view/definition.js +1 -1
  252. package/searchable-select/definition.cjs +4 -4
  253. package/searchable-select/definition.js +2 -2
  254. package/searchable-select/index.cjs +6 -4
  255. package/searchable-select/index.js +76 -73
  256. package/select/definition.cjs +5 -5
  257. package/select/definition.js +2 -2
  258. package/select/index.cjs +1 -1
  259. package/select/index.js +1 -1
  260. package/selectable-box/definition.cjs +5 -5
  261. package/selectable-box/definition.js +2 -2
  262. package/selectable-box/index.cjs +1 -1
  263. package/selectable-box/index.js +1 -1
  264. package/shared/icon/utils.d.ts +1 -0
  265. package/shared/localization/Locale.d.ts +2 -0
  266. package/shared/picker-field/mixins/calendar-picker.d.ts +1 -0
  267. package/shared/picker-field/mixins/calendar-picker.template.d.ts +1 -0
  268. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +1 -0
  269. package/shared/picker-field/mixins/single-date-picker.d.ts +1 -0
  270. package/shared/picker-field/mixins/single-value-picker.d.ts +1 -0
  271. package/shared/picker-field/mixins/time-selection-picker.d.ts +1 -0
  272. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +2 -0
  273. package/shared/picker-field/picker-field.d.ts +2 -0
  274. package/side-drawer/definition.cjs +1 -1
  275. package/side-drawer/definition.js +1 -1
  276. package/simple-color-picker/definition.cjs +5 -5
  277. package/simple-color-picker/definition.js +2 -2
  278. package/simple-color-picker/index.cjs +2 -2
  279. package/simple-color-picker/index.js +6 -5
  280. package/slider/definition.cjs +5 -5
  281. package/slider/definition.js +1 -1
  282. package/slider/index.cjs +1 -1
  283. package/slider/index.js +1 -1
  284. package/split-button/definition.cjs +5 -5
  285. package/split-button/definition.js +2 -2
  286. package/split-button/index.cjs +2 -2
  287. package/split-button/index.js +7 -6
  288. package/status/definition.cjs +5 -5
  289. package/status/definition.js +2 -2
  290. package/status/index.cjs +2 -2
  291. package/status/index.js +5 -4
  292. package/switch/definition.cjs +5 -5
  293. package/switch/definition.js +2 -2
  294. package/switch/index.cjs +2 -2
  295. package/switch/index.js +6 -5
  296. package/tab/definition.cjs +5 -5
  297. package/tab/definition.js +2 -2
  298. package/tab/index.cjs +1 -1
  299. package/tab/index.js +1 -1
  300. package/tab-panel/definition.cjs +1 -1
  301. package/tab-panel/definition.js +1 -1
  302. package/table/definition.cjs +17 -17
  303. package/table/definition.js +2 -2
  304. package/table/index.cjs +3 -3
  305. package/table/index.js +6 -5
  306. package/tabs/definition.cjs +6 -6
  307. package/tabs/definition.js +2 -2
  308. package/tabs/index.cjs +1 -1
  309. package/tabs/index.js +1 -1
  310. package/tag/definition.cjs +5 -5
  311. package/tag/definition.js +2 -2
  312. package/tag/index.cjs +4 -4
  313. package/tag/index.js +6 -5
  314. package/tag-group/definition.cjs +1 -1
  315. package/tag-group/definition.js +1 -1
  316. package/text-area/definition.cjs +5 -5
  317. package/text-area/definition.js +2 -2
  318. package/text-area/index.cjs +1 -1
  319. package/text-area/index.js +1 -1
  320. package/text-field/definition.cjs +5 -5
  321. package/text-field/definition.js +1 -1
  322. package/text-field/index.cjs +1 -1
  323. package/text-field/index.js +1 -1
  324. package/time-picker/definition.cjs +4 -4
  325. package/time-picker/definition.js +2 -2
  326. package/time-picker/index.cjs +1 -1
  327. package/time-picker/index.js +1 -1
  328. package/toggletip/definition.cjs +5 -5
  329. package/toggletip/definition.js +1 -1
  330. package/toggletip/index.cjs +1 -1
  331. package/toggletip/index.js +1 -1
  332. package/tooltip/definition.cjs +5 -5
  333. package/tooltip/definition.js +1 -1
  334. package/tooltip/index.cjs +1 -1
  335. package/tooltip/index.js +1 -1
  336. package/tree-item/definition.cjs +5 -5
  337. package/tree-item/definition.js +2 -2
  338. package/tree-item/index.cjs +1 -1
  339. package/tree-item/index.js +1 -1
  340. package/tree-view/definition.cjs +5 -5
  341. package/tree-view/definition.js +2 -2
  342. package/tree-view/index.cjs +1 -1
  343. package/tree-view/index.js +1 -1
  344. package/unbundled/definition11.cjs +6 -0
  345. package/unbundled/definition11.js +6 -0
  346. package/unbundled/definition14.cjs +1 -0
  347. package/unbundled/definition14.js +1 -0
  348. package/unbundled/definition2.cjs +5 -75
  349. package/unbundled/definition2.js +1 -71
  350. package/unbundled/definition28.cjs +1 -0
  351. package/unbundled/definition28.js +1 -0
  352. package/unbundled/definition31.cjs +2 -1189
  353. package/unbundled/definition31.js +1 -1188
  354. package/unbundled/definition32.cjs +207 -1835
  355. package/unbundled/definition32.js +203 -1807
  356. package/unbundled/definition33.cjs +83 -311
  357. package/unbundled/definition33.js +79 -235
  358. package/unbundled/definition34.cjs +1887 -25
  359. package/unbundled/definition34.js +1857 -24
  360. package/unbundled/definition35.cjs +315 -121
  361. package/unbundled/definition35.js +236 -114
  362. package/unbundled/definition36.cjs +25 -405
  363. package/unbundled/definition36.js +22 -397
  364. package/unbundled/definition37.cjs +47 -142
  365. package/unbundled/definition37.js +44 -139
  366. package/unbundled/definition38.cjs +345 -330
  367. package/unbundled/definition38.js +343 -328
  368. package/unbundled/definition39.cjs +183 -235
  369. package/unbundled/definition39.js +181 -233
  370. package/unbundled/definition40.cjs +377 -47
  371. package/unbundled/definition40.js +372 -42
  372. package/unbundled/definition41.cjs +256 -57
  373. package/unbundled/definition41.js +255 -56
  374. package/unbundled/definition42.cjs +45 -432
  375. package/unbundled/definition42.js +41 -428
  376. package/unbundled/definition43.cjs +63 -49
  377. package/unbundled/definition43.js +61 -47
  378. package/unbundled/definition44.cjs +438 -30
  379. package/unbundled/definition44.js +434 -25
  380. package/unbundled/definition45.cjs +46 -84
  381. package/unbundled/definition45.js +43 -81
  382. package/unbundled/definition46.cjs +29 -54
  383. package/unbundled/definition46.js +24 -50
  384. package/unbundled/definition47.cjs +93 -21
  385. package/unbundled/definition47.js +91 -16
  386. package/unbundled/definition48.cjs +49 -33
  387. package/unbundled/definition48.js +46 -30
  388. package/unbundled/definition49.cjs +22 -347
  389. package/unbundled/definition49.js +16 -344
  390. package/unbundled/definition50.cjs +34 -211
  391. package/unbundled/definition50.js +30 -207
  392. package/unbundled/definition51.cjs +282 -242
  393. package/unbundled/definition51.js +275 -235
  394. package/unbundled/definition52.cjs +211 -51
  395. package/unbundled/definition52.js +209 -48
  396. package/unbundled/definition53.cjs +275 -131
  397. package/unbundled/definition53.js +272 -127
  398. package/unbundled/definition54.cjs +50 -261
  399. package/unbundled/definition54.js +48 -260
  400. package/unbundled/definition55.cjs +126 -443
  401. package/unbundled/definition55.js +123 -441
  402. package/unbundled/definition56.cjs +234 -3596
  403. package/unbundled/definition56.js +229 -3428
  404. package/unbundled/definition57.cjs +407 -728
  405. package/unbundled/definition57.js +405 -726
  406. package/unbundled/definition58.cjs +3618 -106
  407. package/unbundled/definition58.js +3449 -100
  408. package/unbundled/definition59.cjs +624 -868
  409. package/unbundled/definition59.js +619 -863
  410. package/unbundled/definition60.cjs +106 -108
  411. package/unbundled/definition60.js +102 -104
  412. package/unbundled/definition61.cjs +1040 -71
  413. package/unbundled/definition61.js +1035 -65
  414. package/unbundled/definition62.cjs +105 -169
  415. package/unbundled/definition62.js +101 -165
  416. package/unbundled/definition63.cjs +70 -113
  417. package/unbundled/definition63.js +65 -109
  418. package/unbundled/definition64.cjs +181 -53
  419. package/unbundled/definition64.js +178 -50
  420. package/unbundled/definition65.cjs +109 -76
  421. package/unbundled/definition65.js +109 -75
  422. package/unbundled/definition66.cjs +58 -21
  423. package/unbundled/definition66.js +55 -15
  424. package/unbundled/definition67.cjs +81 -74
  425. package/unbundled/definition67.js +79 -73
  426. package/unbundled/definition68.cjs +19 -344
  427. package/unbundled/definition68.js +14 -335
  428. package/unbundled/definition69.cjs +88 -26
  429. package/unbundled/definition69.js +85 -22
  430. package/unbundled/definition7.cjs +18 -3
  431. package/unbundled/definition7.js +18 -3
  432. package/unbundled/definition70.cjs +330 -111
  433. package/unbundled/definition70.js +320 -108
  434. package/unbundled/definition71.cjs +26 -271
  435. package/unbundled/definition71.js +21 -267
  436. package/unbundled/definition72.cjs +134 -27
  437. package/unbundled/definition72.js +125 -25
  438. package/unbundled/definition73.cjs +245 -113
  439. package/unbundled/definition73.js +242 -104
  440. package/unbundled/definition74.cjs +28 -212
  441. package/unbundled/definition74.js +26 -202
  442. package/unbundled/definition75.cjs +117 -479
  443. package/unbundled/definition75.js +109 -475
  444. package/unbundled/definition76.cjs +232 -0
  445. package/unbundled/definition76.js +213 -0
  446. package/unbundled/definition77.cjs +533 -0
  447. package/unbundled/definition77.js +513 -0
  448. package/unbundled/numberConverter.cjs +91 -0
  449. package/unbundled/numberConverter.js +74 -0
  450. package/unbundled/picker-field.template.cjs +2 -0
  451. package/unbundled/picker-field.template.js +2 -0
  452. package/unbundled/utils.cjs +1439 -0
  453. package/unbundled/utils.js +1428 -0
  454. package/unbundled/vivid-element.cjs +1 -1
  455. package/unbundled/vivid-element.js +1 -1
  456. package/video-player/definition.cjs +1 -1
  457. package/video-player/definition.js +1 -1
  458. package/vivid.api.json +513 -0
  459. /package/{lib/icon/icon.placeholder.d.ts → shared/icon/icon-placeholder.d.ts} +0 -0
@@ -1,492 +1,174 @@
1
1
  import { o as defineVividComponent, s as createRegisterFunction, t as VividElement } from "./vivid-element.js";
2
2
  import { t as __decorate } from "./decorate.js";
3
- import { n as FormAssociated } from "./form-associated.js";
3
+ import { t as CheckableFormAssociated } from "./form-associated.js";
4
4
  import { t as FormElement } from "./form-element.js";
5
- import { t as Localized } from "./localized.js";
6
- import { i as Popup, r as PlacementStrategy, t as popupDefinition } from "./definition10.js";
7
- import { n as keyArrowRight$1, t as keyArrowLeft$1 } from "./key-codes.js";
8
- import { a as defaultToOneConverter, i as lerp, n as getMarkersTemplate, o as roundToStepValue, r as inverseLerp } from "./slider.template.js";
9
- import { attr, html, nullableNumberConverter, observable, ref, when } from "@microsoft/fast-element";
10
- import { Orientation, classNames, keyArrowDown, keyArrowUp, keyEnd, keyHome, limit } from "@microsoft/fast-web-utilities";
11
- //#region src/lib/range-slider/range-slider.scss?inline
12
- 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}";
5
+ import { t as WithErrorText } from "./with-error-text.js";
6
+ import { Updates, attr, html, observable, when } from "@microsoft/fast-element";
7
+ import { classNames, keySpace } from "@microsoft/fast-web-utilities";
8
+ //#region src/lib/radio/radio.scss?inline
9
+ var radio_default = ":host(:focus-visible){outline:none}:host([disabled]){cursor:not-allowed}.base.connotation-cta{--_connotation-color-primary:var(--vvd-radio-cta-primary,var(--vvd-color-cta-500));--_connotation-color-primary-text:var(--vvd-radio-cta-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-radio-cta-primary-increment,var(--vvd-color-cta-600));--_connotation-color-intermediate:var(--vvd-radio-cta-intermediate,var(--vvd-color-cta-500));--_connotation-color-firm:var(--vvd-radio-cta-firm,var(--vvd-color-cta-600));--_connotation-color-fierce:var(--vvd-radio-cta-fierce,var(--vvd-color-cta-700))}.base:not(.connotation-cta){--_connotation-color-primary:var(--vvd-radio-accent-primary,var(--vvd-color-canvas-text));--_connotation-color-primary-text:var(--vvd-radio-accent-primary-text,var(--vvd-color-canvas));--_connotation-color-primary-increment:var(--vvd-radio-accent-primary-increment,var(--vvd-color-neutral-800));--_connotation-color-intermediate:var(--vvd-radio-accent-intermediate,var(--vvd-color-neutral-500));--_connotation-color-firm:var(--vvd-radio-accent-firm,var(--vvd-color-canvas-text));--_connotation-color-fierce:var(--vvd-radio-accent-fierce,var(--vvd-color-neutral-700))}.base{--_appearance-color-text:var(--vvd-color-canvas-text);--_appearance-color-fill:var(--vvd-color-canvas);--_appearance-color-outline:var(--vvd-color-neutral-500)}@media (hover:hover){.base: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)}}.base.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)}.base:checked:where(:not(.disabled,:disabled)),.base.checked:where(:not(.disabled,:disabled)){--_appearance-color-text:var(--_connotation-color-primary-text);--_appearance-color-fill:var(--_connotation-color-primary);--_appearance-color-outline:var(--_connotation-color-primary)}@media (hover:hover){.base:checked:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text:var(--_connotation-color-primary-text);--_appearance-color-fill:var(--_connotation-color-primary-increment);--_appearance-color-outline:var(--_connotation-color-primary-increment)}}.base.checked.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text:var(--_connotation-color-primary-text);--_appearance-color-fill:var(--_connotation-color-primary-increment);--_appearance-color-outline:var(--_connotation-color-primary-increment)}.base:disabled,.base.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)}.base.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)}.base{cursor:pointer;align-items:center;gap:8px;display:inline-flex}@supports (user-select:none){.base{user-select:none}}.base.disabled{pointer-events:none}.control{block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 20));box-shadow:inset 0 0 0 2px var(--_appearance-color-outline);inline-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 20));border-radius:50%;flex-shrink:0;position:relative}.base:not(.checked) .control{background-color:var(--_appearance-color-fill)}.control:after{border-radius:inherit;background-color:var(--_appearance-color-outline);content:\"\";opacity:1;transition:opacity .2s;position:absolute;inset:5px}.base:not(.checked) .control:after{opacity:0}:host(:focus-visible) .control{--focus-stroke-gap-color:transparent;position:relative}:host(:focus-visible) .control:before{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:var(--focus-border-radius,inherit);block-size:calc(100% + var(--focus-block-size-addition,4px));content:\"\";inline-size:calc(100% + var(--focus-block-size-addition,4px));display:block;position:absolute;inset-block-start:50%;inset-inline-start:50%;transform:translate(-50%,-50%)}label{color:var(--vvd-color-canvas-text);cursor:pointer;font:var(--vvd-typography-base)}";
13
10
  //#endregion
14
- //#region src/lib/range-slider/range-slider.ts
15
- var Direction$1 = {
16
- Increment: 1,
17
- Decrement: -1
18
- };
11
+ //#region src/lib/radio/radio.ts
19
12
  /**
20
- * Base class for range-slider
21
- *
22
- * @component range-slider
23
13
  * @public
24
- * @event {CustomEvent<undefined>} input:start - Event emitted when the start value changes
25
- * @event {CustomEvent<undefined>} input:end - Event emitted when the end value changes
26
- * @event {CustomEvent<undefined>} input - Event emitted when either the start or end value changes.
27
- * @event {CustomEvent<undefined>} change - Event emitted when either the start or end value changes.
28
- * @vueModel start start input:start `event.currentTarget.start`
29
- * @vueModel end end input:end `event.currentTarget.end`
30
- * @vueModel startAsNumber startAsNumber input:start `event.currentTarget.startAsNumber`
31
- * @vueModel endAsNumber endAsNumber input:end `event.currentTarget.endAsNumber`
32
- * @testSelector byLabel byLabel
33
- * @testAction slideStartTo slideTo #track #startThumb
34
- * @testAction slideEndTo slideTo #track #endThumb
35
- * @testQuery range rangeAsNumber
36
- * @testRef track shadow .control
37
- * @testRef startThumb shadow #start-thumb
38
- * @testRef endThumb shadow #end-thumb
14
+ * @event {CustomEvent<undefined>} change - Fires a custom 'change' event when the value changes
15
+ * @component radio
16
+ * @testAction check click #control
17
+ * @testQuery checked checked true
18
+ * @testQuery unchecked checked false
19
+ * @testRef control shadow .control
39
20
  */
40
- var RangeSlider = class extends Localized(FormElement(FormAssociated(VividElement))) {
41
- constructor(..._args) {
42
- super(..._args);
43
- this.start = "";
44
- this.end = "";
45
- this.min = 0;
46
- this.max = 10;
47
- this.step = 1;
48
- this.orientation = Orientation.horizontal;
49
- this.ariaStartLabel = null;
50
- this.ariaEndLabel = null;
51
- this.markers = false;
52
- this.pin = false;
53
- this.valueTextFormatter = (value) => parseFloat(value).toLocaleString(this.locale.lang);
54
- this.proxy = document.createElement("input");
55
- this._trackEl = null;
56
- this._startThumbEl = null;
57
- this._endThumbEl = null;
58
- this._draggingThumb = false;
59
- this._visiblyFocusedThumb = null;
60
- this._hoveredThumb = null;
61
- this._startThumbCss = "";
62
- this._endThumbCss = "";
63
- this._selectedRangeCss = "";
64
- }
65
- #isInternalValueUpdate = false;
21
+ var Radio = class extends WithErrorText(FormElement(CheckableFormAssociated(VividElement))) {
66
22
  /**
67
23
  * @internal
68
24
  */
69
- startChanged() {
70
- this.currentStart = this.start;
71
- if (!this.#isInternalValueUpdate) {
72
- this.dirtyValue = true;
73
- this.#updateFormValue();
74
- }
75
- if (this.$fastController.isConnected) this.#updateThumbPositions();
25
+ readOnlyChanged() {
26
+ /* v8 ignore if -- @preserve */
27
+ if (this.proxy instanceof HTMLInputElement) this.proxy.readOnly = this.readOnly;
76
28
  }
77
29
  /**
78
30
  * @internal
79
31
  */
80
- initialStartChanged(_, newValue) {
81
- if (newValue && !this.dirtyValue) {
82
- this.start = newValue;
83
- this.dirtyValue = false;
32
+ defaultCheckedChanged() {
33
+ if (this.$fastController.isConnected && !this.dirtyChecked) {
34
+ /* v8 ignore else -- @preserve */
35
+ if (!this.isInsideRadioGroup()) {
36
+ this.checked = this.defaultChecked;
37
+ this.dirtyChecked = false;
38
+ }
84
39
  }
85
40
  }
86
- /**
87
- * @internal
88
- */
89
- currentStartChanged() {
90
- this.start = this.currentStart;
91
- }
92
- /**
93
- * The start property, typed as a number.
94
- *
95
- * @public
96
- */
97
- get startAsNumber() {
98
- return parseFloat(this.start);
99
- }
100
- set startAsNumber(next) {
101
- this.start = next.toString();
41
+ constructor() {
42
+ super();
43
+ this.initialValue = "on";
44
+ this.defaultSlottedNodes = [];
45
+ this.keypressHandler = (e) => {
46
+ switch (e.key) {
47
+ case keySpace:
48
+ if (!this.checked && !this.readOnly) this.checked = true;
49
+ return;
50
+ }
51
+ return true;
52
+ };
53
+ this.proxy = document.createElement("input");
54
+ this.proxy.setAttribute("type", "radio");
55
+ this.proxy.setAttribute("name", this.name);
56
+ this.checked = this.defaultChecked;
57
+ this.dirtyChecked = false;
102
58
  }
103
59
  /**
104
60
  * @internal
105
61
  */
106
- endChanged() {
107
- this.currentEnd = this.end;
108
- if (!this.#isInternalValueUpdate) {
109
- this.dirtyValue = true;
110
- this.#updateFormValue();
111
- }
112
- if (this.$fastController.isConnected) this.#updateThumbPositions();
62
+ nameChanged(previous, next) {
63
+ super.nameChanged(previous, next);
64
+ next !== null ? this.proxy.setAttribute("name", this.name) : this.proxy.removeAttribute("name");
65
+ Updates.enqueue(this.validate);
113
66
  }
114
67
  /**
115
68
  * @internal
116
69
  */
117
- initialEndChanged(_, newValue) {
118
- if (newValue && !this.dirtyValue) {
119
- this.end = newValue;
120
- this.dirtyValue = false;
70
+ connectedCallback() {
71
+ super.connectedCallback();
72
+ Updates.enqueue(this.validate);
73
+ if (this.parentElement.getAttribute("data-vvd-component") !== "radio-group" && this.getAttribute("tabindex") === null) {
74
+ /* v8 ignore else -- @preserve */
75
+ if (!this.disabled) this.setAttribute("tabindex", "0");
121
76
  }
122
- }
123
- /**
124
- * @internal
125
- */
126
- currentEndChanged() {
127
- this.end = this.currentEnd;
128
- }
129
- /**
130
- * The end property, typed as a number.
131
- *
132
- * @public
133
- */
134
- get endAsNumber() {
135
- return parseFloat(this.end);
136
- }
137
- set endAsNumber(next) {
138
- this.end = next.toString();
139
- }
140
- #updateValues({ start, end }, emitEvents = true) {
141
- if (start === this.start) start = void 0;
142
- if (end === this.end) end = void 0;
143
- if (start === void 0 && end === void 0) return;
144
- this.#isInternalValueUpdate = true;
145
- if (start !== void 0) this.start = start;
146
- if (end !== void 0) this.end = end;
147
- this.#isInternalValueUpdate = false;
148
- if (emitEvents) {
149
- if (start !== void 0) this.$emit("input:start");
150
- if (end !== void 0) this.$emit("input:end");
151
- this.$emit("input");
152
- this.$emit("change");
153
- this.dirtyValue = true;
77
+ if (this.defaultChecked) {
78
+ /* v8 ignore else -- @preserve */
79
+ if (!this.dirtyChecked) {
80
+ if (!this.isInsideRadioGroup()) {
81
+ this.checked = this.defaultChecked;
82
+ this.dirtyChecked = false;
83
+ }
84
+ }
154
85
  }
155
- this.#updateFormValue();
156
- }
157
- #applyStep(thumb, direction) {
158
- this.#updateValues({ [thumb]: this.#roundToNearestStep(thumb, Number(this[thumb]) + direction * this.step).toString() });
159
86
  }
160
- /**
161
- * @internal
162
- */
163
- orientationChanged() {
164
- if (this.$fastController.isConnected) this.#updateThumbPositions();
87
+ isInsideRadioGroup() {
88
+ return this.closest("[data-vvd-component=\"radio-group\"]") !== null;
165
89
  }
166
90
  /**
167
91
  * @internal
168
92
  */
169
- nameChanged(previous, next) {
170
- super.nameChanged(previous, next);
171
- this.#updateFormValue();
172
- }
173
- #updateFormValue() {
174
- if (!this.name) this.setFormValue(null);
175
- else {
176
- const formData = new FormData();
177
- formData.append(this.name, this.start);
178
- formData.append(this.name, this.end);
179
- this.setFormValue(formData);
180
- }
181
- }
182
- formResetCallback() {
183
- this.#updateValues({
184
- start: this.initialStart ?? this.min.toString(),
185
- end: this.initialEnd ?? this.max.toString()
186
- });
187
- super.formResetCallback();
188
- }
189
- get #thumbs() {
190
- return {
191
- start: this._startThumbEl,
192
- end: this._endThumbEl
193
- };
194
- }
195
- get #thumbConstraints() {
196
- return {
197
- start: {
198
- min: this.min,
199
- max: this.endAsNumber
200
- },
201
- end: {
202
- min: this.startAsNumber,
203
- max: this.max
93
+ clickHandler(_) {
94
+ if (!this.disabled && !this.readOnly && !this.checked) this.checked = true;
95
+ }
96
+ get #radioSiblings() {
97
+ const siblings = this.parentElement?.querySelectorAll(`${this.tagName.toLocaleLowerCase()}[name="${this.name}"]`);
98
+ if (siblings) return Array.from(siblings);
99
+ return [];
100
+ }
101
+ get #radioGroup() {
102
+ const parentGroup = this.closest(`${this.tagName.toLocaleLowerCase()}-group[name="${this.name}"]`);
103
+ if (parentGroup) return parentGroup;
104
+ return null;
105
+ }
106
+ #validateValueMissingWithSiblings = () => {
107
+ const siblings = this.#radioSiblings;
108
+ const group = this.#radioGroup;
109
+ if (siblings && siblings.length > 1) {
110
+ if (siblings.some((x) => x.checked)) {
111
+ this.setValidity({ valueMissing: false });
112
+ this.errorValidationMessage = "";
113
+ if (group) group.errorValidationMessage = "";
204
114
  }
205
- };
206
- }
207
- #getThumbId(thumb) {
208
- return thumb === this._startThumbEl ? "start" : "end";
209
- }
210
- #getThumbIdFromEvent(e) {
211
- return this.#getThumbId(e.target);
212
- }
213
- #updateThumbPositions() {
214
- const startOffsetPct = this.#thumbTrackEndOffset(this.startAsNumber);
215
- const endOffsetPct = this.#thumbTrackEndOffset(this.endAsNumber);
216
- const [dirProp, dimProp] = this.orientation === Orientation.horizontal ? ["right", "width"] : ["bottom", "height"];
217
- const transition = `transition: ${this._draggingThumb ? "none" : "all 0.2s ease"};`;
218
- this._startThumbCss = `${dirProp}: ${startOffsetPct}%; ${transition}`;
219
- this._endThumbCss = `${dirProp}: ${endOffsetPct}%; ${transition}`;
220
- this._selectedRangeCss = `${dirProp}: ${endOffsetPct}%; ${dimProp}: ${startOffsetPct - endOffsetPct}%; ${transition}`;
221
- }
222
- #thumbTrackEndOffset(value) {
223
- return (1 - inverseLerp(this.min, this.max, value)) * 100;
224
- }
225
- #calculateValueFromMouseEvent(e) {
226
- const trackClientRect = this._trackEl.getBoundingClientRect();
227
- const [minPos, maxPos, valuePos] = this.orientation === Orientation.horizontal ? [
228
- this._trackEl.clientLeft,
229
- this._trackEl.clientWidth,
230
- e.pageX - document.documentElement.scrollLeft - this.getBoundingClientRect().left
231
- ] : [
232
- trackClientRect.top,
233
- trackClientRect.bottom,
234
- e.pageY - document.documentElement.scrollTop
235
- ];
236
- return lerp(this.min, this.max, inverseLerp(minPos, maxPos, valuePos));
237
- }
238
- #roundToNearestStep(thumb, value) {
239
- return limit(this.#thumbConstraints[thumb].min, this.#thumbConstraints[thumb].max, roundToStepValue(value - this.min, this.step) + this.min);
240
- }
241
- #isNonVisibleFocus = false;
242
- #focusThumbNonVisibly(thumb) {
243
- this.#isNonVisibleFocus = true;
244
- thumb.focus();
245
- this.#isNonVisibleFocus = false;
246
- }
247
- /**
248
- * @internal
249
- */
250
- _isThumbPopupOpen(thumb) {
251
- return this._visiblyFocusedThumb === thumb || this._hoveredThumb === thumb || this._draggingThumb === thumb;
252
- }
253
- connectedCallback() {
254
- super.connectedCallback();
255
- this.#updateValues({
256
- start: this.start || this.initialStart || this.min.toString(),
257
- end: this.end || this.initialEnd || this.max.toString()
258
- }, false);
259
- this.#registerThumbListeners();
260
- this.#updateThumbPositions();
261
- }
262
- disconnectedCallback() {
263
- super.disconnectedCallback();
264
- this.#unregisterThumbListeners();
265
- this.#unregisterDragListeners();
266
- }
267
- #registerThumbListeners() {
268
- for (const thumb of ["start", "end"]) {
269
- this.#thumbs[thumb].addEventListener("keydown", this.#onThumbKeydown);
270
- this.#thumbs[thumb].addEventListener("mousedown", this.#onThumbMousedown, { passive: true });
271
- this.#thumbs[thumb].addEventListener("touchstart", this.#onThumbMousedown, { passive: true });
272
- this.#thumbs[thumb].addEventListener("mouseover", this.#onMouseOver, { passive: true });
273
- this.#thumbs[thumb].addEventListener("mouseout", this.#onMouseOut, { passive: true });
274
- this.#thumbs[thumb].addEventListener("focus", this.#onThumbFocus);
275
- this.#thumbs[thumb].addEventListener("blur", this.#onThumbBlur);
276
115
  }
277
- }
278
- #unregisterThumbListeners() {
279
- for (const thumb of ["start", "end"]) {
280
- this.#thumbs[thumb].removeEventListener("keydown", this.#onThumbKeydown);
281
- this.#thumbs[thumb].removeEventListener("mousedown", this.#onThumbMousedown);
282
- this.#thumbs[thumb].removeEventListener("touchstart", this.#onThumbMousedown);
283
- this.#thumbs[thumb].removeEventListener("mouseover", this.#onMouseOver);
284
- this.#thumbs[thumb].removeEventListener("mouseout", this.#onMouseOut);
285
- this.#thumbs[thumb].removeEventListener("focus", this.#onThumbFocus);
286
- this.#thumbs[thumb].removeEventListener("blur", this.#onThumbBlur);
116
+ };
117
+ #syncSiblingsRequiredValidationStatus = () => {
118
+ if (this.elementInternals && !this.validity.valueMissing) {
119
+ const siblings = this.#radioSiblings;
120
+ const group = this.#radioGroup;
121
+ if (siblings && siblings.length > 1) siblings.forEach((x) => {
122
+ x.elementInternals.setValidity({ valueMissing: false });
123
+ x.errorValidationMessage = "";
124
+ if (group) group.errorValidationMessage = "";
125
+ });
287
126
  }
288
- }
127
+ };
289
128
  /**
290
129
  * @internal
291
130
  */
292
- _onMouseDown(e) {
293
- if (this.disabled || this._draggingThumb) return;
294
- const value = this.#calculateValueFromMouseEvent(e);
295
- const startDistance = Math.abs(value - Number(this.start));
296
- const endDistance = Math.abs(value - Number(this.end));
297
- const thumb = startDistance < endDistance || startDistance === endDistance && value < Number(this.start) ? "start" : "end";
298
- this.#updateValues({ [thumb]: `${this.#roundToNearestStep(thumb, value)}` });
299
- this._draggingThumb = thumb;
300
- this.#focusThumbNonVisibly(this.#thumbs[thumb]);
301
- this.#registerDragHandlers();
302
- }
303
- #onThumbFocus = (e) => {
304
- if (!this.#isNonVisibleFocus) this._visiblyFocusedThumb = this.#getThumbIdFromEvent(e);
305
- };
306
- #onThumbBlur = () => {
307
- this._visiblyFocusedThumb = null;
308
- };
309
- #onMouseOver = (e) => {
310
- this._hoveredThumb = this.#getThumbIdFromEvent(e);
311
- };
312
- #onMouseOut = () => {
313
- this._hoveredThumb = null;
314
- };
315
- #onThumbMousedown = (event) => {
316
- if (this.disabled || event.defaultPrevented) return;
317
- let target = event.target;
318
- if (target === this._endThumbEl && this.startAsNumber === this.max && this.endAsNumber === this.max) target = this._startThumbEl;
319
- this.#focusThumbNonVisibly(target);
320
- this._draggingThumb = this.#getThumbId(target);
321
- this.#registerDragHandlers();
322
- };
323
- #onThumbKeydown = (e) => {
324
- const thumb = this.#getThumbIdFromEvent(e);
325
- this._visiblyFocusedThumb = thumb;
326
- if (e.key === keyHome) {
327
- e.preventDefault();
328
- this.#updateValues({ [thumb]: `${this.#thumbConstraints[thumb].min}` });
329
- } else if (e.key === keyEnd) {
330
- e.preventDefault();
331
- this.#updateValues({ [thumb]: `${this.#thumbConstraints[thumb].max}` });
332
- } else {
333
- if (e.shiftKey) return;
334
- switch (e.key) {
335
- case keyArrowRight$1:
336
- case keyArrowDown:
337
- e.preventDefault();
338
- this.#applyStep(thumb, Direction$1.Increment);
339
- break;
340
- case keyArrowLeft$1:
341
- case keyArrowUp:
342
- e.preventDefault();
343
- this.#applyStep(thumb, Direction$1.Decrement);
344
- break;
345
- }
131
+ validate(anchor) {
132
+ super.validate(anchor);
133
+ if (this.proxy) {
134
+ this.errorValidationMessage = this.validationMessage || "";
135
+ if (this.validity.valueMissing) this.#validateValueMissingWithSiblings();
136
+ else this.#syncSiblingsRequiredValidationStatus();
346
137
  }
347
- };
348
- #registerDragHandlers() {
349
- window.addEventListener("mousemove", this.#onDragMove, { passive: true });
350
- window.addEventListener("touchmove", this.#onDragMove, { passive: true });
351
- window.addEventListener("mouseup", this.#onDragEnd);
352
- window.addEventListener("touchend", this.#onDragEnd);
353
- window.document.addEventListener("mouseleave", this.#onDragEnd);
354
- }
355
- #unregisterDragListeners() {
356
- window.removeEventListener("mouseup", this.#onDragEnd);
357
- window.document.removeEventListener("mouseleave", this.#onDragEnd);
358
- window.removeEventListener("mousemove", this.#onDragMove);
359
- window.removeEventListener("touchmove", this.#onDragMove);
360
- window.removeEventListener("touchend", this.#onDragEnd);
361
138
  }
362
- #onDragMove = (e) => {
363
- if (this.disabled || e.defaultPrevented || !this._draggingThumb) return;
364
- const sourceEvent = "TouchEvent" in window && e instanceof TouchEvent ? e.touches[0] : e;
365
- const value = this.#calculateValueFromMouseEvent(sourceEvent);
366
- this.#updateValues({ [this._draggingThumb]: `${this.#roundToNearestStep(this._draggingThumb, value)}` });
367
- };
368
- #onDragEnd = () => {
369
- this._draggingThumb = false;
370
- this.#unregisterDragListeners();
371
- };
372
139
  };
373
- __decorate([observable], RangeSlider.prototype, "start", void 0);
140
+ __decorate([attr], Radio.prototype, "connotation", void 0);
374
141
  __decorate([attr({
375
- mode: "fromView",
376
- attribute: "start"
377
- })], RangeSlider.prototype, "initialStart", void 0);
378
- __decorate([attr({ attribute: "current-start" })], RangeSlider.prototype, "currentStart", void 0);
379
- __decorate([observable], RangeSlider.prototype, "end", void 0);
380
- __decorate([attr({
381
- mode: "fromView",
382
- attribute: "end"
383
- })], RangeSlider.prototype, "initialEnd", void 0);
384
- __decorate([attr({ attribute: "current-end" })], RangeSlider.prototype, "currentEnd", void 0);
385
- __decorate([attr({ converter: nullableNumberConverter })], RangeSlider.prototype, "min", void 0);
386
- __decorate([attr({ converter: nullableNumberConverter })], RangeSlider.prototype, "max", void 0);
387
- __decorate([attr({ converter: defaultToOneConverter })], RangeSlider.prototype, "step", void 0);
388
- __decorate([attr], RangeSlider.prototype, "orientation", void 0);
389
- __decorate([attr({ attribute: "aria-start-label" })], RangeSlider.prototype, "ariaStartLabel", void 0);
390
- __decorate([attr({ attribute: "aria-end-label" })], RangeSlider.prototype, "ariaEndLabel", void 0);
391
- __decorate([attr({ mode: "boolean" })], RangeSlider.prototype, "markers", void 0);
392
- __decorate([attr], RangeSlider.prototype, "connotation", void 0);
393
- __decorate([attr({ mode: "boolean" })], RangeSlider.prototype, "pin", void 0);
394
- __decorate([observable], RangeSlider.prototype, "valueTextFormatter", void 0);
395
- __decorate([observable], RangeSlider.prototype, "_draggingThumb", void 0);
396
- __decorate([observable], RangeSlider.prototype, "_visiblyFocusedThumb", void 0);
397
- __decorate([observable], RangeSlider.prototype, "_hoveredThumb", void 0);
398
- __decorate([observable], RangeSlider.prototype, "_startThumbCss", void 0);
399
- __decorate([observable], RangeSlider.prototype, "_endThumbCss", void 0);
400
- __decorate([observable], RangeSlider.prototype, "_selectedRangeCss", void 0);
142
+ attribute: "readonly",
143
+ mode: "boolean"
144
+ })], Radio.prototype, "readOnly", void 0);
145
+ __decorate([observable], Radio.prototype, "defaultSlottedNodes", void 0);
401
146
  //#endregion
402
- //#region src/lib/range-slider/range-slider.template.ts
403
- var getClasses = ({ disabled, connotation }) => classNames("control", ["disabled", Boolean(disabled)], [`connotation-${connotation}`, Boolean(connotation)]);
404
- var getThumbClassesFor = (thumb) => ({ _visiblyFocusedThumb }) => classNames("thumb-container", ["focus-visible", _visiblyFocusedThumb === thumb]);
405
- var RangeSliderTemplate = (context) => {
406
- const popupTag = context.tagFor(Popup);
407
- return html` <template
408
- @mousedown="${(x, c) => x._onMouseDown(c.event)}"
409
- >
410
- <div class="${getClasses} ${(x) => x.orientation}">
411
- <div class="positioning-region">
412
- <div ${ref("_trackEl")} class="track">
413
- <div class="track-start" style="${(x) => x._selectedRangeCss}"></div>
414
- ${when((x) => x.markers, html`${(x) => getMarkersTemplate(x.orientation === Orientation.horizontal, Math.floor((x.max - x.min) / x.step))}`)}
415
- </div>
416
- <div
417
- id="start-thumb"
418
- ${ref("_startThumbEl")}
419
- class="${getThumbClassesFor("start")}"
420
- style="${(x) => x._startThumbCss}"
421
- role="slider"
422
- tabindex="${(x) => x.disabled ? null : 0}"
423
- aria-label="${(x) => x.ariaStartLabel || x.locale.rangeSlider.startThumbLabel}"
424
- aria-valuetext="${(x) => x.valueTextFormatter(x.start)}"
425
- aria-valuenow="${(x) => x.start}"
426
- aria-valuemin="${(x) => x.min}"
427
- aria-valuemax="${(x) => x.end}"
428
- aria-disabled="${(x) => x.disabled}"
429
- aria-orientation="${(x) => x.orientation}"
430
- ></div>
431
- ${when((x) => x.pin, html`<${popupTag}
432
- class="popup"
433
- arrow
434
- alternate
435
- :anchor="${(x) => x._startThumbEl}"
436
- :open=${(x) => x._isThumbPopupOpen("start")}
437
- :placementStrategy=${(x) => x.orientation === Orientation.horizontal ? PlacementStrategy.AutoPlacementHorizontal : PlacementStrategy.AutoPlacementVertical}
438
- animation-frame
439
- exportparts="vvd-theme-alternate"
440
- aria-hidden="true"
441
- >
442
- <div class="tooltip">${(x) => x.valueTextFormatter(x.start)}</div>
443
- </${popupTag}>`)}
444
- <div
445
- id="end-thumb"
446
- ${ref("_endThumbEl")}
447
- class="${getThumbClassesFor("end")}"
448
- style="${(x) => x._endThumbCss}"
449
- role="slider"
450
- tabindex="${(x) => x.disabled ? null : 0}"
451
- aria-label="${(x) => x.ariaEndLabel || x.locale.rangeSlider.endThumbLabel}"
452
- aria-valuetext="${(x) => x.valueTextFormatter(x.end)}"
453
- aria-valuenow="${(x) => x.end}"
454
- aria-valuemin="${(x) => x.start}"
455
- aria-valuemax="${(x) => x.max}"
456
- aria-disabled="${(x) => x.disabled}"
457
- aria-orientation="${(x) => x.orientation}"
458
- ></div>
459
- ${when((x) => x.pin, html`<${popupTag}
460
- class="popup"
461
- arrow
462
- alternate
463
- :anchor="${(x) => x._endThumbEl}"
464
- :open=${(x) => x._isThumbPopupOpen("end")}
465
- :placementStrategy=${(x) => x.orientation === Orientation.horizontal ? PlacementStrategy.AutoPlacementHorizontal : PlacementStrategy.AutoPlacementVertical}
466
- animation-frame
467
- exportparts="vvd-theme-alternate"
468
- aria-hidden="true"
469
- >
470
- <div class="tooltip">${(x) => x.valueTextFormatter(x.end)}</div>
471
- </${popupTag}>`)}
472
- </div>
473
- </div>
474
- </template>`;
475
- };
147
+ //#region src/lib/radio/radio.template.ts
148
+ var getClasses = ({ connotation, checked, readOnly, disabled }) => classNames("base", [`connotation-${connotation}`, Boolean(connotation)], ["checked", Boolean(checked)], ["readonly", Boolean(readOnly)], ["disabled", Boolean(disabled)]);
476
149
  //#endregion
477
- //#region src/lib/range-slider/definition.ts
150
+ //#region src/lib/radio/definition.ts
478
151
  /**
479
152
  * @internal
480
153
  */
481
- var rangeSliderDefinition = defineVividComponent("range-slider", RangeSlider, RangeSliderTemplate, [popupDefinition], {
482
- styles: range_slider_default,
483
- shadowOptions: { delegatesFocus: true }
484
- });
154
+ var radioDefinition = defineVividComponent("radio", Radio, html`<template
155
+ aria-checked="${(x) => x?.checked}"
156
+ aria-disabled="${(x) => x?.disabled}"
157
+ aria-required="${(x) => x?.required}"
158
+ @keypress="${(x, c) => x?.keypressHandler(c.event)}"
159
+ @click="${(x, c) => x?.clickHandler(c.event)}"
160
+ role="radio"
161
+ >
162
+ <div class="${getClasses}">
163
+ <div class="control"></div>
164
+ ${when((x) => x?.label, html`<label class="label">${(x) => x?.label}</label>`)}
165
+ </div>
166
+ </template>`, [], { styles: radio_default });
485
167
  /**
486
- * Registers the range-slider element with the design system.
168
+ * Registers the radio elements with the design system.
487
169
  *
488
170
  * @param prefix - the prefix to use for the component name
489
171
  */
490
- var registerRangeSlider = createRegisterFunction(rangeSliderDefinition);
172
+ var registerRadio = createRegisterFunction(radioDefinition);
491
173
  //#endregion
492
- export { registerRangeSlider as n, RangeSlider as r, rangeSliderDefinition as t };
174
+ export { registerRadio as n, Radio as r, radioDefinition as t };