@vonage/vivid 5.0.0 → 5.2.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 (673) hide show
  1. package/{shared/definition2.cjs → accordion/definition.cjs} +20 -20
  2. package/{shared/definition2.js → accordion/definition.js} +5 -7
  3. package/accordion/index.cjs +5 -5
  4. package/accordion/index.js +129 -3
  5. package/accordion-item/definition.cjs +145 -0
  6. package/accordion-item/definition.js +139 -0
  7. package/accordion-item/index.cjs +1 -5
  8. package/accordion-item/index.js +2 -3
  9. package/{shared/definition3.cjs → action-group/definition.cjs} +12 -9
  10. package/{shared/definition3.js → action-group/definition.js} +5 -4
  11. package/action-group/index.cjs +6 -5
  12. package/action-group/index.js +49 -3
  13. package/{shared/definition4.cjs → alert/definition.cjs} +33 -31
  14. package/{shared/definition4.js → alert/definition.js} +11 -11
  15. package/alert/index.cjs +30 -5
  16. package/alert/index.js +158 -3
  17. package/{shared/definition5.cjs → audio-player/definition.cjs} +95 -61
  18. package/{shared/definition5.js → audio-player/definition.js} +48 -16
  19. package/audio-player/index.cjs +68 -4
  20. package/audio-player/index.js +333 -2
  21. package/{shared/definition6.cjs → avatar/definition.cjs} +28 -26
  22. package/{shared/definition6.js → avatar/definition.js} +7 -7
  23. package/avatar/index.cjs +18 -5
  24. package/avatar/index.js +93 -3
  25. package/{shared/definition7.cjs → badge/definition.cjs} +18 -16
  26. package/{shared/definition7.js → badge/definition.js} +6 -6
  27. package/badge/index.cjs +4 -5
  28. package/badge/index.js +66 -3
  29. package/{shared/definition8.cjs → banner/definition.cjs} +26 -25
  30. package/{shared/definition8.js → banner/definition.js} +10 -11
  31. package/banner/index.cjs +29 -4
  32. package/banner/index.js +128 -2
  33. package/{shared/definition10.cjs → breadcrumb/definition.cjs} +11 -9
  34. package/{shared/definition10.js → breadcrumb/definition.js} +5 -5
  35. package/breadcrumb/index.cjs +12 -5
  36. package/breadcrumb/index.js +69 -3
  37. package/{shared/definition9.cjs → breadcrumb-item/definition.cjs} +18 -15
  38. package/{shared/definition9.js → breadcrumb-item/definition.js} +7 -7
  39. package/breadcrumb-item/index.cjs +5 -5
  40. package/breadcrumb-item/index.js +33 -3
  41. package/bundled/_has.cjs +1 -0
  42. package/bundled/_has.js +34 -0
  43. package/bundled/affix.cjs +13 -0
  44. package/bundled/affix.js +63 -0
  45. package/bundled/anchored.cjs +4 -0
  46. package/bundled/anchored.js +67 -0
  47. package/bundled/aria.cjs +1 -0
  48. package/bundled/aria.js +7 -0
  49. package/bundled/attribute-binding-behaviour.cjs +1 -0
  50. package/bundled/attribute-binding-behaviour.js +27 -0
  51. package/bundled/base-progress.cjs +1 -0
  52. package/bundled/base-progress.js +57 -0
  53. package/bundled/breadcrumb-item.cjs +1 -0
  54. package/bundled/breadcrumb-item.js +21 -0
  55. package/bundled/button.cjs +1 -0
  56. package/bundled/button.js +106 -0
  57. package/bundled/calendar-event.cjs +1 -0
  58. package/bundled/calendar-event.js +34 -0
  59. package/bundled/calendar-picker.template.cjs +148 -0
  60. package/bundled/calendar-picker.template.js +3371 -0
  61. package/bundled/char-count.cjs +13 -0
  62. package/bundled/char-count.js +54 -0
  63. package/bundled/children.cjs +1 -0
  64. package/bundled/children.js +38 -0
  65. package/bundled/class-names.cjs +1 -0
  66. package/bundled/class-names.js +9 -0
  67. package/bundled/definition.cjs +39 -0
  68. package/bundled/definition.js +122 -0
  69. package/bundled/definition10.cjs +19 -0
  70. package/bundled/definition10.js +73 -0
  71. package/bundled/definition11.cjs +10 -0
  72. package/bundled/definition11.js +44 -0
  73. package/bundled/definition12.cjs +1 -0
  74. package/bundled/definition12.js +20 -0
  75. package/bundled/definition13.cjs +73 -0
  76. package/bundled/definition13.js +359 -0
  77. package/bundled/definition14.cjs +5 -0
  78. package/bundled/definition14.js +29 -0
  79. package/bundled/definition15.cjs +30 -0
  80. package/bundled/definition15.js +80 -0
  81. package/bundled/definition16.cjs +19 -0
  82. package/bundled/definition16.js +103 -0
  83. package/bundled/definition17.cjs +13 -0
  84. package/bundled/definition17.js +137 -0
  85. package/bundled/definition18.cjs +12 -0
  86. package/bundled/definition18.js +94 -0
  87. package/bundled/definition19.cjs +70 -0
  88. package/bundled/definition19.js +674 -0
  89. package/bundled/definition2.cjs +20 -0
  90. package/bundled/definition2.js +180 -0
  91. package/bundled/definition20.cjs +20 -0
  92. package/bundled/definition20.js +106 -0
  93. package/bundled/definition21.cjs +5 -0
  94. package/bundled/definition21.js +19 -0
  95. package/bundled/definition22.cjs +24 -0
  96. package/bundled/definition22.js +151 -0
  97. package/bundled/definition3.cjs +29 -0
  98. package/bundled/definition3.js +195 -0
  99. package/bundled/definition4.cjs +6 -0
  100. package/bundled/definition4.js +42 -0
  101. package/bundled/definition5.cjs +1 -0
  102. package/bundled/definition5.js +345 -0
  103. package/bundled/definition6.cjs +31 -0
  104. package/bundled/definition6.js +268 -0
  105. package/bundled/definition7.cjs +30 -0
  106. package/bundled/definition7.js +288 -0
  107. package/bundled/definition8.cjs +19 -0
  108. package/bundled/definition8.js +145 -0
  109. package/bundled/definition9.cjs +14 -0
  110. package/bundled/definition9.js +1406 -0
  111. package/bundled/delegates-aria.cjs +1 -0
  112. package/bundled/delegates-aria.js +77 -0
  113. package/bundled/divider.cjs +1 -0
  114. package/bundled/divider.js +34 -0
  115. package/bundled/dom.cjs +1 -0
  116. package/bundled/dom.js +6 -0
  117. package/bundled/enums.cjs +1 -0
  118. package/bundled/enums.js +9 -0
  119. package/bundled/form-associated.cjs +1 -0
  120. package/bundled/form-associated.js +320 -0
  121. package/bundled/form-element.cjs +1 -0
  122. package/bundled/form-element.js +56 -0
  123. package/bundled/host-semantics.cjs +1 -0
  124. package/bundled/host-semantics.js +57 -0
  125. package/bundled/index.cjs +1 -0
  126. package/bundled/index.js +6 -0
  127. package/bundled/key-codes.cjs +1 -0
  128. package/bundled/key-codes.js +16 -0
  129. package/bundled/linkable.cjs +15 -0
  130. package/bundled/linkable.js +49 -0
  131. package/bundled/listbox.cjs +1 -0
  132. package/bundled/listbox.js +345 -0
  133. package/bundled/localized.cjs +1 -0
  134. package/bundled/localized.js +460 -0
  135. package/bundled/mixins.cjs +33 -0
  136. package/bundled/mixins.js +226 -0
  137. package/bundled/numbers.cjs +1 -0
  138. package/bundled/numbers.js +14 -0
  139. package/bundled/option.cjs +1 -0
  140. package/bundled/option.js +158 -0
  141. package/bundled/picker-field.template.cjs +67 -0
  142. package/bundled/picker-field.template.js +242 -0
  143. package/bundled/playbackRates.cjs +1 -0
  144. package/bundled/playbackRates.js +11 -0
  145. package/bundled/ref.cjs +1 -0
  146. package/bundled/ref.js +32 -0
  147. package/bundled/repeat.cjs +1 -0
  148. package/bundled/repeat.js +341 -0
  149. package/bundled/scrollIntoView.cjs +1 -0
  150. package/bundled/scrollIntoView.js +33 -0
  151. package/bundled/single-date-picker.cjs +1 -0
  152. package/bundled/single-date-picker.js +39 -0
  153. package/bundled/single-value-picker.cjs +1 -0
  154. package/bundled/single-value-picker.js +87 -0
  155. package/bundled/slider.template.cjs +41 -0
  156. package/bundled/slider.template.js +100 -0
  157. package/bundled/slotted.cjs +1 -0
  158. package/bundled/slotted.js +81 -0
  159. package/bundled/strings.cjs +1 -0
  160. package/bundled/strings.js +7 -0
  161. package/bundled/text-field.cjs +1 -0
  162. package/bundled/text-field.js +4 -0
  163. package/bundled/time-selection-picker.template.cjs +46 -0
  164. package/bundled/time-selection-picker.template.js +575 -0
  165. package/bundled/vivid-element.cjs +1 -0
  166. package/bundled/vivid-element.js +1761 -0
  167. package/bundled/when.cjs +1 -0
  168. package/bundled/when.js +11 -0
  169. package/bundled/with-contextual-help.cjs +1 -0
  170. package/bundled/with-contextual-help.js +32 -0
  171. package/bundled/with-error-text.cjs +1 -0
  172. package/bundled/with-error-text.js +39 -0
  173. package/bundled/with-success-text.cjs +1 -0
  174. package/bundled/with-success-text.js +16 -0
  175. package/button/definition.cjs +14 -0
  176. package/button/definition.js +4 -0
  177. package/button/index.cjs +1 -5
  178. package/button/index.js +2 -3
  179. package/{shared/definition13.cjs → calendar/definition.cjs} +27 -449
  180. package/{shared/definition13.js → calendar/definition.js} +7 -431
  181. package/calendar/index.cjs +53 -5
  182. package/calendar/index.js +431 -3
  183. package/{shared/definition12.cjs → calendar-event/definition.cjs} +12 -9
  184. package/{shared/definition12.js → calendar-event/definition.js} +6 -6
  185. package/calendar-event/index.cjs +9 -5
  186. package/calendar-event/index.js +43 -3
  187. package/card/definition.cjs +186 -0
  188. package/{shared/definition14.js → card/definition.js} +10 -11
  189. package/card/index.cjs +47 -5
  190. package/card/index.js +163 -3
  191. package/{shared/definition15.cjs → checkbox/definition.cjs} +30 -29
  192. package/{shared/definition15.js → checkbox/definition.js} +12 -13
  193. package/checkbox/index.cjs +1 -5
  194. package/checkbox/index.js +2 -3
  195. package/{shared/definition16.cjs → combobox/definition.cjs} +61 -56
  196. package/{shared/definition16.js → combobox/definition.js} +30 -27
  197. package/combobox/index.cjs +69 -5
  198. package/combobox/index.js +519 -3
  199. package/contextual-help/definition.cjs +62 -0
  200. package/contextual-help/definition.js +57 -0
  201. package/contextual-help/index.cjs +1 -0
  202. package/contextual-help/index.js +2 -0
  203. package/custom-elements.json +2504 -335
  204. package/{shared/definition17.cjs → data-grid/definition.cjs} +111 -121
  205. package/{shared/definition17.js → data-grid/definition.js} +11 -23
  206. package/data-grid/index.cjs +81 -5
  207. package/data-grid/index.js +1011 -3
  208. package/{shared/definition18.cjs → date-picker/definition.cjs} +20 -17
  209. package/{shared/definition18.js → date-picker/definition.js} +12 -11
  210. package/date-picker/index.cjs +1 -5
  211. package/date-picker/index.js +115 -3
  212. package/{shared/definition19.cjs → date-range-picker/definition.cjs} +26 -23
  213. package/{shared/definition19.js → date-range-picker/definition.js} +10 -9
  214. package/date-range-picker/index.cjs +1 -5
  215. package/date-range-picker/index.js +335 -3
  216. package/{shared/definition20.cjs → date-time-picker/definition.cjs} +27 -24
  217. package/{shared/definition20.js → date-time-picker/definition.js} +13 -12
  218. package/date-time-picker/index.cjs +8 -5
  219. package/date-time-picker/index.js +216 -3
  220. package/{shared/definition21.cjs → dial-pad/definition.cjs} +89 -40
  221. package/{shared/definition21.js → dial-pad/definition.js} +60 -13
  222. package/dial-pad/index.cjs +57 -5
  223. package/dial-pad/index.js +245 -3
  224. package/{shared/definition22.cjs → dialog/definition.cjs} +48 -47
  225. package/{shared/definition22.js → dialog/definition.js} +10 -11
  226. package/dialog/index.cjs +44 -5
  227. package/dialog/index.js +257 -3
  228. package/{shared/definition23.cjs → divider/definition.cjs} +10 -6
  229. package/{shared/definition23.js → divider/definition.js} +6 -5
  230. package/divider/index.cjs +1 -5
  231. package/divider/index.js +2 -3
  232. package/elevation/definition.cjs +11 -0
  233. package/elevation/definition.js +2 -0
  234. package/elevation/index.cjs +1 -5
  235. package/elevation/index.js +2 -3
  236. package/empty-state/definition.cjs +81 -0
  237. package/empty-state/definition.js +75 -0
  238. package/empty-state/index.cjs +14 -5
  239. package/empty-state/index.js +64 -3
  240. package/fab/definition.cjs +105 -0
  241. package/fab/definition.js +99 -0
  242. package/fab/index.cjs +20 -5
  243. package/fab/index.js +86 -3
  244. package/file-picker/definition.cjs +519 -0
  245. package/file-picker/definition.js +513 -0
  246. package/file-picker/index.cjs +61 -5
  247. package/file-picker/index.js +391 -3
  248. package/{shared/definition27.cjs → header/definition.cjs} +14 -11
  249. package/{shared/definition27.js → header/definition.js} +6 -5
  250. package/header/index.cjs +19 -5
  251. package/header/index.js +57 -3
  252. package/{shared/definition28.cjs → icon/definition.cjs} +25 -149
  253. package/{shared/definition28.js → icon/definition.js} +6 -132
  254. package/icon/index.cjs +1 -5
  255. package/icon/index.js +2 -3
  256. package/index.cjs +268 -264
  257. package/index.js +72 -71
  258. package/{shared/definition29.cjs → layout/definition.cjs} +13 -10
  259. package/{shared/definition29.js → layout/definition.js} +4 -3
  260. package/layout/index.cjs +3 -5
  261. package/layout/index.js +52 -3
  262. package/lib/accordion-item/accordion-item.d.ts +0 -1
  263. package/lib/action-group/action-group.d.ts +0 -1
  264. package/lib/alert/alert.d.ts +0 -2
  265. package/lib/audio-player/audio-player.d.ts +4 -1
  266. package/lib/avatar/avatar.d.ts +0 -1
  267. package/lib/badge/badge.d.ts +0 -1
  268. package/lib/banner/banner.d.ts +0 -3
  269. package/lib/breadcrumb/breadcrumb.d.ts +0 -1
  270. package/lib/breadcrumb-item/breadcrumb-item.d.ts +0 -1
  271. package/lib/button/button.d.ts +1 -3
  272. package/lib/calendar-event/calendar-event.d.ts +0 -1
  273. package/lib/card/card.d.ts +0 -1
  274. package/lib/checkbox/checkbox.d.ts +0 -6
  275. package/lib/combobox/combobox.d.ts +483 -72
  276. package/lib/components.d.ts +1 -0
  277. package/lib/contextual-help/contextual-help.d.ts +5 -0
  278. package/lib/contextual-help/contextual-help.template.d.ts +3 -0
  279. package/lib/contextual-help/definition.d.ts +1 -0
  280. package/lib/data-grid/data-grid-cell.d.ts +0 -2
  281. package/lib/data-grid/data-grid-row.d.ts +0 -1
  282. package/lib/date-picker/date-picker.d.ts +892 -888
  283. package/lib/date-range-picker/date-range-picker.d.ts +590 -588
  284. package/lib/date-time-picker/date-time-picker.d.ts +893 -889
  285. package/lib/dial-pad/dial-pad.d.ts +0 -1
  286. package/lib/dial-pad/dial-pad.template.d.ts +1 -1
  287. package/lib/dial-pad/locale.d.ts +1 -0
  288. package/lib/dialog/dialog.d.ts +0 -2
  289. package/lib/divider/divider.d.ts +0 -1
  290. package/lib/fab/fab.d.ts +1 -1
  291. package/lib/file-picker/accept.d.ts +1 -0
  292. package/lib/file-picker/data-transfer.d.ts +1 -0
  293. package/lib/file-picker/file-picker.d.ts +490 -91
  294. package/lib/header/header.d.ts +0 -1
  295. package/lib/menu/menu.d.ts +1 -2
  296. package/lib/menu-item/menu-item.d.ts +0 -2
  297. package/lib/nav/nav.d.ts +0 -1
  298. package/lib/nav-disclosure/nav-disclosure.d.ts +0 -2
  299. package/lib/nav-item/nav-item.d.ts +0 -2
  300. package/lib/note/note.d.ts +0 -1
  301. package/lib/number-field/number-field.d.ts +505 -96
  302. package/lib/option/option.d.ts +1 -2
  303. package/lib/pagination/pagination.d.ts +0 -1
  304. package/lib/progress/progress.d.ts +0 -1
  305. package/lib/progress-ring/progress-ring.d.ts +0 -1
  306. package/lib/radio/radio.d.ts +0 -3
  307. package/lib/radio-group/radio-group.d.ts +0 -1
  308. package/lib/range-slider/range-slider.d.ts +0 -3
  309. package/lib/rich-text-editor/menubar/menubar.d.ts +0 -1
  310. package/lib/rich-text-editor/rich-text-editor.d.ts +0 -1
  311. package/lib/searchable-select/option-tag.d.ts +0 -1
  312. package/lib/searchable-select/searchable-select.d.ts +505 -96
  313. package/lib/select/select.d.ts +470 -60
  314. package/lib/selectable-box/selectable-box.d.ts +0 -1
  315. package/lib/simple-color-picker/definition.d.ts +4 -0
  316. package/lib/simple-color-picker/locale.d.ts +4 -0
  317. package/lib/simple-color-picker/simple-color-picker.d.ts +1600 -0
  318. package/lib/simple-color-picker/simple-color-picker.template.d.ts +3 -0
  319. package/lib/slider/slider.d.ts +0 -3
  320. package/lib/split-button/split-button.d.ts +2 -3
  321. package/lib/switch/switch.d.ts +0 -2
  322. package/lib/tab/tab.d.ts +0 -3
  323. package/lib/tab-panel/tab-panel.d.ts +0 -1
  324. package/lib/tag/tag.d.ts +0 -3
  325. package/lib/tag-group/tag-group.d.ts +0 -1
  326. package/lib/tag-name-map.d.ts +2 -1
  327. package/lib/text-area/text-area.d.ts +494 -84
  328. package/lib/text-field/text-field.d.ts +505 -96
  329. package/lib/time-picker/time-picker.d.ts +571 -569
  330. package/lib/toggletip/toggletip.d.ts +0 -2
  331. package/lib/tooltip/tooltip.d.ts +0 -1
  332. package/lib/tree-item/tree-item.d.ts +0 -2
  333. package/lib/tree-view/tree-view.d.ts +0 -1
  334. package/lib/video-player/video-player.d.ts +0 -1
  335. package/locales/de-DE.cjs +13 -1
  336. package/locales/de-DE.js +13 -1
  337. package/locales/en-GB.cjs +13 -1
  338. package/locales/en-GB.js +13 -1
  339. package/locales/en-US.cjs +13 -1
  340. package/locales/en-US.js +13 -1
  341. package/locales/ja-JP.cjs +13 -1
  342. package/locales/ja-JP.js +13 -1
  343. package/locales/zh-CN.cjs +13 -1
  344. package/locales/zh-CN.js +13 -1
  345. package/{shared/definition31.cjs → menu/definition.cjs} +46 -42
  346. package/{shared/definition31.js → menu/definition.js} +16 -14
  347. package/menu/index.cjs +1 -5
  348. package/menu/index.js +2 -3
  349. package/menu-item/definition.cjs +14 -0
  350. package/menu-item/definition.js +3 -0
  351. package/menu-item/index.cjs +1 -5
  352. package/menu-item/index.js +2 -3
  353. package/{shared/definition34.cjs → nav/definition.cjs} +7 -4
  354. package/{shared/definition34.js → nav/definition.js} +4 -3
  355. package/nav/index.cjs +5 -5
  356. package/nav/index.js +13 -3
  357. package/nav-disclosure/definition.cjs +122 -0
  358. package/nav-disclosure/definition.js +116 -0
  359. package/nav-disclosure/index.cjs +16 -5
  360. package/nav-disclosure/index.js +96 -3
  361. package/{shared/definition33.cjs → nav-item/definition.cjs} +19 -16
  362. package/{shared/definition33.js → nav-item/definition.js} +9 -8
  363. package/nav-item/index.cjs +2 -5
  364. package/nav-item/index.js +59 -3
  365. package/{shared/definition35.cjs → note/definition.cjs} +15 -13
  366. package/{shared/definition35.js → note/definition.js} +6 -6
  367. package/note/index.cjs +9 -5
  368. package/note/index.js +44 -3
  369. package/{shared/definition36.cjs → number-field/definition.cjs} +66 -60
  370. package/{shared/definition36.js → number-field/definition.js} +31 -27
  371. package/number-field/index.cjs +60 -5
  372. package/number-field/index.js +370 -3
  373. package/option/definition.cjs +84 -0
  374. package/option/definition.js +78 -0
  375. package/option/index.cjs +1 -5
  376. package/option/index.js +2 -3
  377. package/package.json +15 -4
  378. package/{shared/definition38.cjs → pagination/definition.cjs} +31 -33
  379. package/{shared/definition38.js → pagination/definition.js} +7 -11
  380. package/pagination/index.cjs +43 -5
  381. package/pagination/index.js +194 -3
  382. package/popup/definition.cjs +13 -0
  383. package/popup/definition.js +4 -0
  384. package/popup/index.cjs +1 -5
  385. package/popup/index.js +2 -3
  386. package/{shared/definition40.cjs → progress/definition.cjs} +17 -15
  387. package/{shared/definition40.js → progress/definition.js} +6 -6
  388. package/progress/index.cjs +17 -5
  389. package/progress/index.js +69 -3
  390. package/{shared/definition39.cjs → progress-ring/definition.cjs} +17 -15
  391. package/{shared/definition39.js → progress-ring/definition.js} +7 -7
  392. package/progress-ring/index.cjs +1 -5
  393. package/progress-ring/index.js +2 -3
  394. package/{shared/definition42.cjs → radio/definition.cjs} +20 -19
  395. package/{shared/definition42.js → radio/definition.js} +8 -9
  396. package/radio/index.cjs +1 -5
  397. package/radio/index.js +2 -3
  398. package/{shared/definition41.cjs → radio-group/definition.cjs} +31 -30
  399. package/{shared/definition41.js → radio-group/definition.js} +8 -9
  400. package/radio-group/index.cjs +23 -5
  401. package/radio-group/index.js +255 -3
  402. package/{shared/definition43.cjs → range-slider/definition.cjs} +62 -61
  403. package/{shared/definition43.js → range-slider/definition.js} +13 -14
  404. package/range-slider/index.cjs +68 -5
  405. package/range-slider/index.js +456 -3
  406. package/rich-text-editor/definition.cjs +1206 -0
  407. package/rich-text-editor/definition.js +1200 -0
  408. package/rich-text-editor/index.cjs +133 -4
  409. package/rich-text-editor/index.js +10386 -2
  410. package/{shared/definition45.cjs → searchable-select/definition.cjs} +142 -130
  411. package/{shared/definition45.js → searchable-select/definition.js} +51 -41
  412. package/searchable-select/index.cjs +167 -5
  413. package/searchable-select/index.js +1034 -3
  414. package/{shared/definition46.cjs → select/definition.cjs} +92 -87
  415. package/{shared/definition46.js → select/definition.js} +32 -29
  416. package/select/index.cjs +1 -5
  417. package/select/index.js +2 -3
  418. package/{shared/definition47.cjs → selectable-box/definition.cjs} +26 -24
  419. package/{shared/definition47.js → selectable-box/definition.js} +9 -9
  420. package/selectable-box/index.cjs +28 -5
  421. package/selectable-box/index.js +136 -3
  422. package/shared/aria/aria-mixin.d.ts +0 -1
  423. package/shared/aria/delegates-aria.d.ts +0 -1
  424. package/shared/aria/host-semantics.d.ts +0 -1
  425. package/shared/color-picker/index.d.ts +2 -0
  426. package/shared/color-picker/types.d.ts +4 -0
  427. package/shared/color-picker/utils.d.ts +3 -0
  428. package/shared/feedback/feedback-message.d.ts +0 -1
  429. package/shared/feedback/mixins.d.ts +0 -2
  430. package/shared/foundation/button/button.d.ts +0 -2
  431. package/shared/foundation/form-associated/form-associated.d.ts +0 -2
  432. package/shared/foundation/vivid-element/vivid-element.d.ts +0 -1
  433. package/shared/localization/Locale.d.ts +2 -0
  434. package/shared/patterns/affix.d.ts +0 -2
  435. package/shared/patterns/anchored.d.ts +0 -2
  436. package/shared/patterns/char-count/char-count.d.ts +0 -1
  437. package/shared/patterns/form-elements/form-element.d.ts +0 -2
  438. package/shared/patterns/form-elements/index.d.ts +1 -0
  439. package/shared/patterns/form-elements/with-contextual-help.d.ts +1239 -0
  440. package/shared/patterns/form-elements/with-error-text.d.ts +0 -3
  441. package/shared/patterns/form-elements/with-success-text.d.ts +0 -1
  442. package/shared/patterns/linkable.d.ts +0 -1
  443. package/shared/patterns/localized.d.ts +0 -1
  444. package/shared/patterns/trapped-focus.d.ts +0 -1
  445. package/shared/picker-field/mixins/calendar-picker.d.ts +452 -451
  446. package/shared/picker-field/mixins/calendar-picker.template.d.ts +452 -451
  447. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +0 -1
  448. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +594 -592
  449. package/shared/picker-field/mixins/single-date-picker.d.ts +734 -731
  450. package/shared/picker-field/mixins/single-value-picker.d.ts +449 -448
  451. package/shared/picker-field/mixins/time-selection-picker.d.ts +571 -569
  452. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +571 -569
  453. package/shared/picker-field/picker-field.d.ts +483 -72
  454. package/{shared/definition48.cjs → side-drawer/definition.cjs} +16 -14
  455. package/{shared/definition48.js → side-drawer/definition.js} +5 -5
  456. package/side-drawer/index.cjs +17 -3
  457. package/side-drawer/index.js +100 -2
  458. package/simple-color-picker/definition.cjs +398 -0
  459. package/simple-color-picker/definition.js +392 -0
  460. package/simple-color-picker/index.cjs +31 -0
  461. package/simple-color-picker/index.js +250 -0
  462. package/{shared/definition49.cjs → slider/definition.cjs} +46 -53
  463. package/{shared/definition49.js → slider/definition.js} +11 -20
  464. package/slider/index.cjs +1 -5
  465. package/slider/index.js +2 -3
  466. package/split-button/definition.cjs +176 -0
  467. package/split-button/definition.js +170 -0
  468. package/split-button/index.cjs +26 -5
  469. package/split-button/index.js +149 -3
  470. package/styles/core/all.css +1 -1
  471. package/styles/core/theme.css +1 -1
  472. package/styles/core/typography.css +1 -1
  473. package/styles/tokens/theme-dark.css +4 -4
  474. package/styles/tokens/theme-light.css +4 -4
  475. package/styles/tokens/vivid-2-compat.css +1 -1
  476. package/{shared/definition51.cjs → switch/definition.cjs} +20 -19
  477. package/{shared/definition51.js → switch/definition.js} +8 -9
  478. package/switch/index.cjs +16 -5
  479. package/switch/index.js +102 -3
  480. package/tab/definition.cjs +127 -0
  481. package/tab/definition.js +121 -0
  482. package/tab/index.cjs +1 -5
  483. package/tab/index.js +2 -3
  484. package/{shared/definition52.cjs → tab-panel/definition.cjs} +7 -4
  485. package/{shared/definition52.js → tab-panel/definition.js} +4 -3
  486. package/tab-panel/index.cjs +1 -5
  487. package/tab-panel/index.js +2 -3
  488. package/{shared/definition54.cjs → tabs/definition.cjs} +46 -39
  489. package/{shared/definition54.js → tabs/definition.js} +18 -13
  490. package/tabs/index.cjs +31 -5
  491. package/tabs/index.js +321 -3
  492. package/tag/definition.cjs +156 -0
  493. package/tag/definition.js +150 -0
  494. package/tag/index.cjs +19 -5
  495. package/tag/index.js +118 -3
  496. package/{shared/definition55.cjs → tag-group/definition.cjs} +9 -6
  497. package/{shared/definition55.js → tag-group/definition.js} +5 -4
  498. package/tag-group/index.cjs +8 -5
  499. package/tag-group/index.js +26 -3
  500. package/{shared/definition57.cjs → text-area/definition.cjs} +62 -42
  501. package/{shared/definition57.js → text-area/definition.js} +38 -20
  502. package/text-area/index.cjs +41 -5
  503. package/text-area/index.js +293 -3
  504. package/{shared/definition58.cjs → text-field/definition.cjs} +70 -52
  505. package/{shared/definition58.js → text-field/definition.js} +40 -24
  506. package/text-field/index.cjs +1 -5
  507. package/text-field/index.js +2 -3
  508. package/time-picker/definition.cjs +43 -0
  509. package/{shared/definition59.js → time-picker/definition.js} +9 -8
  510. package/time-picker/index.cjs +1 -5
  511. package/time-picker/index.js +29 -3
  512. package/{shared/definition60.cjs → toggletip/definition.cjs} +20 -18
  513. package/{shared/definition60.js → toggletip/definition.js} +8 -8
  514. package/toggletip/index.cjs +1 -5
  515. package/toggletip/index.js +2 -3
  516. package/{shared/definition61.cjs → tooltip/definition.cjs} +16 -13
  517. package/{shared/definition61.js → tooltip/definition.js} +7 -6
  518. package/tooltip/index.cjs +1 -5
  519. package/tooltip/index.js +2 -3
  520. package/tree-item/definition.cjs +13 -0
  521. package/tree-item/definition.js +3 -0
  522. package/tree-item/index.cjs +1 -5
  523. package/tree-item/index.js +2 -3
  524. package/{shared/definition63.cjs → tree-view/definition.cjs} +41 -42
  525. package/{shared/definition63.js → tree-view/definition.js} +6 -9
  526. package/tree-view/index.cjs +13 -5
  527. package/tree-view/index.js +171 -3
  528. package/{shared → unbundled}/affix.cjs +10 -11
  529. package/{shared → unbundled}/affix.js +2 -3
  530. package/{shared → unbundled}/anchored.cjs +7 -8
  531. package/{shared → unbundled}/anchored.js +1 -2
  532. package/{shared → unbundled}/attribute-binding-behaviour.cjs +3 -3
  533. package/{shared → unbundled}/attribute-binding-behaviour.js +1 -1
  534. package/{shared → unbundled}/base-progress.cjs +6 -5
  535. package/{shared → unbundled}/base-progress.js +2 -1
  536. package/{shared → unbundled}/breadcrumb-item.cjs +3 -2
  537. package/{shared → unbundled}/breadcrumb-item.js +2 -1
  538. package/{shared → unbundled}/button.cjs +10 -9
  539. package/{shared → unbundled}/button.js +2 -1
  540. package/{shared → unbundled}/calendar-event.cjs +8 -7
  541. package/{shared → unbundled}/calendar-event.js +2 -1
  542. package/unbundled/calendar-picker.template.cjs +917 -0
  543. package/unbundled/calendar-picker.template.js +906 -0
  544. package/{shared → unbundled}/char-count.cjs +6 -7
  545. package/{shared → unbundled}/char-count.js +2 -3
  546. package/unbundled/definition.cjs +225 -0
  547. package/unbundled/definition.js +220 -0
  548. package/{shared/definition30.cjs → unbundled/definition2.cjs} +41 -42
  549. package/{shared/definition30.js → unbundled/definition2.js} +6 -7
  550. package/unbundled/definition3.cjs +207 -0
  551. package/{shared/definition62.js → unbundled/definition3.js} +5 -9
  552. package/unbundled/definition4.cjs +298 -0
  553. package/unbundled/definition4.js +293 -0
  554. package/{shared/definition65.cjs → unbundled/definition5.cjs} +7 -6
  555. package/{shared/definition65.js → unbundled/definition5.js} +3 -2
  556. package/{shared → unbundled}/delegates-aria.cjs +4 -3
  557. package/{shared → unbundled}/delegates-aria.js +2 -1
  558. package/{shared → unbundled}/divider.cjs +5 -4
  559. package/{shared → unbundled}/divider.js +3 -2
  560. package/{shared → unbundled}/form-associated.cjs +13 -13
  561. package/{shared → unbundled}/form-associated.js +2 -2
  562. package/{shared → unbundled}/form-element.cjs +3 -3
  563. package/{shared → unbundled}/form-element.js +1 -1
  564. package/{shared → unbundled}/host-semantics.cjs +2 -1
  565. package/{shared → unbundled}/host-semantics.js +2 -1
  566. package/unbundled/key-codes.cjs +10 -0
  567. package/unbundled/key-codes.js +7 -0
  568. package/{shared → unbundled}/linkable.cjs +11 -12
  569. package/{shared → unbundled}/linkable.js +1 -2
  570. package/{shared → unbundled}/listbox.cjs +21 -37
  571. package/{shared → unbundled}/listbox.js +3 -19
  572. package/{shared → unbundled}/localized.cjs +2 -2
  573. package/{shared → unbundled}/localized.js +1 -1
  574. package/{shared → unbundled}/mixins.cjs +27 -83
  575. package/{shared → unbundled}/mixins.js +6 -62
  576. package/{shared → unbundled}/option.cjs +29 -17
  577. package/{shared → unbundled}/option.js +14 -2
  578. package/{shared → unbundled}/picker-field.template.cjs +32 -24
  579. package/{shared → unbundled}/picker-field.template.js +18 -10
  580. package/{shared → unbundled}/slider.template.cjs +15 -19
  581. package/{shared → unbundled}/slider.template.js +3 -7
  582. package/unbundled/text-field.cjs +5 -0
  583. package/unbundled/text-field.js +3 -0
  584. package/{shared → unbundled}/time-selection-picker.template.cjs +28 -30
  585. package/{shared → unbundled}/time-selection-picker.template.js +4 -6
  586. package/unbundled/vivid-element.cjs +283 -0
  587. package/unbundled/vivid-element.js +274 -0
  588. package/unbundled/with-contextual-help.cjs +40 -0
  589. package/unbundled/with-contextual-help.js +38 -0
  590. package/{shared → unbundled}/with-error-text.cjs +2 -2
  591. package/{shared → unbundled}/with-error-text.js +1 -1
  592. package/{shared → unbundled}/with-success-text.cjs +2 -2
  593. package/{shared → unbundled}/with-success-text.js +1 -1
  594. package/video-player/definition.cjs +536 -0
  595. package/video-player/definition.js +530 -0
  596. package/video-player/index.cjs +536 -3
  597. package/video-player/index.js +35912 -2
  598. package/{shared/definition66.cjs → visually-hidden/definition.cjs} +6 -3
  599. package/{shared/definition66.js → visually-hidden/definition.js} +3 -2
  600. package/visually-hidden/index.cjs +1 -5
  601. package/visually-hidden/index.js +2 -3
  602. package/vivid.api.json +722 -799
  603. package/shared/_has.cjs +0 -58
  604. package/shared/_has.js +0 -54
  605. package/shared/aria.cjs +0 -11
  606. package/shared/aria.js +0 -9
  607. package/shared/calendar-picker.template.cjs +0 -6377
  608. package/shared/calendar-picker.template.js +0 -6366
  609. package/shared/children.cjs +0 -61
  610. package/shared/children.js +0 -59
  611. package/shared/class-names.cjs +0 -17
  612. package/shared/class-names.js +0 -15
  613. package/shared/definition.cjs +0 -145
  614. package/shared/definition.js +0 -141
  615. package/shared/definition11.cjs +0 -220
  616. package/shared/definition11.js +0 -215
  617. package/shared/definition14.cjs +0 -185
  618. package/shared/definition24.cjs +0 -80
  619. package/shared/definition24.js +0 -76
  620. package/shared/definition25.cjs +0 -90
  621. package/shared/definition25.js +0 -86
  622. package/shared/definition26.cjs +0 -2549
  623. package/shared/definition26.js +0 -2545
  624. package/shared/definition32.cjs +0 -120
  625. package/shared/definition32.js +0 -116
  626. package/shared/definition37.cjs +0 -71
  627. package/shared/definition37.js +0 -68
  628. package/shared/definition44.cjs +0 -14666
  629. package/shared/definition44.js +0 -14662
  630. package/shared/definition50.cjs +0 -148
  631. package/shared/definition50.js +0 -144
  632. package/shared/definition53.cjs +0 -124
  633. package/shared/definition53.js +0 -120
  634. package/shared/definition56.cjs +0 -154
  635. package/shared/definition56.js +0 -150
  636. package/shared/definition59.cjs +0 -39
  637. package/shared/definition62.cjs +0 -211
  638. package/shared/definition64.cjs +0 -69579
  639. package/shared/definition64.js +0 -69575
  640. package/shared/definition67.cjs +0 -2227
  641. package/shared/definition67.js +0 -2222
  642. package/shared/dom.cjs +0 -10
  643. package/shared/dom.js +0 -8
  644. package/shared/key-codes.cjs +0 -32
  645. package/shared/key-codes.js +0 -18
  646. package/shared/numbers.cjs +0 -38
  647. package/shared/numbers.js +0 -34
  648. package/shared/ref.cjs +0 -43
  649. package/shared/ref.js +0 -41
  650. package/shared/repeat.cjs +0 -767
  651. package/shared/repeat.js +0 -764
  652. package/shared/slotted.cjs +0 -123
  653. package/shared/slotted.js +0 -119
  654. package/shared/strings.cjs +0 -11
  655. package/shared/strings.js +0 -9
  656. package/shared/text-field.cjs +0 -5
  657. package/shared/text-field.js +0 -3
  658. package/shared/vivid-element.cjs +0 -2822
  659. package/shared/vivid-element.js +0 -2799
  660. package/shared/when.cjs +0 -31
  661. package/shared/when.js +0 -29
  662. /package/{shared → unbundled}/enums.cjs +0 -0
  663. /package/{shared → unbundled}/enums.js +0 -0
  664. /package/{shared → unbundled}/index.cjs +0 -0
  665. /package/{shared → unbundled}/index.js +0 -0
  666. /package/{shared → unbundled}/playbackRates.cjs +0 -0
  667. /package/{shared → unbundled}/playbackRates.js +0 -0
  668. /package/{shared → unbundled}/scrollIntoView.cjs +0 -0
  669. /package/{shared → unbundled}/scrollIntoView.js +0 -0
  670. /package/{shared → unbundled}/single-date-picker.cjs +0 -0
  671. /package/{shared → unbundled}/single-date-picker.js +0 -0
  672. /package/{shared → unbundled}/single-value-picker.cjs +0 -0
  673. /package/{shared → unbundled}/single-value-picker.js +0 -0
@@ -0,0 +1,906 @@
1
+ import { formatISO, format, parse, addDays as addDays$1 } from 'date-fns';
2
+ import { observable, volatile, DOM, attr, repeat, when, html } from '@microsoft/fast-element';
3
+ import { classNames } from '@microsoft/fast-web-utilities';
4
+ import { D as Divider } from './divider.js';
5
+ import { B as Button } from './definition.js';
6
+ import { VwcVisuallyHiddenElement as VisuallyHidden } from '../visually-hidden/definition.js';
7
+
8
+ const calendarStyles = ".segments{display:inline-flex;gap:24px}.segment{display:flex;flex-direction:column;gap:12px}.segment .header{display:flex;align-items:center;padding-block:8px}.segment .title{display:flex;flex-grow:1;justify-content:center}.segment .title-action{border-radius:8px;block-size:24px;font:var(--vvd-typography-base-extended);padding-inline:8px}.calendar{display:flex;flex-direction:column;margin-top:8px;gap:4px}.calendar .calendar-separator{margin-inline:10px}.calendar .calendar-weekdays{display:flex;justify-content:center}.calendar .calendar-weekday{display:inline-flex;align-items:center;justify-content:center;block-size:16px;font:var(--vvd-typography-base-condensed);inline-size:40px}.calendar .calendar-week{display:flex;justify-content:center}.calendar .calendar-day{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;aspect-ratio:1/1;block-size:28px;font:var(--vvd-typography-base);margin-inline:6px}.calendar .calendar-day.start,.calendar .calendar-day.end{border:2px solid var(--vvd-color-cta-50);background-color:var(--vvd-color-cta-200)}.calendar:focus-visible .calendar .calendar-day.start,.calendar:focus-visible .calendar .calendar-day.end{border-width:3px}.calendar .calendar-day:before,.calendar .calendar-day:after{position:absolute;z-index:-1;display:block;width:20px;height:28px}.calendar .calendar-day:before{right:50%}.calendar .calendar-day:after{left:50%}.calendar .calendar-day.range:before,.calendar .calendar-day.range:after{background-color:var(--vvd-color-cta-50)}.calendar .calendar-day.range:not(.start):before,.calendar .calendar-day.range:not(.end):after{content:\"\"}.calendar .calendar-day.outside-month,.calendar .calendar-day:disabled{color:var(--vvd-color-neutral-400)}.months-separator{margin-inline:-12px}.month-grid{display:flex;flex-direction:column;gap:34px}.month-grid .months-row{display:flex;justify-content:center;gap:29px}.month-grid .month{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;aspect-ratio:1/1;block-size:48px;font:var(--vvd-typography-base-extended);text-transform:uppercase}.month-grid .month:disabled{color:var(--vvd-color-neutral-400)}.button{--_connotation-color-primary: var(--vvd-date-picker-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-firm: var(--vvd-date-picker-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-date-picker-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-date-picker-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-date-picker-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-pale: var(--vvd-date-picker-accent-pale, var(--vvd-color-neutral-300))}.button{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.button:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}}.button.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.button:active:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.button.active:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.button.selected:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}@media (hover: hover){.button.selected:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}}.button.selected.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.button.selected:disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: transparent}.button.selected.disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: transparent}.button{position:relative;padding:0;border:none;background-color:var(--_appearance-color-fill);color:var(--_appearance-color-text);cursor:pointer}.button:disabled{cursor:not-allowed}.button:focus:not(.title-action),.button.title-action:focus-visible{--focus-stroke-gap-color: transparent;color:var(--vvd-color-canvas-text);box-shadow:0 0 0 4px color-mix(in srgb,var(--vvd-color-cta-500),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px))}.button:focus:not(.title-action).start,.button:focus:not(.title-action).end,.button.title-action:focus-visible.start,.button.title-action:focus-visible.end{border-width:3px}.button.current{border:1px solid var(--vvd-color-neutral-200)}.button.selected{border:1px solid var(--vvd-color-neutral-900)}";
9
+
10
+ const formatDateStr = (date) => formatISO(date, { representation: "date" });
11
+ const currentDateStr = (now = /* @__PURE__ */ new Date()) => formatDateStr(now);
12
+ const parseDateStr = (dateStr) => {
13
+ const [year, month, day] = dateStr.split("-");
14
+ return new Date(parseInt(year), parseInt(month) - 1, parseInt(day));
15
+ };
16
+ const addDays = (dateStr, days) => {
17
+ const date = parseDateStr(dateStr);
18
+ const resultDate = new Date(date);
19
+ resultDate.setDate(resultDate.getDate() + days);
20
+ return formatDateStr(resultDate);
21
+ };
22
+ const compareDateStr = (a, b) => a > b ? 1 : a < b ? -1 : 0;
23
+ const hasThreeComponents = (components) => components.length === 3;
24
+ const allComponentsAreNumbers = (components) => components.every((component) => /^\d+$/.test(component));
25
+ const isValidDate = ([yearStr, monthStr, dayStr]) => {
26
+ const year = parseInt(yearStr);
27
+ const month = parseInt(monthStr) - 1;
28
+ const day = parseInt(dayStr);
29
+ const date = new Date(year, month, day);
30
+ return date.getFullYear() === year && date.getMonth() === month && date.getDate() === day;
31
+ };
32
+ const isValidDateStr = (string) => {
33
+ const components = string.split("-");
34
+ return hasThreeComponents(components) && allComponentsAreNumbers(components) && isValidDate(components);
35
+ };
36
+
37
+ const formatPresentationDate = (dateStr, locale) => {
38
+ const date = parseDateStr(dateStr);
39
+ return format(date, locale.dateFormat);
40
+ };
41
+ const parsePresentationDate = (presentationDate, locale) => {
42
+ const date = parse(presentationDate, locale.dateFormat, /* @__PURE__ */ new Date());
43
+ return formatDateStr(date);
44
+ };
45
+
46
+ const getCurrentMonth = (now = /* @__PURE__ */ new Date()) => ({
47
+ month: now.getMonth(),
48
+ year: now.getFullYear()
49
+ });
50
+ const monthOfDate = (dateStr) => {
51
+ const date = parseDateStr(dateStr);
52
+ return { month: date.getMonth(), year: date.getFullYear() };
53
+ };
54
+ const addMonths = ({ month, year }, months) => {
55
+ const date = new Date(year, month);
56
+ date.setMonth(date.getMonth() + months);
57
+ return { month: date.getMonth(), year: date.getFullYear() };
58
+ };
59
+ const compareMonths = (a, b) => a.year === b.year ? a.month - b.month : a.year - b.year;
60
+ const areMonthsEqual = (a, b) => compareMonths(a, b) === 0;
61
+ const monthToStr = ({ month, year }) => `${year.toString().padStart(4, "0")}-${(month + 1).toString().padStart(2, "0")}`;
62
+
63
+ const yearOfDate = (dateStr) => {
64
+ const date = parseDateStr(dateStr);
65
+ return date.getFullYear();
66
+ };
67
+
68
+ const MonthsPerRow = 4;
69
+ const buildMonthPickerGrid = (year, locale) => {
70
+ const grid = [];
71
+ let row = [];
72
+ for (let i = 0; i < 12; i++) {
73
+ const month = { month: i, year };
74
+ row.push({
75
+ label: locale.months.shorthand[i],
76
+ monthName: locale.months.name[i],
77
+ month
78
+ });
79
+ if (row.length === MonthsPerRow) {
80
+ grid.push(row);
81
+ row = [];
82
+ }
83
+ }
84
+ return grid;
85
+ };
86
+
87
+ const getWeekdays = (locale) => {
88
+ const firstDayOfWeek = locale.firstDayOfWeek;
89
+ const localeWeekdayToNative = (day) => (day + firstDayOfWeek) % 7;
90
+ const days = [];
91
+ for (let i = 0; i < 7; i++) {
92
+ days.push({
93
+ name: locale.weekdays.name[localeWeekdayToNative(i)],
94
+ shortName: locale.weekdays.shorthand[localeWeekdayToNative(i)]
95
+ });
96
+ }
97
+ return days;
98
+ };
99
+ const gridDate = (date, isOutsideMonth2) => ({
100
+ date: formatDateStr(date),
101
+ label: `${date.getDate()}`,
102
+ isOutsideMonth: isOutsideMonth2
103
+ });
104
+ function isOutsideMonth(dayIndexInMonth, daysInMonth) {
105
+ return dayIndexInMonth < 0 || dayIndexInMonth >= daysInMonth;
106
+ }
107
+ const buildDateGrid = ({ month, year }, getDay) => {
108
+ const grid = [];
109
+ const firstDay = new Date(year, month, 1);
110
+ const lastDay = new Date(year, month + 1, 0);
111
+ const firstDayInWeek = getDay(firstDay);
112
+ const daysInMonth = lastDay.getDate();
113
+ const daysOutsideMonthInLastWeek = 7 - getDay(lastDay);
114
+ const totalDaysInCalendar = daysInMonth + firstDayInWeek + daysOutsideMonthInLastWeek;
115
+ let week = [];
116
+ for (let i = 0; i < totalDaysInCalendar; i++) {
117
+ const dayIndexInMonth = i - firstDayInWeek;
118
+ week.push(
119
+ gridDate(
120
+ addDays$1(firstDay, dayIndexInMonth),
121
+ isOutsideMonth(dayIndexInMonth, daysInMonth)
122
+ )
123
+ );
124
+ if (week.length === 7) {
125
+ grid.push(week);
126
+ week = [];
127
+ }
128
+ }
129
+ return grid;
130
+ };
131
+ const buildCalendarGrid = (month, locale) => {
132
+ const { firstDayOfWeek } = locale;
133
+ const getShiftedDay = (date) => (date.getDay() - firstDayOfWeek + 7) % 7;
134
+ return {
135
+ weekdays: getWeekdays(locale),
136
+ grid: buildDateGrid(month, getShiftedDay)
137
+ };
138
+ };
139
+
140
+ var __defProp$1 = Object.defineProperty;
141
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
142
+ var __decorateClass$1 = (decorators, target, key, kind) => {
143
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
144
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
145
+ if (decorator = decorators[i])
146
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
147
+ if (kind && result) __defProp$1(target, key, result);
148
+ return result;
149
+ };
150
+ const CalendarPicker = (Base) => {
151
+ class CalendarPickerElement extends Base {
152
+ // --- Core ---
153
+ constructor(...args) {
154
+ super(...args);
155
+ this._selectedMonth = getCurrentMonth();
156
+ /**
157
+ * Today's date.
158
+ * @internal
159
+ */
160
+ this._currentDate = currentDateStr();
161
+ /**
162
+ * Today's month.
163
+ * @internal
164
+ */
165
+ this._currentMonth = getCurrentMonth();
166
+ this._numCalendars = 1;
167
+ // --- Date picker ---
168
+ /**
169
+ * @internal
170
+ */
171
+ this._hideDatesOutsideMonth = false;
172
+ this._lastFocussedDate = null;
173
+ this._monthPickerYear = null;
174
+ this._lastFocussedMonth = null;
175
+ this.value = "";
176
+ }
177
+ /**
178
+ * @internal
179
+ */
180
+ _adjustSelectedMonthToEnsureVisibilityOf(date) {
181
+ const month = monthOfDate(date);
182
+ const firstDisplayedMonth = this._selectedMonth;
183
+ const lastDisplayedMonth = addMonths(
184
+ this._selectedMonth,
185
+ this._numCalendars - 1
186
+ );
187
+ if (compareMonths(month, firstDisplayedMonth) < 0) {
188
+ this._selectedMonth = month;
189
+ return true;
190
+ } else if (compareMonths(month, lastDisplayedMonth) > 0) {
191
+ this._selectedMonth = addMonths(month, 1 - this._numCalendars);
192
+ return true;
193
+ }
194
+ return false;
195
+ }
196
+ /**
197
+ * @internal
198
+ */
199
+ _isDateInValidRange(date) {
200
+ return (!this._resolvedMinDate || compareDateStr(date, this._resolvedMinDate) >= 0) && (!this._resolvedMaxDate || compareDateStr(date, this._resolvedMaxDate) <= 0);
201
+ }
202
+ #isMonthAfterValidRange(month) {
203
+ return this._resolvedMaxDate && compareMonths(month, monthOfDate(this._resolvedMaxDate)) > 0;
204
+ }
205
+ #isMonthBeforeValidRange(month) {
206
+ return this._resolvedMinDate && compareMonths(month, monthOfDate(this._resolvedMinDate)) < 0;
207
+ }
208
+ /**
209
+ * @internal
210
+ */
211
+ _isMonthInValidRange(month) {
212
+ return !(this.#isMonthBeforeValidRange(month) || this.#isMonthAfterValidRange(month));
213
+ }
214
+ /**
215
+ * @internal
216
+ */
217
+ _closePopup(restoreFocusToTextField = true) {
218
+ super._closePopup(restoreFocusToTextField);
219
+ this._monthPickerYear = null;
220
+ }
221
+ /**
222
+ * @internal
223
+ */
224
+ _onPickerButtonClick() {
225
+ super._onPickerButtonClick();
226
+ if (this._popupOpen) {
227
+ DOM.processUpdates();
228
+ const tabbableDate = this._tabbableDate;
229
+ if (tabbableDate)
230
+ this.shadowRoot.querySelector(
231
+ `[data-date="${tabbableDate}"]`
232
+ ).focus();
233
+ }
234
+ }
235
+ // --- Calendar header ---
236
+ /**
237
+ * @internal
238
+ */
239
+ _onTitleActionClick() {
240
+ if (this._inMonthPicker) {
241
+ this._monthPickerYear = null;
242
+ } else {
243
+ this._monthPickerYear = this._selectedMonth.year;
244
+ }
245
+ }
246
+ get _isPrevYearDisabled() {
247
+ const currentYear = this._inMonthPicker ? this._monthPickerYear : this._selectedMonth.year;
248
+ const prevYear = currentYear - 1;
249
+ return this._resolvedMinDate && prevYear < yearOfDate(this._resolvedMinDate);
250
+ }
251
+ /**
252
+ * @internal
253
+ */
254
+ _onPrevYearClick() {
255
+ if (this._inMonthPicker) {
256
+ this._monthPickerYear = this._monthPickerYear - 1;
257
+ } else {
258
+ this._selectedMonth = {
259
+ year: this._selectedMonth.year - 1,
260
+ month: this._selectedMonth.month
261
+ };
262
+ }
263
+ }
264
+ get _isNextYearDisabled() {
265
+ const currentYear = this._inMonthPicker ? this._monthPickerYear : this._selectedMonth.year;
266
+ const nextYear = currentYear + 1;
267
+ return this._resolvedMaxDate && nextYear > yearOfDate(this._resolvedMaxDate);
268
+ }
269
+ /**
270
+ * @internal
271
+ */
272
+ _onNextYearClick() {
273
+ if (this._inMonthPicker) {
274
+ this._monthPickerYear = this._monthPickerYear + 1;
275
+ } else {
276
+ this._selectedMonth = {
277
+ year: this._selectedMonth.year + 1,
278
+ month: this._selectedMonth.month
279
+ };
280
+ }
281
+ }
282
+ /**
283
+ * @internal
284
+ */
285
+ get _isPrevMonthDisabled() {
286
+ return this.#isMonthBeforeValidRange(addMonths(this._selectedMonth, -1));
287
+ }
288
+ /**
289
+ * @internal
290
+ */
291
+ _onPrevMonthClick() {
292
+ this._selectedMonth = addMonths(this._selectedMonth, -1);
293
+ }
294
+ /**
295
+ * @internal
296
+ */
297
+ get _isNextMonthDisabled() {
298
+ return this.#isMonthAfterValidRange(addMonths(this._selectedMonth, 1));
299
+ }
300
+ /**
301
+ * @internal
302
+ */
303
+ _onNextMonthClick() {
304
+ this._selectedMonth = addMonths(this._selectedMonth, 1);
305
+ }
306
+ /**
307
+ * @internal
308
+ */
309
+ get _segments() {
310
+ const segments = [];
311
+ if (this._inMonthPicker) {
312
+ segments.push({
313
+ id: 0,
314
+ type: "month-picker",
315
+ title: `${this._monthPickerYear}`,
316
+ titleClickable: true,
317
+ titleAriaLabel: this.locale.calendarPicker.showCalendarForMonthLabel(
318
+ `${this.locale.calendarPicker.months.name[this._selectedMonth.month]} ${this._selectedMonth.year}`
319
+ ),
320
+ prevYearButton: true,
321
+ nextYearButton: true,
322
+ months: buildMonthPickerGrid(
323
+ this._monthPickerYear,
324
+ this.locale.calendarPicker
325
+ )
326
+ });
327
+ } else {
328
+ for (let i = 0; i < this._numCalendars; i++) {
329
+ const month = addMonths(this._selectedMonth, i);
330
+ const isSingle = this._numCalendars === 1;
331
+ const isFirst = i === 0;
332
+ const isLast = i === this._numCalendars - 1;
333
+ segments.push({
334
+ id: i,
335
+ type: "calendar",
336
+ title: `${this.locale.calendarPicker.months.name[month.month]} ${month.year}`,
337
+ titleClickable: isSingle,
338
+ titleAriaLabel: this.locale.calendarPicker.changeMonthLabel(
339
+ `${this.locale.calendarPicker.months.name[month.month]} ${month.year}`
340
+ ),
341
+ prevYearButton: isFirst && isSingle,
342
+ prevMonthButton: isFirst,
343
+ nextMonthButton: isLast,
344
+ nextYearButton: isLast && isSingle,
345
+ calendar: buildCalendarGrid(month, this.locale.calendarPicker)
346
+ });
347
+ }
348
+ }
349
+ return segments;
350
+ }
351
+ /**
352
+ * @internal
353
+ */
354
+ _isDateSelected(_) {
355
+ return false;
356
+ }
357
+ /**
358
+ * @internal
359
+ * @private
360
+ */
361
+ _isDateInSelectedRange(_) {
362
+ return false;
363
+ }
364
+ /**
365
+ * @internal
366
+ */
367
+ _isDateRangeStart(_) {
368
+ return false;
369
+ }
370
+ /**
371
+ * @internal
372
+ */
373
+ _isDateRangeEnd(_) {
374
+ return false;
375
+ }
376
+ /**
377
+ * @internal
378
+ */
379
+ _onDateMouseEnter(_) {
380
+ }
381
+ /**
382
+ * @internal
383
+ */
384
+ _onDateMouseLeave(_) {
385
+ }
386
+ /**
387
+ * Handle keydown on a date in the calendar.
388
+ * @internal
389
+ */
390
+ _onDateKeydown(date, event) {
391
+ let newDate = null;
392
+ if (event.key === "ArrowUp") {
393
+ newDate = addDays(date, -7);
394
+ } else if (event.key === "ArrowDown") {
395
+ newDate = addDays(date, 7);
396
+ } else if (event.key === "ArrowLeft") {
397
+ newDate = addDays(date, -1);
398
+ } else if (event.key === "ArrowRight") {
399
+ newDate = addDays(date, 1);
400
+ }
401
+ if (newDate && this._isDateInValidRange(newDate)) {
402
+ if (this._adjustSelectedMonthToEnsureVisibilityOf(newDate)) {
403
+ DOM.processUpdates();
404
+ }
405
+ this._dialogEl.querySelector(
406
+ `[data-date="${newDate}"]`
407
+ ).focus();
408
+ return false;
409
+ }
410
+ return true;
411
+ }
412
+ /**
413
+ * @internal
414
+ */
415
+ _onDateFocus(date) {
416
+ this._lastFocussedDate = date;
417
+ }
418
+ get _tabbableDate() {
419
+ const datesInSegments = this._segments.filter(
420
+ (segment) => segment.type === "calendar"
421
+ ).flatMap((segment) => segment.calendar.grid.flat().map((d) => d.date));
422
+ const candidates = [
423
+ this._lastFocussedDate,
424
+ ...this._getSelectedDates(),
425
+ currentDateStr(),
426
+ ...datesInSegments
427
+ ];
428
+ const firstVisibleMonth = this._selectedMonth;
429
+ const lastVisibleMonth = addMonths(
430
+ this._selectedMonth,
431
+ this._numCalendars - 1
432
+ );
433
+ return candidates.find(
434
+ (date) => date && compareMonths(monthOfDate(date), firstVisibleMonth) >= 0 && compareMonths(monthOfDate(date), lastVisibleMonth) <= 0 && this._isDateInValidRange(date)
435
+ ) ?? null;
436
+ }
437
+ /**
438
+ * @internal
439
+ */
440
+ get _inMonthPicker() {
441
+ return this._monthPickerYear !== null;
442
+ }
443
+ /**
444
+ * Handle month selected in the month picker.
445
+ * @internal
446
+ */
447
+ _onMonthClick(month) {
448
+ this._selectedMonth = month;
449
+ this._monthPickerYear = null;
450
+ }
451
+ /**
452
+ * Handle keydown on a month in the month picker.
453
+ * @internal
454
+ */
455
+ _onMonthKeydown(month, event) {
456
+ let newMonth = null;
457
+ if (event.key === "ArrowUp") {
458
+ newMonth = addMonths(month, -4);
459
+ } else if (event.key === "ArrowDown") {
460
+ newMonth = addMonths(month, MonthsPerRow);
461
+ } else if (event.key === "ArrowLeft") {
462
+ newMonth = addMonths(month, -1);
463
+ } else if (event.key === "ArrowRight") {
464
+ newMonth = addMonths(month, 1);
465
+ }
466
+ if (newMonth && this._isMonthInValidRange(newMonth)) {
467
+ if (newMonth.year !== this._monthPickerYear) {
468
+ this._monthPickerYear = newMonth.year;
469
+ DOM.processUpdates();
470
+ }
471
+ this._dialogEl.querySelector(
472
+ `[data-month="${monthToStr(newMonth)}"]`
473
+ ).focus();
474
+ return false;
475
+ }
476
+ return true;
477
+ }
478
+ /**
479
+ * @internal
480
+ */
481
+ _onMonthFocus(month) {
482
+ this._lastFocussedMonth = month;
483
+ }
484
+ get _tabbableMonth() {
485
+ const monthsInSegments = this._segments.filter(
486
+ (segments) => segments.type === "month-picker"
487
+ ).flatMap((segment) => segment.months.flat().map((c) => c.month));
488
+ const candidates = [
489
+ this._lastFocussedMonth,
490
+ this._selectedMonth,
491
+ getCurrentMonth(),
492
+ ...monthsInSegments
493
+ ];
494
+ return candidates.find(
495
+ (month) => month && month.year === this._monthPickerYear && this._isMonthInValidRange(month)
496
+ ) ?? null;
497
+ }
498
+ }
499
+ __decorateClass$1([
500
+ observable
501
+ ], CalendarPickerElement.prototype, "_selectedMonth", 2);
502
+ __decorateClass$1([
503
+ volatile
504
+ ], CalendarPickerElement.prototype, "_isPrevYearDisabled", 1);
505
+ __decorateClass$1([
506
+ volatile
507
+ ], CalendarPickerElement.prototype, "_isNextYearDisabled", 1);
508
+ __decorateClass$1([
509
+ observable
510
+ ], CalendarPickerElement.prototype, "_numCalendars", 2);
511
+ __decorateClass$1([
512
+ observable
513
+ ], CalendarPickerElement.prototype, "_lastFocussedDate", 2);
514
+ __decorateClass$1([
515
+ volatile
516
+ ], CalendarPickerElement.prototype, "_tabbableDate", 1);
517
+ __decorateClass$1([
518
+ observable
519
+ ], CalendarPickerElement.prototype, "_monthPickerYear", 2);
520
+ __decorateClass$1([
521
+ observable
522
+ ], CalendarPickerElement.prototype, "_lastFocussedMonth", 2);
523
+ __decorateClass$1([
524
+ volatile
525
+ ], CalendarPickerElement.prototype, "_tabbableMonth", 1);
526
+ return CalendarPickerElement;
527
+ };
528
+
529
+ var __defProp = Object.defineProperty;
530
+ var __decorateClass = (decorators, target, key, kind) => {
531
+ var result = void 0 ;
532
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
533
+ if (decorator = decorators[i])
534
+ result = (decorator(target, key, result) ) || result;
535
+ if (result) __defProp(target, key, result);
536
+ return result;
537
+ };
538
+ const ValidDateFilter = {
539
+ fromView: (value) => {
540
+ if (value && isValidDateStr(value)) {
541
+ return value;
542
+ }
543
+ return "";
544
+ },
545
+ toView(value) {
546
+ return value;
547
+ }
548
+ };
549
+ const MinMaxCalendarPicker = (SuperClass) => {
550
+ class MinMaxDatePickerElement extends SuperClass {
551
+ /**
552
+ * @internal
553
+ */
554
+ minChanged(_, newMin) {
555
+ if (this.proxy instanceof HTMLInputElement) {
556
+ this.proxy.min = newMin;
557
+ this.validate();
558
+ }
559
+ }
560
+ /**
561
+ * @internal
562
+ */
563
+ get _resolvedMinDate() {
564
+ return this.min;
565
+ }
566
+ /**
567
+ * @internal
568
+ */
569
+ maxChanged(_, newMax) {
570
+ if (this.proxy instanceof HTMLInputElement) {
571
+ this.proxy.max = newMax;
572
+ this.validate();
573
+ }
574
+ }
575
+ /**
576
+ * The latest accepted date.
577
+ * @internal
578
+ */
579
+ get _resolvedMaxDate() {
580
+ return this.max;
581
+ }
582
+ constructor(...args) {
583
+ super(...args);
584
+ this.min = "";
585
+ this.max = "";
586
+ }
587
+ }
588
+ __decorateClass([
589
+ attr({ converter: ValidDateFilter })
590
+ ], MinMaxDatePickerElement.prototype, "min");
591
+ __decorateClass([
592
+ attr({ converter: ValidDateFilter })
593
+ ], MinMaxDatePickerElement.prototype, "max");
594
+ return MinMaxDatePickerElement;
595
+ };
596
+
597
+ function renderDialogHeader(context) {
598
+ const buttonTag = context.tagFor(Button);
599
+ return html`<div class="header" tabindex="-1">
600
+ ${when(
601
+ (x) => x.prevYearButton,
602
+ html`
603
+ <${buttonTag}
604
+ tabindex='1'
605
+ class='vwc-button'
606
+ size='super-condensed'
607
+ icon='${(_, c) => c.parent._inMonthPicker ? "chevron-left-line" : "double-chevron-left-line"}'
608
+ aria-label='${(_, c) => c.parent.locale.calendarPicker.prevYearLabel}'
609
+ ?disabled='${(_, c) => c.parent._isPrevYearDisabled}'
610
+ @click='${(_, c) => c.parent._onPrevYearClick()}'
611
+ ></${buttonTag}>
612
+ `
613
+ )}
614
+ ${when(
615
+ (x) => x.prevMonthButton,
616
+ html`
617
+ <${buttonTag}
618
+ tabindex='1'
619
+ class='vwc-button'
620
+ size='super-condensed'
621
+ icon='chevron-left-line'
622
+ aria-label='${(_, c) => c.parent.locale.calendarPicker.prevMonthLabel}'
623
+ ?disabled='${(_, c) => c.parent._isPrevMonthDisabled}'
624
+ @click='${(_, c) => c.parent._onPrevMonthClick()}'
625
+ ></${buttonTag}>
626
+ `
627
+ )}
628
+ <div class="title">
629
+ ${when(
630
+ (x) => x.titleClickable,
631
+ html`
632
+ <button
633
+ tabindex="1"
634
+ id="${(x) => `grid-label-${x.id}`}"
635
+ class="title-action button"
636
+ aria-live="polite"
637
+ aria-label="${(x) => x.titleAriaLabel}"
638
+ @click="${(_, c) => c.parent._onTitleActionClick()}"
639
+ >
640
+ ${(x) => x.title}
641
+ </button>
642
+ `
643
+ )}
644
+ ${when(
645
+ (x) => !x.titleClickable,
646
+ html`
647
+ <div
648
+ id="${(x) => `grid-label-${x.id}`}"
649
+ class="title-action"
650
+ aria-live="polite"
651
+ >
652
+ ${(x) => x.title}
653
+ </div>
654
+ `
655
+ )}
656
+ </div>
657
+
658
+ ${when(
659
+ (x) => x.nextMonthButton,
660
+ html`
661
+ <${buttonTag}
662
+ tabindex='1'
663
+ class='vwc-button'
664
+ size='super-condensed'
665
+ icon='chevron-right-line'
666
+ aria-label='${(_, c) => c.parent.locale.calendarPicker.nextMonthLabel}'
667
+ ?disabled='${(_, c) => c.parent._isNextMonthDisabled}'
668
+ @click='${(_, c) => c.parent._onNextMonthClick()}'
669
+ ></${buttonTag}>
670
+ `
671
+ )}
672
+ ${when(
673
+ (x) => x.nextYearButton,
674
+ html`
675
+ <${buttonTag}
676
+ tabindex='1'
677
+ class='vwc-button'
678
+ size='super-condensed'
679
+ icon='${(_, c) => c.parent._inMonthPicker ? "chevron-right-line" : "double-chevron-right-line"}'
680
+ aria-label='${(_, c) => c.parent.locale.calendarPicker.nextYearLabel}'
681
+ ?disabled='${(_, c) => c.parent._isNextYearDisabled}'
682
+ @click='${(_, c) => c.parent._onNextYearClick()}'
683
+ ></${buttonTag}>
684
+ `
685
+ )}
686
+ </div>`;
687
+ }
688
+ function renderCalendarGrid(context) {
689
+ const dividerTag = context.tagFor(Divider);
690
+ const visuallyHiddenTag = context.tagFor(VisuallyHidden);
691
+ return html`
692
+ <div
693
+ class='calendar'
694
+ role='grid'
695
+ aria-labelledby='${(x) => `grid-label-${x.id}`}'
696
+ >
697
+ <div class='calendar-weekdays' role='row'>
698
+ ${repeat(
699
+ (x) => x.calendar.weekdays,
700
+ html`
701
+ <div
702
+ class="calendar-weekday"
703
+ role="columnheader"
704
+ aria-label="${(x) => x.name}"
705
+ >
706
+ ${(x) => x.shortName}
707
+ </div>
708
+ `
709
+ )}
710
+ </div>
711
+ <${dividerTag} class='calendar-separator' role='presentation'></${dividerTag}>
712
+ ${repeat(
713
+ (x) => x.calendar.grid,
714
+ html` <div class="calendar-week" role="row">
715
+ ${repeat(
716
+ (x) => x,
717
+ html`
718
+ ${when(
719
+ (x, c) => c.parentContext.parentContext.parent._hideDatesOutsideMonth && x.isOutsideMonth,
720
+ html`<div class="calendar-day"></div>`
721
+ )}
722
+ ${when(
723
+ (x, c) => !c.parentContext.parentContext.parent._hideDatesOutsideMonth || !x.isOutsideMonth,
724
+ html` <span role="gridcell">
725
+ <button
726
+ class="${(x, c) => classNames(
727
+ "calendar-day",
728
+ "button",
729
+ [
730
+ "current",
731
+ x.date === c.parentContext.parentContext.parent._currentDate
732
+ ],
733
+ [
734
+ "selected",
735
+ c.parentContext.parentContext.parent._isDateSelected(
736
+ x.date
737
+ )
738
+ ],
739
+ [
740
+ "range",
741
+ c.parentContext.parentContext.parent._isDateInSelectedRange(
742
+ x.date
743
+ )
744
+ ],
745
+ [
746
+ "start",
747
+ c.parentContext.parentContext.parent._isDateRangeStart(
748
+ x.date
749
+ )
750
+ ],
751
+ [
752
+ "end",
753
+ c.parentContext.parentContext.parent._isDateRangeEnd(
754
+ x.date
755
+ )
756
+ ],
757
+ ["outside-month", x.isOutsideMonth]
758
+ )}"
759
+ ?disabled="${(x, c) => !c.parentContext.parentContext.parent._isDateInValidRange(
760
+ x.date
761
+ )}"
762
+ tabindex="${(x, c) => x.date === c.parentContext.parentContext.parent._tabbableDate ? 1 : -1}"
763
+ data-date="${(x) => x.date}"
764
+ @click="${(x, c) => c.parentContext.parentContext.parent._onDateClick(x.date)}"
765
+ @focus="${(x, c) => c.parentContext.parentContext.parent._onDateFocus(x.date)}"
766
+ @mouseenter="${(x, c) => c.parentContext.parentContext.parent._onDateMouseEnter(
767
+ x.date
768
+ )}"
769
+ @mouseleave="${(x, c) => c.parentContext.parentContext.parent._onDateMouseLeave(
770
+ x.date
771
+ )}"
772
+ @keydown="${(x, c) => c.parentContext.parentContext.parent._onDateKeydown(
773
+ x.date,
774
+ c.event
775
+ )}"
776
+ >
777
+ ${(x) => x.label}
778
+ <${visuallyHiddenTag}>${(x, c) => {
779
+ const picker = c.parentContext.parentContext.parent;
780
+ const announcements = [];
781
+ if (x.date === picker._currentDate) {
782
+ announcements.push(
783
+ picker.locale.calendarPicker.todayLabel
784
+ );
785
+ }
786
+ if (picker._isDateAriaSelected(x.date)) {
787
+ announcements.push(
788
+ picker.locale.calendarPicker.selectedLabel
789
+ );
790
+ }
791
+ return announcements.join(" ");
792
+ }}</${visuallyHiddenTag}>
793
+ </button>
794
+ </span>`
795
+ )}
796
+ </div>
797
+ `
798
+ )}
799
+ </div>`
800
+ )}`;
801
+ }
802
+ function renderMonthPickerGrid(context) {
803
+ const dividerTag = context.tagFor(Divider);
804
+ const visuallyHiddenTag = context.tagFor(VisuallyHidden);
805
+ return html`
806
+ <${dividerTag}
807
+ class='months-separator'
808
+ role='presentation'
809
+ ></${dividerTag}>
810
+ <div
811
+ class='month-grid'
812
+ role='grid'
813
+ aria-labelledby='grid-label'
814
+ >
815
+ ${repeat(
816
+ (x) => x.months,
817
+ html`
818
+ <div class="months-row" role="row">
819
+ ${repeat(
820
+ (x) => x,
821
+ html`
822
+ <span role="gridcell">
823
+ <button
824
+ class="${(x, c) => classNames(
825
+ "month",
826
+ "button",
827
+ [
828
+ "current",
829
+ areMonthsEqual(
830
+ x.month,
831
+ c.parentContext.parentContext.parent._currentMonth
832
+ )
833
+ ],
834
+ [
835
+ "selected",
836
+ areMonthsEqual(
837
+ x.month,
838
+ c.parentContext.parentContext.parent._selectedMonth
839
+ )
840
+ ]
841
+ )}"
842
+ tabindex="${(x, c) => c.parentContext.parentContext.parent._tabbableMonth && areMonthsEqual(
843
+ x.month,
844
+ c.parentContext.parentContext.parent._tabbableMonth
845
+ ) ? 1 : -1}"
846
+ aria-label="${(x) => x.monthName}"
847
+ data-month="${(x) => monthToStr(x.month)}"
848
+ ?disabled="${(x, c) => !c.parentContext.parentContext.parent._isMonthInValidRange(
849
+ x.month
850
+ )}"
851
+ @click="${(x, c) => c.parentContext.parentContext.parent._onMonthClick(
852
+ x.month
853
+ )}"
854
+ @focus="${(x, c) => c.parentContext.parentContext.parent._onMonthFocus(
855
+ x.month
856
+ )}"
857
+ @keydown="${(x, c) => c.parentContext.parentContext.parent._onMonthKeydown(
858
+ x.month,
859
+ c.event
860
+ )}"
861
+ >
862
+ ${(x) => x.label}
863
+ <${visuallyHiddenTag}>${(x, c) => {
864
+ const picker = c.parentContext.parentContext.parent;
865
+ const announcements = [];
866
+ if (areMonthsEqual(x.month, picker._currentMonth)) {
867
+ announcements.push(picker.locale.calendarPicker.currentLabel);
868
+ }
869
+ if (areMonthsEqual(x.month, picker._selectedMonth)) {
870
+ announcements.push(
871
+ picker.locale.calendarPicker.selectedLabel
872
+ );
873
+ }
874
+ return announcements.join(" ");
875
+ }}</${visuallyHiddenTag}>
876
+ </button>
877
+ </span>
878
+ `
879
+ )}
880
+ </div>
881
+ `
882
+ )}
883
+ </div>`;
884
+ }
885
+ const CalendarPickerTemplate = (context) => {
886
+ return html`
887
+ <div class="segments">
888
+ ${repeat(
889
+ (x) => x._segments,
890
+ html` <div class="segment">
891
+ ${renderDialogHeader(context)}
892
+ ${when(
893
+ (x) => x.type === "month-picker",
894
+ html`${renderMonthPickerGrid(context)}`
895
+ )}
896
+ ${when(
897
+ (x) => x.type === "calendar",
898
+ html`${renderCalendarGrid(context)}`
899
+ )}
900
+ </div>`
901
+ )}
902
+ </div>
903
+ `;
904
+ };
905
+
906
+ export { CalendarPicker as C, MinMaxCalendarPicker as M, ValidDateFilter as V, CalendarPickerTemplate as a, compareDateStr as b, calendarStyles as c, currentDateStr as d, formatPresentationDate as f, isValidDateStr as i, parsePresentationDate as p };