@vonage/vivid 5.23.1 → 5.25.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 (522) hide show
  1. package/README.md +1 -1
  2. package/accordion/index.cjs +1 -1
  3. package/accordion/index.js +1 -1
  4. package/accordion-item/index.cjs +1 -1
  5. package/accordion-item/index.js +1 -1
  6. package/audio-player/index.cjs +2 -2
  7. package/audio-player/index.js +3 -3
  8. package/avatar/index.cjs +10 -10
  9. package/avatar/index.js +4 -3
  10. package/badge/index.cjs +1 -1
  11. package/badge/index.js +1 -1
  12. package/breadcrumb-item/index.cjs +9 -5
  13. package/breadcrumb-item/index.js +11 -6
  14. package/bundled/affix.cjs +1 -1
  15. package/bundled/affix.js +1 -1
  16. package/bundled/definition10.cjs +2 -1
  17. package/bundled/definition10.js +3 -2
  18. package/bundled/definition11.cjs +4 -4
  19. package/bundled/definition11.js +4 -3
  20. package/bundled/definition12.cjs +1 -1
  21. package/bundled/definition12.js +1 -0
  22. package/bundled/definition15.cjs +8 -7
  23. package/bundled/definition15.js +27 -24
  24. package/bundled/definition17.cjs +7 -7
  25. package/bundled/definition17.js +22 -109
  26. package/bundled/definition18.cjs +12 -83
  27. package/bundled/definition18.js +20 -426
  28. package/bundled/definition19.cjs +87 -7
  29. package/bundled/definition19.js +433 -16
  30. package/bundled/definition20.cjs +7 -37
  31. package/bundled/definition20.js +17 -172
  32. package/bundled/definition21.cjs +35 -27
  33. package/bundled/definition21.js +155 -154
  34. package/bundled/definition22.cjs +29 -6
  35. package/bundled/definition22.js +172 -20
  36. package/bundled/definition23.cjs +6 -12
  37. package/bundled/definition23.js +17 -32
  38. package/bundled/definition24.cjs +12 -39
  39. package/bundled/definition24.js +33 -67
  40. package/bundled/definition25.cjs +44 -0
  41. package/bundled/definition25.js +81 -0
  42. package/bundled/definition3.cjs +5 -5
  43. package/bundled/definition3.js +10 -40
  44. package/bundled/definition4.cjs +6 -6
  45. package/bundled/definition4.js +4 -3
  46. package/bundled/definition6.cjs +11 -11
  47. package/bundled/definition6.js +4 -3
  48. package/bundled/definition9.cjs +12 -6
  49. package/bundled/definition9.js +66 -43
  50. package/bundled/extractOptions.cjs +1 -0
  51. package/bundled/extractOptions.js +11 -0
  52. package/bundled/icon.cjs +1 -0
  53. package/bundled/icon.js +34 -0
  54. package/bundled/listbox.cjs +1 -1
  55. package/bundled/listbox.js +28 -12
  56. package/bundled/mixins.cjs +8 -8
  57. package/bundled/mixins.js +4 -3
  58. package/bundled/optgroup.cjs +1 -0
  59. package/bundled/optgroup.js +27 -0
  60. package/bundled/option.cjs +1 -0
  61. package/bundled/option.js +93 -0
  62. package/bundled/render-in-light-dom.cjs +1 -1
  63. package/bundled/render-in-light-dom.js +16 -19
  64. package/bundled/vivid-element.cjs +1 -1
  65. package/bundled/vivid-element.js +9 -1
  66. package/card/index.cjs +22 -22
  67. package/card/index.js +4 -3
  68. package/color-picker/index.cjs +18 -18
  69. package/color-picker/index.js +4 -3
  70. package/combobox/definition.cjs +1 -1
  71. package/combobox/definition.js +1 -1
  72. package/combobox/index.cjs +7 -7
  73. package/combobox/index.js +31 -21
  74. package/country/definition.cjs +1 -1
  75. package/country/definition.js +1 -1
  76. package/country/index.cjs +1 -1
  77. package/country/index.js +1 -1
  78. package/country-group/definition.cjs +1 -1
  79. package/country-group/definition.js +1 -1
  80. package/country-group/index.cjs +1 -1
  81. package/country-group/index.js +2 -2
  82. package/custom-elements.json +8438 -7866
  83. package/data-grid/definition.cjs +1 -1
  84. package/data-grid/definition.js +1 -1
  85. package/data-grid/index.cjs +26 -26
  86. package/data-grid/index.js +9 -8
  87. package/date-picker/definition.cjs +1 -1
  88. package/date-picker/definition.js +1 -1
  89. package/date-picker/index.cjs +1 -1
  90. package/date-picker/index.js +1 -1
  91. package/date-range-picker/definition.cjs +1 -1
  92. package/date-range-picker/definition.js +1 -1
  93. package/date-range-picker/index.cjs +1 -1
  94. package/date-range-picker/index.js +1 -1
  95. package/date-time-picker/definition.cjs +1 -1
  96. package/date-time-picker/definition.js +1 -1
  97. package/date-time-picker/index.cjs +1 -1
  98. package/date-time-picker/index.js +1 -1
  99. package/dial-pad/definition.cjs +1 -1
  100. package/dial-pad/definition.js +1 -1
  101. package/dial-pad/index.cjs +7 -7
  102. package/dial-pad/index.js +124 -54
  103. package/dialog/definition.cjs +1 -1
  104. package/dialog/definition.js +1 -1
  105. package/dialog/index.cjs +14 -14
  106. package/dialog/index.js +4 -3
  107. package/divider/definition.cjs +1 -1
  108. package/divider/definition.js +1 -1
  109. package/divider/index.cjs +1 -1
  110. package/divider/index.js +1 -1
  111. package/empty-state/definition.cjs +1 -1
  112. package/empty-state/definition.js +1 -1
  113. package/empty-state/index.cjs +3 -3
  114. package/empty-state/index.js +4 -3
  115. package/fab/definition.cjs +1 -1
  116. package/fab/definition.js +1 -1
  117. package/file-picker/definition.cjs +1 -1
  118. package/file-picker/definition.js +1 -1
  119. package/file-picker/index.cjs +7 -7
  120. package/file-picker/index.js +4 -3
  121. package/flag/definition.cjs +1 -1
  122. package/flag/definition.js +1 -1
  123. package/header/definition.cjs +1 -1
  124. package/header/definition.js +1 -1
  125. package/header/index.cjs +3 -3
  126. package/header/index.js +3 -3
  127. package/icon/definition.cjs +2 -1
  128. package/icon/definition.js +2 -1
  129. package/index.cjs +209 -198
  130. package/index.js +59 -54
  131. package/kbd-key/definition.cjs +1 -1
  132. package/kbd-key/definition.js +1 -1
  133. package/kbd-shortcut/definition.cjs +1 -1
  134. package/kbd-shortcut/definition.js +1 -1
  135. package/layout/definition.cjs +1 -1
  136. package/layout/definition.js +1 -1
  137. package/lib/accordion-item/accordion-item.d.ts +3 -1
  138. package/lib/action-group/action-group.d.ts +1 -1
  139. package/lib/alert/alert.d.ts +2 -2
  140. package/lib/audio-player/audio-player.d.ts +1 -1
  141. package/lib/avatar/avatar.d.ts +1 -1
  142. package/lib/badge/badge.d.ts +1 -1
  143. package/lib/banner/banner.d.ts +3 -3
  144. package/lib/breadcrumb/breadcrumb.d.ts +1 -1
  145. package/lib/breadcrumb-item/breadcrumb-item.d.ts +1 -1
  146. package/lib/button/button.d.ts +3 -3
  147. package/lib/calendar-event/calendar-event.d.ts +1 -1
  148. package/lib/card/card.d.ts +1 -1
  149. package/lib/checkbox/checkbox.d.ts +6 -6
  150. package/lib/color-picker/color-picker.d.ts +7 -7
  151. package/lib/combobox/combobox.d.ts +8 -8
  152. package/lib/components.d.ts +2 -0
  153. package/lib/country-group/country-group.d.ts +2 -2
  154. package/lib/data-grid/data-grid-cell.d.ts +4 -3
  155. package/lib/data-grid/data-grid-row.d.ts +3 -2
  156. package/lib/data-grid/data-grid.options.d.ts +5 -0
  157. package/lib/date-picker/date-picker.d.ts +8 -8
  158. package/lib/date-range-picker/date-range-picker.d.ts +4 -4
  159. package/lib/date-time-picker/date-time-picker.d.ts +8 -8
  160. package/lib/dial-pad/dial-pad.d.ts +2 -2
  161. package/lib/dialog/dialog.d.ts +2 -2
  162. package/lib/divider/divider.d.ts +1 -1
  163. package/lib/fab/fab.d.ts +1 -1
  164. package/lib/file-picker/file-picker.d.ts +7 -7
  165. package/lib/header/header.d.ts +1 -1
  166. package/lib/listbox/definition.d.ts +3 -0
  167. package/lib/listbox/index.d.ts +1 -0
  168. package/lib/listbox/listbox.d.ts +1302 -0
  169. package/lib/listbox/listbox.template.d.ts +3 -0
  170. package/lib/listbox/variations.browser-spec.d.ts +1 -0
  171. package/lib/menu/menu.d.ts +2 -3
  172. package/lib/menu-item/menu-item.d.ts +3 -3
  173. package/lib/nav/nav.d.ts +1 -1
  174. package/lib/nav-disclosure/nav-disclosure.d.ts +2 -2
  175. package/lib/nav-item/nav-item.d.ts +2 -2
  176. package/lib/note/note.d.ts +1 -1
  177. package/lib/number-field/number-field.d.ts +9 -10
  178. package/lib/optgroup/definition.d.ts +3 -0
  179. package/lib/optgroup/index.d.ts +1 -0
  180. package/lib/optgroup/optgroup.d.ts +430 -0
  181. package/lib/optgroup/optgroup.template.d.ts +2 -0
  182. package/lib/optgroup/variations.browser-spec.d.ts +1 -0
  183. package/lib/option/option.d.ts +2 -2
  184. package/lib/pagination/pagination.d.ts +1 -1
  185. package/lib/popover/popover.d.ts +2 -2
  186. package/lib/progress/progress.d.ts +1 -1
  187. package/lib/progress-ring/progress-ring.d.ts +1 -1
  188. package/lib/radio/radio.d.ts +3 -3
  189. package/lib/radio-group/radio-group.d.ts +1 -1
  190. package/lib/range-slider/range-slider.d.ts +3 -3
  191. package/lib/rich-text-editor/rich-text-editor.d.ts +1 -1
  192. package/lib/rich-text-editor/rte/features/base.d.ts +1 -0
  193. package/lib/rich-text-editor/rte/utils/default-textblock.d.ts +2 -2
  194. package/lib/searchable-select/option-tag.d.ts +1 -1
  195. package/lib/searchable-select/searchable-select.d.ts +47 -47
  196. package/lib/select/select.d.ts +9 -9
  197. package/lib/selectable-box/selectable-box.d.ts +1 -1
  198. package/lib/simple-color-picker/simple-color-picker.d.ts +2 -2
  199. package/lib/slider/slider.d.ts +3 -3
  200. package/lib/split-button/split-button.d.ts +3 -3
  201. package/lib/status/status.d.ts +1 -1
  202. package/lib/switch/switch.d.ts +2 -2
  203. package/lib/tab/tab.d.ts +3 -3
  204. package/lib/tab-panel/tab-panel.d.ts +1 -1
  205. package/lib/table/table-cell.d.ts +1 -1
  206. package/lib/table/table-header-cell.d.ts +1 -1
  207. package/lib/table/table-row.d.ts +1 -1
  208. package/lib/table/table-sorting-button.d.ts +1 -1
  209. package/lib/tag/tag.d.ts +3 -3
  210. package/lib/tag-group/tag-group.d.ts +1 -1
  211. package/lib/tag-name-map.d.ts +3 -1
  212. package/lib/text-area/text-area.d.ts +8 -8
  213. package/lib/text-field/text-field.d.ts +10 -9
  214. package/lib/time-picker/time-picker.d.ts +4 -4
  215. package/lib/toggletip/toggletip.d.ts +3 -2
  216. package/lib/tooltip/tooltip.d.ts +3 -2
  217. package/lib/tree-item/tree-item.d.ts +2 -2
  218. package/lib/tree-view/tree-view.d.ts +1 -1
  219. package/lib/video-player/video-player.d.ts +1 -1
  220. package/listbox/definition.cjs +5 -0
  221. package/listbox/definition.js +2 -0
  222. package/listbox/index.cjs +11 -0
  223. package/listbox/index.js +540 -0
  224. package/menu/index.cjs +1 -1
  225. package/menu/index.js +1 -1
  226. package/menu-item/index.cjs +1 -1
  227. package/menu-item/index.js +1 -1
  228. package/nav/definition.cjs +1 -1
  229. package/nav/definition.js +1 -1
  230. package/nav-disclosure/definition.cjs +1 -1
  231. package/nav-disclosure/definition.js +1 -1
  232. package/nav-disclosure/index.cjs +4 -4
  233. package/nav-disclosure/index.js +4 -3
  234. package/nav-item/definition.cjs +1 -1
  235. package/nav-item/definition.js +1 -1
  236. package/note/definition.cjs +1 -1
  237. package/note/definition.js +1 -1
  238. package/number-field/definition.cjs +1 -1
  239. package/number-field/definition.js +1 -1
  240. package/number-field/index.cjs +1 -1
  241. package/number-field/index.js +1 -1
  242. package/optgroup/definition.cjs +6 -0
  243. package/optgroup/definition.js +3 -0
  244. package/optgroup/index.cjs +1 -0
  245. package/optgroup/index.js +4 -0
  246. package/option/definition.cjs +2 -1
  247. package/option/definition.js +2 -1
  248. package/package.json +9 -8
  249. package/pagination/definition.cjs +1 -1
  250. package/pagination/definition.js +1 -1
  251. package/platform-switch/definition.cjs +1 -1
  252. package/platform-switch/definition.js +1 -1
  253. package/popover/definition.cjs +1 -1
  254. package/popover/definition.js +1 -1
  255. package/popover/index.cjs +5 -5
  256. package/popover/index.js +4 -3
  257. package/progress/definition.cjs +1 -1
  258. package/progress/definition.js +1 -1
  259. package/radio/definition.cjs +1 -1
  260. package/radio/definition.js +1 -1
  261. package/radio-group/definition.cjs +1 -1
  262. package/radio-group/definition.js +1 -1
  263. package/range-slider/definition.cjs +1 -1
  264. package/range-slider/definition.js +1 -1
  265. package/rich-text-editor/definition.cjs +1 -1
  266. package/rich-text-editor/definition.js +1 -1
  267. package/rich-text-editor/index.cjs +13 -13
  268. package/rich-text-editor/index.js +26 -23
  269. package/rich-text-view/definition.cjs +1 -1
  270. package/rich-text-view/definition.js +1 -1
  271. package/searchable-select/definition.cjs +1 -1
  272. package/searchable-select/definition.js +1 -1
  273. package/searchable-select/index.cjs +23 -23
  274. package/searchable-select/index.js +67 -49
  275. package/select/definition.cjs +1 -1
  276. package/select/definition.js +1 -1
  277. package/select/index.cjs +1 -1
  278. package/select/index.js +1 -1
  279. package/selectable-box/definition.cjs +1 -1
  280. package/selectable-box/definition.js +1 -1
  281. package/shared/aria/delegates-aria.d.ts +1 -1
  282. package/shared/aria/host-semantics.d.ts +1 -1
  283. package/shared/color-picker/base-color-picker.d.ts +1 -1
  284. package/shared/feedback/feedback-message.d.ts +1 -1
  285. package/shared/feedback/mixins.d.ts +2 -2
  286. package/shared/foundation/button/button.d.ts +2 -2
  287. package/shared/foundation/form-associated/form-associated.d.ts +2 -2
  288. package/shared/foundation/listbox/extractOptions.d.ts +2 -0
  289. package/shared/foundation/listbox/listbox.d.ts +2 -0
  290. package/shared/listbox/commands.d.ts +17 -0
  291. package/shared/listbox/move.d.ts +6 -0
  292. package/shared/listbox/options.d.ts +12 -0
  293. package/shared/listbox/selection.d.ts +28 -0
  294. package/shared/listbox/state.d.ts +26 -0
  295. package/shared/listbox/typeahead.d.ts +8 -0
  296. package/shared/listbox/with-options-filter.d.ts +440 -0
  297. package/shared/listbox/with-options.d.ts +862 -0
  298. package/shared/patterns/affix.d.ts +2 -2
  299. package/shared/patterns/anchored.d.ts +2 -2
  300. package/shared/patterns/char-count/char-count.d.ts +1 -1
  301. package/shared/patterns/form-elements/form-element.d.ts +1 -1
  302. package/shared/patterns/form-elements/with-contextual-help.d.ts +1 -1
  303. package/shared/patterns/form-elements/with-error-text.d.ts +1 -1
  304. package/shared/patterns/form-elements/with-success-text.d.ts +1 -1
  305. package/shared/patterns/kbd-shortcut.d.ts +1 -1
  306. package/shared/patterns/linkable.d.ts +1 -1
  307. package/shared/patterns/localized.d.ts +2 -2
  308. package/shared/patterns/trapped-focus.d.ts +1 -1
  309. package/shared/picker-field/mixins/calendar-picker.d.ts +2 -2
  310. package/shared/picker-field/mixins/calendar-picker.template.d.ts +2 -2
  311. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +1 -1
  312. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +2 -2
  313. package/shared/picker-field/mixins/single-date-picker.d.ts +2 -2
  314. package/shared/picker-field/mixins/single-value-picker.d.ts +2 -2
  315. package/shared/picker-field/mixins/time-selection-picker.d.ts +2 -2
  316. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +4 -4
  317. package/shared/picker-field/picker-field.d.ts +7 -7
  318. package/side-drawer/definition.cjs +1 -1
  319. package/side-drawer/definition.js +1 -1
  320. package/simple-color-picker/definition.cjs +1 -1
  321. package/simple-color-picker/definition.js +1 -1
  322. package/simple-color-picker/index.cjs +6 -6
  323. package/simple-color-picker/index.js +4 -3
  324. package/split-button/definition.cjs +1 -1
  325. package/split-button/definition.js +1 -1
  326. package/split-button/index.cjs +1 -0
  327. package/split-button/index.js +1 -0
  328. package/status/definition.cjs +1 -1
  329. package/status/definition.js +1 -1
  330. package/switch/definition.cjs +1 -1
  331. package/switch/definition.js +1 -1
  332. package/switch/index.cjs +6 -5
  333. package/switch/index.js +16 -14
  334. package/tab/definition.cjs +1 -1
  335. package/tab/definition.js +1 -1
  336. package/tab-panel/definition.cjs +1 -1
  337. package/tab-panel/definition.js +1 -1
  338. package/table/definition.cjs +1 -1
  339. package/table/definition.js +1 -1
  340. package/table/index.cjs +13 -13
  341. package/table/index.js +4 -3
  342. package/tabs/definition.cjs +1 -1
  343. package/tabs/definition.js +1 -1
  344. package/tag/definition.cjs +1 -1
  345. package/tag/definition.js +1 -1
  346. package/tag/index.cjs +11 -11
  347. package/tag/index.js +4 -3
  348. package/tag-group/definition.cjs +1 -1
  349. package/tag-group/definition.js +1 -1
  350. package/text-area/definition.cjs +1 -1
  351. package/text-area/definition.js +1 -1
  352. package/time-picker/definition.cjs +1 -1
  353. package/time-picker/definition.js +1 -1
  354. package/tree-item/definition.cjs +1 -1
  355. package/tree-item/definition.js +1 -1
  356. package/tree-view/definition.cjs +1 -1
  357. package/tree-view/definition.js +1 -1
  358. package/unbundled/affix.cjs +2 -2
  359. package/unbundled/affix.js +1 -1
  360. package/unbundled/base-progress.cjs +1 -1
  361. package/unbundled/base-progress.js +1 -1
  362. package/unbundled/button.cjs +2 -2
  363. package/unbundled/button.js +2 -2
  364. package/unbundled/definition.cjs +2 -65
  365. package/unbundled/definition.js +4 -61
  366. package/unbundled/definition11.cjs +4 -3
  367. package/unbundled/definition11.js +3 -2
  368. package/unbundled/definition12.cjs +3 -2
  369. package/unbundled/definition12.js +3 -2
  370. package/unbundled/definition13.cjs +1 -1
  371. package/unbundled/definition13.js +1 -1
  372. package/unbundled/definition14.cjs +2 -1
  373. package/unbundled/definition14.js +2 -1
  374. package/unbundled/definition17.cjs +9 -4
  375. package/unbundled/definition17.js +9 -4
  376. package/unbundled/definition2.cjs +14 -3
  377. package/unbundled/definition2.js +15 -4
  378. package/unbundled/definition21.cjs +2 -1
  379. package/unbundled/definition21.js +2 -1
  380. package/unbundled/definition23.cjs +3 -1
  381. package/unbundled/definition23.js +4 -2
  382. package/unbundled/definition24.cjs +6 -4
  383. package/unbundled/definition24.js +6 -4
  384. package/unbundled/definition25.cjs +2 -1
  385. package/unbundled/definition25.js +2 -1
  386. package/unbundled/definition26.cjs +7 -4
  387. package/unbundled/definition26.js +7 -4
  388. package/unbundled/definition27.cjs +39 -5
  389. package/unbundled/definition27.js +40 -6
  390. package/unbundled/definition28.cjs +4 -3
  391. package/unbundled/definition28.js +4 -3
  392. package/unbundled/definition29.cjs +5 -168
  393. package/unbundled/definition29.js +11 -162
  394. package/unbundled/definition30.cjs +26 -506
  395. package/unbundled/definition30.js +24 -498
  396. package/unbundled/definition31.cjs +503 -39
  397. package/unbundled/definition31.js +501 -37
  398. package/unbundled/definition32.cjs +39 -239
  399. package/unbundled/definition32.js +36 -236
  400. package/unbundled/definition33.cjs +236 -74
  401. package/unbundled/definition33.js +233 -71
  402. package/unbundled/definition34.cjs +74 -1968
  403. package/unbundled/definition34.js +70 -1940
  404. package/unbundled/definition35.cjs +1993 -26
  405. package/unbundled/definition35.js +1965 -27
  406. package/unbundled/definition36.cjs +26 -111
  407. package/unbundled/definition36.js +23 -103
  408. package/unbundled/definition37.cjs +53 -294
  409. package/unbundled/definition37.js +50 -291
  410. package/unbundled/definition38.cjs +282 -132
  411. package/unbundled/definition38.js +279 -129
  412. package/unbundled/definition39.cjs +165 -339
  413. package/unbundled/definition39.js +163 -337
  414. package/unbundled/definition40.cjs +395 -227
  415. package/unbundled/definition40.js +393 -225
  416. package/unbundled/definition41.cjs +269 -47
  417. package/unbundled/definition41.js +264 -42
  418. package/unbundled/definition42.cjs +48 -67
  419. package/unbundled/definition42.js +45 -64
  420. package/unbundled/definition43.cjs +56 -383
  421. package/unbundled/definition43.js +55 -382
  422. package/unbundled/definition44.cjs +387 -44
  423. package/unbundled/definition44.js +383 -40
  424. package/unbundled/definition45.cjs +53 -45
  425. package/unbundled/definition45.js +49 -41
  426. package/unbundled/definition46.cjs +40 -164
  427. package/unbundled/definition46.js +36 -160
  428. package/unbundled/definition47.cjs +171 -31
  429. package/unbundled/definition47.js +168 -22
  430. package/unbundled/definition48.cjs +30 -89
  431. package/unbundled/definition48.js +22 -87
  432. package/unbundled/definition49.cjs +589 -48
  433. package/unbundled/definition49.js +587 -47
  434. package/unbundled/definition50.cjs +90 -21
  435. package/unbundled/definition50.js +88 -16
  436. package/unbundled/definition51.cjs +47 -32
  437. package/unbundled/definition51.js +44 -29
  438. package/unbundled/definition52.cjs +22 -323
  439. package/unbundled/definition52.js +16 -320
  440. package/unbundled/definition53.cjs +33 -212
  441. package/unbundled/definition53.js +29 -208
  442. package/unbundled/definition54.cjs +318 -41
  443. package/unbundled/definition54.js +314 -37
  444. package/unbundled/definition55.cjs +199 -253
  445. package/unbundled/definition55.js +193 -247
  446. package/unbundled/definition56.cjs +45 -53
  447. package/unbundled/definition56.js +42 -49
  448. package/unbundled/definition57.cjs +255 -133
  449. package/unbundled/definition57.js +253 -128
  450. package/unbundled/definition58.cjs +49 -245
  451. package/unbundled/definition58.js +47 -244
  452. package/unbundled/definition59.cjs +127 -444
  453. package/unbundled/definition59.js +124 -444
  454. package/unbundled/definition6.cjs +2 -1
  455. package/unbundled/definition6.js +2 -1
  456. package/unbundled/definition60.cjs +230 -3746
  457. package/unbundled/definition60.js +223 -3576
  458. package/unbundled/definition61.cjs +427 -739
  459. package/unbundled/definition61.js +425 -737
  460. package/unbundled/definition62.cjs +3762 -103
  461. package/unbundled/definition62.js +3593 -97
  462. package/unbundled/definition63.cjs +678 -886
  463. package/unbundled/definition63.js +672 -877
  464. package/unbundled/definition64.cjs +104 -108
  465. package/unbundled/definition64.js +100 -104
  466. package/unbundled/definition65.cjs +999 -65
  467. package/unbundled/definition65.js +995 -58
  468. package/unbundled/definition66.cjs +105 -155
  469. package/unbundled/definition66.js +101 -151
  470. package/unbundled/definition67.cjs +71 -121
  471. package/unbundled/definition67.js +63 -119
  472. package/unbundled/definition68.cjs +162 -51
  473. package/unbundled/definition68.js +158 -47
  474. package/unbundled/definition69.cjs +117 -75
  475. package/unbundled/definition69.js +116 -71
  476. package/unbundled/definition70.cjs +59 -21
  477. package/unbundled/definition70.js +56 -15
  478. package/unbundled/definition71.cjs +80 -75
  479. package/unbundled/definition71.js +76 -74
  480. package/unbundled/definition72.cjs +20 -305
  481. package/unbundled/definition72.js +14 -230
  482. package/unbundled/definition73.cjs +75 -315
  483. package/unbundled/definition73.js +74 -307
  484. package/unbundled/definition74.cjs +308 -30
  485. package/unbundled/definition74.js +231 -24
  486. package/unbundled/definition75.cjs +314 -109
  487. package/unbundled/definition75.js +304 -106
  488. package/unbundled/definition76.cjs +26 -250
  489. package/unbundled/definition76.js +21 -246
  490. package/unbundled/definition77.cjs +133 -27
  491. package/unbundled/definition77.js +124 -25
  492. package/unbundled/definition78.cjs +230 -116
  493. package/unbundled/definition78.js +227 -107
  494. package/unbundled/definition79.cjs +28 -203
  495. package/unbundled/definition79.js +26 -193
  496. package/unbundled/definition80.cjs +126 -477
  497. package/unbundled/definition80.js +118 -473
  498. package/unbundled/definition81.cjs +221 -0
  499. package/unbundled/definition81.js +202 -0
  500. package/unbundled/definition82.cjs +517 -0
  501. package/unbundled/definition82.js +497 -0
  502. package/unbundled/extractOptions.cjs +21 -0
  503. package/unbundled/extractOptions.js +16 -0
  504. package/unbundled/icon.cjs +67 -0
  505. package/unbundled/icon.js +61 -0
  506. package/unbundled/linkable.cjs +1 -1
  507. package/unbundled/linkable.js +1 -1
  508. package/unbundled/listbox.cjs +29 -7
  509. package/unbundled/listbox.js +29 -7
  510. package/unbundled/mixins.cjs +2 -1
  511. package/unbundled/mixins.js +2 -1
  512. package/unbundled/optgroup.cjs +66 -0
  513. package/unbundled/optgroup.js +54 -0
  514. package/unbundled/option.cjs +176 -0
  515. package/unbundled/option.js +164 -0
  516. package/unbundled/time-selection-picker.template.cjs +1 -1
  517. package/unbundled/time-selection-picker.template.js +1 -1
  518. package/unbundled/vivid-element.cjs +10 -1
  519. package/unbundled/vivid-element.js +10 -1
  520. package/video-player/definition.cjs +1 -1
  521. package/video-player/definition.js +1 -1
  522. package/vivid.api.json +568 -231
@@ -1,65 +1,408 @@
1
1
  import { d as createRegisterFunction, t as VividElement, u as defineVividComponent } from "./vivid-element.js";
2
+ import { t as iconDefinition } from "./definition.js";
2
3
  import { t as __decorate } from "./decorate.js";
4
+ import { t as Icon } from "./icon.js";
3
5
  import { n as delegateAria, t as DelegatesAria } from "./delegates-aria.js";
4
- import { r as Elevation, t as elevationDefinition } from "./definition7.js";
5
- import { attr, html } from "@microsoft/fast-element";
6
+ import { n as FormAssociated } from "./form-associated.js";
7
+ import { t as Localized } from "./localized.js";
8
+ import { i as Button, t as buttonDefinition } from "./definition6.js";
9
+ import { r as feedbackMessageDefinition, t as WithFeedback } from "./mixins.js";
10
+ import { t as FormElement } from "./form-element.js";
11
+ import { t as WithErrorText } from "./with-error-text.js";
12
+ import { t as WithContextualHelp } from "./with-contextual-help.js";
13
+ import { ExecutionContext, Observable, attr, html, nullableNumberConverter, observable, ref, repeat, slotted, volatile, when } from "@microsoft/fast-element";
6
14
  import { classNames } from "@microsoft/fast-web-utilities";
7
- //#region src/lib/header/header.scss?inline
8
- var header_default = ".base{z-index:1;block-size:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) + calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16)));font:var(--vvd-typography-heading-4);inline-size:100%}.base .header-content{align-items:center;column-gap:4px;display:inline-flex}.container{box-sizing:border-box;background-color:var(--header-bg-color,var(--vvd-color-canvas));block-size:inherit;color:var(--vvd-color-canvas-text);justify-content:space-between;column-gap:12px;padding-block:8px;padding-inline:16px;display:flex}.container[part~=vvd-theme-alternate]{color-scheme:var(--vvd-color-scheme)}.app-content{--vvd-header-block-size:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) + calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16)))}";
15
+ //#region src/lib/file-picker/file-picker.scss?inline
16
+ var file_picker_default = ".label-wrapper{align-items:center;gap:var(--label-wrapper-gap,4px);flex-direction:row;display:flex}.label-wrapper[hidden]{display:none}.label:not(slot),.label::slotted(label){flex:0 auto}:host{max-inline-size:400px;display:block}:host([disabled]){cursor:not-allowed}.base{block-size:inherit;max-block-size:inherit;--_low-ink-color:var(--vvd-color-neutral-600);flex-direction:column;display:flex}.control-wrapper{block-size:inherit;max-block-size:inherit;flex-direction:column;gap:4px;display:flex}.control{box-sizing:border-box;border:1px dashed var(--vvd-color-neutral-400);background-color:var(--vvd-color-cta-50);color:var(--vvd-color-neutral-600);cursor:pointer;font:var(--vvd-typography-base);border-radius:8px;outline:none;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;min-block-size:52px;inline-size:100%;padding:16px;display:flex;position:relative}@media (prefers-reduced-motion:no-preference){.control{transition:all .3s}}.control .upload-text{color:var(--vvd-color-neutral-600);isolation:isolate;pointer-events:none;text-align:center;justify-content:center;align-items:center;display:flex}@media (prefers-reduced-motion:no-preference){.control .upload-text{transition:all .3s}}.control.disabled{border-color:var(--vvd-color-neutral-300);background-color:var(--vvd-color-neutral-100);box-shadow:none;color:var(--vvd-color-neutral-300);pointer-events:none;transform:none}.control.disabled .upload-text{color:var(--vvd-color-neutral-300)}@media (hover:hover){.control:hover .upload-text{color:var(--vvd-color-neutral-800)}}.control.drag-hover .upload-text{color:var(--vvd-color-neutral-800)}.control:not(.size-expanded){min-block-size:52px}.control.size-expanded{min-block-size:120px}.control:focus-visible{--focus-stroke-gap-color:transparent;box-shadow:0 0 0 4px color-mix(in sRGB, var(--focus-stroke-color,var(--vvd-color-cta-500)), transparent 85%), inset 0 0 0 3px var(--focus-stroke-gap-color,currentColor);outline:1px solid var(--focus-stroke-color,var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset,0px))}.control:active,.control:focus-visible{border-color:var(--vvd-color-cta-400);background-color:var(--vvd-color-cta-100);transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}@media (hover:hover){.control:hover{border-color:var(--vvd-color-cta-400);background-color:var(--vvd-color-cta-100);transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}}.control:active{transform:translateY(0);box-shadow:0 1px 4px #0000001a}.control.drag-hover{border-color:var(--vvd-color-cta-200);background-color:var(--vvd-color-cta-200);outline:2px dashed var(--vvd-color-cta-500);transform:scale(1.02)}.upload-icon{color:var(--vvd-color-cta-600);pointer-events:none}@media (prefers-reduced-motion:no-preference){.upload-icon{transition:all .3s;animation:2s ease-in-out infinite subtle-pulse}}@media (hover:hover){.control:hover .upload-icon{color:var(--vvd-color-cta-700);animation:none;transform:scale(1.1)}}.control:active .upload-icon{transform:scale(1.05)}.control.drag-hover .upload-icon{color:var(--vvd-color-neutral-800);animation:none;transform:scale(1.15)}.control.disabled .upload-icon{color:var(--vvd-color-neutral-300);animation:none}@keyframes subtle-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.main{pointer-events:none}.preview{box-sizing:border-box;border:1px solid var(--vvd-color-neutral-300);background-color:var(--file-picker-list-item-background-color,var(--vvd-color-canvas));border-radius:8px;grid-template-rows:auto auto;grid-template-columns:1fr auto;inline-size:100%;padding:8px;display:grid}.preview .details{min-width:0;flex-direction:column;max-inline-size:100%;display:flex}.preview .details .filename{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.preview .details .size{color:var(--vvd-color-neutral-600);font:var(--vvd-typography-base-condensed)}.preview .error-message{color:var(--vvd-color-alert-600);font:var(--vvd-typography-base-condensed-bold);align-items:center;gap:4px;margin-block-start:4px;display:flex}.preview:not(.has-error) .error-message{display:none}.preview.has-error{border:1px solid var(--vvd-color-alert-500);background-color:var(--vvd-color-alert-50)}.preview.has-error .size{display:none}.preview .remove-btn{grid-area:1/2/-1/-1;align-self:center;display:inline}.preview-list{--scrollbar-track-color:transparent;--scrollbar-thumb-color:color-mix(in sRGB, var(--vvd-color-neutral-950), transparent 70%);scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}.preview-list ::-webkit-scrollbar{width:4px}.preview-list ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.preview-list ::-webkit-scrollbar-thumb{background-color:var(--scrollbar-fallback-track-color,var(--scrollbar-thumb-color));border:0;border-radius:4px}.preview-list{flex-direction:column;gap:12px;margin-block-start:12px;display:flex;overflow-y:auto}.preview-list:not(:has(.preview)){display:none}.hidden-input{visibility:hidden;width:0;height:0;position:absolute;top:0;left:0}";
9
17
  //#endregion
10
- //#region src/lib/header/header.ts
18
+ //#region src/lib/file-picker/data-transfer.ts
19
+ /** Extracts files from a DataTransfer, including files from directories. */
20
+ async function filesFromDataTransfer(dataTransfer) {
21
+ return dataTransfer.items?.[0]?.webkitGetAsEntry != null ? await filesFromDataTransferItems(dataTransfer.items) : Array.from(dataTransfer.files);
22
+ }
23
+ async function filesFromDataTransferItems(items) {
24
+ const result = [];
25
+ for (const item of items) {
26
+ const file = item.getAsFile();
27
+ if (file) result.push(Promise.resolve([file]));
28
+ else {
29
+ const entry = item.webkitGetAsEntry();
30
+ if (entry) result.push(filesFromEntry(entry, false));
31
+ }
32
+ }
33
+ return (await Promise.all(result)).flat();
34
+ }
35
+ var filesFromEntry = (entry, ignoreHiddenFiles) => {
36
+ const handleFileEntry = (file) => new Promise((resolve, reject) => {
37
+ file.file((f) => {
38
+ if (ignoreHiddenFiles && f.name.substring(0, 1) === ".") resolve([]);
39
+ else resolve([f]);
40
+ }, reject);
41
+ });
42
+ const promise = entry.isFile ? handleFileEntry(entry) : entry.isDirectory ? filesFromDirectory(entry) : Promise.resolve([]);
43
+ promise.catch(() => null);
44
+ return promise;
45
+ };
46
+ var filesFromDirectory = async (directory) => new Promise((resolve, reject) => {
47
+ const result = [];
48
+ const dirReader = directory.createReader();
49
+ const readEntries = () => {
50
+ dirReader.readEntries((entries) => {
51
+ for (const entry of entries) result.push(filesFromEntry(entry, true));
52
+ if (entries.length) readEntries();
53
+ else resolve(Promise.all(result).then((r) => r.flat()));
54
+ }, reject);
55
+ };
56
+ readEntries();
57
+ });
58
+ //#endregion
59
+ //#region src/lib/file-picker/accept.ts
60
+ /** Match a file against an accept string, like native file input */
61
+ function isAcceptedFileType(file, accept) {
62
+ if (!accept) return true;
63
+ const validTypes = accept.split(",");
64
+ const isBasePattern = (type) => /\/\*$/.test(type);
65
+ const baseType = (type) => type.replace(/\/.*$/, "");
66
+ for (let validType of validTypes) {
67
+ validType = validType.trim();
68
+ if (validType.charAt(0) === ".") {
69
+ if (file.name.toLowerCase().endsWith(validType.toLowerCase())) return true;
70
+ } else if (isBasePattern(validType)) {
71
+ if (baseType(file.type) === baseType(validType)) return true;
72
+ } else if (file.type === validType) return true;
73
+ }
74
+ return false;
75
+ }
76
+ //#endregion
77
+ //#region src/lib/file-picker/file-picker.ts
11
78
  /**
12
79
  * @public
13
- * @component header
14
- * @slot - Default slot.
15
- * @slot action-items - Nodes assigned to action-items slot will be set at the end of the header.
16
- * @slot app-content - Content vertically aligned with header.
80
+ * @component file-picker
81
+ * @slot helper-text - Describes how to use the File Picker. Alternative to the `helper-text` attribute.
82
+ * @event {CustomEvent<undefined>} change - Emitted when files are added or removed.
17
83
  */
18
- var Header = class extends DelegatesAria(VividElement) {
84
+ var FilePicker = class extends WithContextualHelp(WithFeedback(WithErrorText(FormElement(DelegatesAria(Localized(FormAssociated(VividElement))))))) {
19
85
  constructor(..._args) {
20
86
  super(..._args);
21
- this.elevationShadow = false;
22
- this.alternate = false;
87
+ this.singleFile = false;
88
+ this.maxFiles = null;
89
+ this.maxFileSize = 256;
90
+ this.valueChanged = (previous, next) => {
91
+ super.valueChanged(previous, next);
92
+ if (next === "" && this.files.length) this.removeAllFiles();
93
+ };
94
+ this.proxy = document.createElement("input");
95
+ this.setFormValue = (value, state) => {
96
+ if (typeof value === "string") return;
97
+ super.setFormValue(value, state);
98
+ };
99
+ this._customValidationError = null;
100
+ this.#customValidationChangeHandler = { handleChange: () => {
101
+ this._customValidationError = this.#customValidationChangeObserver.observe(this, ExecutionContext.default);
102
+ } };
103
+ this._dragHover = false;
104
+ this._allFiles = [];
105
+ }
106
+ /** @internal */
107
+ nameChanged(previous, next) {
108
+ super.nameChanged(previous, next);
109
+ this.#updateFormValue();
110
+ }
111
+ #updateFormValue() {
112
+ const files = this.files;
113
+ if (!this.name) this.setFormValue(null);
114
+ else {
115
+ const formData = new FormData();
116
+ for (const file of files) formData.append(this.name, file);
117
+ this.setFormValue(formData);
118
+ }
119
+ this.#setValueToAFakePathLikeNativeInput();
120
+ }
121
+ #setValueToAFakePathLikeNativeInput() {
122
+ this.value = this.files.length > 0 ? `C:\\fakepath\\${this.files[0].name}` : "";
123
+ }
124
+ /** @internal */
125
+ validate() {
126
+ super.validate(this.control);
127
+ }
128
+ /** @internal */
129
+ formResetCallback() {
130
+ this.removeAllFiles();
131
+ super.formResetCallback();
132
+ }
133
+ #getCustomValidationError() {
134
+ if (this.rejectedFiles.length > 0) return this.locale.filePicker.invalidFilesError;
135
+ return null;
136
+ }
137
+ /** @internal */
138
+ _customValidationErrorChanged() {
139
+ /* v8 ignore if -- @preserve */
140
+ if (this.proxy) this.proxy.setCustomValidity(this._customValidationError ?? "");
141
+ this.validate();
142
+ }
143
+ #customValidationChangeHandler;
144
+ #customValidationChangeObserver;
145
+ #startObservingCustomValidation() {
146
+ this.#customValidationChangeObserver = Observable.binding(() => this.#getCustomValidationError(), this.#customValidationChangeHandler, true);
147
+ this.#customValidationChangeHandler.handleChange();
148
+ }
149
+ #stopObservingCustomValidation() {
150
+ this.#customValidationChangeObserver.dispose();
151
+ }
152
+ connectedCallback() {
153
+ super.connectedCallback();
154
+ this.#startObservingCustomValidation();
155
+ }
156
+ disconnectedCallback() {
157
+ super.disconnectedCallback();
158
+ this.#stopObservingCustomValidation();
159
+ }
160
+ /** @internal */
161
+ _onDragEnter() {
162
+ if (this.disabled) return true;
163
+ this._dragHover = true;
164
+ return true;
165
+ }
166
+ /** @internal */
167
+ _onDragOver(e) {
168
+ if (this.disabled) return true;
169
+ if (!e.dataTransfer) return true;
170
+ const effect = e.dataTransfer.effectAllowed;
171
+ e.dataTransfer.dropEffect = "move" === effect || "linkMove" === effect ? "move" : "copy";
172
+ return false;
173
+ }
174
+ /** @internal */
175
+ _onDragLeave(e) {
176
+ if (this.disabled) return true;
177
+ /* v8 ignore else -- @preserve */
178
+ if (e.currentTarget === e.target) this._dragHover = false;
179
+ return true;
180
+ }
181
+ /** @internal */
182
+ _onDrop(e) {
183
+ if (this.disabled) return true;
184
+ this._dragHover = false;
185
+ if (!e.dataTransfer) return true;
186
+ filesFromDataTransfer(e.dataTransfer).then((files) => this.#addFiles(files)).catch((err) => {
187
+ console.error(err);
188
+ });
189
+ return false;
190
+ }
191
+ /** @internal */
192
+ _onDragEnd() {
193
+ if (this.disabled) return true;
194
+ this._dragHover = false;
195
+ return true;
196
+ }
197
+ /** @internal */
198
+ _onControlClick() {
199
+ /* v8 ignore if -- @preserve */
200
+ if (this.disabled) return;
201
+ this._hiddenInput.click();
202
+ }
203
+ /** @internal */
204
+ _onRemoveFileClick(file) {
205
+ if (this.disabled) return;
206
+ this._allFiles = this._allFiles.filter((f) => f !== file);
207
+ this.$emit("change");
208
+ }
209
+ /** @internal */
210
+ _allFilesChanged() {
211
+ this.#updateFormValue();
212
+ }
213
+ #addFiles(files) {
214
+ const newFiles = Array.from(files).filter((file) => !this._allFiles.some((existingFile) => existingFile.name === file.name && existingFile.size === file.size));
215
+ if (this.singleFile && newFiles.length > 0) this._allFiles = [newFiles[newFiles.length - 1]];
216
+ else this._allFiles = [...this._allFiles, ...newFiles];
217
+ this.$emit("change");
218
+ }
219
+ /** Removes all files from the File Picker. */
220
+ removeAllFiles() {
221
+ this._allFiles = [];
222
+ }
223
+ /**
224
+ * All files with their current validation status.
225
+ * @internal
226
+ */
227
+ get _validatedFiles() {
228
+ const validationError = (file, validFileIndex) => {
229
+ if (this.maxFileSize && file.size > this.maxFileSize * 1024 * 1024) return (this.fileTooBigError || this.locale.filePicker.fileTooBigError).replace("{{filesize}}", this._formatNumber(Math.round(file.size / 1024 / 10.24) / 100)).replace("{{maxFilesize}}", this._formatNumber(this.maxFileSize));
230
+ else if (!isAcceptedFileType(file, this.accept)) return this.invalidFileTypeError || this.locale.filePicker.invalidFileTypeError;
231
+ else if (typeof this.maxFiles === "number" && validFileIndex >= this.maxFiles) return (this.maxFilesExceededError || this.locale.filePicker.maxFilesExceededError).replace("{{maxFiles}}", String(this.maxFiles));
232
+ else return null;
233
+ };
234
+ const result = [];
235
+ let validFileIndex = 0;
236
+ for (const file of this._allFiles) {
237
+ const validatedFile = {
238
+ file,
239
+ validationError: validationError(file, validFileIndex)
240
+ };
241
+ result.push(validatedFile);
242
+ if (!validatedFile.validationError) validFileIndex++;
243
+ }
244
+ return result;
245
+ }
246
+ /** List of files that have been added to the file picker and passed validation */
247
+ get files() {
248
+ return this._validatedFiles.filter((f) => !f.validationError).map((f) => f.file);
249
+ }
250
+ /** List of files that have been added to the file picker but failed validation */
251
+ get rejectedFiles() {
252
+ return this._validatedFiles.filter((f) => !!f.validationError).map((f) => f.file);
253
+ }
254
+ /** @internal */
255
+ _onHiddenInputChange(e) {
256
+ this.#addFiles(this._hiddenInput.files);
257
+ this._hiddenInput.value = "";
258
+ e.stopPropagation();
259
+ }
260
+ /** @internal */
261
+ _formatNumber(value) {
262
+ const str = String(value);
263
+ if (this.locale.common.useCommaAsDecimalSeparator) return str.replace(".", ",");
264
+ return str;
23
265
  }
24
266
  };
25
267
  __decorate([attr({
26
- attribute: "elevation-shadow",
268
+ attribute: "single-file",
27
269
  mode: "boolean"
28
- })], Header.prototype, "elevationShadow", void 0);
29
- __decorate([attr({ mode: "boolean" })], Header.prototype, "alternate", void 0);
270
+ })], FilePicker.prototype, "singleFile", void 0);
271
+ __decorate([attr({
272
+ attribute: "max-files",
273
+ converter: nullableNumberConverter,
274
+ mode: "fromView"
275
+ })], FilePicker.prototype, "maxFiles", void 0);
276
+ __decorate([attr({
277
+ mode: "fromView",
278
+ attribute: "max-file-size"
279
+ })], FilePicker.prototype, "maxFileSize", void 0);
280
+ __decorate([attr], FilePicker.prototype, "accept", void 0);
281
+ __decorate([attr], FilePicker.prototype, "size", void 0);
282
+ __decorate([attr({ attribute: "invalid-file-type-error" })], FilePicker.prototype, "invalidFileTypeError", void 0);
283
+ __decorate([attr({ attribute: "max-files-exceeded-error" })], FilePicker.prototype, "maxFilesExceededError", void 0);
284
+ __decorate([attr({ attribute: "file-too-big-error" })], FilePicker.prototype, "fileTooBigError", void 0);
285
+ __decorate([observable], FilePicker.prototype, "_customValidationError", void 0);
286
+ __decorate([observable], FilePicker.prototype, "_dragHover", void 0);
287
+ __decorate([observable], FilePicker.prototype, "_allFiles", void 0);
288
+ __decorate([volatile], FilePicker.prototype, "_validatedFiles", null);
30
289
  //#endregion
31
- //#region src/lib/header/header.template.ts
32
- var headerTemplate = (context) => {
33
- const elevationTag = context.tagFor(Elevation);
290
+ //#region src/lib/file-picker/file-picker.template.ts
291
+ var filesizeBase = 1e3;
292
+ var dictFileSizeUnits = {
293
+ tb: "TB",
294
+ gb: "GB",
295
+ mb: "MB",
296
+ kb: "KB",
297
+ b: "b"
298
+ };
299
+ var renderFileSize = (x, size) => {
300
+ let selectedSize = 0;
301
+ let selectedUnit = "b";
302
+ /* v8 ignore else -- @preserve */
303
+ if (size > 0) {
304
+ const units = [
305
+ "tb",
306
+ "gb",
307
+ "mb",
308
+ "kb",
309
+ "b"
310
+ ];
311
+ for (let i = 0; i < units.length; i++) {
312
+ const unit = units[i];
313
+ if (size >= Math.pow(filesizeBase, 4 - i) / 10) {
314
+ selectedSize = size / Math.pow(filesizeBase, 4 - i);
315
+ selectedUnit = unit;
316
+ break;
317
+ }
318
+ }
319
+ selectedSize = Math.round(10 * selectedSize) / 10;
320
+ }
321
+ return html`<strong>${x._formatNumber(selectedSize)}</strong>
322
+ ${dictFileSizeUnits[selectedUnit]}`;
323
+ };
324
+ var FilePickerTemplate = (context) => {
325
+ const iconTag = context.tagFor(Icon);
326
+ const buttonTag = context.tagFor(Button);
34
327
  return html`
35
- <${elevationTag} dp="4" ?no-shadow=${(x) => !x.elevationShadow}>
36
- <header class="base" part="base" ${delegateAria()}>
37
- <!-- a container is needed to distinguish the surface background color of the
38
- element from its shadow when applying elevation with alternate -->
39
- <div class="container" part="${(x) => classNames(["vvd-theme-alternate", x.alternate])}">
40
- <section class="header-content">
41
- <slot></slot>
42
- </section>
43
- <section class="header-content">
44
- <slot name="action-items"></slot>
45
- </section>
46
- </div>
47
- </header>
48
- </${elevationTag}>
49
- <div class="app-content">
50
- <slot name="app-content"></slot>
51
- </div>
328
+ <div class="base">
329
+ <div class="label-wrapper" ?hidden=${(x) => !x.label && !x._hasContextualHelp}>
330
+ ${when((x) => x.label, html`<label class="label">${(x) => x.label}</label>`)}
331
+ <slot name="contextual-help" ${slotted("_contextualHelpSlottedContent")}></slot>
332
+ </div>
333
+ <div class="control-wrapper">
334
+ <button
335
+ type="button"
336
+ ${ref("control")}
337
+ class="${(x) => classNames("control", [`size-${x.size}`, Boolean(x.size)], ["drag-hover", x._dragHover], ["disabled", x.disabled])}"
338
+ ?disabled="${(x) => x.disabled}"
339
+ @click="${(x) => x._onControlClick()}"
340
+ @keydown="${() => false}"
341
+ @dragenter="${(x) => x._onDragEnter()}"
342
+ @dragover="${(x, c) => x._onDragOver(c.event)}"
343
+ @dragleave="${(x, c) => x._onDragLeave(c.event)}"
344
+ @drop="${(x, c) => x._onDrop(c.event)}"
345
+ @dragend="${(x) => x._onDragEnd()}"
346
+ ${delegateAria({ ariaDescribedBy: (x) => x._feedbackDescribedBy })}
347
+ >
348
+ <${iconTag}
349
+ class="upload-icon"
350
+ name="cloud-upload-line"
351
+ size="-4"
352
+ label="${(x) => x.locale.filePicker.uploadFilesLabel}"
353
+ ></${iconTag}>
354
+ <span class="upload-text"><slot></slot></span>
355
+ </button>
356
+ ${(x) => x._getFeedbackTemplate(context)}
357
+ </div>
358
+ <div class="preview-list">
359
+ ${repeat((x) => x._validatedFiles, html`
360
+ <div class="${(x) => classNames("preview", ["has-error", !!x.validationError])}">
361
+ <div class="details">
362
+ <div class="filename">${(x) => x.file.name}</div>
363
+ <div class="size">${(x, c) => renderFileSize(c.parent, x.file.size)}</div>
364
+ </div>
365
+ <div class="error-message">
366
+ <${iconTag} name="info-line" size="-6"></${iconTag}>
367
+ ${(x) => x.validationError}
368
+ </div>
369
+ <${buttonTag}
370
+ class="remove-btn" icon="delete-line" appearance="ghost-light" size="condensed"
371
+ ?disabled="${(_, c) => c.parent.disabled}"
372
+ aria-label="${(_, c) => c.parent.locale.filePicker.removeFileLabel}"
373
+ @click="${(x, c) => c.parent._onRemoveFileClick(x.file)}"></${buttonTag}>
374
+ </div>`)}
375
+ </div>
376
+ </div>
377
+ <input
378
+ ${ref("_hiddenInput")}
379
+ class="hidden-input"
380
+ aria-hidden="true"
381
+ type="file"
382
+ ?disabled="${(x) => x.disabled}"
383
+ ?multiple="${(x) => !x.singleFile && (x.maxFiles == null || x.maxFiles > 1)}"
384
+ accept="${(x) => x.accept || null}"
385
+ tabindex="-1"
386
+ @change="${(x, c) => x._onHiddenInputChange(c.event)}"
387
+ />
52
388
  `;
53
389
  };
54
390
  //#endregion
55
- //#region src/lib/header/definition.ts
391
+ //#region src/lib/file-picker/definition.ts
56
392
  /** @internal */
57
- var headerDefinition = defineVividComponent("header", Header, headerTemplate, [elevationDefinition], { styles: header_default });
393
+ var filePickerDefinition = defineVividComponent("file-picker", FilePicker, FilePickerTemplate, [
394
+ iconDefinition,
395
+ buttonDefinition,
396
+ feedbackMessageDefinition
397
+ ], {
398
+ styles: file_picker_default,
399
+ shadowOptions: { delegatesFocus: true }
400
+ });
58
401
  /**
59
- * Registers the header elements with the design system.
402
+ * Registers the file-picker element with the design system.
60
403
  *
61
404
  * @param prefix - the prefix to use for the component name
62
405
  */
63
- var registerHeader = createRegisterFunction(headerDefinition);
406
+ var registerFilePicker = createRegisterFunction(filePickerDefinition);
64
407
  //#endregion
65
- export { registerHeader as n, Header as r, headerDefinition as t };
408
+ export { registerFilePicker as n, FilePicker as r, filePickerDefinition as t };
@@ -1,75 +1,83 @@
1
1
  require("./chunk.cjs");
2
2
  const require_vivid_element = require("./vivid-element.cjs");
3
+ const require_decorate = require("./decorate.cjs");
4
+ const require_delegates_aria = require("./delegates-aria.cjs");
5
+ const require_definition = require("./definition7.cjs");
3
6
  let _microsoft_fast_element = require("@microsoft/fast-element");
4
- //#region src/lib/kbd-shortcut/kbd-shortcut.scss?inline
5
- var kbd_shortcut_default = ":host{display:inline-block}.base{white-space:nowrap;align-items:center;gap:.3em;display:inline-flex}";
7
+ let _microsoft_fast_web_utilities = require("@microsoft/fast-web-utilities");
8
+ //#region src/lib/header/header.scss?inline
9
+ var header_default = ".base{z-index:1;block-size:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) + calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16)));font:var(--vvd-typography-heading-4);inline-size:100%}.base .header-content{align-items:center;column-gap:4px;display:inline-flex}.container{box-sizing:border-box;background-color:var(--header-bg-color,var(--vvd-color-canvas));block-size:inherit;color:var(--vvd-color-canvas-text);justify-content:space-between;column-gap:12px;padding-block:8px;padding-inline:16px;display:flex}.container[part~=vvd-theme-alternate]{color-scheme:var(--vvd-color-scheme)}.app-content{--vvd-header-block-size:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) + calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16)))}";
6
10
  //#endregion
7
- //#region src/lib/kbd-shortcut/kbd-shortcut.ts
8
- /** Modifier key names in aria-keyshortcuts. */
9
- var MODIFIER_NAMES = new Set([
10
- "Control",
11
- "Alt",
12
- "Shift",
13
- "Meta"
14
- ]);
11
+ //#region src/lib/header/header.ts
15
12
  /**
16
13
  * @public
17
- * @component kbd-shortcut
18
- * @slot - Default slot for Kbd elements.
14
+ * @component header
15
+ * @slot - Default slot.
16
+ * @slot action-items - Nodes assigned to the `action-items` slot will be set at the end of the Header.
17
+ * @slot app-content - Content vertically aligned with the Header.
19
18
  */
20
- var KbdShortcut = class extends require_vivid_element.VividElement {
21
- /**
22
- * Returns a valid aria-keyshortcuts value based on the slotted kbd-key elements.
23
- * Modifiers are sorted to be first as required by the spec.
24
- * Returns null if no keys are available.
25
- */
26
- getKeyshortcutsValue() {
27
- const keys = Array.from(this.children).filter((el) => typeof el._getKeyshortcutsKey === "function");
28
- if (keys.length === 0) return null;
29
- const names = [];
30
- for (const key of keys) {
31
- const name = key._getKeyshortcutsKey();
32
- if (name !== null) names.push(name);
33
- }
34
- if (names.length === 0) return null;
35
- const modifiers = names.filter((n) => MODIFIER_NAMES.has(n));
36
- const nonModifiers = names.filter((n) => !MODIFIER_NAMES.has(n));
37
- return [...modifiers, ...nonModifiers].join("+");
19
+ var Header = class extends require_delegates_aria.DelegatesAria(require_vivid_element.VividElement) {
20
+ constructor(..._args) {
21
+ super(..._args);
22
+ this.elevationShadow = false;
23
+ this.alternate = false;
38
24
  }
39
25
  };
26
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
27
+ attribute: "elevation-shadow",
28
+ mode: "boolean"
29
+ })], Header.prototype, "elevationShadow", void 0);
30
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], Header.prototype, "alternate", void 0);
40
31
  //#endregion
41
- //#region src/lib/kbd-shortcut/kbd-shortcut.template.ts
42
- var KbdShortcutTemplate = () => {
43
- return _microsoft_fast_element.html`<span class="base" role="group"
44
- ><slot></slot
45
- ></span>`;
32
+ //#region src/lib/header/header.template.ts
33
+ var headerTemplate = (context) => {
34
+ const elevationTag = context.tagFor(require_definition.Elevation);
35
+ return _microsoft_fast_element.html`
36
+ <${elevationTag} dp="4" ?no-shadow=${(x) => !x.elevationShadow}>
37
+ <header class="base" part="base" ${require_delegates_aria.delegateAria()}>
38
+ <!-- a container is needed to distinguish the surface background color of the
39
+ element from its shadow when applying elevation with alternate -->
40
+ <div class="container" part="${(x) => (0, _microsoft_fast_web_utilities.classNames)("container", ["vvd-theme-alternate", x.alternate])}">
41
+ <section class="header-content" part="main">
42
+ <slot></slot>
43
+ </section>
44
+ <section class="header-content" part="action-items">
45
+ <slot name="action-items"></slot>
46
+ </section>
47
+ </div>
48
+ </header>
49
+ </${elevationTag}>
50
+ <div class="app-content">
51
+ <slot name="app-content"></slot>
52
+ </div>
53
+ `;
46
54
  };
47
55
  //#endregion
48
- //#region src/lib/kbd-shortcut/definition.ts
56
+ //#region src/lib/header/definition.ts
49
57
  /** @internal */
50
- var kbdShortcutDefinition = require_vivid_element.defineVividComponent("kbd-shortcut", KbdShortcut, KbdShortcutTemplate, [], { styles: kbd_shortcut_default });
58
+ var headerDefinition = require_vivid_element.defineVividComponent("header", Header, headerTemplate, [require_definition.elevationDefinition], { styles: header_default });
51
59
  /**
52
- * Registers the kbd-shortcut element with the design system.
60
+ * Registers the header elements with the design system.
53
61
  *
54
62
  * @param prefix - the prefix to use for the component name
55
63
  */
56
- var registerKbdShortcut = require_vivid_element.createRegisterFunction(kbdShortcutDefinition);
64
+ var registerHeader = require_vivid_element.createRegisterFunction(headerDefinition);
57
65
  //#endregion
58
- Object.defineProperty(exports, "KbdShortcut", {
66
+ Object.defineProperty(exports, "Header", {
59
67
  enumerable: true,
60
68
  get: function() {
61
- return KbdShortcut;
69
+ return Header;
62
70
  }
63
71
  });
64
- Object.defineProperty(exports, "kbdShortcutDefinition", {
72
+ Object.defineProperty(exports, "headerDefinition", {
65
73
  enumerable: true,
66
74
  get: function() {
67
- return kbdShortcutDefinition;
75
+ return headerDefinition;
68
76
  }
69
77
  });
70
- Object.defineProperty(exports, "registerKbdShortcut", {
78
+ Object.defineProperty(exports, "registerHeader", {
71
79
  enumerable: true,
72
80
  get: function() {
73
- return registerKbdShortcut;
81
+ return registerHeader;
74
82
  }
75
83
  });