@vonage/vivid 4.16.2 → 4.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 (447) hide show
  1. package/custom-elements.json +8857 -5894
  2. package/date-time-picker/index.cjs +5 -0
  3. package/date-time-picker/index.js +3 -0
  4. package/dial-pad/index.cjs +1 -1
  5. package/dial-pad/index.js +1 -1
  6. package/dialog/index.cjs +1 -1
  7. package/dialog/index.js +1 -1
  8. package/divider/index.cjs +1 -1
  9. package/divider/index.js +1 -1
  10. package/elevation/index.cjs +1 -1
  11. package/elevation/index.js +1 -1
  12. package/empty-state/index.cjs +1 -1
  13. package/empty-state/index.js +1 -1
  14. package/fab/index.cjs +1 -1
  15. package/fab/index.js +1 -1
  16. package/file-picker/index.cjs +1 -1
  17. package/file-picker/index.js +1 -1
  18. package/header/index.cjs +1 -1
  19. package/header/index.js +1 -1
  20. package/icon/index.cjs +1 -1
  21. package/icon/index.js +1 -1
  22. package/index.cjs +198 -87
  23. package/index.js +66 -60
  24. package/layout/index.cjs +1 -1
  25. package/layout/index.js +1 -1
  26. package/lib/accordion/definition.d.ts +2 -0
  27. package/lib/accordion-item/definition.d.ts +2 -0
  28. package/lib/action-group/action-group.d.ts +449 -3
  29. package/lib/action-group/definition.d.ts +2 -0
  30. package/lib/alert/definition.d.ts +2 -0
  31. package/lib/audio-player/definition.d.ts +2 -0
  32. package/lib/avatar/definition.d.ts +2 -0
  33. package/lib/badge/definition.d.ts +2 -0
  34. package/lib/banner/banner.d.ts +449 -3
  35. package/lib/banner/definition.d.ts +2 -0
  36. package/lib/breadcrumb/definition.d.ts +2 -0
  37. package/lib/breadcrumb-item/breadcrumb-item.d.ts +449 -1
  38. package/lib/breadcrumb-item/definition.d.ts +2 -0
  39. package/lib/button/definition.d.ts +2 -0
  40. package/lib/calendar/calendar.d.ts +2 -0
  41. package/lib/calendar/definition.d.ts +2 -0
  42. package/lib/calendar-event/definition.d.ts +2 -0
  43. package/lib/card/definition.d.ts +2 -0
  44. package/lib/checkbox/checkbox.d.ts +449 -4
  45. package/lib/checkbox/definition.d.ts +2 -0
  46. package/lib/combobox/definition.d.ts +2 -0
  47. package/lib/components.d.ts +2 -0
  48. package/lib/data-grid/definition.d.ts +4 -0
  49. package/lib/date-picker/date-picker.d.ts +2182 -4
  50. package/lib/date-picker/date-picker.template.d.ts +2 -0
  51. package/lib/date-picker/definition.d.ts +2 -0
  52. package/lib/date-range-picker/date-range-picker.d.ts +1110 -4
  53. package/lib/date-range-picker/date-range-picker.template.d.ts +2 -0
  54. package/lib/date-range-picker/definition.d.ts +2 -0
  55. package/lib/date-time-picker/date-time-picker.d.ts +2175 -0
  56. package/lib/date-time-picker/date-time-picker.template.d.ts +2 -0
  57. package/lib/date-time-picker/definition.d.ts +1 -0
  58. package/lib/date-time-picker/locale.d.ts +9 -0
  59. package/lib/dial-pad/definition.d.ts +2 -0
  60. package/lib/dialog/definition.d.ts +2 -0
  61. package/lib/dialog/dialog.d.ts +449 -2
  62. package/lib/divider/definition.d.ts +2 -0
  63. package/lib/divider/divider.d.ts +448 -1
  64. package/lib/empty-state/definition.d.ts +2 -0
  65. package/lib/enums.d.ts +6 -0
  66. package/lib/fab/definition.d.ts +2 -0
  67. package/lib/file-picker/definition.d.ts +2 -0
  68. package/lib/header/definition.d.ts +2 -0
  69. package/lib/icon/definition.d.ts +2 -0
  70. package/lib/layout/definition.d.ts +2 -0
  71. package/lib/menu/definition.d.ts +2 -0
  72. package/lib/menu/menu.d.ts +900 -5
  73. package/lib/menu-item/definition.d.ts +2 -0
  74. package/lib/nav/definition.d.ts +2 -0
  75. package/lib/nav-disclosure/definition.d.ts +2 -0
  76. package/lib/nav-disclosure/nav-disclosure.d.ts +449 -2
  77. package/lib/nav-item/definition.d.ts +2 -0
  78. package/lib/note/definition.d.ts +2 -0
  79. package/lib/number-field/definition.d.ts +2 -0
  80. package/lib/number-field/number-field.d.ts +450 -3
  81. package/lib/option/definition.d.ts +2 -0
  82. package/lib/option/option.d.ts +1 -11
  83. package/lib/pagination/definition.d.ts +2 -0
  84. package/lib/popup/definition.d.ts +0 -1
  85. package/lib/popup/popup.d.ts +25 -0
  86. package/lib/progress/definition.d.ts +2 -0
  87. package/lib/progress/progress.d.ts +449 -2
  88. package/lib/progress-ring/definition.d.ts +2 -0
  89. package/lib/progress-ring/progress-ring.d.ts +449 -2
  90. package/lib/radio/definition.d.ts +2 -0
  91. package/lib/radio-group/definition.d.ts +2 -0
  92. package/lib/range-slider/definition.d.ts +2 -0
  93. package/lib/rich-text-editor/definition.d.ts +2 -0
  94. package/lib/rich-text-editor/facades/prose-mirror-vivid.schema.d.ts +2 -0
  95. package/lib/rich-text-editor/facades/vivid-prose-mirror.facade.d.ts +8 -0
  96. package/lib/rich-text-editor/rich-text-editor.d.ts +16 -0
  97. package/lib/rich-text-editor/rich-text-editor.template.d.ts +4 -0
  98. package/lib/searchable-select/definition.d.ts +2 -0
  99. package/lib/select/definition.d.ts +2 -0
  100. package/lib/select/select.d.ts +1 -5
  101. package/lib/selectable-box/definition.d.ts +2 -0
  102. package/lib/selectable-box/selectable-box.d.ts +449 -2
  103. package/lib/side-drawer/definition.d.ts +2 -0
  104. package/lib/slider/definition.d.ts +2 -0
  105. package/lib/slider/slider.d.ts +449 -3
  106. package/lib/split-button/definition.d.ts +2 -0
  107. package/lib/split-button/split-button.d.ts +449 -3
  108. package/lib/switch/definition.d.ts +2 -0
  109. package/lib/switch/switch.d.ts +449 -2
  110. package/lib/tab/definition.d.ts +2 -0
  111. package/lib/tab-panel/definition.d.ts +2 -0
  112. package/lib/tabs/definition.d.ts +2 -0
  113. package/lib/tag/definition.d.ts +2 -0
  114. package/lib/tag-group/definition.d.ts +2 -0
  115. package/lib/tag-group/tag-group.d.ts +449 -2
  116. package/lib/text-anchor/text-anchor.d.ts +449 -1
  117. package/lib/text-area/definition.d.ts +2 -0
  118. package/lib/text-area/text-area.d.ts +450 -3
  119. package/lib/text-field/definition.d.ts +2 -0
  120. package/lib/text-field/text-field.d.ts +450 -7
  121. package/lib/time-picker/definition.d.ts +2 -0
  122. package/lib/time-picker/locale.d.ts +0 -2
  123. package/lib/time-picker/time-picker.d.ts +1053 -9
  124. package/lib/time-picker/time-picker.template.d.ts +2 -2
  125. package/lib/toggletip/definition.d.ts +2 -0
  126. package/lib/toggletip/toggletip.d.ts +454 -4
  127. package/lib/tooltip/definition.d.ts +2 -0
  128. package/lib/tooltip/tooltip.d.ts +454 -4
  129. package/lib/tree-item/definition.d.ts +2 -0
  130. package/lib/tree-view/definition.d.ts +2 -0
  131. package/lib/video-player/definition.d.ts +2 -0
  132. package/locales/de-DE.cjs +29 -5
  133. package/locales/de-DE.js +29 -5
  134. package/locales/en-GB.cjs +29 -5
  135. package/locales/en-GB.js +29 -5
  136. package/locales/en-US.cjs +29 -5
  137. package/locales/en-US.js +29 -5
  138. package/locales/ja-JP.cjs +29 -5
  139. package/locales/ja-JP.js +29 -5
  140. package/locales/zh-CN.cjs +29 -5
  141. package/locales/zh-CN.js +29 -5
  142. package/menu/index.cjs +1 -1
  143. package/menu/index.js +1 -1
  144. package/menu-item/index.cjs +1 -1
  145. package/menu-item/index.js +1 -1
  146. package/nav/index.cjs +1 -1
  147. package/nav/index.js +1 -1
  148. package/nav-disclosure/index.cjs +1 -1
  149. package/nav-disclosure/index.js +1 -1
  150. package/nav-item/index.cjs +1 -1
  151. package/nav-item/index.js +1 -1
  152. package/note/index.cjs +1 -1
  153. package/note/index.js +1 -1
  154. package/number-field/index.cjs +1 -1
  155. package/number-field/index.js +1 -1
  156. package/option/index.cjs +1 -1
  157. package/option/index.js +1 -1
  158. package/package.json +7 -2
  159. package/pagination/index.cjs +1 -1
  160. package/pagination/index.js +1 -1
  161. package/popup/index.cjs +1 -1
  162. package/popup/index.js +1 -1
  163. package/progress/index.cjs +1 -1
  164. package/progress/index.js +1 -1
  165. package/progress-ring/index.cjs +1 -1
  166. package/progress-ring/index.js +1 -1
  167. package/radio/index.cjs +1 -1
  168. package/radio/index.js +1 -1
  169. package/radio-group/index.cjs +1 -1
  170. package/radio-group/index.js +1 -1
  171. package/range-slider/index.cjs +1 -1
  172. package/range-slider/index.js +1 -1
  173. package/rich-text-editor/index.cjs +5 -0
  174. package/rich-text-editor/index.js +3 -0
  175. package/searchable-select/index.cjs +1 -1
  176. package/searchable-select/index.js +1 -1
  177. package/select/index.cjs +1 -1
  178. package/select/index.js +1 -1
  179. package/selectable-box/index.cjs +1 -1
  180. package/selectable-box/index.js +1 -1
  181. package/shared/Reflector.cjs +71 -0
  182. package/shared/Reflector.js +69 -0
  183. package/shared/affix.cjs +2 -4
  184. package/shared/affix.js +3 -5
  185. package/shared/anchor.cjs +0 -10
  186. package/shared/anchor.js +0 -10
  187. package/shared/anchored.cjs +12 -9
  188. package/shared/anchored.js +13 -10
  189. package/shared/aria/delegates-aria.d.ts +454 -0
  190. package/shared/base-progress.js +1 -1
  191. package/shared/breadcrumb-item.cjs +2 -1
  192. package/shared/breadcrumb-item.js +2 -1
  193. package/shared/button.cjs +2 -13
  194. package/shared/button.js +2 -13
  195. package/shared/{presentationDate.cjs → calendar-picker.template.cjs} +681 -853
  196. package/shared/{presentationDate.js → calendar-picker.template.js} +673 -848
  197. package/shared/datetime/dateTimeStr.d.ts +6 -0
  198. package/shared/datetime/presentationDate.d.ts +4 -0
  199. package/shared/{date-picker/calendar → datetime}/presentationDateRange.d.ts +3 -3
  200. package/shared/datetime/presentationDateTime.d.ts +4 -0
  201. package/{lib/time-picker/time → shared/datetime}/time.d.ts +1 -0
  202. package/shared/definition.cjs +1 -1
  203. package/shared/definition.js +2 -2
  204. package/shared/definition10.cjs +1 -0
  205. package/shared/definition10.js +2 -2
  206. package/shared/definition11.cjs +9 -12
  207. package/shared/definition11.js +10 -13
  208. package/shared/definition12.cjs +1 -1
  209. package/shared/definition12.js +2 -2
  210. package/shared/definition13.cjs +15 -2
  211. package/shared/definition13.js +16 -4
  212. package/shared/definition14.cjs +4 -3
  213. package/shared/definition14.js +5 -5
  214. package/shared/definition15.cjs +4 -11
  215. package/shared/definition15.js +5 -12
  216. package/shared/definition16.cjs +44 -48
  217. package/shared/definition16.js +32 -36
  218. package/shared/definition17.cjs +4 -1
  219. package/shared/definition17.js +3 -3
  220. package/shared/definition18.cjs +59 -94
  221. package/shared/definition18.js +58 -93
  222. package/shared/definition19.cjs +79 -43
  223. package/shared/definition19.js +60 -24
  224. package/shared/definition2.cjs +1 -0
  225. package/shared/definition2.js +2 -2
  226. package/shared/definition20.cjs +253 -219
  227. package/shared/definition20.js +254 -220
  228. package/shared/definition21.cjs +201 -286
  229. package/shared/definition21.js +199 -285
  230. package/shared/definition22.cjs +302 -31
  231. package/shared/definition22.js +301 -30
  232. package/shared/definition23.cjs +37 -57
  233. package/shared/definition23.js +36 -57
  234. package/shared/definition24.cjs +50 -69
  235. package/shared/definition24.js +49 -69
  236. package/shared/definition25.cjs +75 -2475
  237. package/shared/definition25.js +74 -2475
  238. package/shared/definition26.cjs +2480 -49
  239. package/shared/definition26.js +2480 -49
  240. package/shared/definition27.cjs +53 -271
  241. package/shared/definition27.js +52 -269
  242. package/shared/definition28.cjs +271 -47
  243. package/shared/definition28.js +269 -47
  244. package/shared/definition29.cjs +37 -772
  245. package/shared/definition29.js +36 -767
  246. package/shared/definition3.cjs +3 -9
  247. package/shared/definition3.js +4 -11
  248. package/shared/definition30.cjs +739 -56
  249. package/shared/definition30.js +733 -56
  250. package/shared/definition31.cjs +93 -21
  251. package/shared/definition31.js +92 -21
  252. package/shared/definition32.cjs +28 -9
  253. package/shared/definition32.js +27 -9
  254. package/shared/definition33.cjs +10 -51
  255. package/shared/definition33.js +9 -51
  256. package/shared/definition34.cjs +31 -412
  257. package/shared/definition34.js +31 -413
  258. package/shared/definition35.cjs +423 -53
  259. package/shared/definition35.js +424 -54
  260. package/shared/definition36.cjs +53 -215
  261. package/shared/definition36.js +53 -215
  262. package/shared/definition37.cjs +202 -72
  263. package/shared/definition37.js +201 -71
  264. package/shared/definition38.cjs +54 -48
  265. package/shared/definition38.js +53 -48
  266. package/shared/definition39.cjs +57 -262
  267. package/shared/definition39.js +56 -262
  268. package/shared/definition4.cjs +4 -3
  269. package/shared/definition4.js +5 -5
  270. package/shared/definition40.cjs +220 -148
  271. package/shared/definition40.js +220 -148
  272. package/shared/definition41.cjs +144 -568
  273. package/shared/definition41.js +144 -569
  274. package/shared/definition42.cjs +476 -967
  275. package/shared/definition42.js +477 -969
  276. package/shared/definition43.cjs +13508 -851
  277. package/shared/definition43.js +13508 -851
  278. package/shared/definition44.cjs +1111 -103
  279. package/shared/definition44.js +1112 -103
  280. package/shared/definition45.cjs +849 -80
  281. package/shared/definition45.js +849 -80
  282. package/shared/definition46.cjs +108 -464
  283. package/shared/definition46.js +107 -463
  284. package/shared/definition47.cjs +96 -118
  285. package/shared/definition47.js +95 -118
  286. package/shared/definition48.cjs +430 -82
  287. package/shared/definition48.js +430 -83
  288. package/shared/definition49.cjs +135 -15
  289. package/shared/definition49.js +134 -15
  290. package/shared/definition5.cjs +5 -4
  291. package/shared/definition5.js +6 -6
  292. package/shared/definition50.cjs +109 -85
  293. package/shared/definition50.js +108 -85
  294. package/shared/definition51.cjs +14 -519
  295. package/shared/definition51.js +13 -519
  296. package/shared/definition52.cjs +96 -23
  297. package/shared/definition52.js +95 -23
  298. package/shared/definition53.cjs +480 -99
  299. package/shared/definition53.js +479 -99
  300. package/shared/definition54.cjs +24 -296
  301. package/shared/definition54.js +23 -296
  302. package/shared/definition55.cjs +126 -69
  303. package/shared/definition55.js +125 -69
  304. package/shared/definition56.cjs +186 -775
  305. package/shared/definition56.js +187 -776
  306. package/shared/definition57.cjs +511 -107
  307. package/shared/definition57.js +511 -107
  308. package/shared/definition58.cjs +27 -128
  309. package/shared/definition58.js +27 -128
  310. package/shared/definition59.cjs +106 -162
  311. package/shared/definition59.js +105 -160
  312. package/shared/definition6.cjs +3 -2
  313. package/shared/definition6.js +4 -4
  314. package/shared/definition60.cjs +81 -252
  315. package/shared/definition60.js +80 -252
  316. package/shared/definition61.cjs +156 -70156
  317. package/shared/definition61.js +154 -70156
  318. package/shared/definition62.cjs +271 -29
  319. package/shared/definition62.js +270 -28
  320. package/shared/definition63.cjs +69236 -2018
  321. package/shared/definition63.js +69235 -2016
  322. package/shared/definition64.cjs +55 -0
  323. package/shared/definition64.js +51 -0
  324. package/shared/definition65.cjs +2195 -0
  325. package/shared/definition65.js +2190 -0
  326. package/shared/definition7.cjs +3 -2
  327. package/shared/definition7.js +4 -4
  328. package/shared/definition8.cjs +5 -10
  329. package/shared/definition8.js +6 -12
  330. package/shared/definition9.cjs +2 -2
  331. package/shared/definition9.js +3 -3
  332. package/shared/delegates-aria.cjs +69 -0
  333. package/shared/delegates-aria.js +67 -0
  334. package/shared/enums.cjs +8 -0
  335. package/shared/enums.js +8 -1
  336. package/shared/form-elements.cjs +8 -8
  337. package/shared/form-elements.js +9 -9
  338. package/shared/foundation/anchor/anchor.d.ts +0 -8
  339. package/shared/foundation/button/button.d.ts +449 -7
  340. package/shared/foundation/listbox/listbox.d.ts +0 -9
  341. package/shared/foundation/vivid-element/vivid-element.d.ts +1 -0
  342. package/shared/listbox.cjs +4 -30
  343. package/shared/listbox.js +4 -30
  344. package/shared/localization/Locale.d.ts +6 -2
  345. package/shared/option.cjs +1 -38
  346. package/shared/option.js +1 -38
  347. package/shared/patterns/anchored.d.ts +891 -10
  348. package/shared/patterns/trapped-focus.d.ts +2 -0
  349. package/shared/picker-field/locale.d.ts +4 -0
  350. package/shared/picker-field/mixins/calendar-picker.d.ts +558 -0
  351. package/shared/{date-picker/locale.d.ts → picker-field/mixins/calendar-picker.locale.d.ts} +1 -3
  352. package/shared/picker-field/mixins/calendar-picker.template.d.ts +555 -0
  353. package/shared/picker-field/mixins/calendar-segments/calendarGrid.d.ts +17 -0
  354. package/shared/{date-picker/calendar → picker-field/mixins/calendar-segments}/monthPickerGrid.d.ts +3 -3
  355. package/shared/picker-field/mixins/inline-time-picker/columns.d.ts +13 -0
  356. package/shared/picker-field/mixins/inline-time-picker/definition.d.ts +1 -0
  357. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +15 -0
  358. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.template.d.ts +5 -0
  359. package/{lib/time-picker/time/picker.d.ts → shared/picker-field/mixins/inline-time-picker/picker-option.d.ts} +1 -1
  360. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +1110 -0
  361. package/shared/picker-field/mixins/single-date-picker.d.ts +1626 -0
  362. package/shared/picker-field/mixins/single-value-picker.d.ts +518 -0
  363. package/shared/picker-field/mixins/time-selection-picker.d.ts +1053 -0
  364. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +1050 -0
  365. package/shared/picker-field/picker-field.d.ts +11 -0
  366. package/shared/picker-field/picker-field.form-associated.d.ts +11 -0
  367. package/shared/picker-field/picker-field.template.d.ts +7 -0
  368. package/shared/picker-field.template.cjs +315 -0
  369. package/shared/picker-field.template.js +310 -0
  370. package/shared/single-date-picker.cjs +46 -0
  371. package/shared/single-date-picker.js +44 -0
  372. package/shared/single-value-picker.cjs +77 -0
  373. package/shared/single-value-picker.js +75 -0
  374. package/shared/slider.template.cjs +6 -6
  375. package/shared/slider.template.js +6 -6
  376. package/shared/text-anchor.cjs +2 -1
  377. package/shared/text-anchor.js +2 -1
  378. package/shared/text-anchor.template.cjs +5 -7
  379. package/shared/text-anchor.template.js +5 -7
  380. package/shared/time-selection-picker.template.cjs +776 -0
  381. package/shared/time-selection-picker.template.js +767 -0
  382. package/shared/utils/mixins.d.ts +3 -0
  383. package/shared/vivid-element.cjs +3 -0
  384. package/shared/vivid-element.js +4 -1
  385. package/side-drawer/index.cjs +1 -1
  386. package/side-drawer/index.js +1 -1
  387. package/slider/index.cjs +1 -1
  388. package/slider/index.js +1 -1
  389. package/split-button/index.cjs +1 -1
  390. package/split-button/index.js +1 -1
  391. package/styles/core/all.css +1 -1
  392. package/styles/core/theme.css +1 -1
  393. package/styles/core/typography.css +1 -1
  394. package/styles/tokens/theme-dark.css +4 -4
  395. package/styles/tokens/theme-light.css +4 -4
  396. package/styles/tokens/vivid-2-compat.css +1 -1
  397. package/switch/index.cjs +1 -1
  398. package/switch/index.js +1 -1
  399. package/tab/index.cjs +1 -1
  400. package/tab/index.js +1 -1
  401. package/tab-panel/index.cjs +1 -1
  402. package/tab-panel/index.js +1 -1
  403. package/tabs/index.cjs +1 -1
  404. package/tabs/index.js +1 -1
  405. package/tag/index.cjs +1 -1
  406. package/tag/index.js +1 -1
  407. package/tag-group/index.cjs +1 -1
  408. package/tag-group/index.js +1 -1
  409. package/text-anchor/index.cjs +1 -1
  410. package/text-anchor/index.js +2 -2
  411. package/text-area/index.cjs +1 -1
  412. package/text-area/index.js +1 -1
  413. package/text-field/index.cjs +1 -1
  414. package/text-field/index.js +1 -1
  415. package/time-picker/index.cjs +1 -1
  416. package/time-picker/index.js +1 -1
  417. package/toggletip/index.cjs +1 -1
  418. package/toggletip/index.js +1 -1
  419. package/tooltip/index.cjs +1 -1
  420. package/tooltip/index.js +1 -1
  421. package/tree-item/index.cjs +1 -1
  422. package/tree-item/index.js +1 -1
  423. package/tree-view/index.cjs +1 -1
  424. package/tree-view/index.js +1 -1
  425. package/video-player/index.cjs +1 -1
  426. package/video-player/index.js +1 -1
  427. package/vivid.api.json +21748 -1
  428. package/lib/time-picker/time-picker.form-associated.d.ts +0 -11
  429. package/shared/aria-global.cjs +0 -93
  430. package/shared/aria-global.js +0 -91
  431. package/shared/date-picker/calendar/calendarGrid.d.ts +0 -17
  432. package/shared/date-picker/calendar/presentationDate.d.ts +0 -4
  433. package/shared/date-picker/date-picker-base.d.ts +0 -21
  434. package/shared/date-picker/date-picker-base.form-associated.d.ts +0 -11
  435. package/shared/date-picker/date-picker-base.template.d.ts +0 -3
  436. package/shared/foundation/patterns/aria-global.d.ts +0 -21
  437. package/shared/foundation/patterns/index.d.ts +0 -1
  438. package/shared/text-field2.cjs +0 -575
  439. package/shared/text-field2.js +0 -572
  440. package/shared/trapped-focus.cjs +0 -29
  441. package/shared/trapped-focus.js +0 -27
  442. /package/shared/{date-picker/calendar → datetime}/dateRange.d.ts +0 -0
  443. /package/shared/{date-picker/calendar → datetime}/dateStr.d.ts +0 -0
  444. /package/shared/{date-picker/calendar → datetime}/month.d.ts +0 -0
  445. /package/{lib/time-picker/time → shared/datetime}/presentationTime.d.ts +0 -0
  446. /package/shared/{date-picker/calendar → datetime}/year.d.ts +0 -0
  447. /package/shared/{date-picker/calendar → picker-field/mixins/calendar-segments}/segment.d.ts +0 -0
@@ -0,0 +1,767 @@
1
+ import { h as html, V as VividElement, o as observable, f as defineVividComponent, a as attr, O as Observable, i as defaultExecutionContext, D as DOM, n as nullableNumberConverter, v as volatile } from './vivid-element.js';
2
+ import { T as TrappedFocus, a as PickerField } from './picker-field.template.js';
3
+ import { S as SingleValuePicker } from './single-value-picker.js';
4
+ import { e as errorText, f as formElements } from './form-elements.js';
5
+ import { a as applyMixinsWithObservables } from './applyMixinsWithObservables.js';
6
+ import { s as scrollIntoView } from './scrollIntoView.js';
7
+ import { w as when } from './when.js';
8
+ import { r as repeat } from './repeat.js';
9
+ import { c as classNames } from './class-names.js';
10
+ import { L as Localized } from './localized.js';
11
+ import { r as ref } from './ref.js';
12
+
13
+ const isValidTimeStr = (timeStr) => {
14
+ const parts = timeStr.split(":");
15
+ if (parts.length !== 3) {
16
+ return false;
17
+ }
18
+ const [hours, minutes, seconds] = parts;
19
+ if (hours.length !== 2 || minutes.length !== 2 || seconds.length !== 2) {
20
+ return false;
21
+ }
22
+ const hoursNum = parseInt(hours, 10);
23
+ const minutesNum = parseInt(minutes, 10);
24
+ const secondsNum = parseInt(seconds, 10);
25
+ if (isNaN(hoursNum) || isNaN(minutesNum) || isNaN(secondsNum)) {
26
+ return false;
27
+ }
28
+ if (hoursNum < 0 || hoursNum > 23) {
29
+ return false;
30
+ }
31
+ if (minutesNum < 0 || minutesNum > 59) {
32
+ return false;
33
+ }
34
+ if (secondsNum < 0 || secondsNum > 59) {
35
+ return false;
36
+ }
37
+ return true;
38
+ };
39
+ const parseTimePart = (partStr) => Number.parseInt(partStr, 10);
40
+ const formatTimePart = (part) => part.toString().padStart(2, "0");
41
+ const parseTimeStr = (timeStr) => {
42
+ const [hoursStr, minutesStr, secondsStr] = timeStr.split(":");
43
+ const hours = parseTimePart(hoursStr);
44
+ const minutes = parseTimePart(minutesStr);
45
+ const seconds = parseTimePart(secondsStr);
46
+ return {
47
+ hourStr: hoursStr,
48
+ hours,
49
+ minuteStr: minutesStr,
50
+ minutes,
51
+ secondStr: secondsStr,
52
+ seconds,
53
+ meridiem: hours < 12 ? "AM" : "PM"
54
+ };
55
+ };
56
+ const compareTimeStr = (a, b) => a > b ? 1 : a < b ? -1 : 0;
57
+ const hoursAs12hClock = (hour) => hour % 12 || 12;
58
+
59
+ const fallsIntoMeridiem = (meridiem, hour) => meridiem === "AM" && hour < 12 || meridiem === "PM" && hour >= 12;
60
+ const getHoursOptions = (min, max, forMeridiem) => {
61
+ const result = [];
62
+ const minHour = min ? parseTimeStr(min).hours : 0;
63
+ const maxHour = max ? parseTimeStr(max).hours : 23;
64
+ for (let i = minHour; i <= maxHour; i++) {
65
+ if (forMeridiem && !fallsIntoMeridiem(forMeridiem, i)) {
66
+ continue;
67
+ }
68
+ result.push({
69
+ value: formatTimePart(i),
70
+ label: formatTimePart(forMeridiem ? hoursAs12hClock(i) : i)
71
+ });
72
+ }
73
+ return result;
74
+ };
75
+ const getMinutesOptions = (step, value, min, max) => {
76
+ const result = [];
77
+ let minMinute = 0;
78
+ let maxMinute = 59;
79
+ if (min) {
80
+ const { hourStr: minHourStr, minutes: minMinutes } = parseTimeStr(min);
81
+ if (value && parseTimeStr(value).hourStr === minHourStr) {
82
+ minMinute = minMinutes;
83
+ }
84
+ }
85
+ if (max) {
86
+ const { hourStr: maxHourStr, minutes: maxMinutes } = parseTimeStr(max);
87
+ if (value && parseTimeStr(value).hourStr === maxHourStr) {
88
+ maxMinute = maxMinutes;
89
+ }
90
+ }
91
+ for (let i = minMinute; i <= maxMinute; i += Math.max(1, step ?? 1)) {
92
+ const minutes = formatTimePart(i);
93
+ result.push({
94
+ value: minutes,
95
+ label: minutes
96
+ });
97
+ }
98
+ return result;
99
+ };
100
+ const getSecondsOptions = (step, value, min, max) => {
101
+ const result = [];
102
+ let minSecond = 0;
103
+ let maxSecond = 59;
104
+ if (min) {
105
+ const minTime = parseTimeStr(min);
106
+ if (value && (parseTimeStr(value).hourStr === minTime.hourStr && parseTimeStr(value).minuteStr) === minTime.minuteStr) {
107
+ minSecond = minTime.seconds;
108
+ }
109
+ }
110
+ if (max) {
111
+ const maxTime = parseTimeStr(max);
112
+ if (value && (parseTimeStr(value).hourStr === maxTime.hourStr && parseTimeStr(value).minuteStr) === maxTime.minuteStr) {
113
+ maxSecond = maxTime.seconds;
114
+ }
115
+ }
116
+ for (let i = minSecond; i <= maxSecond; i += Math.max(1, step)) {
117
+ const seconds = formatTimePart(i);
118
+ result.push({
119
+ value: seconds,
120
+ label: seconds
121
+ });
122
+ }
123
+ return result;
124
+ };
125
+ const getMeridiesOptions = (min, max) => {
126
+ const result = [];
127
+ const hideAM = min ? parseTimeStr(min).meridiem === "PM" : false;
128
+ if (!hideAM) {
129
+ result.push({
130
+ value: "AM",
131
+ label: "AM"
132
+ });
133
+ }
134
+ const hidePM = max ? parseTimeStr(max).meridiem === "AM" : false;
135
+ if (!hidePM) {
136
+ result.push({
137
+ value: "PM",
138
+ label: "PM"
139
+ });
140
+ }
141
+ return result;
142
+ };
143
+
144
+ const HoursColumn = {
145
+ id: "hours",
146
+ getLabel: (x) => x.locale.timePicker.hoursLabel,
147
+ getOptions: (x) => getHoursOptions(
148
+ x.min,
149
+ x.max,
150
+ x.clock === "12h" ? MeridiesColumn.getSelectedOptionValue(x) ?? MeridiesColumn.getOptions(x)[0].value : void 0
151
+ ),
152
+ getSelectedOptionValue: (x) => x.value ? parseTimeStr(x.value).hourStr : void 0,
153
+ updatedValue: (x, optionValue) => {
154
+ if (x.value) {
155
+ const { minuteStr, secondStr } = parseTimeStr(x.value);
156
+ return `${optionValue}:${minuteStr}:${secondStr}`;
157
+ } else {
158
+ return `${optionValue}:00:00`;
159
+ }
160
+ }
161
+ };
162
+ const MinutesColumn = {
163
+ id: "minutes",
164
+ getLabel: (x) => x.locale.timePicker.minutesLabel,
165
+ getOptions: (x) => getMinutesOptions(x.minutesStep, x.value, x.min, x.max),
166
+ getSelectedOptionValue: (x) => x.value ? parseTimeStr(x.value).minuteStr : void 0,
167
+ updatedValue: (x, optionValue) => {
168
+ if (x.value) {
169
+ const { hourStr, secondStr } = parseTimeStr(x.value);
170
+ return `${hourStr}:${optionValue}:${secondStr}`;
171
+ } else {
172
+ return `00:${optionValue}:00`;
173
+ }
174
+ }
175
+ };
176
+ const SecondsColumn = {
177
+ id: "seconds",
178
+ getLabel: (x) => x.locale.timePicker.secondsLabel,
179
+ getOptions: (x) => getSecondsOptions(x.secondsStep, x.value, x.min, x.max),
180
+ getSelectedOptionValue: (x) => x.value ? parseTimeStr(x.value).secondStr : void 0,
181
+ updatedValue: (x, optionValue) => {
182
+ if (x.value) {
183
+ const { hourStr, minuteStr } = parseTimeStr(x.value);
184
+ return `${hourStr}:${minuteStr}:${optionValue}`;
185
+ } else {
186
+ return `00:00:${optionValue}`;
187
+ }
188
+ }
189
+ };
190
+ const MeridiesColumn = {
191
+ id: "meridies",
192
+ getLabel: (x) => x.locale.timePicker.meridiesLabel,
193
+ getOptions: (x) => getMeridiesOptions(x.min, x.max),
194
+ getSelectedOptionValue: (x) => x.value ? parseTimeStr(x.value).meridiem : void 0,
195
+ updatedValue: (x, optionValue) => {
196
+ if (x.value) {
197
+ const { hours, minuteStr, secondStr } = parseTimeStr(x.value);
198
+ let adjustedHours = hours;
199
+ if (optionValue === "AM" && hours >= 12) {
200
+ adjustedHours -= 12;
201
+ } else if (optionValue === "PM" && hours < 12) {
202
+ adjustedHours += 12;
203
+ }
204
+ return `${formatTimePart(adjustedHours)}:${minuteStr}:${secondStr}`;
205
+ } else {
206
+ if (optionValue === "AM") {
207
+ return "00:00:00";
208
+ } else {
209
+ return "12:00:00";
210
+ }
211
+ }
212
+ }
213
+ };
214
+
215
+ const shouldDisplaySecondsPicker = (x) => x.secondsStep !== void 0;
216
+ const shouldDisplay12hClock = (x) => x.clock === "12h";
217
+ const onPickerOptionClick = (x, column, optionValue) => {
218
+ emitChange(x, column.updatedValue(x, optionValue));
219
+ scrollToOption(x, column.id, optionValue, "start");
220
+ const nextPickerEl = x.shadowRoot.querySelector(
221
+ `#${column.id} + .picker`
222
+ );
223
+ if (nextPickerEl) {
224
+ nextPickerEl.focus();
225
+ } else {
226
+ x.$emit("last-column-selected", void 0, {
227
+ bubbles: false
228
+ });
229
+ }
230
+ };
231
+ const onPickerKeyDown = (x, column, event) => {
232
+ const options = column.getOptions(x);
233
+ const selectedValue = column.getSelectedOptionValue(x);
234
+ const offset = {
235
+ ArrowUp: -1,
236
+ ArrowDown: 1
237
+ }[event.key];
238
+ if (offset) {
239
+ event.preventDefault();
240
+ const index = options.findIndex((h) => h.value === selectedValue);
241
+ const newRawIndex = index === -1 ? 0 : index + offset;
242
+ const newIndex = (newRawIndex + options.length) % options.length;
243
+ const newValue = options[newIndex].value;
244
+ emitChange(x, column.updatedValue(x, newValue));
245
+ scrollToOption(x, column.id, newValue, "nearest");
246
+ }
247
+ return true;
248
+ };
249
+ const scrollToOption = (x, picker, optionValue, position) => {
250
+ const element = x.shadowRoot.querySelector(
251
+ `#${picker}-${optionValue}`
252
+ );
253
+ if (!element) {
254
+ return;
255
+ }
256
+ scrollIntoView(element, element.parentElement, position);
257
+ };
258
+ const onBaseKeyDown = (x, event) => {
259
+ if (event.key === "Tab") {
260
+ const focusableElements = x.shadowRoot.querySelectorAll(".picker");
261
+ const terminalElement = event.shiftKey ? focusableElements[0] : focusableElements[focusableElements.length - 1];
262
+ if (x.shadowRoot.activeElement !== terminalElement) {
263
+ TrappedFocus.ignoreEvent(event);
264
+ }
265
+ }
266
+ return true;
267
+ };
268
+ const emitChange = (x, time) => {
269
+ x.$emit("change", time, { bubbles: false, composed: false });
270
+ };
271
+ const renderPicker = (column) => {
272
+ return html`<ul
273
+ id="${column.id}"
274
+ class="picker"
275
+ role="listbox"
276
+ tabindex="0"
277
+ aria-label="${column.getLabel}"
278
+ aria-activedescendant="${(x) => column.getSelectedOptionValue(x) ? `${column.id}-${column.getSelectedOptionValue(x)}` : void 0}"
279
+ @keydown="${(x, c) => onPickerKeyDown(x, column, c.event)}"
280
+ >
281
+ ${repeat(
282
+ (x) => column.getOptions(x),
283
+ html`<li
284
+ id="${(x) => `${column.id}-${x.value}`}"
285
+ class="${(x, c) => classNames("option", [
286
+ "selected",
287
+ column.getSelectedOptionValue(c.parent) === x.value
288
+ ])}"
289
+ aria-selected="${(x, c) => column.getSelectedOptionValue(c.parent) === x.value}"
290
+ role="option"
291
+ @click="${(x, c) => onPickerOptionClick(c.parent, column, x.value)}"
292
+ >
293
+ ${(x) => x.label}
294
+ </li>`
295
+ )}
296
+ </ul>`;
297
+ };
298
+ const InlineTimePickerTemplate = () => {
299
+ return html`<div
300
+ class="time-pickers"
301
+ @keydown="${(x, { event }) => onBaseKeyDown(x, event)}"
302
+ >
303
+ ${renderPicker(HoursColumn)} ${renderPicker(MinutesColumn)}
304
+ ${when(shouldDisplaySecondsPicker, renderPicker(SecondsColumn))}
305
+ ${when(shouldDisplay12hClock, renderPicker(MeridiesColumn))}
306
+ </div>`;
307
+ };
308
+
309
+ var __defProp$2 = Object.defineProperty;
310
+ var __decorateClass$2 = (decorators, target, key, kind) => {
311
+ var result = void 0 ;
312
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
313
+ if (decorator = decorators[i])
314
+ result = (decorator(target, key, result) ) || result;
315
+ if (result) __defProp$2(target, key, result);
316
+ return result;
317
+ };
318
+ class InlineTimePicker extends VividElement {
319
+ constructor() {
320
+ super(...arguments);
321
+ this.minutesStep = 1;
322
+ this.clock = "24h";
323
+ }
324
+ valueChanged(_, newValue) {
325
+ if (newValue !== void 0 && !isValidTimeStr(newValue)) {
326
+ this.value = void 0;
327
+ }
328
+ }
329
+ scrollSelectedOptionsToTop() {
330
+ if (HoursColumn.getSelectedOptionValue(this)) {
331
+ scrollToOption(
332
+ this,
333
+ "hours",
334
+ HoursColumn.getSelectedOptionValue(this),
335
+ "start"
336
+ );
337
+ }
338
+ if (MinutesColumn.getSelectedOptionValue(this)) {
339
+ scrollToOption(
340
+ this,
341
+ "minutes",
342
+ MinutesColumn.getSelectedOptionValue(this),
343
+ "start"
344
+ );
345
+ }
346
+ if (shouldDisplaySecondsPicker(this) && SecondsColumn.getSelectedOptionValue(this)) {
347
+ scrollToOption(
348
+ this,
349
+ "seconds",
350
+ SecondsColumn.getSelectedOptionValue(this),
351
+ "start"
352
+ );
353
+ }
354
+ if (shouldDisplay12hClock(this) && MeridiesColumn.getSelectedOptionValue(this)) {
355
+ scrollToOption(
356
+ this,
357
+ "meridies",
358
+ MeridiesColumn.getSelectedOptionValue(this),
359
+ "start"
360
+ );
361
+ }
362
+ }
363
+ focus(options) {
364
+ const firstFocusableElement = this.shadowRoot.querySelector(
365
+ ".picker"
366
+ );
367
+ firstFocusableElement.focus(options);
368
+ }
369
+ }
370
+ __decorateClass$2([
371
+ observable
372
+ ], InlineTimePicker.prototype, "value");
373
+ __decorateClass$2([
374
+ observable
375
+ ], InlineTimePicker.prototype, "minutesStep");
376
+ __decorateClass$2([
377
+ observable
378
+ ], InlineTimePicker.prototype, "secondsStep");
379
+ __decorateClass$2([
380
+ observable
381
+ ], InlineTimePicker.prototype, "clock");
382
+ __decorateClass$2([
383
+ observable
384
+ ], InlineTimePicker.prototype, "min");
385
+ __decorateClass$2([
386
+ observable
387
+ ], InlineTimePicker.prototype, "max");
388
+ applyMixinsWithObservables(InlineTimePicker, Localized);
389
+
390
+ const styles = ":host{display:inline-block}.time-pickers{display:flex;overflow:hidden;justify-content:center;padding:4px;block-size:calc(28px * var(--_inline-time-picker-num-options-visible) + 4px * (var(--_inline-time-picker-num-options-visible) - 1));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:calc(28px * (var(--_inline-time-picker-num-options-visible) - 1) + 4px * (var(--_inline-time-picker-num-options-visible) - 1 - 1));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 .option{--_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 .option{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.time-pickers .option: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 .option: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 .option: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 .option: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 .option: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 .option{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}";
391
+
392
+ const inlineTimePickerDefinition = defineVividComponent(
393
+ "inline-time-picker",
394
+ InlineTimePicker,
395
+ InlineTimePickerTemplate,
396
+ [],
397
+ {
398
+ styles,
399
+ shadowOptions: {
400
+ delegatesFocus: true
401
+ }
402
+ }
403
+ );
404
+
405
+ const formatPresentationTime = (timeStr, includeSeconds, use12HourClock) => {
406
+ const time = parseTimeStr(timeStr);
407
+ const hoursStr = formatTimePart(
408
+ use12HourClock ? hoursAs12hClock(time.hours) : time.hours
409
+ );
410
+ let result = `${hoursStr}:${time.minuteStr}`;
411
+ if (includeSeconds) {
412
+ result += `:${time.secondStr}`;
413
+ }
414
+ if (use12HourClock) {
415
+ result += ` ${time.meridiem}`;
416
+ }
417
+ return result;
418
+ };
419
+ const isDigit = (char) => char >= "0" && char <= "9";
420
+ const parsePresentationTime = (input, use12HourClock) => {
421
+ const cleanedInput = input.toLowerCase();
422
+ const numerals = [];
423
+ let meridiem;
424
+ for (let i = 0; i < cleanedInput.length; i++) {
425
+ const char = cleanedInput[i];
426
+ if (char === "a" && cleanedInput[i + 1] === "m") {
427
+ i++;
428
+ meridiem = "AM";
429
+ }
430
+ if (char === "p" && cleanedInput[i + 1] === "m") {
431
+ i++;
432
+ meridiem = "PM";
433
+ }
434
+ if (isDigit(char)) {
435
+ let numeral = char;
436
+ while (isDigit(cleanedInput[i + 1])) {
437
+ i++;
438
+ numeral += cleanedInput[i];
439
+ }
440
+ numerals.push(Number.parseInt(numeral, 10));
441
+ }
442
+ }
443
+ if (numerals.length === 0 || numerals.length > 3) {
444
+ throw new Error("Invalid time format");
445
+ }
446
+ if (meridiem && (numerals[0] < 1 || numerals[0] > 12)) {
447
+ throw new Error("Invalid time format");
448
+ }
449
+ if (meridiem || use12HourClock) {
450
+ if (numerals[0] === 12) {
451
+ numerals[0] = 0;
452
+ }
453
+ }
454
+ if (meridiem === "PM") {
455
+ numerals[0] = numerals[0] + 12;
456
+ }
457
+ const [hours, minutes = 0, seconds = 0] = numerals;
458
+ if (hours > 23 || minutes > 59 || seconds > 59) {
459
+ throw new Error("Invalid value");
460
+ }
461
+ return [hours, minutes, seconds].map(formatTimePart).join(":");
462
+ };
463
+
464
+ var __defProp$1 = Object.defineProperty;
465
+ var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
466
+ var __decorateClass$1 = (decorators, target, key, kind) => {
467
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;
468
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
469
+ if (decorator = decorators[i])
470
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
471
+ if (kind && result) __defProp$1(target, key, result);
472
+ return result;
473
+ };
474
+ const TimeSelectionPicker = (Base) => {
475
+ class TimeSelectionPickerElement extends Base {
476
+ constructor() {
477
+ super(...arguments);
478
+ this.minutesStep = null;
479
+ this.secondsStep = null;
480
+ // Reformat the presentation value when the clock changes
481
+ this.#clockChangeHandler = {
482
+ handleChange: () => {
483
+ if (this.value) {
484
+ this._presentationValue = this._toPresentationValue(this.value);
485
+ }
486
+ }
487
+ };
488
+ }
489
+ // --- Core ---
490
+ /**
491
+ * @internal
492
+ */
493
+ get _displaySeconds() {
494
+ return this.secondsStep !== null;
495
+ }
496
+ get _use12hClock() {
497
+ return this.clock ? this.clock === "12h" : this.locale.timePicker.defaultTo12HourClock;
498
+ }
499
+ /**
500
+ * @internal
501
+ */
502
+ get _timePlaceholder() {
503
+ let format = "hh:mm";
504
+ if (this._displaySeconds) {
505
+ format += ":ss";
506
+ }
507
+ if (this._use12hClock) {
508
+ format += " aa";
509
+ }
510
+ return format;
511
+ }
512
+ #clockChangeHandler;
513
+ #clockChangeObserver;
514
+ #startObservingClockChanges() {
515
+ this.#clockChangeObserver = Observable.binding(
516
+ () => this._use12hClock,
517
+ this.#clockChangeHandler
518
+ );
519
+ this.#clockChangeObserver.observe(this, defaultExecutionContext);
520
+ }
521
+ #stopObservingClockChanges() {
522
+ this.#clockChangeObserver.disconnect();
523
+ }
524
+ /**
525
+ * @internal
526
+ */
527
+ connectedCallback() {
528
+ super.connectedCallback();
529
+ this.#startObservingClockChanges();
530
+ }
531
+ /**
532
+ * @internal
533
+ */
534
+ disconnectedCallback() {
535
+ super.disconnectedCallback();
536
+ this.#stopObservingClockChanges();
537
+ }
538
+ // --- Picker button ---
539
+ /**
540
+ * @internal
541
+ */
542
+ _onPickerButtonClick() {
543
+ super._onPickerButtonClick();
544
+ if (this._popupOpen) {
545
+ DOM.processUpdates();
546
+ this._inlineTimePickerEl.scrollSelectedOptionsToTop();
547
+ }
548
+ }
549
+ // --- Inline time picker ---
550
+ /**
551
+ * @internal
552
+ */
553
+ _onInlineTimePickerChange(event) {
554
+ this._updateValueDueToUserInteraction(
555
+ this._withUpdatedTime(event.detail)
556
+ );
557
+ }
558
+ /**
559
+ * @internal
560
+ */
561
+ _onInlineTimePickerLastColumnSelected() {
562
+ this._closePopup();
563
+ }
564
+ }
565
+ __decorateClass$1([
566
+ attr({ attribute: "minutes-step", converter: nullableNumberConverter })
567
+ ], TimeSelectionPickerElement.prototype, "minutesStep", 2);
568
+ __decorateClass$1([
569
+ attr({ attribute: "seconds-step", converter: nullableNumberConverter })
570
+ ], TimeSelectionPickerElement.prototype, "secondsStep", 2);
571
+ __decorateClass$1([
572
+ attr
573
+ ], TimeSelectionPickerElement.prototype, "clock", 2);
574
+ __decorateClass$1([
575
+ volatile
576
+ ], TimeSelectionPickerElement.prototype, "_use12hClock", 1);
577
+ return TimeSelectionPickerElement;
578
+ };
579
+
580
+ var __defProp = Object.defineProperty;
581
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
582
+ var __decorateClass = (decorators, target, key, kind) => {
583
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
584
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
585
+ if (decorator = decorators[i])
586
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
587
+ if (kind && result) __defProp(target, key, result);
588
+ return result;
589
+ };
590
+ const ValidTimeFilter = {
591
+ fromView: (value) => {
592
+ if (value && isValidTimeStr(value)) {
593
+ return value;
594
+ }
595
+ return "";
596
+ },
597
+ toView(value) {
598
+ return value;
599
+ }
600
+ };
601
+ let TimePicker = class extends TimeSelectionPicker(
602
+ SingleValuePicker(PickerField)
603
+ ) {
604
+ // --- Core ---
605
+ constructor() {
606
+ super();
607
+ /**
608
+ * @internal
609
+ */
610
+ this._isValidValue = isValidTimeStr;
611
+ this.min = "";
612
+ this.max = "";
613
+ this.proxy.type = "time";
614
+ this.proxy.step = "1";
615
+ }
616
+ /**
617
+ * @internal
618
+ */
619
+ _toPresentationValue(value) {
620
+ return formatPresentationTime(
621
+ value,
622
+ this._displaySeconds,
623
+ this._use12hClock
624
+ );
625
+ }
626
+ /**
627
+ * @internal
628
+ */
629
+ _parsePresentationValue(presentationValue) {
630
+ return parsePresentationTime(presentationValue, this._use12hClock);
631
+ }
632
+ /**
633
+ * @internal
634
+ */
635
+ get _timeValue() {
636
+ return this.value;
637
+ }
638
+ /**
639
+ * @internal
640
+ */
641
+ _withUpdatedTime(timeStr) {
642
+ return timeStr;
643
+ }
644
+ /**
645
+ * @internal
646
+ */
647
+ get _resolvedMinTime() {
648
+ return this.min || null;
649
+ }
650
+ /**
651
+ * @internal
652
+ */
653
+ get _resolvedMaxTime() {
654
+ return this.max || null;
655
+ }
656
+ /**
657
+ * @internal
658
+ */
659
+ minChanged(_, newMin) {
660
+ if (this.proxy instanceof HTMLInputElement) {
661
+ this.proxy.min = newMin;
662
+ this.validate();
663
+ }
664
+ }
665
+ /**
666
+ * @internal
667
+ */
668
+ maxChanged(_, newMax) {
669
+ if (this.proxy instanceof HTMLInputElement) {
670
+ this.proxy.max = newMax;
671
+ this.validate();
672
+ }
673
+ }
674
+ // --- Text field ---
675
+ /**
676
+ * @internal
677
+ */
678
+ get _textFieldPlaceholder() {
679
+ return this._timePlaceholder;
680
+ }
681
+ // --- Picker button ---
682
+ /**
683
+ * @internal
684
+ */
685
+ get _pickerButtonIcon() {
686
+ return "clock-line";
687
+ }
688
+ /**
689
+ * @internal
690
+ */
691
+ get _pickerButtonLabel() {
692
+ if (this.value) {
693
+ return this.locale.timePicker.changeTimeLabel(
694
+ this._toPresentationValue(this.value)
695
+ );
696
+ }
697
+ return this.locale.timePicker.chooseTimeLabel;
698
+ }
699
+ /**
700
+ * @internal
701
+ */
702
+ _onPickerButtonClick() {
703
+ super._onPickerButtonClick();
704
+ if (this._popupOpen) {
705
+ DOM.processUpdates();
706
+ this._focusableElsWithinDialog()[0].focus();
707
+ }
708
+ }
709
+ // --- Dialog ---
710
+ /**
711
+ * @internal
712
+ */
713
+ get _dialogLabel() {
714
+ return this.locale.timePicker.chooseTimeLabel;
715
+ }
716
+ /**
717
+ * @internal
718
+ */
719
+ _focusableElsWithinDialog() {
720
+ return this._dialogEl.querySelectorAll(
721
+ "#inline-time-picker, .vwc-button"
722
+ );
723
+ }
724
+ // --- Validation ---
725
+ /**
726
+ * @internal
727
+ */
728
+ _getCustomValidationError() {
729
+ if (this._isPresentationValueInvalid()) {
730
+ return this.locale.timePicker.invalidTimeError;
731
+ }
732
+ return null;
733
+ }
734
+ };
735
+ __decorateClass([
736
+ attr({ converter: ValidTimeFilter })
737
+ ], TimePicker.prototype, "min", 2);
738
+ __decorateClass([
739
+ attr({ converter: ValidTimeFilter })
740
+ ], TimePicker.prototype, "max", 2);
741
+ TimePicker = __decorateClass([
742
+ errorText,
743
+ formElements
744
+ ], TimePicker);
745
+
746
+ const TimeSelectionPickerTemplate = (context, numOptionsVisible) => {
747
+ const inlineTimePickerTag = context.tagFor(InlineTimePicker);
748
+ return html`
749
+ <${inlineTimePickerTag}
750
+ id='inline-time-picker'
751
+ ${ref("_inlineTimePickerEl")}
752
+ style="--_inline-time-picker-num-options-visible: ${() => numOptionsVisible}"
753
+ tabindex='1'
754
+ :value='${(x) => x._timeValue || void 0}'
755
+ :clock='${(x) => x._use12hClock ? "12h" : "24h"}'
756
+ :min='${(x) => x._resolvedMinTime || void 0}'
757
+ :max='${(x) => x._resolvedMaxTime || void 0}'
758
+ :minutesStep='${(x) => x.minutesStep ?? 1}'
759
+ :secondsStep='${(x) => x.secondsStep ?? void 0}'
760
+ @change='${(x, c) => x._onInlineTimePickerChange(c.event)}'
761
+ @last-column-selected='${(x) => x._onInlineTimePickerLastColumnSelected()}'
762
+ >
763
+ </${inlineTimePickerTag}>
764
+ `;
765
+ };
766
+
767
+ export { TimePicker as T, ValidTimeFilter as V, TimeSelectionPickerTemplate as a, isValidTimeStr as b, TimeSelectionPicker as c, compareTimeStr as d, formatPresentationTime as f, inlineTimePickerDefinition as i, parsePresentationTime as p };