@vonage/vivid 4.23.0 → 4.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 (396) hide show
  1. package/custom-elements.json +21830 -14295
  2. package/elevation/index.cjs +1 -1
  3. package/elevation/index.js +1 -1
  4. package/index.cjs +112 -150
  5. package/index.js +37 -35
  6. package/lib/accordion-item/accordion-item.d.ts +6 -0
  7. package/lib/action-group/action-group.d.ts +6 -0
  8. package/lib/alert/alert.d.ts +20 -0
  9. package/lib/audio-player/audio-player.d.ts +6 -0
  10. package/lib/badge/badge.d.ts +9 -1
  11. package/lib/banner/banner.d.ts +25 -0
  12. package/lib/breadcrumb/breadcrumb.d.ts +6 -0
  13. package/lib/breadcrumb-item/breadcrumb-item.d.ts +63 -7
  14. package/lib/button/button.d.ts +732 -7
  15. package/lib/button/locale.d.ts +3 -0
  16. package/lib/calendar-event/calendar-event.d.ts +6 -0
  17. package/lib/card/card.d.ts +394 -2
  18. package/lib/card/card.template.d.ts +2 -1
  19. package/lib/checkbox/checkbox.d.ts +1822 -5
  20. package/lib/combobox/combobox.d.ts +1827 -20
  21. package/lib/data-grid/data-grid-cell.d.ts +339 -1
  22. package/lib/data-grid/locale.d.ts +5 -0
  23. package/lib/date-picker/date-picker.d.ts +1676 -207
  24. package/lib/date-range-picker/date-range-picker.d.ts +840 -107
  25. package/lib/date-time-picker/date-time-picker.d.ts +1678 -209
  26. package/lib/dial-pad/dial-pad.d.ts +8 -0
  27. package/lib/dialog/dialog.d.ts +12 -0
  28. package/lib/divider/divider.d.ts +6 -0
  29. package/lib/fab/fab.d.ts +6 -0
  30. package/lib/file-picker/file-picker.d.ts +1510 -32
  31. package/lib/file-picker/locale.d.ts +1 -0
  32. package/lib/header/header.d.ts +6 -0
  33. package/lib/icon/icon.d.ts +1 -0
  34. package/lib/icon/icon.template.d.ts +2 -1
  35. package/lib/menu/menu.d.ts +16 -7
  36. package/lib/menu/name.d.ts +1 -0
  37. package/lib/menu-item/menu-item.d.ts +14 -2
  38. package/lib/nav/nav.d.ts +6 -0
  39. package/lib/nav-disclosure/nav-disclosure.d.ts +13 -0
  40. package/lib/nav-item/nav-item.d.ts +405 -3
  41. package/lib/note/note.d.ts +6 -0
  42. package/lib/number-field/number-field.d.ts +1857 -36
  43. package/lib/option/option.d.ts +12 -0
  44. package/lib/progress/progress.d.ts +6 -0
  45. package/lib/progress-ring/progress-ring.d.ts +6 -0
  46. package/lib/radio/radio.d.ts +1137 -4
  47. package/lib/radio-group/radio-group.d.ts +20 -2
  48. package/lib/range-slider/range-slider.d.ts +752 -5
  49. package/lib/rich-text-editor/definition.d.ts +2 -2
  50. package/lib/rich-text-editor/facades/vivid-prose-mirror.facade.d.ts +3 -1
  51. package/lib/rich-text-editor/locale.d.ts +10 -0
  52. package/lib/rich-text-editor/menubar/menubar.d.ts +340 -1
  53. package/lib/rich-text-editor/rich-text-editor.d.ts +352 -2
  54. package/lib/searchable-select/locale.d.ts +1 -0
  55. package/lib/searchable-select/option-tag.d.ts +6 -0
  56. package/lib/searchable-select/searchable-select.d.ts +1857 -35
  57. package/lib/select/select.d.ts +1843 -28
  58. package/lib/selectable-box/selectable-box.d.ts +6 -0
  59. package/lib/slider/slider.d.ts +384 -2
  60. package/lib/split-button/split-button.d.ts +18 -0
  61. package/lib/switch/switch.d.ts +386 -3
  62. package/lib/tab/tab.d.ts +18 -1
  63. package/lib/tab-panel/tab-panel.d.ts +6 -0
  64. package/lib/tabs/tabs.d.ts +5 -21
  65. package/lib/tag/tag.d.ts +12 -0
  66. package/lib/tag-group/tag-group.d.ts +6 -0
  67. package/lib/text-area/text-area.d.ts +2174 -19
  68. package/lib/text-field/text-field.d.ts +2195 -31
  69. package/lib/time-picker/time-picker.d.ts +839 -106
  70. package/lib/toggletip/toggletip.d.ts +10 -4
  71. package/lib/tooltip/tooltip.d.ts +10 -4
  72. package/lib/tree-item/tree-item.d.ts +12 -0
  73. package/lib/tree-view/tree-view.d.ts +6 -0
  74. package/lib/video-player/video-player.d.ts +6 -0
  75. package/lib/visually-hidden/definition.d.ts +4 -0
  76. package/lib/visually-hidden/visually-hidden.d.ts +3 -0
  77. package/lib/visually-hidden/visually-hidden.template.d.ts +3 -0
  78. package/locales/de-DE.cjs +47 -1
  79. package/locales/de-DE.js +47 -1
  80. package/locales/en-GB.cjs +47 -1
  81. package/locales/en-GB.js +47 -1
  82. package/locales/en-US.cjs +47 -1
  83. package/locales/en-US.js +47 -1
  84. package/locales/ja-JP.cjs +47 -1
  85. package/locales/ja-JP.js +47 -1
  86. package/locales/zh-CN.cjs +47 -1
  87. package/locales/zh-CN.js +47 -1
  88. package/menu/index.cjs +1 -1
  89. package/menu/index.js +1 -1
  90. package/nav/index.cjs +1 -1
  91. package/nav/index.js +1 -1
  92. package/nav-disclosure/index.cjs +1 -1
  93. package/nav-disclosure/index.js +1 -1
  94. package/nav-item/index.cjs +1 -1
  95. package/nav-item/index.js +1 -1
  96. package/note/index.cjs +1 -1
  97. package/note/index.js +1 -1
  98. package/number-field/index.cjs +1 -1
  99. package/number-field/index.js +1 -1
  100. package/option/index.cjs +1 -1
  101. package/option/index.js +1 -1
  102. package/package.json +1 -1
  103. package/pagination/index.cjs +1 -1
  104. package/pagination/index.js +1 -1
  105. package/popup/index.cjs +1 -1
  106. package/popup/index.js +1 -1
  107. package/progress/index.cjs +1 -1
  108. package/progress/index.js +1 -1
  109. package/progress-ring/index.cjs +1 -1
  110. package/progress-ring/index.js +1 -1
  111. package/radio/index.cjs +1 -1
  112. package/radio/index.js +1 -1
  113. package/radio-group/index.cjs +1 -1
  114. package/radio-group/index.js +1 -1
  115. package/range-slider/index.cjs +1 -1
  116. package/range-slider/index.js +1 -1
  117. package/rich-text-editor/index.cjs +1 -1
  118. package/rich-text-editor/index.js +1 -1
  119. package/searchable-select/index.cjs +1 -1
  120. package/searchable-select/index.js +1 -1
  121. package/select/index.cjs +1 -1
  122. package/select/index.js +1 -1
  123. package/selectable-box/index.cjs +1 -1
  124. package/selectable-box/index.js +1 -1
  125. package/shared/affix.cjs +13 -7
  126. package/shared/affix.js +13 -8
  127. package/shared/aria/delegates-aria.d.ts +6 -0
  128. package/shared/aria/host-semantics.d.ts +6 -0
  129. package/shared/breadcrumb-item.cjs +2 -5
  130. package/shared/breadcrumb-item.js +2 -5
  131. package/shared/button.cjs +19 -14
  132. package/shared/button.js +19 -14
  133. package/shared/calendar-picker.template.cjs +3 -3
  134. package/shared/calendar-picker.template.js +1 -1
  135. package/shared/char-count.cjs +92 -0
  136. package/shared/char-count.js +90 -0
  137. package/shared/definition.js +1 -1
  138. package/shared/definition10.js +1 -1
  139. package/shared/definition11.cjs +27 -44
  140. package/shared/definition11.js +28 -45
  141. package/shared/definition12.cjs +1 -1
  142. package/shared/definition12.js +2 -2
  143. package/shared/definition13.js +1 -1
  144. package/shared/definition14.cjs +53 -22
  145. package/shared/definition14.js +54 -23
  146. package/shared/definition15.cjs +31 -36
  147. package/shared/definition15.js +30 -36
  148. package/shared/definition16.cjs +43 -63
  149. package/shared/definition16.js +42 -63
  150. package/shared/definition17.cjs +12 -5
  151. package/shared/definition17.js +12 -5
  152. package/shared/definition18.cjs +10 -14
  153. package/shared/definition18.js +9 -14
  154. package/shared/definition19.cjs +85 -100
  155. package/shared/definition19.js +75 -91
  156. package/shared/definition2.js +1 -1
  157. package/shared/definition20.cjs +15 -20
  158. package/shared/definition20.js +14 -20
  159. package/shared/definition21.cjs +22 -3
  160. package/shared/definition21.js +23 -4
  161. package/shared/definition22.cjs +12 -6
  162. package/shared/definition22.js +13 -7
  163. package/shared/definition23.cjs +5 -38
  164. package/shared/definition23.js +5 -37
  165. package/shared/definition24.cjs +2 -7
  166. package/shared/definition24.js +3 -8
  167. package/shared/definition25.js +1 -1
  168. package/shared/definition26.cjs +160 -163
  169. package/shared/definition26.js +159 -163
  170. package/shared/definition27.cjs +1 -1
  171. package/shared/definition27.js +2 -2
  172. package/shared/definition28.cjs +32 -17
  173. package/shared/definition28.js +33 -18
  174. package/shared/definition29.js +1 -1
  175. package/shared/definition3.js +1 -1
  176. package/shared/definition30.cjs +96 -482
  177. package/shared/definition30.js +99 -482
  178. package/shared/definition31.cjs +334 -57
  179. package/shared/definition31.js +333 -56
  180. package/shared/definition32.cjs +104 -19
  181. package/shared/definition32.js +105 -20
  182. package/shared/definition33.cjs +67 -15
  183. package/shared/definition33.js +66 -14
  184. package/shared/definition34.cjs +15 -50
  185. package/shared/definition34.js +14 -49
  186. package/shared/definition35.cjs +28 -397
  187. package/shared/definition35.js +27 -397
  188. package/shared/definition36.cjs +404 -54
  189. package/shared/definition36.js +404 -55
  190. package/shared/definition37.cjs +57 -234
  191. package/shared/definition37.js +57 -233
  192. package/shared/definition38.cjs +221 -66
  193. package/shared/definition38.js +220 -65
  194. package/shared/definition39.cjs +52 -44
  195. package/shared/definition39.js +51 -43
  196. package/shared/definition4.cjs +31 -24
  197. package/shared/definition4.js +33 -26
  198. package/shared/definition40.cjs +56 -266
  199. package/shared/definition40.js +55 -265
  200. package/shared/definition41.cjs +285 -142
  201. package/shared/definition41.js +285 -142
  202. package/shared/definition42.cjs +156 -564
  203. package/shared/definition42.js +156 -565
  204. package/shared/definition43.cjs +557 -14317
  205. package/shared/definition43.js +556 -14316
  206. package/shared/definition44.cjs +14418 -1085
  207. package/shared/definition44.js +14416 -1085
  208. package/shared/definition45.cjs +1049 -671
  209. package/shared/definition45.js +1050 -672
  210. package/shared/definition46.cjs +848 -113
  211. package/shared/definition46.js +847 -112
  212. package/shared/definition47.cjs +125 -90
  213. package/shared/definition47.js +124 -89
  214. package/shared/definition48.cjs +88 -455
  215. package/shared/definition48.js +87 -454
  216. package/shared/definition49.cjs +466 -109
  217. package/shared/definition49.js +466 -109
  218. package/shared/definition5.cjs +8 -7
  219. package/shared/definition5.js +6 -5
  220. package/shared/definition50.cjs +106 -106
  221. package/shared/definition50.js +105 -105
  222. package/shared/definition51.cjs +136 -15
  223. package/shared/definition51.js +135 -14
  224. package/shared/definition52.cjs +16 -115
  225. package/shared/definition52.js +15 -114
  226. package/shared/definition53.cjs +78 -490
  227. package/shared/definition53.js +77 -488
  228. package/shared/definition54.cjs +445 -23
  229. package/shared/definition54.js +443 -22
  230. package/shared/definition55.cjs +22 -136
  231. package/shared/definition55.js +21 -135
  232. package/shared/definition56.cjs +95 -291
  233. package/shared/definition56.js +95 -292
  234. package/shared/definition57.cjs +192 -480
  235. package/shared/definition57.js +190 -479
  236. package/shared/definition58.cjs +411 -24
  237. package/shared/definition58.js +410 -24
  238. package/shared/definition59.cjs +27 -144
  239. package/shared/definition59.js +27 -143
  240. package/shared/definition6.js +1 -1
  241. package/shared/definition60.cjs +83 -54
  242. package/shared/definition60.js +82 -53
  243. package/shared/definition61.cjs +78 -166
  244. package/shared/definition61.js +77 -164
  245. package/shared/definition62.cjs +143 -232
  246. package/shared/definition62.js +141 -231
  247. package/shared/definition63.cjs +234 -69417
  248. package/shared/definition63.js +233 -69416
  249. package/shared/definition64.cjs +69454 -28
  250. package/shared/definition64.js +69453 -27
  251. package/shared/definition65.cjs +28 -2168
  252. package/shared/definition65.js +27 -2166
  253. package/shared/definition66.cjs +27 -0
  254. package/shared/definition66.js +23 -0
  255. package/shared/definition67.cjs +2195 -0
  256. package/shared/definition67.js +2190 -0
  257. package/shared/definition7.cjs +11 -2
  258. package/shared/definition7.js +12 -3
  259. package/shared/definition8.cjs +24 -11
  260. package/shared/definition8.js +26 -13
  261. package/shared/definition9.cjs +1 -2
  262. package/shared/definition9.js +2 -3
  263. package/shared/delegates-aria.js +1 -1
  264. package/shared/deprecation/replaced-props.d.ts +20 -0
  265. package/shared/divider.cjs +41 -0
  266. package/shared/divider.js +38 -0
  267. package/shared/feedback/feedback-message.d.ts +345 -0
  268. package/shared/feedback/locale.d.ts +4 -0
  269. package/{lib/text-anchor/text-anchor.d.ts → shared/feedback/mixins.d.ts} +62 -39
  270. package/shared/form-associated.cjs +124 -100
  271. package/shared/form-associated.js +125 -101
  272. package/shared/form-element.cjs +84 -0
  273. package/shared/form-element.js +82 -0
  274. package/shared/foundation/button/button.d.ts +378 -2
  275. package/shared/foundation/form-associated/form-associated.d.ts +753 -49
  276. package/shared/foundation/listbox/listbox.d.ts +1 -1
  277. package/shared/foundation/vivid-element/vivid-element.d.ts +14 -0
  278. package/shared/host-semantics.js +1 -1
  279. package/shared/key-codes.js +1 -1
  280. package/shared/linkable.cjs +70 -0
  281. package/shared/linkable.js +68 -0
  282. package/shared/localization/Locale.d.ts +16 -0
  283. package/shared/mixins.cjs +306 -0
  284. package/shared/mixins.js +300 -0
  285. package/shared/patterns/affix.d.ts +16 -1
  286. package/shared/patterns/anchored.d.ts +20 -8
  287. package/shared/patterns/char-count/char-count.d.ts +351 -0
  288. package/shared/patterns/char-count/index.d.ts +1 -0
  289. package/shared/patterns/char-count/locale.d.ts +4 -0
  290. package/shared/patterns/form-elements/form-element.d.ts +744 -0
  291. package/shared/patterns/form-elements/index.d.ts +3 -1
  292. package/shared/patterns/form-elements/with-error-text.d.ts +1122 -0
  293. package/shared/patterns/form-elements/with-success-text.d.ts +341 -0
  294. package/shared/patterns/index.d.ts +2 -0
  295. package/shared/patterns/linkable.d.ts +394 -0
  296. package/shared/patterns/localized.d.ts +6 -0
  297. package/shared/patterns/trapped-focus.d.ts +6 -0
  298. package/shared/picker-field/mixins/calendar-picker.d.ts +420 -52
  299. package/shared/picker-field/mixins/calendar-picker.template.d.ts +420 -52
  300. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +6 -0
  301. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +843 -107
  302. package/shared/picker-field/mixins/single-date-picker.d.ts +1259 -155
  303. package/shared/picker-field/mixins/single-value-picker.d.ts +417 -49
  304. package/shared/picker-field/mixins/time-selection-picker.d.ts +842 -106
  305. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +839 -103
  306. package/shared/picker-field/picker-field.d.ts +1491 -15
  307. package/shared/picker-field.template.cjs +13 -22
  308. package/shared/picker-field.template.js +14 -23
  309. package/shared/repeat.js +1 -1
  310. package/shared/slider.template.cjs +1 -1
  311. package/shared/slider.template.js +1 -1
  312. package/shared/time-selection-picker.template.cjs +10 -15
  313. package/shared/time-selection-picker.template.js +10 -16
  314. package/shared/vivid-element.cjs +53 -4
  315. package/shared/vivid-element.js +53 -3
  316. package/shared/with-error-text.cjs +56 -0
  317. package/shared/with-error-text.js +54 -0
  318. package/shared/with-success-text.cjs +23 -0
  319. package/shared/with-success-text.js +21 -0
  320. package/side-drawer/index.cjs +1 -1
  321. package/side-drawer/index.js +1 -1
  322. package/slider/index.cjs +1 -1
  323. package/slider/index.js +1 -1
  324. package/split-button/index.cjs +1 -1
  325. package/split-button/index.js +1 -1
  326. package/styles/core/all.css +1 -1
  327. package/styles/core/theme.css +1 -1
  328. package/styles/core/typography.css +1 -1
  329. package/styles/tokens/theme-dark.css +4 -4
  330. package/styles/tokens/theme-light.css +4 -4
  331. package/styles/tokens/vivid-2-compat.css +1 -1
  332. package/switch/index.cjs +1 -1
  333. package/switch/index.js +1 -1
  334. package/tab/index.cjs +1 -1
  335. package/tab/index.js +1 -1
  336. package/tab-panel/index.cjs +1 -1
  337. package/tab-panel/index.js +1 -1
  338. package/tabs/index.cjs +1 -1
  339. package/tabs/index.js +1 -1
  340. package/tag/index.cjs +1 -1
  341. package/tag/index.js +1 -1
  342. package/tag-group/index.cjs +1 -1
  343. package/tag-group/index.js +1 -1
  344. package/text-area/index.cjs +1 -1
  345. package/text-area/index.js +1 -1
  346. package/text-field/index.cjs +1 -1
  347. package/text-field/index.js +1 -1
  348. package/time-picker/index.cjs +1 -1
  349. package/time-picker/index.js +1 -1
  350. package/toggletip/index.cjs +1 -1
  351. package/toggletip/index.js +1 -1
  352. package/tooltip/index.cjs +1 -1
  353. package/tooltip/index.js +1 -1
  354. package/tree-item/index.cjs +1 -1
  355. package/tree-item/index.js +1 -1
  356. package/tree-view/index.cjs +1 -1
  357. package/tree-view/index.js +1 -1
  358. package/video-player/index.cjs +1 -1
  359. package/video-player/index.js +1 -1
  360. package/visually-hidden/index.cjs +5 -0
  361. package/visually-hidden/index.js +3 -0
  362. package/vivid.api.json +762 -1478
  363. package/lib/checkbox/checkbox.form-associated.d.ts +0 -11
  364. package/lib/file-picker/file-picker.form-associated.d.ts +0 -11
  365. package/lib/number-field/number-field.form-associated.d.ts +0 -11
  366. package/lib/radio/radio.form-associated.d.ts +0 -13
  367. package/lib/range-slider/range-slider.form-associated.d.ts +0 -11
  368. package/lib/searchable-select/searchable-select.form-associated.d.ts +0 -11
  369. package/lib/select/select.form-associated.d.ts +0 -11
  370. package/lib/slider/slider.form-associated.d.ts +0 -11
  371. package/lib/switch/switch.form-associated.d.ts +0 -11
  372. package/lib/text-anchor/definition.d.ts +0 -2
  373. package/lib/text-anchor/text-anchor.template.d.ts +0 -3
  374. package/lib/text-area/text-area.form-associated.d.ts +0 -11
  375. package/lib/text-field/text-field.form-associated.d.ts +0 -11
  376. package/shared/anchor.cjs +0 -49
  377. package/shared/anchor.js +0 -47
  378. package/shared/apply-mixins.cjs +0 -23
  379. package/shared/apply-mixins.js +0 -21
  380. package/shared/applyMixinsWithObservables.cjs +0 -15
  381. package/shared/applyMixinsWithObservables.js +0 -13
  382. package/shared/direction.cjs +0 -17
  383. package/shared/direction.js +0 -15
  384. package/shared/form-elements.cjs +0 -209
  385. package/shared/form-elements.js +0 -202
  386. package/shared/foundation/anchor/anchor.d.ts +0 -11
  387. package/shared/foundation/utilities/apply-mixins.d.ts +0 -1
  388. package/shared/patterns/form-elements/form-elements.d.ts +0 -58
  389. package/shared/picker-field/picker-field.form-associated.d.ts +0 -11
  390. package/shared/text-anchor.cjs +0 -38
  391. package/shared/text-anchor.js +0 -36
  392. package/shared/text-anchor.template.cjs +0 -35
  393. package/shared/text-anchor.template.js +0 -33
  394. package/shared/utils/applyMixinsWithObservables.d.ts +0 -1
  395. package/text-anchor/index.cjs +0 -17
  396. package/text-anchor/index.js +0 -15
@@ -1,10 +1,10 @@
1
1
  import { I as Icon, i as iconDefinition } from './definition28.js';
2
- import { V as VividElement, a as attr, o as observable, h as html, g as createRegisterFunction, i as defineVividComponent } from './vivid-element.js';
2
+ import { V as VividElement, a as attr, o as observable, h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
3
3
  import { c as classNames } from './class-names.js';
4
4
  import { w as when } from './when.js';
5
5
  import { s as slotted } from './slotted.js';
6
6
 
7
- const styles = ":host{display:block}.base.connotation-cta{--_connotation-color-firm-all: var(--vvd-empty-state-cta-firm-all, var(--vvd-color-cta-600));--_connotation-color-dim: var(--vvd-empty-state-cta-dim, var(--vvd-color-cta-200));--_connotation-color-faint: var(--vvd-empty-state-cta-faint, var(--vvd-color-cta-50))}.base.connotation-success{--_connotation-color-firm-all: var(--vvd-empty-state-success-firm-all, var(--vvd-color-success-600));--_connotation-color-dim: var(--vvd-empty-state-success-dim, var(--vvd-color-success-200));--_connotation-color-faint: var(--vvd-empty-state-success-faint, var(--vvd-color-success-50))}.base.connotation-alert{--_connotation-color-firm-all: var(--vvd-empty-state-alert-firm-all, var(--vvd-color-alert-600));--_connotation-color-dim: var(--vvd-empty-state-alert-dim, var(--vvd-color-alert-200));--_connotation-color-faint: var(--vvd-empty-state-alert-faint, var(--vvd-color-alert-50))}.base.connotation-warning{--_connotation-color-firm-all: var(--vvd-empty-state-warning-firm-all, var(--vvd-color-warning-600));--_connotation-color-dim: var(--vvd-empty-state-warning-dim, var(--vvd-color-warning-200));--_connotation-color-faint: var(--vvd-empty-state-warning-faint, var(--vvd-color-warning-50))}.base.connotation-information{--_connotation-color-firm-all: var(--vvd-empty-state-information-firm-all, var(--vvd-color-information-600));--_connotation-color-dim: var(--vvd-empty-state-information-dim, var(--vvd-color-information-200));--_connotation-color-faint: var(--vvd-empty-state-information-faint, var(--vvd-color-information-50))}.base.connotation-announcement{--_connotation-color-firm-all: var(--vvd-empty-state-announcement-firm-all, var(--vvd-color-announcement-600));--_connotation-color-dim: var(--vvd-empty-state-announcement-dim, var(--vvd-color-announcement-200));--_connotation-color-faint: var(--vvd-empty-state-announcement-faint, var(--vvd-color-announcement-50))}.base:not(.connotation-cta,.connotation-success,.connotation-alert,.connotation-warning,.connotation-information,.connotation-announcement){--_connotation-color-firm-all: var(--vvd-empty-state-accent-firm-all, var(--vvd-color-neutral-600));--_connotation-color-dim: var(--vvd-empty-state-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-faint: var(--vvd-empty-state-accent-faint, var(--vvd-color-neutral-50))}.base{--_empty-state-icon-container: 120px;--_empty-state-icon-background: var(--_connotation-color-faint);--_empty-state-icon-font-size: 52px;display:flex;box-sizing:border-box;flex-direction:column;align-items:center;justify-content:center;block-size:100%;gap:24px}.icon-container{display:flex;align-items:center;justify-content:center;border-radius:50%;background-color:var(--_empty-state-icon-background);block-size:var(--_empty-state-icon-container);font-size:var(--_empty-state-icon-font-size);inline-size:var(--_empty-state-icon-container)}.icon-decoration-outlined .icon-container{--_empty-state-icon-background: transparent;--_empty-state-icon-font-size: 40px;box-shadow:inset 0 0 0 21px var(--_connotation-color-faint)}.icon-container .icon{color:var(--_connotation-color-firm-all)}.icon-decoration-outlined .icon-container .icon{padding:19px;border:1px solid var(--_connotation-color-dim);border-radius:inherit}.content{display:flex;flex-direction:column;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base);gap:8px;text-align:center}header{color:var(--_connotation-color-firm-all);font:var(--vvd-typography-base-extended-bold)}.actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px}.base.no-actions .actions{display:none}";
7
+ const styles = ":host{display:block}.base.connotation-cta{--_connotation-color-firm-all: var(--vvd-empty-state-cta-firm-all, var(--vvd-color-cta-600));--_connotation-color-dim: var(--vvd-empty-state-cta-dim, var(--vvd-color-cta-200));--_connotation-color-faint: var(--vvd-empty-state-cta-faint, var(--vvd-color-cta-50))}.base.connotation-success{--_connotation-color-firm-all: var(--vvd-empty-state-success-firm-all, var(--vvd-color-success-600));--_connotation-color-dim: var(--vvd-empty-state-success-dim, var(--vvd-color-success-200));--_connotation-color-faint: var(--vvd-empty-state-success-faint, var(--vvd-color-success-50))}.base.connotation-alert{--_connotation-color-firm-all: var(--vvd-empty-state-alert-firm-all, var(--vvd-color-alert-600));--_connotation-color-dim: var(--vvd-empty-state-alert-dim, var(--vvd-color-alert-200));--_connotation-color-faint: var(--vvd-empty-state-alert-faint, var(--vvd-color-alert-50))}.base.connotation-warning{--_connotation-color-firm-all: var(--vvd-empty-state-warning-firm-all, var(--vvd-color-warning-600));--_connotation-color-dim: var(--vvd-empty-state-warning-dim, var(--vvd-color-warning-200));--_connotation-color-faint: var(--vvd-empty-state-warning-faint, var(--vvd-color-warning-50))}.base.connotation-information{--_connotation-color-firm-all: var(--vvd-empty-state-information-firm-all, var(--vvd-color-information-600));--_connotation-color-dim: var(--vvd-empty-state-information-dim, var(--vvd-color-information-200));--_connotation-color-faint: var(--vvd-empty-state-information-faint, var(--vvd-color-information-50))}.base.connotation-announcement{--_connotation-color-firm-all: var(--vvd-empty-state-announcement-firm-all, var(--vvd-color-announcement-600));--_connotation-color-dim: var(--vvd-empty-state-announcement-dim, var(--vvd-color-announcement-200));--_connotation-color-faint: var(--vvd-empty-state-announcement-faint, var(--vvd-color-announcement-50))}.base:not(.connotation-cta,.connotation-success,.connotation-alert,.connotation-warning,.connotation-information,.connotation-announcement){--_connotation-color-firm-all: var(--vvd-empty-state-accent-firm-all, var(--vvd-color-neutral-600));--_connotation-color-dim: var(--vvd-empty-state-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-faint: var(--vvd-empty-state-accent-faint, var(--vvd-color-neutral-50))}.base{--_empty-state-icon-container: 120px;--_empty-state-icon-background: var(--_connotation-color-faint);--_empty-state-icon-font-size: 52px;display:flex;box-sizing:border-box;flex-direction:column;align-items:center;justify-content:center;block-size:100%;gap:24px}.icon-container{display:flex;align-items:center;justify-content:center;border-radius:50%;background-color:var(--_empty-state-icon-background);block-size:var(--_empty-state-icon-container);box-shadow:inset 0 0 0 21px var(--_connotation-color-faint);font-size:var(--_empty-state-icon-font-size);inline-size:var(--_empty-state-icon-container);--_empty-state-icon-background: transparent;--_empty-state-icon-font-size: 40px}.icon-container .icon{padding:19px;border:1px solid var(--_connotation-color-dim);border-radius:inherit;color:var(--_connotation-color-firm-all)}.content{display:flex;flex-direction:column;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base);gap:8px;text-align:center}header{color:var(--_connotation-color-firm-all);font:var(--vvd-typography-base-extended-bold)}.actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px}.base.no-actions .actions{display:none}";
8
8
 
9
9
  var __defProp = Object.defineProperty;
10
10
  var __decorateClass = (decorators, target, key, kind) => {
@@ -33,14 +33,9 @@ __decorateClass([
33
33
  observable
34
34
  ], EmptyState.prototype, "slottedActionItems");
35
35
 
36
- const getClasses = ({
37
- connotation,
38
- iconDecoration,
39
- slottedActionItems
40
- }) => classNames(
36
+ const getClasses = ({ connotation, slottedActionItems }) => classNames(
41
37
  "base",
42
38
  [`connotation-${connotation}`, Boolean(connotation)],
43
- [`icon-decoration-${iconDecoration}`, Boolean(iconDecoration)],
44
39
  ["no-actions", slottedActionItems?.length === 0]
45
40
  );
46
41
  const EmptyStateTemplate = (context) => {
@@ -1,5 +1,5 @@
1
1
  import { i as iconDefinition } from './definition28.js';
2
- import { a as attr, h as html, g as createRegisterFunction, i as defineVividComponent } from './vivid-element.js';
2
+ import { a as attr, h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
3
3
  import { A as AffixIconWithTrailing, a as affixIconTemplateFactory, I as IconWrapper } from './affix.js';
4
4
  import { V as VividFoundationButton } from './button.js';
5
5
  import { d as delegateAria } from './delegates-aria.js';
@@ -3,16 +3,17 @@
3
3
  const definition$1 = require('./definition28.cjs');
4
4
  const definition = require('./definition11.cjs');
5
5
  const vividElement = require('./vivid-element.cjs');
6
- const applyMixinsWithObservables = require('./applyMixinsWithObservables.cjs');
6
+ const mixins = require('./mixins.cjs');
7
7
  const delegatesAria = require('./delegates-aria.cjs');
8
8
  const formAssociated = require('./form-associated.cjs');
9
+ const withErrorText = require('./with-error-text.cjs');
10
+ const formElement = require('./form-element.cjs');
9
11
  const localized = require('./localized.cjs');
10
- const formElements = require('./form-elements.cjs');
11
12
  const when = require('./when.cjs');
12
13
  const ref = require('./ref.cjs');
13
14
  const classNames = require('./class-names.cjs');
14
15
 
15
- const styles = ":host{display:block;max-inline-size:400px}.base{display:flex;flex-direction:column;block-size:inherit;max-block-size:inherit}.control{display:flex;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;padding:16px;border:1px dashed var(--vvd-color-neutral-400);border-radius:8px;background-color:var(--vvd-color-cta-50);color:var(--vvd-color-neutral-600);cursor:pointer;font:var(--vvd-typography-base);gap:8px;inline-size:100%;min-block-size:52px;outline:none;transition:all .3s ease}.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(--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:hover,.control:active,.control:focus-visible{background-color:var(--vvd-color-cta-100)}.main{pointer-events:none}.dz-preview{display:grid;box-sizing:border-box;padding:8px;border:1px solid var(--vvd-color-neutral-300);border-radius:8px;background-color:var(--file-picker-list-item-background-color, var(--vvd-color-canvas));grid-template-columns:1fr auto;grid-template-rows:auto auto;inline-size:100%}.dz-preview .dz-details{display:flex;min-width:0;flex-direction:column;max-inline-size:100%}.dz-preview .dz-details .dz-filename{overflow:hidden;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base);text-overflow:ellipsis;white-space:nowrap}.dz-preview .dz-details .dz-size{color:var(--vvd-color-neutral-600);font:var(--vvd-typography-base-condensed)}.dz-preview .dz-error-message{display:flex;align-items:center;color:var(--vvd-color-alert-600);font:var(--vvd-typography-base-condensed-bold);gap:4px;margin-block-start:4px}.dz-preview:not(.dz-error) .dz-error-message{display:none}.dz-preview.dz-error{border:1px solid var(--vvd-color-alert-500);background-color:var(--vvd-color-alert-50)}.dz-preview.dz-error .dz-details .dz-size,.dz-preview.dz-error .dz-progress{display:none}.dz-preview .remove-btn{display:inline;align-self:center;grid-column:2/-1;grid-row:1/-1}.message{margin-block-start:4px;--_low-ink-color: var(--vvd-color-neutral-600)}.preview-list{--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}.preview-list{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{border:0;border-radius:4px;background-color:var(--scrollbar-fallback-track-color, var(--scrollbar-thumb-color))}.preview-list{display:flex;flex-direction:column;gap:12px;margin-block-start:12px;overflow-y:auto}.preview-list:empty{display:none}";
16
+ const styles = ":host{display:block;max-inline-size:400px}.base{display:flex;flex-direction:column;block-size:inherit;max-block-size:inherit;--_low-ink-color: var(--vvd-color-neutral-600)}.control-wrapper{display:flex;flex-direction:column;block-size:inherit;gap:4px;max-block-size:inherit}.control{display:flex;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;padding:16px;border:1px dashed var(--vvd-color-neutral-400);border-radius:8px;background-color:var(--vvd-color-cta-50);color:var(--vvd-color-neutral-600);cursor:pointer;font:var(--vvd-typography-base);gap:8px;inline-size:100%;min-block-size:52px;outline:none;transition:all .3s ease}.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(--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:hover,.control:active,.control:focus-visible{background-color:var(--vvd-color-cta-100)}.main{pointer-events:none}.dz-preview{display:grid;box-sizing:border-box;padding:8px;border:1px solid var(--vvd-color-neutral-300);border-radius:8px;background-color:var(--file-picker-list-item-background-color, var(--vvd-color-canvas));grid-template-columns:1fr auto;grid-template-rows:auto auto;inline-size:100%}.dz-preview .dz-details{display:flex;min-width:0;flex-direction:column;max-inline-size:100%}.dz-preview .dz-details .dz-filename{overflow:hidden;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base);text-overflow:ellipsis;white-space:nowrap}.dz-preview .dz-details .dz-size{color:var(--vvd-color-neutral-600);font:var(--vvd-typography-base-condensed)}.dz-preview .dz-error-message{display:flex;align-items:center;color:var(--vvd-color-alert-600);font:var(--vvd-typography-base-condensed-bold);gap:4px;margin-block-start:4px}.dz-preview:not(.dz-error) .dz-error-message{display:none}.dz-preview.dz-error{border:1px solid var(--vvd-color-alert-500);background-color:var(--vvd-color-alert-50)}.dz-preview.dz-error .dz-details .dz-size,.dz-preview.dz-error .dz-progress{display:none}.dz-preview .remove-btn{display:inline;align-self:center;grid-column:2/-1;grid-row:1/-1}.preview-list{--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}.preview-list{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{border:0;border-radius:4px;background-color:var(--scrollbar-fallback-track-color, var(--scrollbar-thumb-color))}.preview-list{display:flex;flex-direction:column;gap:12px;margin-block-start:12px;overflow-y:auto}.preview-list:empty{display:none}";
16
17
 
17
18
  var objectExtend = extend;
18
19
 
@@ -2140,34 +2141,15 @@ function $3ed269f2f0fb224b$var$__guardMethod__(obj, methodName, transform) {
2140
2141
  else return undefined;
2141
2142
  }
2142
2143
 
2143
- class _FilePicker extends vividElement.VividElement {
2144
- }
2145
- class FormAssociatedFilePicker extends formAssociated.FormAssociated(_FilePicker) {
2146
- constructor() {
2147
- super(...arguments);
2148
- this.proxy = document.createElement("input");
2149
- }
2150
- }
2151
-
2152
2144
  var __defProp = Object.defineProperty;
2153
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
2154
- var __typeError = (msg) => {
2155
- throw TypeError(msg);
2156
- };
2157
2145
  var __decorateClass = (decorators, target, key, kind) => {
2158
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
2146
+ var result = void 0 ;
2159
2147
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
2160
2148
  if (decorator = decorators[i])
2161
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
2162
- if (kind && result) __defProp(target, key, result);
2149
+ result = (decorator(target, key, result) ) || result;
2150
+ if (result) __defProp(target, key, result);
2163
2151
  return result;
2164
2152
  };
2165
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
2166
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
2167
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
2168
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
2169
- var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
2170
- var _dropzone, _FilePicker_instances, syncSingleFileState_fn, _localizeErrorMessage, _localizeFileSizeNumberAndUnits, addRemoveButtonToFilesPreview_fn, chooseFile_fn, updateHiddenFileInput_fn, keepOnlyNewestFile_fn, handleFilesChanged_fn, updateFormValue_fn, setValueToAFakePathLikeNativeInput_fn, formatNumbersInMessage_fn;
2171
2153
  const isFormAssociatedTryingToSetFormValueToFakePath = (value) => typeof value === "string";
2172
2154
  const generateFilePreviewTemplate = (buttonTag, iconTag, locale) => {
2173
2155
  return `<div class="dz-preview dz-file-preview">
@@ -2182,13 +2164,13 @@ const generateFilePreviewTemplate = (buttonTag, iconTag, locale) => {
2182
2164
  <${buttonTag} class="remove-btn" icon="delete-line" appearance="ghost-light" size="condensed" aria-label="${locale.filePicker.removeFileLabel}"></${buttonTag}>
2183
2165
  </div>`;
2184
2166
  };
2185
- exports.FilePicker = class FilePicker extends delegatesAria.DelegatesAria(
2186
- localized.Localized(FormAssociatedFilePicker)
2167
+ class FilePicker extends mixins.WithFeedback(
2168
+ withErrorText.WithErrorText(
2169
+ formElement.FormElement(delegatesAria.DelegatesAria(localized.Localized(formAssociated.FormAssociated(vividElement.VividElement))))
2170
+ )
2187
2171
  ) {
2188
2172
  constructor() {
2189
2173
  super();
2190
- __privateAdd(this, _FilePicker_instances);
2191
- __privateAdd(this, _dropzone);
2192
2174
  this.singleFile = false;
2193
2175
  this.maxFileSize = 256;
2194
2176
  /**
@@ -2208,7 +2190,7 @@ exports.FilePicker = class FilePicker extends delegatesAria.DelegatesAria(
2208
2190
  * Used internally to hold the tag that icon is registered at.
2209
2191
  */
2210
2192
  this.iconTag = "vwc-icon";
2211
- __privateAdd(this, _localizeErrorMessage, (file, message) => {
2193
+ this.#localizeErrorMessage = (file, message) => {
2212
2194
  if (file.previewElement) {
2213
2195
  file.previewElement.classList.add("dz-error");
2214
2196
  if (typeof message !== "string" && message.error) {
@@ -2217,15 +2199,21 @@ exports.FilePicker = class FilePicker extends delegatesAria.DelegatesAria(
2217
2199
  for (const node of file.previewElement.querySelectorAll(
2218
2200
  "[data-dz-errormessage]"
2219
2201
  )) {
2220
- node.textContent = __privateMethod(this, _FilePicker_instances, formatNumbersInMessage_fn).call(this, message);
2202
+ node.textContent = this.#formatNumbersInMessage(message);
2221
2203
  }
2222
2204
  }
2223
- });
2224
- __privateAdd(this, _localizeFileSizeNumberAndUnits, () => {
2225
- __privateGet(this, _dropzone).filesize = (size) => {
2226
- return __privateMethod(this, _FilePicker_instances, formatNumbersInMessage_fn).call(this, $3ed269f2f0fb224b$export$2e2bcd8739ae039.prototype.filesize.call(__privateGet(this, _dropzone), size));
2205
+ };
2206
+ this.#localizeFileSizeNumberAndUnits = () => {
2207
+ this.#dropzone.filesize = (size) => {
2208
+ return this.#formatNumbersInMessage(
2209
+ $3ed269f2f0fb224b$export$2e2bcd8739ae039.prototype.filesize.call(this.#dropzone, size)
2210
+ );
2227
2211
  };
2228
- });
2212
+ };
2213
+ /**
2214
+ * @internal
2215
+ */
2216
+ this.proxy = document.createElement("input");
2229
2217
  this.setFormValue = (value, state) => {
2230
2218
  if (isFormAssociatedTryingToSetFormValueToFakePath(value)) {
2231
2219
  return;
@@ -2234,13 +2222,14 @@ exports.FilePicker = class FilePicker extends delegatesAria.DelegatesAria(
2234
2222
  };
2235
2223
  $3ed269f2f0fb224b$export$2e2bcd8739ae039.autoDiscover = false;
2236
2224
  }
2225
+ #dropzone;
2237
2226
  /**
2238
2227
  * Files that have been added to the file picker and passed validation.
2239
2228
  *
2240
2229
  * @public
2241
2230
  */
2242
2231
  get files() {
2243
- return __privateGet(this, _dropzone)?.getAcceptedFiles() ?? [];
2232
+ return this.#dropzone?.getAcceptedFiles() ?? [];
2244
2233
  }
2245
2234
  /**
2246
2235
  * Files that have been rejected by the file picker for failing validation.
@@ -2248,45 +2237,71 @@ exports.FilePicker = class FilePicker extends delegatesAria.DelegatesAria(
2248
2237
  * @public
2249
2238
  */
2250
2239
  get rejectedFiles() {
2251
- return __privateGet(this, _dropzone)?.getRejectedFiles() ?? [];
2240
+ return this.#dropzone?.getRejectedFiles() ?? [];
2241
+ }
2242
+ #syncSingleFileState() {
2243
+ if (this.singleFile) {
2244
+ this.#dropzone?.hiddenFileInput?.removeAttribute("multiple");
2245
+ } else {
2246
+ this.#dropzone?.hiddenFileInput?.setAttribute("multiple", "multiple");
2247
+ }
2252
2248
  }
2253
2249
  singleFileChanged() {
2254
- __privateMethod(this, _FilePicker_instances, syncSingleFileState_fn).call(this);
2250
+ this.#syncSingleFileState();
2255
2251
  }
2256
2252
  maxFilesChanged(_oldValue, newValue) {
2257
- if (!__privateGet(this, _dropzone)) {
2253
+ if (!this.#dropzone) {
2258
2254
  return;
2259
2255
  }
2260
- __privateGet(this, _dropzone).options.maxFiles = newValue;
2261
- __privateMethod(this, _FilePicker_instances, updateHiddenFileInput_fn).call(this);
2256
+ this.#dropzone.options.maxFiles = newValue;
2257
+ this.#updateHiddenFileInput();
2262
2258
  }
2263
2259
  maxFileSizeChanged(_oldValue, newValue) {
2264
- if (!__privateGet(this, _dropzone)) {
2260
+ if (!this.#dropzone) {
2265
2261
  return;
2266
2262
  }
2267
- __privateGet(this, _dropzone).options.maxFilesize = newValue;
2263
+ this.#dropzone.options.maxFilesize = newValue;
2268
2264
  }
2269
2265
  acceptChanged(_oldValue, newValue) {
2270
- if (!__privateGet(this, _dropzone)) {
2266
+ if (!this.#dropzone) {
2271
2267
  return;
2272
2268
  }
2273
- __privateGet(this, _dropzone).options.acceptedFiles = newValue;
2269
+ this.#dropzone.options.acceptedFiles = newValue;
2274
2270
  }
2275
2271
  invalidFileTypeErrorChanged(_oldValue, newValue) {
2276
- if (__privateGet(this, _dropzone))
2277
- __privateGet(this, _dropzone).options.dictInvalidFileType = newValue || this.locale.filePicker.invalidFileTypeError;
2272
+ if (this.#dropzone)
2273
+ this.#dropzone.options.dictInvalidFileType = newValue || this.locale.filePicker.invalidFileTypeError;
2278
2274
  }
2279
2275
  maxFilesExceededErrorChanged(_oldValue, newValue) {
2280
- if (__privateGet(this, _dropzone))
2281
- __privateGet(this, _dropzone).options.dictMaxFilesExceeded = newValue || this.locale.filePicker.maxFilesExceededError;
2276
+ if (this.#dropzone)
2277
+ this.#dropzone.options.dictMaxFilesExceeded = newValue || this.locale.filePicker.maxFilesExceededError;
2282
2278
  }
2283
2279
  fileTooBigErrorChanged(_oldValue, newValue) {
2284
- if (__privateGet(this, _dropzone))
2285
- __privateGet(this, _dropzone).options.dictFileTooBig = newValue || this.locale.filePicker.fileTooBigError;
2280
+ if (this.#dropzone)
2281
+ this.#dropzone.options.dictFileTooBig = newValue || this.locale.filePicker.fileTooBigError;
2286
2282
  }
2287
2283
  nameChanged(previous, next) {
2288
2284
  super.nameChanged(previous, next);
2289
- __privateMethod(this, _FilePicker_instances, updateFormValue_fn).call(this);
2285
+ this.#updateFormValue();
2286
+ }
2287
+ #localizeErrorMessage;
2288
+ #localizeFileSizeNumberAndUnits;
2289
+ #addRemoveButtonToFilesPreview() {
2290
+ this.#dropzone.on("addedfiles", (files) => {
2291
+ for (const file of files) {
2292
+ if (file.previewElement) {
2293
+ const removeButton = file.previewElement.querySelector(
2294
+ ".remove-btn"
2295
+ );
2296
+ removeButton.addEventListener("click", (e) => {
2297
+ e.preventDefault();
2298
+ e.stopPropagation();
2299
+ this.#dropzone.removeFile(file);
2300
+ });
2301
+ }
2302
+ }
2303
+ this.#handleFilesChanged();
2304
+ });
2290
2305
  }
2291
2306
  connectedCallback() {
2292
2307
  super.connectedCallback();
@@ -2296,7 +2311,7 @@ exports.FilePicker = class FilePicker extends delegatesAria.DelegatesAria(
2296
2311
  const previewList = this.shadowRoot.querySelector(
2297
2312
  ".preview-list"
2298
2313
  );
2299
- __privateSet(this, _dropzone, new $3ed269f2f0fb224b$export$2e2bcd8739ae039(control, {
2314
+ this.#dropzone = new $3ed269f2f0fb224b$export$2e2bcd8739ae039(control, {
2300
2315
  url: "/",
2301
2316
  // dummy url, we do not use dropzone's upload functionality
2302
2317
  maxFiles: this.maxFiles ?? null,
@@ -2314,18 +2329,18 @@ exports.FilePicker = class FilePicker extends delegatesAria.DelegatesAria(
2314
2329
  dictInvalidFileType: this.invalidFileTypeError || this.locale.filePicker.invalidFileTypeError,
2315
2330
  dictMaxFilesExceeded: this.maxFilesExceededError || this.locale.filePicker.maxFilesExceededError,
2316
2331
  dictFileTooBig: this.fileTooBigError || this.locale.filePicker.fileTooBigError,
2317
- error: __privateGet(this, _localizeErrorMessage)
2318
- }));
2319
- __privateGet(this, _localizeFileSizeNumberAndUnits).call(this);
2320
- __privateMethod(this, _FilePicker_instances, addRemoveButtonToFilesPreview_fn).call(this);
2321
- __privateGet(this, _dropzone).on("removedfile", () => {
2322
- __privateMethod(this, _FilePicker_instances, handleFilesChanged_fn).call(this);
2332
+ error: this.#localizeErrorMessage
2333
+ });
2334
+ this.#localizeFileSizeNumberAndUnits();
2335
+ this.#addRemoveButtonToFilesPreview();
2336
+ this.#dropzone.on("removedfile", () => {
2337
+ this.#handleFilesChanged();
2323
2338
  });
2324
- __privateMethod(this, _FilePicker_instances, syncSingleFileState_fn).call(this);
2339
+ this.#syncSingleFileState();
2325
2340
  }
2326
2341
  disconnectedCallback() {
2327
2342
  super.disconnectedCallback();
2328
- __privateGet(this, _dropzone).destroy();
2343
+ this.#dropzone.destroy();
2329
2344
  }
2330
2345
  /**
2331
2346
  * Used internally to set the button tag.
@@ -2346,126 +2361,104 @@ exports.FilePicker = class FilePicker extends delegatesAria.DelegatesAria(
2346
2361
  */
2347
2362
  handleKeydown(e) {
2348
2363
  if (e.key === "Enter" || e.key === " ") {
2349
- __privateMethod(this, _FilePicker_instances, chooseFile_fn).call(this);
2364
+ this.#chooseFile();
2350
2365
  }
2351
2366
  return true;
2352
2367
  }
2353
- validate() {
2354
- super.validate(this.control);
2368
+ #chooseFile() {
2369
+ if (this.#dropzone.hiddenFileInput) {
2370
+ this.#dropzone.hiddenFileInput.click();
2371
+ }
2355
2372
  }
2356
- formResetCallback() {
2357
- super.formResetCallback();
2358
- __privateGet(this, _dropzone).removeAllFiles();
2373
+ #updateHiddenFileInput() {
2374
+ this.#dropzone.hiddenFileInput.dispatchEvent(
2375
+ new Event("change", { bubbles: false })
2376
+ );
2359
2377
  }
2360
- /**
2361
- * Removes all files from the File Picker.
2362
- */
2363
- removeAllFiles() {
2364
- __privateGet(this, _dropzone)?.removeAllFiles();
2378
+ #keepOnlyNewestFile() {
2379
+ for (let i = 0; i < this.files.length - 1; i++) {
2380
+ this.#dropzone.removeFile(this.files[i]);
2381
+ }
2365
2382
  }
2366
- };
2367
- _dropzone = new WeakMap();
2368
- _FilePicker_instances = new WeakSet();
2369
- syncSingleFileState_fn = function() {
2370
- if (this.singleFile) {
2371
- __privateGet(this, _dropzone)?.hiddenFileInput?.removeAttribute("multiple");
2372
- } else {
2373
- __privateGet(this, _dropzone)?.hiddenFileInput?.setAttribute("multiple", "multiple");
2383
+ #handleFilesChanged() {
2384
+ if (this.singleFile && this.files.length >= 1) {
2385
+ this.#keepOnlyNewestFile();
2386
+ }
2387
+ this.$emit("change");
2388
+ this.#updateFormValue();
2389
+ this.validate();
2390
+ requestAnimationFrame(() => this.#syncSingleFileState());
2374
2391
  }
2375
- };
2376
- _localizeErrorMessage = new WeakMap();
2377
- _localizeFileSizeNumberAndUnits = new WeakMap();
2378
- addRemoveButtonToFilesPreview_fn = function() {
2379
- __privateGet(this, _dropzone).on("addedfiles", (files) => {
2380
- for (const file of files) {
2381
- if (file.previewElement) {
2382
- const removeButton = file.previewElement.querySelector(
2383
- ".remove-btn"
2384
- );
2385
- removeButton.addEventListener("click", (e) => {
2386
- e.preventDefault();
2387
- e.stopPropagation();
2388
- __privateGet(this, _dropzone).removeFile(file);
2389
- });
2392
+ #updateFormValue() {
2393
+ const files = this.files;
2394
+ if (!this.name) {
2395
+ this.setFormValue(null);
2396
+ } else {
2397
+ const formData = new FormData();
2398
+ for (const file of files) {
2399
+ formData.append(this.name, file);
2390
2400
  }
2401
+ this.setFormValue(formData);
2391
2402
  }
2392
- __privateMethod(this, _FilePicker_instances, handleFilesChanged_fn).call(this);
2393
- });
2394
- };
2395
- chooseFile_fn = function() {
2396
- if (__privateGet(this, _dropzone).hiddenFileInput) {
2397
- __privateGet(this, _dropzone).hiddenFileInput.click();
2403
+ this.#setValueToAFakePathLikeNativeInput();
2398
2404
  }
2399
- };
2400
- updateHiddenFileInput_fn = function() {
2401
- __privateGet(this, _dropzone).hiddenFileInput.dispatchEvent(
2402
- new Event("change", { bubbles: false })
2403
- );
2404
- };
2405
- keepOnlyNewestFile_fn = function() {
2406
- for (let i = 0; i < this.files.length - 1; i++) {
2407
- __privateGet(this, _dropzone).removeFile(this.files[i]);
2405
+ #setValueToAFakePathLikeNativeInput() {
2406
+ this.value = this.files.length > 0 ? `C:\\fakepath\\${this.files[0].name}` : "";
2408
2407
  }
2409
- };
2410
- handleFilesChanged_fn = function() {
2411
- if (this.singleFile && this.files.length >= 1) {
2412
- __privateMethod(this, _FilePicker_instances, keepOnlyNewestFile_fn).call(this);
2408
+ #getCustomValidationError() {
2409
+ if (this.rejectedFiles.length > 0) {
2410
+ return this.locale.filePicker.invalidFilesError;
2411
+ }
2412
+ return null;
2413
2413
  }
2414
- this.$emit("change");
2415
- __privateMethod(this, _FilePicker_instances, updateFormValue_fn).call(this);
2416
- requestAnimationFrame(() => __privateMethod(this, _FilePicker_instances, syncSingleFileState_fn).call(this));
2417
- };
2418
- updateFormValue_fn = function() {
2419
- const files = this.files;
2420
- if (!this.name) {
2421
- this.setFormValue(null);
2422
- } else {
2423
- const formData = new FormData();
2424
- for (const file of files) {
2425
- formData.append(this.name, file);
2426
- }
2427
- this.setFormValue(formData);
2414
+ /** {@inheritDoc (FormAssociated:interface).validate} */
2415
+ validate() {
2416
+ if (this.proxy) {
2417
+ this.proxy.setCustomValidity(this.#getCustomValidationError() ?? "");
2418
+ }
2419
+ super.validate(this.control);
2428
2420
  }
2429
- __privateMethod(this, _FilePicker_instances, setValueToAFakePathLikeNativeInput_fn).call(this);
2430
- };
2431
- setValueToAFakePathLikeNativeInput_fn = function() {
2432
- this.value = this.files.length > 0 ? `C:\\fakepath\\${this.files[0].name}` : "";
2433
- };
2434
- formatNumbersInMessage_fn = function(message) {
2435
- if (this.locale.common.useCommaAsDecimalSeparator) {
2436
- return message.replace(/(\d+)\.(\d+)/g, "$1,$2");
2421
+ formResetCallback() {
2422
+ super.formResetCallback();
2423
+ this.#dropzone.removeAllFiles();
2437
2424
  }
2438
- return message;
2439
- };
2425
+ #formatNumbersInMessage(message) {
2426
+ if (this.locale.common.useCommaAsDecimalSeparator) {
2427
+ return message.replace(/(\d+)\.(\d+)/g, "$1,$2");
2428
+ }
2429
+ return message;
2430
+ }
2431
+ /**
2432
+ * Removes all files from the File Picker.
2433
+ */
2434
+ removeAllFiles() {
2435
+ this.#dropzone?.removeAllFiles();
2436
+ }
2437
+ }
2440
2438
  __decorateClass([
2441
2439
  vividElement.attr({ attribute: "single-file", mode: "boolean" })
2442
- ], exports.FilePicker.prototype, "singleFile", 2);
2440
+ ], FilePicker.prototype, "singleFile");
2443
2441
  __decorateClass([
2444
2442
  vividElement.attr({ attribute: "max-files" })
2445
- ], exports.FilePicker.prototype, "maxFiles", 2);
2443
+ ], FilePicker.prototype, "maxFiles");
2446
2444
  __decorateClass([
2447
2445
  vividElement.attr({ mode: "fromView", attribute: "max-file-size" })
2448
- ], exports.FilePicker.prototype, "maxFileSize", 2);
2446
+ ], FilePicker.prototype, "maxFileSize");
2449
2447
  __decorateClass([
2450
2448
  vividElement.attr
2451
- ], exports.FilePicker.prototype, "accept", 2);
2449
+ ], FilePicker.prototype, "accept");
2452
2450
  __decorateClass([
2453
2451
  vividElement.attr
2454
- ], exports.FilePicker.prototype, "size", 2);
2452
+ ], FilePicker.prototype, "size");
2455
2453
  __decorateClass([
2456
2454
  vividElement.attr({ attribute: "invalid-file-type-error" })
2457
- ], exports.FilePicker.prototype, "invalidFileTypeError", 2);
2455
+ ], FilePicker.prototype, "invalidFileTypeError");
2458
2456
  __decorateClass([
2459
2457
  vividElement.attr({ attribute: "max-files-exceeded-error" })
2460
- ], exports.FilePicker.prototype, "maxFilesExceededError", 2);
2458
+ ], FilePicker.prototype, "maxFilesExceededError");
2461
2459
  __decorateClass([
2462
2460
  vividElement.attr({ attribute: "file-too-big-error" })
2463
- ], exports.FilePicker.prototype, "fileTooBigError", 2);
2464
- exports.FilePicker = __decorateClass([
2465
- formElements.errorText,
2466
- formElements.formElements
2467
- ], exports.FilePicker);
2468
- applyMixinsWithObservables.applyMixinsWithObservables(exports.FilePicker, formElements.FormElementHelperText);
2461
+ ], FilePicker.prototype, "fileTooBigError");
2469
2462
 
2470
2463
  const getClasses = ({ size }) => classNames.classNames("control", "dz-default", "dz-message", [
2471
2464
  `size-${size}`,
@@ -2482,18 +2475,21 @@ const FilePickerTemplate = (context) => {
2482
2475
  (x) => x.label,
2483
2476
  vividElement.html`<label>${(x) => x.label}</label>`
2484
2477
  )}
2485
- <div
2486
- ${ref.ref("control")}
2487
- class="${getClasses}"
2488
- tabindex="0"
2489
- @keydown="${(x, c) => x.handleKeydown(c.event)}"
2490
- ${delegatesAria.delegateAria({
2478
+ <div class="control-wrapper">
2479
+ <div
2480
+ ${ref.ref("control")}
2481
+ class="${getClasses}"
2482
+ tabindex="0"
2483
+ @keydown="${(x, c) => x.handleKeydown(c.event)}"
2484
+ aria-describedby="${(x) => x._feedbackDescribedBy}"
2485
+ ${delegatesAria.delegateAria({
2491
2486
  role: "button"
2492
2487
  })}
2493
- >
2494
- <slot class="main"></slot>
2488
+ >
2489
+ <slot class="main"></slot>
2490
+ </div>
2491
+ ${(x) => x._getFeedbackTemplate(context)}
2495
2492
  </div>
2496
- ${formElements.getFeedbackTemplate(context)}
2497
2493
  <div class="preview-list"></div>
2498
2494
  </div>
2499
2495
  `;
@@ -2501,9 +2497,9 @@ const FilePickerTemplate = (context) => {
2501
2497
 
2502
2498
  const filePickerDefinition = vividElement.defineVividComponent(
2503
2499
  "file-picker",
2504
- exports.FilePicker,
2500
+ FilePicker,
2505
2501
  FilePickerTemplate,
2506
- [definition$1.iconDefinition, definition.buttonDefinition],
2502
+ [definition$1.iconDefinition, definition.buttonDefinition, mixins.feedbackMessageDefinition],
2507
2503
  {
2508
2504
  styles,
2509
2505
  shadowOptions: {
@@ -2513,5 +2509,6 @@ const filePickerDefinition = vividElement.defineVividComponent(
2513
2509
  );
2514
2510
  const registerFilePicker = vividElement.createRegisterFunction(filePickerDefinition);
2515
2511
 
2512
+ exports.FilePicker = FilePicker;
2516
2513
  exports.filePickerDefinition = filePickerDefinition;
2517
2514
  exports.registerFilePicker = registerFilePicker;