@vonage/vivid 4.12.1 → 4.14.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 (523) hide show
  1. package/custom-elements.json +7489 -4858
  2. package/elevation/index.cjs +1 -1
  3. package/elevation/index.js +1 -1
  4. package/index.cjs +70 -136
  5. package/index.d.ts +0 -1
  6. package/index.js +60 -62
  7. package/lib/accordion/accordion.d.ts +2 -2
  8. package/lib/accordion/accordion.template.d.ts +1 -2
  9. package/lib/accordion/definition.d.ts +1 -1
  10. package/lib/accordion-item/accordion-item.d.ts +2 -2
  11. package/lib/accordion-item/accordion-item.template.d.ts +2 -3
  12. package/lib/accordion-item/definition.d.ts +1 -1
  13. package/lib/action-group/action-group.d.ts +2 -2
  14. package/lib/action-group/action-group.template.d.ts +1 -3
  15. package/lib/action-group/definition.d.ts +1 -1
  16. package/lib/alert/alert.d.ts +2 -2
  17. package/lib/alert/alert.template.d.ts +2 -3
  18. package/lib/alert/definition.d.ts +1 -1
  19. package/lib/audio-player/audio-player.d.ts +2 -2
  20. package/lib/audio-player/audio-player.template.d.ts +2 -3
  21. package/lib/audio-player/definition.d.ts +1 -3
  22. package/lib/avatar/avatar.d.ts +2 -2
  23. package/lib/avatar/avatar.template.d.ts +2 -3
  24. package/lib/avatar/definition.d.ts +1 -1
  25. package/lib/badge/badge.d.ts +2 -2
  26. package/lib/badge/badge.template.d.ts +2 -3
  27. package/lib/badge/definition.d.ts +1 -3
  28. package/lib/banner/banner.d.ts +2 -2
  29. package/lib/banner/banner.template.d.ts +2 -3
  30. package/lib/banner/definition.d.ts +1 -1
  31. package/lib/breadcrumb/breadcrumb.d.ts +2 -2
  32. package/lib/breadcrumb/breadcrumb.template.d.ts +3 -4
  33. package/lib/breadcrumb/definition.d.ts +1 -1
  34. package/lib/breadcrumb-item/breadcrumb-item.d.ts +2 -2
  35. package/lib/breadcrumb-item/breadcrumb-item.template.d.ts +2 -3
  36. package/lib/breadcrumb-item/definition.d.ts +1 -1
  37. package/lib/button/button.d.ts +2 -2
  38. package/lib/button/button.template.d.ts +2 -4
  39. package/lib/button/definition.d.ts +1 -1
  40. package/lib/calendar/calendar.d.ts +2 -2
  41. package/lib/calendar/calendar.template.d.ts +1 -3
  42. package/lib/calendar/definition.d.ts +1 -1
  43. package/lib/calendar-event/calendar-event.d.ts +2 -2
  44. package/lib/calendar-event/calendar-event.template.d.ts +1 -3
  45. package/lib/calendar-event/definition.d.ts +1 -1
  46. package/lib/card/card.d.ts +2 -2
  47. package/lib/card/card.template.d.ts +2 -3
  48. package/lib/card/definition.d.ts +1 -1
  49. package/lib/checkbox/checkbox.form-associated.d.ts +3 -2
  50. package/lib/checkbox/checkbox.template.d.ts +2 -3
  51. package/lib/checkbox/definition.d.ts +1 -1
  52. package/lib/combobox/combobox.d.ts +17 -2
  53. package/lib/combobox/combobox.options.d.ts +7 -0
  54. package/lib/combobox/combobox.template.d.ts +2 -3
  55. package/lib/combobox/definition.d.ts +1 -2
  56. package/lib/data-grid/data-grid-cell.d.ts +16 -13
  57. package/lib/data-grid/data-grid-cell.template.d.ts +2 -3
  58. package/lib/data-grid/data-grid-row.d.ts +19 -2
  59. package/lib/data-grid/data-grid-row.template.d.ts +2 -2
  60. package/lib/data-grid/data-grid.d.ts +45 -4
  61. package/lib/data-grid/data-grid.template.d.ts +2 -2
  62. package/lib/data-grid/definition.d.ts +1 -6
  63. package/lib/date-picker/definition.d.ts +1 -3
  64. package/lib/date-range-picker/definition.d.ts +1 -3
  65. package/lib/dial-pad/definition.d.ts +1 -3
  66. package/lib/dial-pad/dial-pad.d.ts +2 -2
  67. package/lib/dial-pad/dial-pad.template.d.ts +2 -3
  68. package/lib/dialog/definition.d.ts +1 -1
  69. package/lib/dialog/dialog.d.ts +2 -2
  70. package/lib/dialog/dialog.template.d.ts +2 -3
  71. package/lib/divider/definition.d.ts +1 -1
  72. package/lib/divider/divider.d.ts +2 -2
  73. package/lib/divider/divider.template.d.ts +1 -3
  74. package/lib/elevation/definition.d.ts +1 -1
  75. package/lib/elevation/elevation.d.ts +2 -2
  76. package/lib/elevation/elevation.template.d.ts +1 -3
  77. package/lib/empty-state/definition.d.ts +1 -3
  78. package/lib/empty-state/empty-state.d.ts +2 -2
  79. package/lib/empty-state/empty-state.template.d.ts +2 -3
  80. package/lib/fab/definition.d.ts +1 -3
  81. package/lib/fab/fab.template.d.ts +2 -3
  82. package/lib/file-picker/definition.d.ts +1 -3
  83. package/lib/file-picker/file-picker.d.ts +6 -0
  84. package/lib/file-picker/file-picker.form-associated.d.ts +3 -2
  85. package/lib/file-picker/file-picker.template.d.ts +2 -3
  86. package/lib/header/definition.d.ts +1 -3
  87. package/lib/header/header.d.ts +2 -2
  88. package/lib/header/header.template.d.ts +2 -3
  89. package/lib/icon/definition.d.ts +1 -3
  90. package/lib/icon/icon.d.ts +2 -2
  91. package/lib/icon/icon.template.d.ts +1 -3
  92. package/lib/layout/definition.d.ts +1 -3
  93. package/lib/layout/layout.d.ts +2 -2
  94. package/lib/layout/layout.template.d.ts +1 -3
  95. package/lib/listbox/definition.d.ts +1 -3
  96. package/lib/listbox/listbox.template.d.ts +1 -3
  97. package/lib/menu/definition.d.ts +1 -11
  98. package/lib/menu/menu.d.ts +16 -3
  99. package/lib/menu/menu.template.d.ts +3 -3
  100. package/lib/menu-item/definition.d.ts +1 -3
  101. package/lib/menu-item/menu-item.d.ts +10 -2
  102. package/lib/menu-item/menu-item.template.d.ts +2 -3
  103. package/lib/nav/definition.d.ts +1 -3
  104. package/lib/nav/nav.d.ts +2 -2
  105. package/lib/nav/nav.template.d.ts +1 -3
  106. package/lib/nav-disclosure/definition.d.ts +1 -3
  107. package/lib/nav-disclosure/nav-disclosure.d.ts +2 -2
  108. package/lib/nav-disclosure/nav-disclosure.template.d.ts +2 -3
  109. package/lib/nav-item/definition.d.ts +1 -3
  110. package/lib/nav-item/nav-item.template.d.ts +2 -3
  111. package/lib/note/definition.d.ts +1 -3
  112. package/lib/note/note.d.ts +2 -2
  113. package/lib/note/note.template.d.ts +2 -3
  114. package/lib/number-field/definition.d.ts +1 -4
  115. package/lib/number-field/number-field.form-associated.d.ts +3 -2
  116. package/lib/number-field/number-field.template.d.ts +2 -3
  117. package/lib/option/definition.d.ts +1 -3
  118. package/lib/option/option.d.ts +28 -7
  119. package/lib/option/option.template.d.ts +2 -3
  120. package/lib/pagination/definition.d.ts +1 -3
  121. package/lib/pagination/pagination.d.ts +2 -2
  122. package/lib/pagination/pagination.template.d.ts +2 -3
  123. package/lib/popup/definition.d.ts +1 -3
  124. package/lib/popup/popup.template.d.ts +2 -3
  125. package/lib/progress/definition.d.ts +1 -3
  126. package/lib/progress/progress.d.ts +1 -1
  127. package/lib/progress/progress.template.d.ts +1 -4
  128. package/lib/progress-ring/definition.d.ts +1 -3
  129. package/lib/progress-ring/progress-ring.d.ts +1 -1
  130. package/lib/progress-ring/progress-ring.template.d.ts +1 -3
  131. package/lib/radio/definition.d.ts +1 -3
  132. package/lib/radio/radio.form-associated.d.ts +3 -2
  133. package/lib/radio/radio.template.d.ts +1 -3
  134. package/lib/radio-group/definition.d.ts +1 -11
  135. package/lib/radio-group/radio-group.d.ts +2 -2
  136. package/lib/radio-group/radio-group.template.d.ts +2 -3
  137. package/lib/range-slider/definition.d.ts +1 -3
  138. package/lib/range-slider/range-slider.form-associated.d.ts +3 -2
  139. package/lib/range-slider/range-slider.template.d.ts +2 -3
  140. package/lib/searchable-select/definition.d.ts +1 -4
  141. package/lib/searchable-select/option-tag.template.d.ts +2 -3
  142. package/lib/searchable-select/searchable-select.form-associated.d.ts +3 -2
  143. package/lib/searchable-select/searchable-select.template.d.ts +2 -3
  144. package/lib/select/definition.d.ts +1 -3
  145. package/lib/select/select.d.ts +14 -4
  146. package/lib/select/select.form-associated.d.ts +11 -0
  147. package/lib/select/select.template.d.ts +2 -3
  148. package/lib/selectable-box/definition.d.ts +1 -3
  149. package/lib/selectable-box/selectable-box.d.ts +2 -2
  150. package/lib/selectable-box/selectable-box.template.d.ts +2 -3
  151. package/lib/side-drawer/definition.d.ts +1 -3
  152. package/lib/side-drawer/side-drawer.d.ts +2 -2
  153. package/lib/side-drawer/side-drawer.template.d.ts +1 -3
  154. package/lib/slider/definition.d.ts +1 -3
  155. package/lib/slider/slider.form-associated.d.ts +3 -2
  156. package/lib/slider/slider.template.d.ts +3 -4
  157. package/lib/split-button/definition.d.ts +1 -1
  158. package/lib/split-button/split-button.d.ts +2 -2
  159. package/lib/split-button/split-button.template.d.ts +2 -3
  160. package/lib/switch/definition.d.ts +1 -3
  161. package/lib/switch/switch.d.ts +5 -2
  162. package/lib/switch/switch.form-associated.d.ts +11 -0
  163. package/lib/switch/switch.template.d.ts +1 -3
  164. package/lib/tab/definition.d.ts +1 -3
  165. package/lib/tab/tab.d.ts +2 -2
  166. package/lib/tab/tab.template.d.ts +2 -2
  167. package/lib/tab-panel/definition.d.ts +1 -3
  168. package/lib/tab-panel/tab-panel.d.ts +2 -2
  169. package/lib/tab-panel/tab-panel.template.d.ts +1 -1
  170. package/lib/tabs/definition.d.ts +1 -3
  171. package/lib/tabs/tabs.d.ts +6 -4
  172. package/lib/tabs/tabs.template.d.ts +1 -1
  173. package/lib/tag/definition.d.ts +1 -4
  174. package/lib/tag/tag.d.ts +2 -2
  175. package/lib/tag/tag.template.d.ts +2 -3
  176. package/lib/tag-group/definition.d.ts +1 -3
  177. package/lib/tag-group/tag-group.d.ts +2 -2
  178. package/lib/tag-group/tag-group.template.d.ts +1 -3
  179. package/lib/text-anchor/definition.d.ts +1 -3
  180. package/lib/text-anchor/text-anchor.d.ts +4 -3
  181. package/lib/text-anchor/text-anchor.template.d.ts +2 -3
  182. package/lib/text-area/definition.d.ts +1 -3
  183. package/lib/text-area/text-area.d.ts +25 -3
  184. package/lib/text-area/text-area.form-associated.d.ts +11 -0
  185. package/lib/text-area/text-area.template.d.ts +2 -3
  186. package/lib/text-field/definition.d.ts +1 -3
  187. package/lib/text-field/text-field.d.ts +28 -3
  188. package/lib/text-field/text-field.form-associated.d.ts +11 -0
  189. package/lib/text-field/text-field.template.d.ts +2 -3
  190. package/lib/time-picker/definition.d.ts +1 -3
  191. package/lib/time-picker/time-picker.form-associated.d.ts +3 -2
  192. package/lib/time-picker/time-picker.template.d.ts +2 -2
  193. package/lib/toggletip/definition.d.ts +1 -3
  194. package/lib/toggletip/toggletip.d.ts +2 -2
  195. package/lib/toggletip/toggletip.template.d.ts +2 -3
  196. package/lib/tooltip/definition.d.ts +1 -3
  197. package/lib/tooltip/tooltip.d.ts +2 -2
  198. package/lib/tooltip/tooltip.template.d.ts +2 -3
  199. package/lib/tree-item/definition.d.ts +1 -3
  200. package/lib/tree-item/tree-item.d.ts +11 -2
  201. package/lib/tree-item/tree-item.template.d.ts +3 -3
  202. package/lib/tree-view/definition.d.ts +1 -3
  203. package/lib/tree-view/tree-view.d.ts +16 -2
  204. package/lib/tree-view/tree-view.template.d.ts +1 -1
  205. package/lib/video-player/definition.d.ts +1 -3
  206. package/lib/video-player/video-player.d.ts +2 -2
  207. package/lib/video-player/video-player.template.d.ts +1 -3
  208. package/listbox/index.cjs +37 -39
  209. package/listbox/index.js +37 -39
  210. package/menu/index.cjs +1 -1
  211. package/menu/index.js +1 -1
  212. package/nav/index.cjs +1 -1
  213. package/nav/index.js +1 -1
  214. package/nav-disclosure/index.cjs +1 -1
  215. package/nav-disclosure/index.js +1 -1
  216. package/nav-item/index.cjs +1 -1
  217. package/nav-item/index.js +1 -1
  218. package/note/index.cjs +1 -1
  219. package/note/index.js +1 -1
  220. package/number-field/index.cjs +1 -1
  221. package/number-field/index.js +1 -1
  222. package/option/index.cjs +1 -1
  223. package/option/index.js +1 -1
  224. package/package.json +1 -1
  225. package/pagination/index.cjs +1 -1
  226. package/pagination/index.js +1 -1
  227. package/popup/index.cjs +1 -1
  228. package/popup/index.js +1 -1
  229. package/progress/index.cjs +1 -1
  230. package/progress/index.js +1 -1
  231. package/progress-ring/index.cjs +1 -1
  232. package/progress-ring/index.js +1 -1
  233. package/radio/index.cjs +1 -1
  234. package/radio/index.js +1 -1
  235. package/radio-group/index.cjs +1 -1
  236. package/radio-group/index.js +1 -1
  237. package/range-slider/index.cjs +1 -1
  238. package/range-slider/index.js +1 -1
  239. package/searchable-select/index.cjs +1 -1
  240. package/searchable-select/index.js +1 -1
  241. package/select/index.cjs +1 -1
  242. package/select/index.js +1 -1
  243. package/selectable-box/index.cjs +1 -1
  244. package/selectable-box/index.js +1 -1
  245. package/shared/affix.cjs +10 -10
  246. package/shared/affix.js +2 -2
  247. package/shared/anchor.cjs +59 -0
  248. package/shared/anchor.js +57 -0
  249. package/shared/anchored.cjs +6 -6
  250. package/shared/anchored.js +2 -2
  251. package/shared/apply-mixins.cjs +15 -17
  252. package/shared/apply-mixins.js +15 -17
  253. package/shared/apply-mixins2.cjs +25 -0
  254. package/shared/apply-mixins2.js +23 -0
  255. package/shared/applyMixinsWithObservables.cjs +4 -4
  256. package/shared/applyMixinsWithObservables.js +2 -2
  257. package/shared/aria-global.cjs +86 -67
  258. package/shared/aria-global.js +86 -67
  259. package/shared/aria-global2.cjs +68 -86
  260. package/shared/aria-global2.js +68 -86
  261. package/shared/base-progress.cjs +70 -63
  262. package/shared/base-progress.js +69 -62
  263. package/shared/breadcrumb-item.cjs +7 -58
  264. package/shared/breadcrumb-item.js +4 -55
  265. package/shared/button.cjs +178 -0
  266. package/shared/button.js +176 -0
  267. package/shared/calendar-event.cjs +10 -9
  268. package/shared/calendar-event.js +3 -2
  269. package/shared/children.cjs +2 -2
  270. package/shared/children.js +1 -1
  271. package/shared/date-picker/date-picker-base.form-associated.d.ts +3 -2
  272. package/shared/date-picker/date-picker-base.template.d.ts +2 -3
  273. package/shared/defineVividComponent.cjs +2612 -0
  274. package/shared/defineVividComponent.js +2592 -0
  275. package/shared/definition.cjs +26 -24
  276. package/shared/definition.js +17 -14
  277. package/shared/definition10.cjs +15 -12
  278. package/shared/definition10.js +15 -11
  279. package/shared/definition11.cjs +53 -249
  280. package/shared/definition11.js +25 -219
  281. package/shared/definition12.cjs +18 -14
  282. package/shared/definition12.js +17 -12
  283. package/shared/definition13.cjs +20 -19
  284. package/shared/definition13.js +11 -9
  285. package/shared/definition14.cjs +36 -38
  286. package/shared/definition14.js +16 -17
  287. package/shared/definition15.cjs +28 -26
  288. package/shared/definition15.js +17 -14
  289. package/shared/definition16.cjs +478 -611
  290. package/shared/definition16.js +471 -603
  291. package/shared/definition17.cjs +934 -1113
  292. package/shared/definition17.js +913 -1091
  293. package/shared/definition18.cjs +16 -20
  294. package/shared/definition18.js +19 -22
  295. package/shared/definition19.cjs +26 -30
  296. package/shared/definition19.js +21 -24
  297. package/shared/definition2.cjs +20 -22
  298. package/shared/definition2.js +21 -22
  299. package/shared/definition20.cjs +53 -53
  300. package/shared/definition20.js +36 -35
  301. package/shared/definition21.cjs +43 -46
  302. package/shared/definition21.js +19 -21
  303. package/shared/definition22.cjs +16 -13
  304. package/shared/definition22.js +15 -11
  305. package/shared/definition23.cjs +22 -20
  306. package/shared/definition23.js +15 -12
  307. package/shared/definition24.cjs +20 -172
  308. package/shared/definition24.js +17 -168
  309. package/shared/definition25.cjs +48 -28
  310. package/shared/definition25.js +43 -22
  311. package/shared/definition26.cjs +17 -14
  312. package/shared/definition26.js +15 -11
  313. package/shared/definition27.cjs +265 -12
  314. package/shared/definition27.js +262 -10
  315. package/shared/definition28.cjs +19 -16
  316. package/shared/definition28.js +15 -11
  317. package/shared/definition29.cjs +478 -604
  318. package/shared/definition29.js +450 -578
  319. package/shared/definition3.cjs +21 -16
  320. package/shared/definition3.js +17 -11
  321. package/shared/definition30.cjs +100 -75
  322. package/shared/definition30.js +99 -73
  323. package/shared/definition31.cjs +24 -97
  324. package/shared/definition31.js +25 -97
  325. package/shared/definition32.cjs +10 -25
  326. package/shared/definition32.js +9 -23
  327. package/shared/definition33.cjs +53 -14
  328. package/shared/definition33.js +52 -12
  329. package/shared/definition34.cjs +641 -34
  330. package/shared/definition34.js +638 -30
  331. package/shared/definition35.cjs +205 -377
  332. package/shared/definition35.js +200 -373
  333. package/shared/definition36.cjs +204 -104
  334. package/shared/definition36.js +199 -97
  335. package/shared/definition37.cjs +79 -206
  336. package/shared/definition37.js +75 -202
  337. package/shared/definition38.cjs +50 -56
  338. package/shared/definition38.js +48 -52
  339. package/shared/definition39.cjs +260 -56
  340. package/shared/definition39.js +259 -54
  341. package/shared/definition4.cjs +33 -35
  342. package/shared/definition4.js +20 -21
  343. package/shared/definition40.cjs +112 -229
  344. package/shared/definition40.js +109 -226
  345. package/shared/definition41.cjs +627 -36
  346. package/shared/definition41.js +626 -34
  347. package/shared/definition42.cjs +975 -487
  348. package/shared/definition42.js +972 -482
  349. package/shared/definition43.cjs +725 -932
  350. package/shared/definition43.js +713 -918
  351. package/shared/definition44.cjs +116 -734
  352. package/shared/definition44.js +114 -731
  353. package/shared/definition45.cjs +93 -116
  354. package/shared/definition45.js +93 -115
  355. package/shared/definition46.cjs +469 -89
  356. package/shared/definition46.js +466 -86
  357. package/shared/definition47.cjs +119 -479
  358. package/shared/definition47.js +116 -474
  359. package/shared/definition48.cjs +114 -120
  360. package/shared/definition48.js +112 -117
  361. package/shared/definition49.cjs +18 -160
  362. package/shared/definition49.js +16 -157
  363. package/shared/definition5.cjs +48 -49
  364. package/shared/definition5.js +19 -19
  365. package/shared/definition50.cjs +112 -15
  366. package/shared/definition50.js +110 -12
  367. package/shared/definition51.cjs +847 -84
  368. package/shared/definition51.js +843 -79
  369. package/shared/definition52.cjs +31 -859
  370. package/shared/definition52.js +29 -856
  371. package/shared/definition53.cjs +126 -28
  372. package/shared/definition53.js +124 -25
  373. package/shared/definition54.cjs +268 -107
  374. package/shared/definition54.js +262 -100
  375. package/shared/definition55.cjs +63 -298
  376. package/shared/definition55.js +61 -295
  377. package/shared/definition56.cjs +799 -311
  378. package/shared/definition56.js +795 -306
  379. package/shared/definition57.cjs +108 -825
  380. package/shared/definition57.js +106 -822
  381. package/shared/definition58.cjs +74 -100
  382. package/shared/definition58.js +70 -95
  383. package/shared/definition59.cjs +181 -106
  384. package/shared/definition59.js +175 -101
  385. package/shared/definition6.cjs +23 -21
  386. package/shared/definition6.js +15 -12
  387. package/shared/definition60.cjs +273 -70
  388. package/shared/definition60.js +273 -69
  389. package/shared/definition61.cjs +66157 -271
  390. package/shared/definition61.js +66156 -269
  391. package/shared/definition62.cjs +36 -66174
  392. package/shared/definition62.js +33 -66171
  393. package/shared/definition63.cjs +2154 -27
  394. package/shared/definition63.js +2151 -25
  395. package/shared/definition7.cjs +19 -15
  396. package/shared/definition7.js +14 -10
  397. package/shared/definition8.cjs +26 -27
  398. package/shared/definition8.js +17 -17
  399. package/shared/definition9.cjs +21 -21
  400. package/shared/definition9.js +18 -17
  401. package/shared/design-system/createRegisterFunction.d.ts +2 -0
  402. package/shared/design-system/defineVividComponent.d.ts +15 -0
  403. package/shared/direction.cjs +10 -1
  404. package/shared/direction.js +10 -1
  405. package/shared/dom.cjs +0 -13
  406. package/shared/dom.js +1 -13
  407. package/shared/form-associated.cjs +422 -457
  408. package/shared/form-associated.js +422 -457
  409. package/shared/form-associated2.cjs +383 -0
  410. package/shared/form-associated2.js +381 -0
  411. package/shared/form-elements.cjs +15 -42
  412. package/shared/form-elements.js +2 -29
  413. package/shared/foundation/anchor/anchor.d.ts +1 -0
  414. package/shared/foundation/button/button.d.ts +3 -2
  415. package/shared/foundation/button/button.template.d.ts +2 -4
  416. package/shared/foundation/form-associated/form-associated.d.ts +51 -0
  417. package/shared/foundation/listbox/listbox.d.ts +22 -0
  418. package/shared/foundation/progress/base-progress.d.ts +9 -0
  419. package/shared/foundation/utilities/apply-mixins.d.ts +1 -0
  420. package/shared/foundation/vivid-element/vivid-element.d.ts +3 -0
  421. package/shared/foundation-element.cjs +1417 -0
  422. package/shared/foundation-element.js +1414 -0
  423. package/shared/index.cjs +7 -5097
  424. package/shared/index.js +7 -5079
  425. package/shared/key-codes.cjs +10 -0
  426. package/shared/key-codes.js +6 -1
  427. package/shared/key-codes2.cjs +50 -6
  428. package/shared/key-codes2.js +50 -4
  429. package/shared/listbox.cjs +409 -981
  430. package/shared/listbox.js +410 -979
  431. package/shared/listbox2.cjs +1268 -0
  432. package/shared/listbox2.js +1265 -0
  433. package/shared/localized.cjs +2 -2
  434. package/shared/localized.js +1 -1
  435. package/shared/numbers.cjs +12 -0
  436. package/shared/numbers.js +12 -1
  437. package/shared/patterns/affix.d.ts +2 -2
  438. package/shared/patterns/chevron.d.ts +2 -2
  439. package/shared/patterns/form-elements/form-elements.d.ts +2 -2
  440. package/shared/presentationDate.cjs +56 -55
  441. package/shared/presentationDate.js +8 -7
  442. package/shared/ref.cjs +2 -2
  443. package/shared/ref.js +1 -1
  444. package/shared/repeat.cjs +22 -22
  445. package/shared/repeat.js +1 -1
  446. package/shared/slider.template.cjs +5 -5
  447. package/shared/slider.template.js +2 -2
  448. package/shared/slotted.cjs +4 -4
  449. package/shared/slotted.js +1 -1
  450. package/shared/strings.cjs +0 -26
  451. package/shared/strings.js +1 -25
  452. package/shared/strings2.cjs +37 -0
  453. package/shared/strings2.js +33 -0
  454. package/shared/text-anchor.cjs +8 -89
  455. package/shared/text-anchor.js +5 -86
  456. package/shared/text-anchor.template.cjs +2 -2
  457. package/shared/text-anchor.template.js +1 -1
  458. package/shared/text-field2.cjs +539 -194
  459. package/shared/text-field2.js +539 -194
  460. package/shared/vivid-element.cjs +8 -0
  461. package/shared/vivid-element.js +6 -0
  462. package/side-drawer/index.cjs +1 -1
  463. package/side-drawer/index.js +1 -1
  464. package/slider/index.cjs +1 -1
  465. package/slider/index.js +1 -1
  466. package/split-button/index.cjs +1 -1
  467. package/split-button/index.js +1 -1
  468. package/styles/core/all.css +21 -1
  469. package/styles/core/theme.css +21 -1
  470. package/styles/core/typography.css +1 -1
  471. package/styles/tokens/theme-dark.css +4 -4
  472. package/styles/tokens/theme-light.css +4 -4
  473. package/styles/tokens/vivid-2-compat.css +1 -1
  474. package/switch/index.cjs +1 -1
  475. package/switch/index.js +1 -1
  476. package/tab/index.cjs +1 -1
  477. package/tab/index.js +1 -1
  478. package/tab-panel/index.cjs +1 -1
  479. package/tab-panel/index.js +1 -1
  480. package/tabs/index.cjs +1 -1
  481. package/tabs/index.js +1 -1
  482. package/tag/index.cjs +1 -1
  483. package/tag/index.js +1 -1
  484. package/tag-group/index.cjs +1 -1
  485. package/tag-group/index.js +1 -1
  486. package/text-anchor/index.cjs +10 -7
  487. package/text-anchor/index.js +10 -7
  488. package/text-area/index.cjs +1 -1
  489. package/text-area/index.js +1 -1
  490. package/text-field/index.cjs +1 -1
  491. package/text-field/index.js +1 -1
  492. package/time-picker/index.cjs +1 -1
  493. package/time-picker/index.js +1 -1
  494. package/toggletip/index.cjs +1 -1
  495. package/toggletip/index.js +1 -1
  496. package/tooltip/index.cjs +1 -1
  497. package/tooltip/index.js +1 -1
  498. package/tree-item/index.cjs +1 -1
  499. package/tree-item/index.js +1 -1
  500. package/tree-view/index.cjs +1 -1
  501. package/tree-view/index.js +1 -1
  502. package/video-player/index.cjs +1 -1
  503. package/video-player/index.js +1 -1
  504. package/vivid.api.json +2848 -7818
  505. package/shared/Reflector.cjs +0 -71
  506. package/shared/Reflector.js +0 -69
  507. package/shared/definition64.cjs +0 -2164
  508. package/shared/definition64.js +0 -2159
  509. package/shared/design-system/index.d.ts +0 -3
  510. package/shared/icon.cjs +0 -261
  511. package/shared/icon.js +0 -258
  512. package/shared/index2.cjs +0 -11
  513. package/shared/index2.js +0 -9
  514. package/shared/listbox-option.cjs +0 -204
  515. package/shared/listbox-option.js +0 -201
  516. package/shared/radio.cjs +0 -126
  517. package/shared/radio.js +0 -124
  518. package/shared/select.options.cjs +0 -12
  519. package/shared/select.options.js +0 -10
  520. package/shared/start-end.cjs +0 -52
  521. package/shared/start-end.js +0 -50
  522. package/shared/tree-item.cjs +0 -154
  523. package/shared/tree-item.js +0 -151
@@ -1,72 +1,223 @@
1
1
  'use strict';
2
2
 
3
- const index = require('./index.cjs');
4
- const definition = require('./definition27.cjs');
5
- const Reflector = require('./Reflector.cjs');
3
+ const definition$2 = require('./definition55.cjs');
4
+ const definition = require('./definition63.cjs');
5
+ const definition$1 = require('./definition11.cjs');
6
+ const defineVividComponent = require('./defineVividComponent.cjs');
6
7
  const applyMixinsWithObservables = require('./applyMixinsWithObservables.cjs');
7
- const icon = require('./icon.cjs');
8
- const textField = require('./text-field2.cjs');
8
+ const index = require('./index.cjs');
9
+ const scrollIntoView = require('./scrollIntoView.cjs');
10
+ const formAssociated = require('./form-associated.cjs');
11
+ const vividElement = require('./vivid-element.cjs');
9
12
  const formElements = require('./form-elements.cjs');
10
- const affix = require('./affix.cjs');
11
- const textField$1 = require('./text-field.cjs');
12
- const when = require('./when.cjs');
13
+ const trappedFocus = require('./trapped-focus.cjs');
14
+ const localized = require('./localized.cjs');
15
+ const textField = require('./text-field2.cjs');
16
+ const ref = require('./ref.cjs');
13
17
  const slotted = require('./slotted.cjs');
18
+ const when = require('./when.cjs');
19
+ const repeat = require('./repeat.cjs');
14
20
  const classNames = require('./class-names.cjs');
15
21
 
16
- const byteToHex = [];
17
- for (let i = 0; i < 256; ++i) {
18
- byteToHex.push((i + 0x100).toString(16).slice(1));
19
- }
20
- function unsafeStringify(arr, offset = 0) {
21
- return (byteToHex[arr[offset + 0]] +
22
- byteToHex[arr[offset + 1]] +
23
- byteToHex[arr[offset + 2]] +
24
- byteToHex[arr[offset + 3]] +
25
- '-' +
26
- byteToHex[arr[offset + 4]] +
27
- byteToHex[arr[offset + 5]] +
28
- '-' +
29
- byteToHex[arr[offset + 6]] +
30
- byteToHex[arr[offset + 7]] +
31
- '-' +
32
- byteToHex[arr[offset + 8]] +
33
- byteToHex[arr[offset + 9]] +
34
- '-' +
35
- byteToHex[arr[offset + 10]] +
36
- byteToHex[arr[offset + 11]] +
37
- byteToHex[arr[offset + 12]] +
38
- byteToHex[arr[offset + 13]] +
39
- byteToHex[arr[offset + 14]] +
40
- byteToHex[arr[offset + 15]]).toLowerCase();
41
- }
22
+ const styles = ":host{display:inline-block}.base,.control{inline-size:100%}.dialog{display:inline-flex;flex-direction:column}.dialog .footer{display:flex;align-items:center;justify-content:flex-end;padding:8px;border-top:1px solid var(--vvd-color-neutral-200);gap:8px}.time-pickers{display:flex;overflow:hidden;justify-content:center;padding:4px;block-size:188px;gap:4px}.time-pickers .picker{position:relative;display:flex;overflow:hidden;flex-direction:column;padding:0;border-radius:4px;margin:0;gap:4px;inline-size:50px;list-style:none}.time-pickers .picker:hover{overflow-y:auto}.time-pickers .picker:after{display:block;flex-shrink:0;block-size:156px;content:\"\"}.time-pickers .picker:focus-visible{--focus-stroke-gap-color: transparent;--focus-inset: -2px;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.time-pickers .item{--_connotation-color-primary: var(--vvd-time-picker-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-firm: var(--vvd-time-picker-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-time-picker-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-time-picker-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-time-picker-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-pale: var(--vvd-time-picker-accent-pale, var(--vvd-color-neutral-300))}.time-pickers .item{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.time-pickers .item:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.time-pickers .item:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: transparent}.time-pickers .item{display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:4px;background-color:var(--_appearance-color-fill);block-size:28px;color:var(--_appearance-color-text);cursor:pointer;font:var(--vvd-typography-base);inline-size:50px}";
42
23
 
43
- let getRandomValues;
44
- const rnds8 = new Uint8Array(16);
45
- function rng() {
46
- if (!getRandomValues) {
47
- if (typeof crypto === 'undefined' || !crypto.getRandomValues) {
48
- throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
49
- }
50
- getRandomValues = crypto.getRandomValues.bind(crypto);
51
- }
52
- return getRandomValues(rnds8);
24
+ class _TimePicker extends vividElement.VividElement {
25
+ }
26
+ class FormAssociatedTimePicker extends formAssociated.FormAssociated(_TimePicker) {
27
+ constructor() {
28
+ super(...arguments);
29
+ this.proxy = document.createElement("input");
30
+ }
53
31
  }
54
32
 
55
- const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
56
- const native = { randomUUID };
33
+ const isValidTimeStr = (timeStr) => {
34
+ const parts = timeStr.split(":");
35
+ if (parts.length !== 3) {
36
+ return false;
37
+ }
38
+ const [hours, minutes, seconds] = parts;
39
+ if (hours.length !== 2 || minutes.length !== 2 || seconds.length !== 2) {
40
+ return false;
41
+ }
42
+ const hoursNum = parseInt(hours, 10);
43
+ const minutesNum = parseInt(minutes, 10);
44
+ const secondsNum = parseInt(seconds, 10);
45
+ if (isNaN(hoursNum) || isNaN(minutesNum) || isNaN(secondsNum)) {
46
+ return false;
47
+ }
48
+ if (hoursNum < 0 || hoursNum > 23) {
49
+ return false;
50
+ }
51
+ if (minutesNum < 0 || minutesNum > 59) {
52
+ return false;
53
+ }
54
+ if (secondsNum < 0 || secondsNum > 59) {
55
+ return false;
56
+ }
57
+ return true;
58
+ };
59
+ const parseTimePart = (partStr) => Number.parseInt(partStr, 10);
60
+ const formatTimePart = (part) => part.toString().padStart(2, "0");
61
+ const parseTimeStr = (timeStr) => {
62
+ const [hoursStr, minutesStr, secondsStr] = timeStr.split(":");
63
+ const hours = parseTimePart(hoursStr);
64
+ const minutes = parseTimePart(minutesStr);
65
+ const seconds = parseTimePart(secondsStr);
66
+ return {
67
+ hourStr: hoursStr,
68
+ hours,
69
+ minuteStr: minutesStr,
70
+ minutes,
71
+ secondStr: secondsStr,
72
+ seconds,
73
+ meridiem: hours < 12 ? "AM" : "PM"
74
+ };
75
+ };
76
+ const hoursAs12hClock = (hour) => hour % 12 || 12;
57
77
 
58
- function v4(options, buf, offset) {
59
- if (native.randomUUID && !buf && !options) {
60
- return native.randomUUID();
61
- }
62
- options = options || {};
63
- const rnds = options.random || (options.rng || rng)();
64
- rnds[6] = (rnds[6] & 0x0f) | 0x40;
65
- rnds[8] = (rnds[8] & 0x3f) | 0x80;
66
- return unsafeStringify(rnds);
67
- }
78
+ const formatPresentationTime = (timeStr, includeSeconds, use12HourClock) => {
79
+ const time = parseTimeStr(timeStr);
80
+ const hoursStr = formatTimePart(
81
+ use12HourClock ? hoursAs12hClock(time.hours) : time.hours
82
+ );
83
+ let result = `${hoursStr}:${time.minuteStr}`;
84
+ if (includeSeconds) {
85
+ result += `:${time.secondStr}`;
86
+ }
87
+ if (use12HourClock) {
88
+ result += ` ${time.meridiem}`;
89
+ }
90
+ return result;
91
+ };
92
+ const isDigit = (char) => char >= "0" && char <= "9";
93
+ const parsePresentationTime = (input, use12HourClock) => {
94
+ const cleanedInput = input.toLowerCase();
95
+ const numerals = [];
96
+ let meridiem;
97
+ for (let i = 0; i < cleanedInput.length; i++) {
98
+ const char = cleanedInput[i];
99
+ if (char === "a" && cleanedInput[i + 1] === "m") {
100
+ i++;
101
+ meridiem = "AM";
102
+ }
103
+ if (char === "p" && cleanedInput[i + 1] === "m") {
104
+ i++;
105
+ meridiem = "PM";
106
+ }
107
+ if (isDigit(char)) {
108
+ let numeral = char;
109
+ while (isDigit(cleanedInput[i + 1])) {
110
+ i++;
111
+ numeral += cleanedInput[i];
112
+ }
113
+ numerals.push(Number.parseInt(numeral, 10));
114
+ }
115
+ }
116
+ if (numerals.length === 0 || numerals.length > 3) {
117
+ throw new Error("Invalid time format");
118
+ }
119
+ if (meridiem && (numerals[0] < 1 || numerals[0] > 12)) {
120
+ throw new Error("Invalid time format");
121
+ }
122
+ if (meridiem || use12HourClock) {
123
+ if (numerals[0] === 12) {
124
+ numerals[0] = 0;
125
+ }
126
+ }
127
+ if (meridiem === "PM") {
128
+ numerals[0] = numerals[0] + 12;
129
+ }
130
+ const [hours, minutes = 0, seconds = 0] = numerals;
131
+ if (hours > 23 || minutes > 59 || seconds > 59) {
132
+ throw new Error("Invalid value");
133
+ }
134
+ return [hours, minutes, seconds].map(formatTimePart).join(":");
135
+ };
68
136
 
69
- const generateRandomId = () => v4();
137
+ const fallsIntoMeridiem = (meridiem, hour) => meridiem === "AM" && hour < 12 || meridiem === "PM" && hour >= 12;
138
+ const getHoursOptions = (min, max, forMeridiem) => {
139
+ const result = [];
140
+ const minHour = min ? parseTimeStr(min).hours : 0;
141
+ const maxHour = max ? parseTimeStr(max).hours : 23;
142
+ for (let i = minHour; i <= maxHour; i++) {
143
+ if (forMeridiem && !fallsIntoMeridiem(forMeridiem, i)) {
144
+ continue;
145
+ }
146
+ result.push({
147
+ value: formatTimePart(i),
148
+ label: formatTimePart(forMeridiem ? hoursAs12hClock(i) : i)
149
+ });
150
+ }
151
+ return result;
152
+ };
153
+ const getMinutesOptions = (step, value, min, max) => {
154
+ const result = [];
155
+ let minMinute = 0;
156
+ let maxMinute = 59;
157
+ if (min) {
158
+ const { hourStr: minHourStr, minutes: minMinutes } = parseTimeStr(min);
159
+ if (value && parseTimeStr(value).hourStr === minHourStr) {
160
+ minMinute = minMinutes;
161
+ }
162
+ }
163
+ if (max) {
164
+ const { hourStr: maxHourStr, minutes: maxMinutes } = parseTimeStr(max);
165
+ if (value && parseTimeStr(value).hourStr === maxHourStr) {
166
+ maxMinute = maxMinutes;
167
+ }
168
+ }
169
+ for (let i = minMinute; i <= maxMinute; i += Math.max(1, step ?? 1)) {
170
+ const minutes = formatTimePart(i);
171
+ result.push({
172
+ value: minutes,
173
+ label: minutes
174
+ });
175
+ }
176
+ return result;
177
+ };
178
+ const getSecondsOptions = (step, value, min, max) => {
179
+ const result = [];
180
+ let minSecond = 0;
181
+ let maxSecond = 59;
182
+ if (min) {
183
+ const minTime = parseTimeStr(min);
184
+ if (value && (parseTimeStr(value).hourStr === minTime.hourStr && parseTimeStr(value).minuteStr) === minTime.minuteStr) {
185
+ minSecond = minTime.seconds;
186
+ }
187
+ }
188
+ if (max) {
189
+ const maxTime = parseTimeStr(max);
190
+ if (value && (parseTimeStr(value).hourStr === maxTime.hourStr && parseTimeStr(value).minuteStr) === maxTime.minuteStr) {
191
+ maxSecond = maxTime.seconds;
192
+ }
193
+ }
194
+ for (let i = minSecond; i <= maxSecond; i += Math.max(1, step)) {
195
+ const seconds = formatTimePart(i);
196
+ result.push({
197
+ value: seconds,
198
+ label: seconds
199
+ });
200
+ }
201
+ return result;
202
+ };
203
+ const getMeridiesOptions = (min, max) => {
204
+ const result = [];
205
+ const hideAM = min ? parseTimeStr(min).meridiem === "PM" : false;
206
+ if (!hideAM) {
207
+ result.push({
208
+ value: "AM",
209
+ label: "AM"
210
+ });
211
+ }
212
+ const hidePM = max ? parseTimeStr(max).meridiem === "AM" : false;
213
+ if (!hidePM) {
214
+ result.push({
215
+ value: "PM",
216
+ label: "PM"
217
+ });
218
+ }
219
+ return result;
220
+ };
70
221
 
71
222
  var __defProp = Object.defineProperty;
72
223
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -86,311 +237,648 @@ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read fr
86
237
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
87
238
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
88
239
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
89
- var _TextField_instances, handleLabelChange_fn, _reflectToInput, _helperTextMirrorEl, _helperTextSlotMutationObserver, updateHelperTextMutationObserver_fn, updateMirroredHelperText_fn;
90
- const safariWorkaroundClassName = "_vvd-3-text-field-safari-workaround";
91
- const getSafariWorkaroundStyleSheet = icon.memoizeWith(
92
- () => "",
93
- () => {
94
- const styleSheet = new CSSStyleSheet();
95
- const supportsReplaceSync = "replaceSync" in styleSheet;
96
- if (supportsReplaceSync) {
97
- styleSheet.replaceSync(`
98
- .${safariWorkaroundClassName}::placeholder {
99
- opacity: 1 !important;
100
- -webkit-text-fill-color: var(--_low-ink-color) !important;
101
- }`);
102
- }
103
- return styleSheet;
104
- }
105
- );
106
- const installSafariWorkaroundStyle = (forElement) => {
107
- const root = forElement.getRootNode();
108
- const workaroundStyleSheet = getSafariWorkaroundStyleSheet();
109
- const supportsAdoptedStyleSheets = "adoptedStyleSheets" in root;
110
- if (!supportsAdoptedStyleSheets) {
111
- return;
112
- }
113
- if (!root.adoptedStyleSheets.includes(workaroundStyleSheet)) {
114
- root.adoptedStyleSheets = [
115
- ...root.adoptedStyleSheets,
116
- workaroundStyleSheet
117
- ];
240
+ var _clockChangeHandler, _clockChangeObserver, _getFocusableEls, _TimePicker_instances, updateValueDueToUserInteraction_fn, _onFocusIn, _onFocusOut, _dismissOnClickOutside, openPopupIfPossible_fn, scrollToItem_fn;
241
+ const ValidTimeFilter = {
242
+ fromView: (value) => {
243
+ if (value && isValidTimeStr(value)) {
244
+ return value;
245
+ }
246
+ return "";
247
+ },
248
+ toView(value) {
249
+ return value;
118
250
  }
119
251
  };
120
- exports.TextField = class TextField extends textField.TextField {
252
+ let TimePicker = class extends FormAssociatedTimePicker {
121
253
  constructor() {
122
- super(...arguments);
123
- __privateAdd(this, _TextField_instances);
124
- /**
125
- * @internal
126
- */
127
- this._labelEl = null;
128
- __privateAdd(this, _reflectToInput);
129
- __privateAdd(this, _helperTextMirrorEl);
130
- __privateAdd(this, _helperTextSlotMutationObserver);
254
+ super();
255
+ __privateAdd(this, _TimePicker_instances);
256
+ this.readOnly = false;
257
+ this.minutesStep = null;
258
+ this.secondsStep = null;
259
+ // Reformat the presentation value when the clock changes
260
+ __privateAdd(this, _clockChangeHandler, {
261
+ handleChange: () => {
262
+ if (this.value) {
263
+ this._presentationValue = formatPresentationTime(
264
+ this.value,
265
+ this._displaySeconds,
266
+ this._use12hClock
267
+ );
268
+ }
269
+ }
270
+ });
271
+ __privateAdd(this, _clockChangeObserver);
272
+ __privateAdd(this, _getFocusableEls, () => this.shadowRoot.querySelectorAll(`
273
+ .dialog [tabindex="0"],
274
+ .dialog .vwc-button:not(:disabled)
275
+ `));
276
+ __privateAdd(this, _onFocusIn, () => {
277
+ this.$emit("focus", void 0, { bubbles: false });
278
+ });
279
+ __privateAdd(this, _onFocusOut, () => {
280
+ this.$emit("blur", void 0, { bubbles: false });
281
+ });
282
+ this._popupOpen = false;
283
+ __privateAdd(this, _dismissOnClickOutside, (event) => {
284
+ if (!this._popupOpen) {
285
+ return;
286
+ }
287
+ const path = event.composedPath();
288
+ const elementsToIgnoreClicksOn = [this._dialogEl, this._clockButtonEl];
289
+ if (!elementsToIgnoreClicksOn.some((element) => path.includes(element))) {
290
+ this._closePopup(false);
291
+ }
292
+ });
293
+ this._presentationValue = "";
294
+ this.value = "";
295
+ this.min = "";
296
+ this.max = "";
297
+ this.proxy.type = "time";
298
+ this.proxy.step = "1";
299
+ }
300
+ /**
301
+ * @internal
302
+ */
303
+ readOnlyChanged() {
304
+ if (this.proxy instanceof HTMLInputElement) {
305
+ this.proxy.readOnly = this.readOnly;
306
+ this.validate();
307
+ }
308
+ }
309
+ /**
310
+ * @internal
311
+ */
312
+ minChanged(_, newMin) {
313
+ if (this.proxy instanceof HTMLInputElement) {
314
+ this.proxy.min = newMin;
315
+ this.validate();
316
+ }
131
317
  }
132
318
  /**
133
319
  * @internal
134
320
  */
135
- labelChanged() {
136
- if (this._labelEl) {
137
- __privateMethod(this, _TextField_instances, handleLabelChange_fn).call(this, this._labelEl);
321
+ maxChanged(_, newMax) {
322
+ if (this.proxy instanceof HTMLInputElement) {
323
+ this.proxy.max = newMax;
324
+ this.validate();
325
+ }
326
+ }
327
+ // --- Core ---
328
+ /**
329
+ * @internal
330
+ */
331
+ get _displaySeconds() {
332
+ return this.secondsStep !== null;
333
+ }
334
+ get _use12hClock() {
335
+ return this.clock ? this.clock === "12h" : this.locale.timePicker.defaultTo12HourClock;
336
+ }
337
+ /**
338
+ * @internal
339
+ */
340
+ valueChanged(previous, next) {
341
+ super.valueChanged(previous, next);
342
+ if (this.value) {
343
+ if (!isValidTimeStr(this.value)) {
344
+ this.value = "";
345
+ return;
346
+ }
347
+ this._presentationValue = formatPresentationTime(
348
+ this.value,
349
+ this._displaySeconds,
350
+ this._use12hClock
351
+ );
352
+ } else {
353
+ this._presentationValue = "";
138
354
  }
139
355
  }
140
356
  connectedCallback() {
141
357
  super.connectedCallback();
142
- if (!this.control) {
143
- const uniqueId = this.id || generateRandomId();
144
- const controlId = `vvd-text-field-control-${uniqueId}`;
145
- const helperTextId = `vvd-text-field-helper-text-${uniqueId}`;
146
- const input = document.createElement("input");
147
- input.slot = "_control";
148
- input.id = controlId;
149
- input.className = safariWorkaroundClassName;
150
- this.control = input;
151
- input.addEventListener("input", () => {
152
- this.handleTextInput();
153
- });
154
- input.addEventListener("change", () => {
155
- this.handleChange();
156
- });
157
- input.addEventListener("blur", () => {
158
- this.$emit("blur", void 0, { bubbles: false });
159
- });
160
- input.addEventListener("focus", () => {
161
- this.$emit("focus", void 0, { bubbles: false });
162
- });
163
- this.appendChild(input);
164
- const label = document.createElement("label");
165
- label.slot = "_label";
166
- label.htmlFor = controlId;
167
- this._labelEl = label;
168
- __privateMethod(this, _TextField_instances, handleLabelChange_fn).call(this, label);
169
- __privateSet(this, _helperTextMirrorEl, document.createElement("div"));
170
- __privateGet(this, _helperTextMirrorEl).id = helperTextId;
171
- __privateGet(this, _helperTextMirrorEl).slot = "_mirrored-helper-text";
172
- __privateMethod(this, _TextField_instances, updateMirroredHelperText_fn).call(this);
173
- this.appendChild(__privateGet(this, _helperTextMirrorEl));
174
- installSafariWorkaroundStyle(this);
175
- }
176
- __privateSet(this, _reflectToInput, new Reflector.Reflector(this, this.control));
177
- __privateGet(this, _reflectToInput).booleanAttribute("autofocus", "autofocus");
178
- __privateGet(this, _reflectToInput).booleanAttribute("disabled", "disabled");
179
- __privateGet(this, _reflectToInput).booleanAttribute("readOnly", "readonly");
180
- __privateGet(this, _reflectToInput).booleanAttribute("required", "required");
181
- __privateGet(this, _reflectToInput).booleanAttribute("spellcheck", "spellcheck");
182
- __privateGet(this, _reflectToInput).attribute("list", "list");
183
- __privateGet(this, _reflectToInput).attribute("maxlength", "maxlength");
184
- __privateGet(this, _reflectToInput).attribute("minlength", "minlength");
185
- __privateGet(this, _reflectToInput).attribute("pattern", "pattern");
186
- __privateGet(this, _reflectToInput).attribute("placeholder", "placeholder");
187
- __privateGet(this, _reflectToInput).attribute("size", "size");
188
- __privateGet(this, _reflectToInput).attribute("autoComplete", "autocomplete");
189
- __privateGet(this, _reflectToInput).attribute("type", "type");
190
- __privateGet(this, _reflectToInput).attribute("inputMode", "inputmode");
191
- __privateGet(this, _reflectToInput).attribute("ariaAtomic", "aria-atomic");
192
- __privateGet(this, _reflectToInput).attribute("ariaBusy", "aria-busy");
193
- __privateGet(this, _reflectToInput).attribute("ariaCurrent", "aria-current");
194
- __privateGet(this, _reflectToInput).attribute("ariaDetails", "aria-details");
195
- __privateGet(this, _reflectToInput).attribute("ariaDisabled", "aria-disabled");
196
- __privateGet(this, _reflectToInput).attribute("ariaHaspopup", "aria-haspopup");
197
- __privateGet(this, _reflectToInput).attribute("ariaHidden", "aria-hidden");
198
- __privateGet(this, _reflectToInput).attribute("ariaInvalid", "aria-invalid");
199
- __privateGet(this, _reflectToInput).attribute("ariaKeyshortcuts", "aria-keyshortcuts");
200
- __privateGet(this, _reflectToInput).attribute("ariaLabel", "aria-label");
201
- __privateGet(this, _reflectToInput).attribute("ariaLive", "aria-live");
202
- __privateGet(this, _reflectToInput).attribute("ariaRelevant", "aria-relevant");
203
- __privateGet(this, _reflectToInput).attribute(
204
- "ariaRoledescription",
205
- "aria-roledescription"
206
- );
207
- __privateGet(this, _reflectToInput).property("value", "value", true);
208
- __privateMethod(this, _TextField_instances, updateHelperTextMutationObserver_fn).call(this);
358
+ document.addEventListener("click", __privateGet(this, _dismissOnClickOutside));
359
+ this.addEventListener("focusin", __privateGet(this, _onFocusIn));
360
+ this.addEventListener("focusout", __privateGet(this, _onFocusOut));
361
+ __privateSet(this, _clockChangeObserver, defineVividComponent.Observable.binding(
362
+ () => this._use12hClock,
363
+ __privateGet(this, _clockChangeHandler)
364
+ ));
365
+ __privateGet(this, _clockChangeObserver).observe(this, defineVividComponent.defaultExecutionContext);
209
366
  }
210
367
  disconnectedCallback() {
211
368
  super.disconnectedCallback();
212
- __privateGet(this, _reflectToInput).destroy();
213
- __privateSet(this, _reflectToInput, void 0);
214
- __privateMethod(this, _TextField_instances, updateHelperTextMutationObserver_fn).call(this);
369
+ document.removeEventListener("click", __privateGet(this, _dismissOnClickOutside));
370
+ this.removeEventListener("focusin", __privateGet(this, _onFocusIn));
371
+ this.removeEventListener("focusout", __privateGet(this, _onFocusOut));
372
+ __privateGet(this, _clockChangeObserver).disconnect();
215
373
  }
216
- focus() {
217
- this.control?.focus();
374
+ /**
375
+ * @internal
376
+ */
377
+ _closePopup(restoreFocusToTextField = true) {
378
+ this._popupOpen = false;
379
+ if (restoreFocusToTextField) {
380
+ this._textFieldEl.focus();
381
+ }
218
382
  }
219
383
  /**
384
+ * On keydown anywhere in the time picker.
220
385
  * @internal
221
386
  */
222
- helperTextChanged() {
223
- __privateMethod(this, _TextField_instances, updateMirroredHelperText_fn).call(this);
387
+ _onBaseKeyDown(event) {
388
+ if (index.handleEscapeKeyAndStopPropogation(event)) {
389
+ this._closePopup();
390
+ return false;
391
+ }
392
+ if (this._trappedFocus(event, __privateGet(this, _getFocusableEls))) {
393
+ return false;
394
+ }
395
+ return true;
224
396
  }
225
397
  /**
226
398
  * @internal
227
399
  */
228
- _helperTextSlottedContentChanged() {
229
- __privateMethod(this, _TextField_instances, updateMirroredHelperText_fn).call(this);
230
- __privateMethod(this, _TextField_instances, updateHelperTextMutationObserver_fn).call(this);
400
+ _presentationValueChanged() {
401
+ this.dirtyValue = true;
402
+ this.validate();
231
403
  }
232
- };
233
- _TextField_instances = new WeakSet();
234
- handleLabelChange_fn = function(labelEl) {
235
- if (!this.label) {
236
- labelEl.remove();
237
- } else {
238
- labelEl.textContent = this.label;
239
- if (!labelEl.isConnected) {
240
- this.appendChild(labelEl);
404
+ /**
405
+ * @internal
406
+ */
407
+ get _textFieldPlaceholder() {
408
+ let format = "hh:mm";
409
+ if (this._displaySeconds) {
410
+ format += ":ss";
411
+ }
412
+ if (this._use12hClock) {
413
+ format += " aa";
241
414
  }
415
+ return format;
242
416
  }
243
- };
244
- _reflectToInput = new WeakMap();
245
- _helperTextMirrorEl = new WeakMap();
246
- _helperTextSlotMutationObserver = new WeakMap();
247
- updateHelperTextMutationObserver_fn = function() {
248
- const usesHelperTextSlot = this._helperTextSlottedContent.length;
249
- const shouldHaveMutationObserver = usesHelperTextSlot && this.isConnected;
250
- if (shouldHaveMutationObserver && !__privateGet(this, _helperTextSlotMutationObserver)) {
251
- __privateSet(this, _helperTextSlotMutationObserver, new MutationObserver((records) => {
252
- if (records.some((record) => record.target !== __privateGet(this, _helperTextMirrorEl))) {
253
- __privateMethod(this, _TextField_instances, updateMirroredHelperText_fn).call(this);
254
- }
255
- }));
256
- __privateGet(this, _helperTextSlotMutationObserver).observe(this, {
257
- subtree: true,
258
- childList: true,
259
- characterData: true
260
- });
417
+ /**
418
+ * @internal
419
+ */
420
+ _onTextFieldInput(event) {
421
+ const textField = event.currentTarget;
422
+ this._presentationValue = textField.value;
261
423
  }
262
- if (!shouldHaveMutationObserver && __privateGet(this, _helperTextSlotMutationObserver)) {
263
- __privateGet(this, _helperTextSlotMutationObserver).disconnect();
264
- __privateSet(this, _helperTextSlotMutationObserver, void 0);
424
+ /**
425
+ * @internal
426
+ */
427
+ _onTextFieldChange() {
428
+ if (this._presentationValue === "") {
429
+ __privateMethod(this, _TimePicker_instances, updateValueDueToUserInteraction_fn).call(this, "");
430
+ return;
431
+ }
432
+ try {
433
+ __privateMethod(this, _TimePicker_instances, updateValueDueToUserInteraction_fn).call(this, parsePresentationTime(this._presentationValue, this._use12hClock));
434
+ } catch (_) {
435
+ return;
436
+ }
265
437
  }
266
- };
267
- updateMirroredHelperText_fn = function() {
268
- let helperText = this.helperText ?? "";
269
- if (this._helperTextSlottedContent?.length) {
270
- helperText = this._helperTextSlottedContent.map((node) => node.innerText).join(" ");
271
- }
272
- if (__privateGet(this, _helperTextMirrorEl)) {
273
- __privateGet(this, _helperTextMirrorEl).textContent = helperText;
274
- if (helperText) {
275
- this.control.setAttribute(
276
- "aria-describedby",
277
- __privateGet(this, _helperTextMirrorEl).id
438
+ // --- Clock button ---
439
+ /**
440
+ * @internal
441
+ */
442
+ get _clockButtonLabel() {
443
+ if (this.value) {
444
+ return this.locale.timePicker.changeTimeLabel(
445
+ formatPresentationTime(
446
+ this.value,
447
+ this._displaySeconds,
448
+ this._use12hClock
449
+ )
278
450
  );
451
+ }
452
+ return this.locale.timePicker.chooseTimeLabel;
453
+ }
454
+ /**
455
+ * @internal
456
+ */
457
+ _onClockButtonClick() {
458
+ if (this._popupOpen) {
459
+ this._closePopup();
460
+ } else {
461
+ __privateMethod(this, _TimePicker_instances, openPopupIfPossible_fn).call(this);
462
+ defineVividComponent.DOM.processUpdates();
463
+ if (this._selectedHour) {
464
+ __privateMethod(this, _TimePicker_instances, scrollToItem_fn).call(this, "hours", this._selectedHour, "start");
465
+ }
466
+ if (this._selectedMinute) {
467
+ __privateMethod(this, _TimePicker_instances, scrollToItem_fn).call(this, "minutes", this._selectedMinute, "start");
468
+ }
469
+ if (this._displaySeconds && this._selectedSecond) {
470
+ __privateMethod(this, _TimePicker_instances, scrollToItem_fn).call(this, "seconds", this._selectedSecond, "start");
471
+ }
472
+ if (this._use12hClock && this._selectedMeridiem) {
473
+ __privateMethod(this, _TimePicker_instances, scrollToItem_fn).call(this, "meridies", this._selectedMeridiem, "start");
474
+ }
475
+ __privateGet(this, _getFocusableEls).call(this)[0].focus();
476
+ }
477
+ }
478
+ // --- Pickers ---
479
+ /**
480
+ * @internal
481
+ */
482
+ get _hours() {
483
+ return getHoursOptions(
484
+ this.min,
485
+ this.max,
486
+ this._use12hClock ? this._selectedMeridiem ?? this._meridies[0].value : void 0
487
+ );
488
+ }
489
+ /**
490
+ * @internal
491
+ */
492
+ get _selectedHour() {
493
+ return this.value ? parseTimeStr(this.value).hourStr : void 0;
494
+ }
495
+ /**
496
+ * @internal
497
+ */
498
+ set _selectedHour(value) {
499
+ if (this.value) {
500
+ const { minuteStr, secondStr } = parseTimeStr(this.value);
501
+ this.value = `${value}:${minuteStr}:${secondStr}`;
279
502
  } else {
280
- this.control.removeAttribute("aria-describedby");
503
+ this.value = `${value}:00:00`;
504
+ }
505
+ }
506
+ /**
507
+ * @internal
508
+ */
509
+ get _minutes() {
510
+ return getMinutesOptions(this.minutesStep, this.value, this.min, this.max);
511
+ }
512
+ /**
513
+ * @internal
514
+ */
515
+ get _selectedMinute() {
516
+ return this.value ? parseTimeStr(this.value).minuteStr : void 0;
517
+ }
518
+ /**
519
+ * @internal
520
+ */
521
+ set _selectedMinute(value) {
522
+ if (this.value) {
523
+ const { hourStr, secondStr } = parseTimeStr(this.value);
524
+ this.value = `${hourStr}:${value}:${secondStr}`;
525
+ } else {
526
+ this.value = `00:${value}:00`;
527
+ }
528
+ }
529
+ /**
530
+ * @internal
531
+ */
532
+ get _seconds() {
533
+ return getSecondsOptions(this.secondsStep, this.value, this.min, this.max);
534
+ }
535
+ /**
536
+ * @internal
537
+ */
538
+ get _selectedSecond() {
539
+ return this.value ? parseTimeStr(this.value).secondStr : void 0;
540
+ }
541
+ /**
542
+ * @internal
543
+ */
544
+ set _selectedSecond(value) {
545
+ if (this.value) {
546
+ const { hourStr, minuteStr } = parseTimeStr(this.value);
547
+ this.value = `${hourStr}:${minuteStr}:${value}`;
548
+ } else {
549
+ this.value = `00:00:${value}`;
550
+ }
551
+ }
552
+ /**
553
+ * @internal
554
+ */
555
+ get _meridies() {
556
+ return getMeridiesOptions(this.min, this.max);
557
+ }
558
+ /**
559
+ * @internal
560
+ */
561
+ get _selectedMeridiem() {
562
+ return this.value ? parseTimeStr(this.value).meridiem : void 0;
563
+ }
564
+ /**
565
+ * @internal
566
+ */
567
+ set _selectedMeridiem(value) {
568
+ if (this.value) {
569
+ const { hours, minuteStr, secondStr } = parseTimeStr(this.value);
570
+ let adjustedHours = hours;
571
+ if (value === "AM" && hours >= 12) {
572
+ adjustedHours -= 12;
573
+ } else if (value === "PM" && hours < 12) {
574
+ adjustedHours += 12;
575
+ }
576
+ this.value = `${formatTimePart(adjustedHours)}:${minuteStr}:${secondStr}`;
577
+ } else {
578
+ if (value === "AM") {
579
+ this.value = "00:00:00";
580
+ } else {
581
+ this.value = "12:00:00";
582
+ }
583
+ }
584
+ }
585
+ /**
586
+ * @internal
587
+ */
588
+ _onPickerKeyDown(picker, options, selectedValue, setSelectedValue, event) {
589
+ const offset = {
590
+ ArrowUp: -1,
591
+ ArrowDown: 1
592
+ }[event.key];
593
+ if (offset) {
594
+ event.preventDefault();
595
+ const index = options.findIndex((h) => h.value === selectedValue);
596
+ const newRawIndex = index === -1 ? 0 : index + offset;
597
+ const newIndex = (newRawIndex + options.length) % options.length;
598
+ const newValue = options[newIndex].value;
599
+ setSelectedValue(newValue);
600
+ __privateMethod(this, _TimePicker_instances, scrollToItem_fn).call(this, picker, newValue, "nearest");
601
+ __privateMethod(this, _TimePicker_instances, updateValueDueToUserInteraction_fn).call(this, this.value);
602
+ }
603
+ return true;
604
+ }
605
+ /**
606
+ * @internal
607
+ */
608
+ _onPickerItemClick(picker, setSelectedValue, value) {
609
+ setSelectedValue(value);
610
+ __privateMethod(this, _TimePicker_instances, scrollToItem_fn).call(this, picker, value, "start");
611
+ __privateMethod(this, _TimePicker_instances, updateValueDueToUserInteraction_fn).call(this, this.value);
612
+ const nextPickerEl = this.shadowRoot.querySelector(
613
+ `#${picker} + .picker`
614
+ );
615
+ if (nextPickerEl) {
616
+ nextPickerEl.focus();
617
+ } else {
618
+ this._closePopup();
619
+ }
620
+ }
621
+ // --- Dialog footer ---
622
+ /**
623
+ * @internal
624
+ */
625
+ _onOkClick() {
626
+ this._closePopup();
627
+ }
628
+ /**
629
+ * @internal
630
+ */
631
+ _onClearClick() {
632
+ __privateMethod(this, _TimePicker_instances, updateValueDueToUserInteraction_fn).call(this, "");
633
+ this._closePopup();
634
+ }
635
+ // --- Validation ---
636
+ /**
637
+ * @internal
638
+ */
639
+ validate() {
640
+ if (this.proxy) {
641
+ this.proxy.setCustomValidity(this._getCustomValidationError() ?? "");
642
+ }
643
+ super.validate(this._textFieldEl?.querySelector("input") ?? void 0);
644
+ }
645
+ /**
646
+ * @internal
647
+ */
648
+ _getCustomValidationError() {
649
+ if (this._isPresentationValueInvalid()) {
650
+ return this.locale.timePicker.invalidTimeError;
651
+ }
652
+ return null;
653
+ }
654
+ /**
655
+ * @internal
656
+ */
657
+ _isPresentationValueInvalid() {
658
+ if (this._presentationValue === "") {
659
+ return false;
660
+ }
661
+ try {
662
+ parsePresentationTime(this._presentationValue, this._use12hClock);
663
+ return false;
664
+ } catch (_) {
665
+ return true;
281
666
  }
282
667
  }
283
668
  };
669
+ _clockChangeHandler = new WeakMap();
670
+ _clockChangeObserver = new WeakMap();
671
+ _getFocusableEls = new WeakMap();
672
+ _TimePicker_instances = new WeakSet();
673
+ updateValueDueToUserInteraction_fn = function(newValue) {
674
+ this.value = newValue;
675
+ this.$emit("change");
676
+ this.$emit("input");
677
+ };
678
+ _onFocusIn = new WeakMap();
679
+ _onFocusOut = new WeakMap();
680
+ _dismissOnClickOutside = new WeakMap();
681
+ openPopupIfPossible_fn = function() {
682
+ if (!this.readOnly) {
683
+ this._popupOpen = true;
684
+ }
685
+ };
686
+ scrollToItem_fn = function(picker, selectedValue, position) {
687
+ const element = this.shadowRoot.querySelector(
688
+ `#${picker}-${selectedValue}`
689
+ );
690
+ if (!element) {
691
+ return;
692
+ }
693
+ scrollIntoView.scrollIntoView(element, element.parentElement, position);
694
+ };
284
695
  __decorateClass([
285
- index.attr
286
- ], exports.TextField.prototype, "appearance", 2);
696
+ defineVividComponent.attr({ attribute: "readonly", mode: "boolean" })
697
+ ], TimePicker.prototype, "readOnly", 2);
287
698
  __decorateClass([
288
- index.attr
289
- ], exports.TextField.prototype, "shape", 2);
699
+ defineVividComponent.attr({ attribute: "minutes-step", converter: defineVividComponent.nullableNumberConverter })
700
+ ], TimePicker.prototype, "minutesStep", 2);
290
701
  __decorateClass([
291
- index.attr
292
- ], exports.TextField.prototype, "autoComplete", 2);
702
+ defineVividComponent.attr({ attribute: "seconds-step", converter: defineVividComponent.nullableNumberConverter })
703
+ ], TimePicker.prototype, "secondsStep", 2);
293
704
  __decorateClass([
294
- index.attr()
295
- ], exports.TextField.prototype, "scale", 2);
705
+ defineVividComponent.attr
706
+ ], TimePicker.prototype, "clock", 2);
296
707
  __decorateClass([
297
- index.attr({ attribute: "inputmode" })
298
- ], exports.TextField.prototype, "inputMode", 2);
708
+ defineVividComponent.attr({ converter: ValidTimeFilter })
709
+ ], TimePicker.prototype, "min", 2);
299
710
  __decorateClass([
300
- index.observable
301
- ], exports.TextField.prototype, "actionItemsSlottedContent", 2);
711
+ defineVividComponent.attr({ converter: ValidTimeFilter })
712
+ ], TimePicker.prototype, "max", 2);
302
713
  __decorateClass([
303
- index.observable
304
- ], exports.TextField.prototype, "leadingActionItemsSlottedContent", 2);
305
- exports.TextField = __decorateClass([
714
+ defineVividComponent.volatile
715
+ ], TimePicker.prototype, "_use12hClock", 1);
716
+ __decorateClass([
717
+ defineVividComponent.observable
718
+ ], TimePicker.prototype, "_popupOpen", 2);
719
+ __decorateClass([
720
+ defineVividComponent.observable
721
+ ], TimePicker.prototype, "_presentationValue", 2);
722
+ TimePicker = __decorateClass([
306
723
  formElements.errorText,
307
724
  formElements.formElements
308
- ], exports.TextField);
725
+ ], TimePicker);
309
726
  applyMixinsWithObservables.applyMixinsWithObservables(
310
- exports.TextField,
311
- affix.AffixIcon,
312
- formElements.FormElementCharCount,
727
+ TimePicker,
728
+ localized.Localized,
313
729
  formElements.FormElementHelperText,
314
- formElements.FormElementSuccessText
730
+ trappedFocus.TrappedFocus
315
731
  );
316
732
 
317
- const getStateClasses = ({
318
- errorValidationMessage,
319
- disabled,
320
- value,
321
- readOnly,
322
- placeholder,
323
- appearance,
324
- shape,
325
- label,
326
- successText,
327
- actionItemsSlottedContent,
328
- leadingActionItemsSlottedContent,
329
- icon,
330
- scale
331
- }) => classNames.classNames(
332
- ["error", Boolean(errorValidationMessage)],
333
- ["disabled", disabled],
334
- ["has-value", Boolean(value)],
335
- ["readonly", readOnly],
336
- ["placeholder", Boolean(placeholder)],
337
- [`appearance-${appearance}`, Boolean(appearance)],
338
- [`shape-${shape}`, Boolean(shape)],
339
- ["no-label", !label],
340
- ["has-icon", !!icon],
341
- ["success", Boolean(successText)],
342
- ["action-items", !!actionItemsSlottedContent?.length],
343
- ["leading-action-items", !!leadingActionItemsSlottedContent?.length],
344
- ["no-leading", !(leadingActionItemsSlottedContent?.length || icon)],
345
- [`size-${scale}`, Boolean(scale)]
346
- );
347
- function renderCharCount() {
348
- return index.html`
349
- <span class="char-count"
350
- >${(x) => x.value ? x.value.length : 0} / ${(x) => x.maxlength}</span
733
+ const renderPicker = (id, getLabel, getSelected, setSelected, getOptions) => {
734
+ return defineVividComponent.html`
735
+ <ul
736
+ id="${id}"
737
+ class="picker"
738
+ role="listbox"
739
+ tabindex="0"
740
+ aria-label="${getLabel}"
741
+ aria-activedescendant="${(x) => getSelected(x) ? `${id}-${getSelected(x)}` : void 0}"
742
+ @keydown="${(x, c) => x._onPickerKeyDown(
743
+ id,
744
+ getOptions(x),
745
+ getSelected(x),
746
+ setSelected(x),
747
+ c.event
748
+ )}"
351
749
  >
750
+ ${repeat.repeat(
751
+ getOptions,
752
+ defineVividComponent.html`
753
+ <li
754
+ id="${(x) => `${id}-${x.value}`}"
755
+ class="${(x, c) => classNames.classNames("item", [
756
+ "selected",
757
+ getSelected(c.parent) === x.value
758
+ ])}"
759
+ role="option"
760
+ aria-selected="${(x, c) => getSelected(c.parent) === x.value}"
761
+ @click="${(x, c) => c.parent._onPickerItemClick(id, setSelected(c.parent), x.value)}"
762
+ >
763
+ ${(x) => x.label}
764
+ </li>
765
+ `
766
+ )}
767
+ </ul>
352
768
  `;
353
- }
354
- const TextfieldTemplate = (context) => {
355
- const affixIconTemplate = affix.affixIconTemplateFactory(context);
356
- return index.html` <div class="base ${getStateClasses}">
357
- ${when.when((x) => x.charCount && x.maxlength, renderCharCount())}
358
- <slot class="label" name="_label"></slot>
359
- <div class="fieldset">
360
- <div class="leading-items-wrapper">
361
- <slot
362
- name="leading-action-items"
363
- ${slotted.slotted("leadingActionItemsSlottedContent")}
364
- ></slot>
365
- ${(x) => affixIconTemplate(x.icon)}
366
- </div>
367
-
368
- <div class="wrapper">
369
- <slot class="control" name="_control"></slot>
769
+ };
770
+ const TimePickerTemplate = (context) => {
771
+ const popupTag = context.tagFor(definition.Popup);
772
+ const textFieldTag = context.tagFor(textField.TextField);
773
+ const buttonTag = context.tagFor(definition$1.Button);
774
+ return defineVividComponent.html`<div class="base" @keydown="${(x, { event }) => x._onBaseKeyDown(event)}">
775
+ <${textFieldTag} id="text-field"
776
+ ${ref.ref("_textFieldEl")}
777
+ class="control"
778
+ label="${(x) => x.label}"
779
+ helper-text="${(x) => x.helperText}"
780
+ error-text="${(x) => x.errorValidationMessage}"
781
+ placeholder="${(x) => x._textFieldPlaceholder}"
782
+ current-value="${(x) => x._presentationValue}"
783
+ ?disabled="${(x) => x.disabled}"
784
+ ?readonly="${(x) => x.readOnly}"
785
+ @input="${(x, c) => x._onTextFieldInput(c.event)}"
786
+ @change="${(x) => x._onTextFieldChange()}"
787
+ >
788
+ <slot
789
+ slot="${(x) => x._helperTextSlottedContent?.length ? "helper-text" : void 0}"
790
+ name="helper-text"
791
+ ${slotted.slotted("_helperTextSlottedContent")}
792
+ ></slot>
793
+ <${buttonTag}
794
+ id="clock-button"
795
+ ${ref.ref("_clockButtonEl")}
796
+ slot="action-items"
797
+ size="condensed"
798
+ icon="clock-line"
799
+ appearance="ghost"
800
+ ?disabled="${(x) => x.disabled || x.readOnly}"
801
+ aria-label="${(x) => x._clockButtonLabel}"
802
+ @click="${(x) => x._onClockButtonClick()}"
803
+ ></${buttonTag}>
804
+ </${textFieldTag}>
805
+ <${popupTag}
806
+ ?open="${(x) => x._popupOpen}"
807
+ :anchor="${(x) => x._textFieldEl}"
808
+ placement="bottom-start"
809
+ class="popup">
810
+ <div class="dialog" role="dialog" ${ref.ref(
811
+ "_dialogEl"
812
+ )} aria-modal="true" aria-label="${(x) => x.locale.timePicker.chooseTimeLabel}">
813
+ <div class="time-pickers">
814
+ ${renderPicker(
815
+ "hours",
816
+ (x) => x.locale.timePicker.hoursLabel,
817
+ (x) => x._selectedHour,
818
+ (x) => (v) => x._selectedHour = v,
819
+ (x) => x._hours
820
+ )}
821
+ ${renderPicker(
822
+ "minutes",
823
+ (x) => x.locale.timePicker.minutesLabel,
824
+ (x) => x._selectedMinute,
825
+ (x) => (v) => x._selectedMinute = v,
826
+ (x) => x._minutes
827
+ )}
828
+ ${when.when(
829
+ (x) => x._displaySeconds,
830
+ renderPicker(
831
+ "seconds",
832
+ (x) => x.locale.timePicker.secondsLabel,
833
+ (x) => x._selectedSecond,
834
+ (x) => (v) => x._selectedSecond = v,
835
+ (x) => x._seconds
836
+ )
837
+ )}
838
+ ${when.when(
839
+ (x) => x._use12hClock,
840
+ renderPicker(
841
+ "meridies",
842
+ (x) => x.locale.timePicker.meridiesLabel,
843
+ (x) => x._selectedMeridiem,
844
+ (x) => (v) => x._selectedMeridiem = v,
845
+ (x) => x._meridies
846
+ )
847
+ )}
370
848
  </div>
371
- <div class="action-items-wrapper">
372
- <slot
373
- name="action-items"
374
- ${slotted.slotted("actionItemsSlottedContent")}
375
- ></slot>
849
+ <div class="footer">
850
+ <${buttonTag}
851
+ class="vwc-button"
852
+ size="condensed"
853
+ label="${(x) => x.locale.timePicker.clearLabel}"
854
+ @click="${(x) => x._onClearClick()}"
855
+ ></${buttonTag}>
856
+ <${buttonTag}
857
+ class="vwc-button"
858
+ size="condensed"
859
+ appearance="filled"
860
+ label="${(x) => x.locale.timePicker.okLabel}"
861
+ @click="${(x) => x._onOkClick()}"
862
+ ></${buttonTag}>
376
863
  </div>
377
864
  </div>
378
- ${formElements.getFeedbackTemplate(context)}
379
- </div>
380
- <slot name="_mirrored-helper-text"></slot>`;
865
+ </${popupTag}>
866
+ </div>`;
381
867
  };
382
868
 
383
- const textFieldDefinition = exports.TextField.compose({
384
- baseName: "text-field",
385
- template: TextfieldTemplate,
386
- styles: textField$1.styles,
387
- shadowOptions: {
388
- delegatesFocus: true
389
- }
390
- });
391
- const textFieldRegistries = [textFieldDefinition(), ...definition.iconRegistries];
392
- const registerTextField = index.registerFactory(textFieldRegistries);
869
+ const timePickerDefinition = defineVividComponent.defineVividComponent(
870
+ "time-picker",
871
+ TimePicker,
872
+ TimePickerTemplate,
873
+ [definition$2.textFieldDefinition, definition.popupDefinition, definition$1.buttonDefinition],
874
+ {
875
+ styles,
876
+ shadowOptions: {
877
+ delegatesFocus: true
878
+ }
879
+ }
880
+ );
881
+ const registerTimePicker = defineVividComponent.createRegisterFunction(timePickerDefinition);
393
882
 
394
- exports.registerTextField = registerTextField;
395
- exports.textFieldDefinition = textFieldDefinition;
396
- exports.textFieldRegistries = textFieldRegistries;
883
+ exports.registerTimePicker = registerTimePicker;
884
+ exports.timePickerDefinition = timePickerDefinition;