bromcom-ui-next 0.1.30 → 0.1.31

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 (546) hide show
  1. package/dist/bromcom-ui/bcm-accordion-group.entry.esm.js.map +1 -1
  2. package/dist/bromcom-ui/bcm-accordion.entry.esm.js.map +1 -1
  3. package/dist/bromcom-ui/bcm-alert.entry.esm.js.map +1 -1
  4. package/dist/bromcom-ui/bcm-avatar.entry.esm.js.map +1 -1
  5. package/dist/bromcom-ui/bcm-badge.entry.esm.js.map +1 -1
  6. package/dist/bromcom-ui/bcm-basic-badge.entry.esm.js.map +1 -1
  7. package/dist/bromcom-ui/bcm-button-group.entry.esm.js.map +1 -1
  8. package/dist/bromcom-ui/bcm-button.entry.esm.js.map +1 -0
  9. package/dist/bromcom-ui/bcm-checkbox.entry.esm.js.map +1 -1
  10. package/dist/bromcom-ui/bcm-chip.entry.esm.js.map +1 -1
  11. package/dist/bromcom-ui/bcm-divider.entry.esm.js.map +1 -1
  12. package/dist/bromcom-ui/bcm-drawer.entry.esm.js.map +1 -0
  13. package/dist/bromcom-ui/bcm-dropdown-item.entry.esm.js.map +1 -1
  14. package/dist/bromcom-ui/bcm-dropdown.entry.esm.js.map +1 -1
  15. package/dist/bromcom-ui/bcm-file-upload.entry.esm.js.map +1 -0
  16. package/dist/bromcom-ui/bcm-input.entry.esm.js.map +1 -1
  17. package/dist/bromcom-ui/bcm-linked.entry.esm.js.map +1 -0
  18. package/dist/bromcom-ui/bcm-modal.entry.esm.js.map +1 -0
  19. package/dist/bromcom-ui/bcm-pop-confirm.entry.esm.js.map +1 -0
  20. package/dist/bromcom-ui/bcm-popover.entry.esm.js.map +1 -0
  21. package/dist/bromcom-ui/bcm-radio-group.entry.esm.js.map +1 -1
  22. package/dist/bromcom-ui/bcm-radio.entry.esm.js.map +1 -1
  23. package/dist/bromcom-ui/bcm-segment.bcm-segmented-picker.entry.esm.js.map +1 -0
  24. package/dist/bromcom-ui/bcm-shortcut.entry.esm.js.map +1 -1
  25. package/dist/bromcom-ui/bcm-switch.entry.esm.js.map +1 -1
  26. package/dist/bromcom-ui/bcm-tab.entry.esm.js.map +1 -0
  27. package/dist/bromcom-ui/bcm-tabs.entry.esm.js.map +1 -1
  28. package/dist/bromcom-ui/bcm-text.entry.esm.js.map +1 -1
  29. package/dist/bromcom-ui/bcm-textarea.entry.esm.js.map +1 -1
  30. package/dist/bromcom-ui/bcm-tooltip.entry.esm.js.map +1 -0
  31. package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
  32. package/dist/bromcom-ui/global/global.js +33 -30
  33. package/dist/bromcom-ui/p-010219cf.entry.js +2 -0
  34. package/dist/bromcom-ui/p-010219cf.entry.js.map +1 -0
  35. package/dist/bromcom-ui/p-01a4e00b.entry.js +2 -0
  36. package/dist/bromcom-ui/p-01a4e00b.entry.js.map +1 -0
  37. package/dist/bromcom-ui/p-14c63d61.entry.js +2 -0
  38. package/dist/bromcom-ui/p-14c63d61.entry.js.map +1 -0
  39. package/dist/bromcom-ui/p-20a94dec.entry.js +2 -0
  40. package/dist/bromcom-ui/p-20a94dec.entry.js.map +1 -0
  41. package/dist/bromcom-ui/p-398620c2.entry.js +2 -0
  42. package/dist/bromcom-ui/p-398620c2.entry.js.map +1 -0
  43. package/dist/bromcom-ui/p-3b898f90.entry.js +2 -0
  44. package/dist/bromcom-ui/p-3b898f90.entry.js.map +1 -0
  45. package/dist/bromcom-ui/p-43c85c84.entry.js +2 -0
  46. package/dist/bromcom-ui/p-43c85c84.entry.js.map +1 -0
  47. package/dist/bromcom-ui/p-4e6661a5.entry.js +2 -0
  48. package/dist/bromcom-ui/p-4e6661a5.entry.js.map +1 -0
  49. package/dist/bromcom-ui/p-52bb0cdc.entry.js +2 -0
  50. package/dist/bromcom-ui/p-52bb0cdc.entry.js.map +1 -0
  51. package/dist/bromcom-ui/p-61c1c1c8.entry.js +2 -0
  52. package/dist/bromcom-ui/p-61c1c1c8.entry.js.map +1 -0
  53. package/dist/bromcom-ui/p-82e4c5f2.entry.js +2 -0
  54. package/dist/bromcom-ui/p-82e4c5f2.entry.js.map +1 -0
  55. package/dist/bromcom-ui/p-86f85963.entry.js +2 -0
  56. package/dist/bromcom-ui/p-86f85963.entry.js.map +1 -0
  57. package/dist/bromcom-ui/p-9249c1d1.entry.js +2 -0
  58. package/dist/bromcom-ui/p-9249c1d1.entry.js.map +1 -0
  59. package/dist/bromcom-ui/p-B6Ppbs5O.js +3 -0
  60. package/dist/bromcom-ui/p-B6Ppbs5O.js.map +1 -0
  61. package/dist/bromcom-ui/p-DBDSgIvP.js +2 -0
  62. package/dist/bromcom-ui/p-DBDSgIvP.js.map +1 -0
  63. package/dist/bromcom-ui/p-DaE0ZLar.js +2 -0
  64. package/dist/bromcom-ui/p-DaE0ZLar.js.map +1 -0
  65. package/dist/bromcom-ui/p-a25d1cef.entry.js +2 -0
  66. package/dist/bromcom-ui/p-a25d1cef.entry.js.map +1 -0
  67. package/dist/bromcom-ui/p-a4cb2e79.entry.js +2 -0
  68. package/dist/bromcom-ui/p-a4cb2e79.entry.js.map +1 -0
  69. package/dist/bromcom-ui/p-a68925b4.entry.js +2 -0
  70. package/dist/bromcom-ui/p-a68925b4.entry.js.map +1 -0
  71. package/dist/bromcom-ui/p-a750186c.entry.js +2 -0
  72. package/dist/bromcom-ui/p-a750186c.entry.js.map +1 -0
  73. package/dist/bromcom-ui/p-ac768b56.entry.js +2 -0
  74. package/dist/bromcom-ui/p-ac768b56.entry.js.map +1 -0
  75. package/dist/bromcom-ui/p-b0b193e6.entry.js +2 -0
  76. package/dist/bromcom-ui/p-b0b193e6.entry.js.map +1 -0
  77. package/dist/bromcom-ui/p-bf4409ca.entry.js +2 -0
  78. package/dist/bromcom-ui/p-bf4409ca.entry.js.map +1 -0
  79. package/dist/bromcom-ui/p-c57fb29b.entry.js +2 -0
  80. package/dist/bromcom-ui/p-c57fb29b.entry.js.map +1 -0
  81. package/dist/bromcom-ui/{p-1507908f.entry.js → p-ccc310aa.entry.js} +2 -2
  82. package/dist/bromcom-ui/p-ccc310aa.entry.js.map +1 -0
  83. package/dist/bromcom-ui/p-d4ee962d.entry.js +2 -0
  84. package/dist/bromcom-ui/p-d4ee962d.entry.js.map +1 -0
  85. package/dist/bromcom-ui/p-e25a2f7a.entry.js +2 -0
  86. package/dist/bromcom-ui/p-e25a2f7a.entry.js.map +1 -0
  87. package/dist/bromcom-ui/p-e5b0b2ad.entry.js +2 -0
  88. package/dist/bromcom-ui/p-e5b0b2ad.entry.js.map +1 -0
  89. package/dist/bromcom-ui/p-e70d784d.entry.js +2 -0
  90. package/dist/bromcom-ui/p-e70d784d.entry.js.map +1 -0
  91. package/dist/bromcom-ui/p-e9fa3a22.entry.js +2 -0
  92. package/dist/bromcom-ui/p-e9fa3a22.entry.js.map +1 -0
  93. package/dist/bromcom-ui/p-ef281184.entry.js +2 -0
  94. package/dist/bromcom-ui/p-ef281184.entry.js.map +1 -0
  95. package/dist/bromcom-ui/{p-496014ca.entry.js → p-fb6f616c.entry.js} +2 -2
  96. package/dist/bromcom-ui/p-fb6f616c.entry.js.map +1 -0
  97. package/dist/bromcom-ui/p-fd31c70c.entry.js +2 -0
  98. package/dist/bromcom-ui/p-fd31c70c.entry.js.map +1 -0
  99. package/dist/bromcom-ui/p-nf_HKsGq.js +2 -0
  100. package/dist/bromcom-ui/{p-CUvT12BL.js.map → p-nf_HKsGq.js.map} +1 -1
  101. package/dist/cjs/base-choice-control-EmA4JRjR.js +54 -0
  102. package/dist/cjs/base-choice-control-EmA4JRjR.js.map +1 -0
  103. package/dist/cjs/bcm-accordion-group.cjs.entry.js +20 -18
  104. package/dist/cjs/bcm-accordion-group.entry.cjs.js.map +1 -1
  105. package/dist/cjs/bcm-accordion.cjs.entry.js +73 -56
  106. package/dist/cjs/bcm-accordion.entry.cjs.js.map +1 -1
  107. package/dist/cjs/bcm-alert.cjs.entry.js +21 -21
  108. package/dist/cjs/bcm-alert.entry.cjs.js.map +1 -1
  109. package/dist/cjs/bcm-avatar.cjs.entry.js +22 -12
  110. package/dist/cjs/bcm-avatar.entry.cjs.js.map +1 -1
  111. package/dist/cjs/bcm-badge.cjs.entry.js +114 -82
  112. package/dist/cjs/bcm-badge.entry.cjs.js.map +1 -1
  113. package/dist/cjs/bcm-basic-badge.cjs.entry.js +73 -59
  114. package/dist/cjs/bcm-basic-badge.entry.cjs.js.map +1 -1
  115. package/dist/cjs/bcm-button-group.cjs.entry.js +36 -24
  116. package/dist/cjs/bcm-button-group.entry.cjs.js.map +1 -1
  117. package/dist/cjs/bcm-button.cjs.entry.js +338 -0
  118. package/dist/cjs/bcm-button.entry.cjs.js.map +1 -0
  119. package/dist/cjs/bcm-checkbox.cjs.entry.js +284 -174
  120. package/dist/cjs/bcm-checkbox.entry.cjs.js.map +1 -1
  121. package/dist/cjs/bcm-chip.cjs.entry.js +38 -35
  122. package/dist/cjs/bcm-chip.entry.cjs.js.map +1 -1
  123. package/dist/cjs/bcm-divider.cjs.entry.js +55 -55
  124. package/dist/cjs/bcm-divider.entry.cjs.js.map +1 -1
  125. package/dist/cjs/bcm-drawer.cjs.entry.js +332 -0
  126. package/dist/cjs/bcm-drawer.entry.cjs.js.map +1 -0
  127. package/dist/cjs/bcm-dropdown-item.cjs.entry.js +36 -33
  128. package/dist/cjs/bcm-dropdown-item.entry.cjs.js.map +1 -1
  129. package/dist/cjs/bcm-dropdown.cjs.entry.js +18 -17
  130. package/dist/cjs/bcm-dropdown.entry.cjs.js.map +1 -1
  131. package/dist/cjs/bcm-file-upload.cjs.entry.js +552 -0
  132. package/dist/cjs/bcm-file-upload.entry.cjs.js.map +1 -0
  133. package/dist/cjs/bcm-input.cjs.entry.js +250 -158
  134. package/dist/cjs/bcm-input.entry.cjs.js.map +1 -1
  135. package/dist/cjs/bcm-linked.cjs.entry.js +452 -0
  136. package/dist/cjs/bcm-linked.entry.cjs.js.map +1 -0
  137. package/dist/cjs/bcm-modal.cjs.entry.js +360 -0
  138. package/dist/cjs/bcm-modal.entry.cjs.js.map +1 -0
  139. package/dist/cjs/bcm-pop-confirm.cjs.entry.js +381 -0
  140. package/dist/cjs/bcm-pop-confirm.entry.cjs.js.map +1 -0
  141. package/dist/cjs/bcm-popover.cjs.entry.js +451 -0
  142. package/dist/cjs/bcm-popover.entry.cjs.js.map +1 -0
  143. package/dist/cjs/bcm-radio-group.cjs.entry.js +103 -80
  144. package/dist/cjs/bcm-radio-group.entry.cjs.js.map +1 -1
  145. package/dist/cjs/bcm-radio.cjs.entry.js +239 -106
  146. package/dist/cjs/bcm-radio.entry.cjs.js.map +1 -1
  147. package/dist/cjs/bcm-segment.bcm-segmented-picker.entry.cjs.js.map +1 -0
  148. package/dist/cjs/bcm-segment_2.cjs.entry.js +335 -0
  149. package/dist/cjs/bcm-shortcut.cjs.entry.js +5 -4
  150. package/dist/cjs/bcm-shortcut.entry.cjs.js.map +1 -1
  151. package/dist/cjs/bcm-switch.cjs.entry.js +281 -148
  152. package/dist/cjs/bcm-switch.entry.cjs.js.map +1 -1
  153. package/dist/cjs/bcm-tab.cjs.entry.js +44 -0
  154. package/dist/cjs/bcm-tab.entry.cjs.js.map +1 -0
  155. package/dist/cjs/bcm-tabs.cjs.entry.js +191 -237
  156. package/dist/cjs/bcm-tabs.entry.cjs.js.map +1 -1
  157. package/dist/cjs/bcm-text.cjs.entry.js +86 -85
  158. package/dist/cjs/bcm-text.entry.cjs.js.map +1 -1
  159. package/dist/cjs/bcm-textarea.cjs.entry.js +224 -154
  160. package/dist/cjs/bcm-textarea.entry.cjs.js.map +1 -1
  161. package/dist/cjs/bcm-tooltip.cjs.entry.js +414 -0
  162. package/dist/cjs/bcm-tooltip.entry.cjs.js.map +1 -0
  163. package/dist/cjs/bromcom-ui.cjs.js +2 -2
  164. package/dist/cjs/floating-ui.dom-S9nP6zZt.js +1622 -0
  165. package/dist/{bromcom-ui/floating-ui.dom-ltNPqX34.js.map → cjs/floating-ui.dom-S9nP6zZt.js.map} +1 -1
  166. package/dist/cjs/{index-CmYzUr-k.js → index-1Qal-onT.js} +111 -33
  167. package/dist/cjs/index-1Qal-onT.js.map +1 -0
  168. package/dist/cjs/loader.cjs.js +2 -2
  169. package/dist/cjs/{validation-messages-BjfpSEWk.js → validation-messages-DieKlSG4.js} +6 -7
  170. package/dist/{esm/validation-messages-CUvT12BL.js.map → cjs/validation-messages-DieKlSG4.js.map} +1 -1
  171. package/dist/collection/collection-manifest.json +4 -5
  172. package/dist/collection/components/_shared/form/base-choice-control.js +90 -0
  173. package/dist/collection/components/_shared/form/base-choice-control.js.map +1 -0
  174. package/dist/collection/components/_shared/form/base-form-control.js +115 -0
  175. package/dist/collection/components/_shared/form/base-form-control.js.map +1 -0
  176. package/dist/collection/components/accordion/accordion.component.js +72 -55
  177. package/dist/collection/components/accordion/accordion.component.js.map +1 -1
  178. package/dist/collection/components/accordion/accordion.css +1 -1
  179. package/dist/collection/components/accordion-group/accordion-group.component.js +20 -18
  180. package/dist/collection/components/accordion-group/accordion-group.component.js.map +1 -1
  181. package/dist/collection/components/alert/alert.component.js +19 -21
  182. package/dist/collection/components/alert/alert.component.js.map +1 -1
  183. package/dist/collection/components/alert/alert.css +1 -1
  184. package/dist/collection/components/avatar/avatar.component.js +20 -12
  185. package/dist/collection/components/avatar/avatar.component.js.map +1 -1
  186. package/dist/collection/components/avatar/avatar.css +1 -1
  187. package/dist/collection/components/badge/badge.component.js +111 -81
  188. package/dist/collection/components/badge/badge.component.js.map +1 -1
  189. package/dist/collection/components/badge/badge.css +1 -1
  190. package/dist/collection/components/basic-badge/basic-badge.component.js +70 -58
  191. package/dist/collection/components/basic-badge/basic-badge.component.js.map +1 -1
  192. package/dist/collection/components/basic-badge/basic-badge.css +1 -1
  193. package/dist/collection/components/button/button.component.js +105 -84
  194. package/dist/collection/components/button/button.component.js.map +1 -1
  195. package/dist/collection/components/button/button.css +1 -1
  196. package/dist/collection/components/button-group/button-group.component.js +34 -23
  197. package/dist/collection/components/button-group/button-group.component.js.map +1 -1
  198. package/dist/collection/components/button-group/button-group.css +1 -1
  199. package/dist/collection/components/checkbox/checkbox.component.js +355 -236
  200. package/dist/collection/components/checkbox/checkbox.component.js.map +1 -1
  201. package/dist/collection/components/checkbox/checkbox.css +1 -1
  202. package/dist/collection/components/chip/chip.component.js +35 -34
  203. package/dist/collection/components/chip/chip.component.js.map +1 -1
  204. package/dist/collection/components/chip/chip.css +1 -1
  205. package/dist/collection/components/divider/divider.component.js +53 -55
  206. package/dist/collection/components/divider/divider.component.js.map +1 -1
  207. package/dist/collection/components/drawer/drawer.component.js +168 -144
  208. package/dist/collection/components/drawer/drawer.component.js.map +1 -1
  209. package/dist/collection/components/dropdown/dropdown.component.js +16 -16
  210. package/dist/collection/components/dropdown/dropdown.component.js.map +1 -1
  211. package/dist/collection/components/dropdown/dropdown.css +1 -1
  212. package/dist/collection/components/dropdown-item/dropdown-item.component.js +34 -32
  213. package/dist/collection/components/dropdown-item/dropdown-item.component.js.map +1 -1
  214. package/dist/collection/components/dropdown-item/dropdown-item.css +1 -1
  215. package/dist/collection/components/input/input.component.js +241 -155
  216. package/dist/collection/components/input/input.component.js.map +1 -1
  217. package/dist/collection/components/linked/linked.component.js +160 -138
  218. package/dist/collection/components/linked/linked.component.js.map +1 -1
  219. package/dist/collection/components/linked/linked.css +1 -1
  220. package/dist/collection/components/modal/modal.component.js +180 -156
  221. package/dist/collection/components/modal/modal.component.js.map +1 -1
  222. package/dist/collection/components/pop-confirm/pop-confirm.component.js +190 -159
  223. package/dist/collection/components/pop-confirm/pop-confirm.component.js.map +1 -1
  224. package/dist/collection/components/pop-confirm/pop-confirm.css +1 -1
  225. package/dist/collection/components/popover/popover.component.js +240 -212
  226. package/dist/collection/components/popover/popover.component.js.map +1 -1
  227. package/dist/collection/components/popover/popover.css +1 -1
  228. package/dist/collection/components/radio/radio.component.js +282 -106
  229. package/dist/collection/components/radio/radio.component.js.map +1 -1
  230. package/dist/collection/components/radio-group/radio-group.component.js +102 -80
  231. package/dist/collection/components/radio-group/radio-group.component.js.map +1 -1
  232. package/dist/collection/components/segmented-picker/segment.component.js +228 -0
  233. package/dist/collection/components/segmented-picker/segment.component.js.map +1 -0
  234. package/dist/collection/components/segmented-picker/segment.css +1 -0
  235. package/dist/collection/components/segmented-picker/segmented-picker.component.js +354 -139
  236. package/dist/collection/components/segmented-picker/segmented-picker.component.js.map +1 -1
  237. package/dist/collection/components/segmented-picker/segmented-picker.css +1 -1
  238. package/dist/collection/components/shortcut/shortcut.js +4 -5
  239. package/dist/collection/components/shortcut/shortcut.js.map +1 -1
  240. package/dist/collection/components/switch/switch.component.js +350 -280
  241. package/dist/collection/components/switch/switch.component.js.map +1 -1
  242. package/dist/collection/components/switch/switch.css +1 -1
  243. package/dist/collection/components/tabs/bcm-tab.css +1 -0
  244. package/dist/collection/components/tabs/bcm-tabs.css +1 -1
  245. package/dist/collection/components/tabs/tab.component.js +169 -0
  246. package/dist/collection/components/tabs/tab.component.js.map +1 -0
  247. package/dist/collection/components/tabs/tabs.component.js +221 -352
  248. package/dist/collection/components/tabs/tabs.component.js.map +1 -1
  249. package/dist/collection/components/text/text.component.js +84 -85
  250. package/dist/collection/components/text/text.component.js.map +1 -1
  251. package/dist/collection/components/text/text.css +1 -1
  252. package/dist/collection/components/textarea/textarea.component.js +216 -153
  253. package/dist/collection/components/textarea/textarea.component.js.map +1 -1
  254. package/dist/collection/components/tooltip/tooltip.component.js +164 -154
  255. package/dist/collection/components/tooltip/tooltip.component.js.map +1 -1
  256. package/dist/collection/components/upload/file-upload.component.js +905 -0
  257. package/dist/collection/components/upload/file-upload.component.js.map +1 -0
  258. package/dist/collection/components/upload/file-upload.css +1 -0
  259. package/dist/collection/global/global.js +33 -30
  260. package/dist/collection/utils/i18n.js +3 -4
  261. package/dist/collection/utils/i18n.js.map +1 -1
  262. package/dist/collection/utils/slot/check-slot-content.js +1 -2
  263. package/dist/collection/utils/slot/check-slot-content.js.map +1 -1
  264. package/dist/collection/utils/validation-messages.js +1 -1
  265. package/dist/collection/utils/validation-messages.js.map +1 -1
  266. package/dist/components/bcm-accordion-group.js +19 -17
  267. package/dist/components/bcm-accordion-group.js.map +1 -1
  268. package/dist/components/bcm-accordion.js +72 -55
  269. package/dist/components/bcm-accordion.js.map +1 -1
  270. package/dist/components/bcm-alert.js +1 -114
  271. package/dist/components/bcm-alert.js.map +1 -1
  272. package/dist/components/bcm-avatar.js +22 -12
  273. package/dist/components/bcm-avatar.js.map +1 -1
  274. package/dist/components/bcm-badge.js +1 -1
  275. package/dist/components/bcm-basic-badge.js +72 -58
  276. package/dist/components/bcm-basic-badge.js.map +1 -1
  277. package/dist/components/bcm-button-group.js +35 -23
  278. package/dist/components/bcm-button-group.js.map +1 -1
  279. package/dist/components/bcm-button.js +1 -1
  280. package/dist/components/bcm-checkbox.js +296 -184
  281. package/dist/components/bcm-checkbox.js.map +1 -1
  282. package/dist/components/bcm-chip.js +37 -34
  283. package/dist/components/bcm-chip.js.map +1 -1
  284. package/dist/components/bcm-divider.js +54 -54
  285. package/dist/components/bcm-divider.js.map +1 -1
  286. package/dist/components/bcm-drawer.js +169 -144
  287. package/dist/components/bcm-drawer.js.map +1 -1
  288. package/dist/components/bcm-dropdown-item.js +35 -32
  289. package/dist/components/bcm-dropdown-item.js.map +1 -1
  290. package/dist/components/bcm-dropdown.js +19 -18
  291. package/dist/components/bcm-dropdown.js.map +1 -1
  292. package/dist/components/{bcm-tabs-content.d.ts → bcm-file-upload.d.ts} +4 -4
  293. package/dist/components/bcm-file-upload.js +593 -0
  294. package/dist/components/bcm-file-upload.js.map +1 -0
  295. package/dist/components/bcm-input.js +244 -158
  296. package/dist/components/bcm-input.js.map +1 -1
  297. package/dist/components/bcm-linked.js +1 -1
  298. package/dist/components/bcm-modal.js +181 -156
  299. package/dist/components/bcm-modal.js.map +1 -1
  300. package/dist/components/bcm-pop-confirm.js +192 -160
  301. package/dist/components/bcm-pop-confirm.js.map +1 -1
  302. package/dist/components/bcm-popover.js +242 -213
  303. package/dist/components/bcm-popover.js.map +1 -1
  304. package/dist/components/bcm-radio-group.js +102 -79
  305. package/dist/components/bcm-radio-group.js.map +1 -1
  306. package/dist/components/bcm-radio.js +241 -108
  307. package/dist/components/bcm-radio.js.map +1 -1
  308. package/dist/components/{bcm-tabs-list.d.ts → bcm-segment.d.ts} +4 -4
  309. package/dist/components/bcm-segment.js +110 -0
  310. package/dist/components/bcm-segment.js.map +1 -0
  311. package/dist/components/bcm-segmented-picker.js +234 -115
  312. package/dist/components/bcm-segmented-picker.js.map +1 -1
  313. package/dist/components/bcm-shortcut.js +4 -3
  314. package/dist/components/bcm-shortcut.js.map +1 -1
  315. package/dist/components/bcm-switch.js +292 -156
  316. package/dist/components/bcm-switch.js.map +1 -1
  317. package/dist/components/{bcm-tabs-trigger.d.ts → bcm-tab.d.ts} +4 -4
  318. package/dist/components/bcm-tab.js +71 -0
  319. package/dist/components/bcm-tab.js.map +1 -0
  320. package/dist/components/bcm-tabs.js +196 -247
  321. package/dist/components/bcm-tabs.js.map +1 -1
  322. package/dist/components/bcm-text.js +85 -84
  323. package/dist/components/bcm-text.js.map +1 -1
  324. package/dist/components/bcm-textarea.js +218 -154
  325. package/dist/components/bcm-textarea.js.map +1 -1
  326. package/dist/components/bcm-tooltip.js +164 -153
  327. package/dist/components/bcm-tooltip.js.map +1 -1
  328. package/dist/components/index.js +105 -32
  329. package/dist/components/index.js.map +1 -1
  330. package/dist/components/p-5_TgtzQU.js +119 -0
  331. package/dist/components/p-5_TgtzQU.js.map +1 -0
  332. package/dist/components/p-RlBWOSgL.js +179 -0
  333. package/dist/components/p-RlBWOSgL.js.map +1 -0
  334. package/dist/components/p-SERXqWcS.js +51 -0
  335. package/dist/components/p-SERXqWcS.js.map +1 -0
  336. package/dist/components/{p-CUvT12BL.js → p-nf_HKsGq.js} +6 -7
  337. package/dist/components/p-nf_HKsGq.js.map +1 -0
  338. package/dist/components/{p-CsIBm0J5.js → p-xQIzBLsS.js} +108 -85
  339. package/dist/components/p-xQIzBLsS.js.map +1 -0
  340. package/dist/components/{p-6VLsKZvR.js → p-z9ESseGb.js} +163 -140
  341. package/dist/components/p-z9ESseGb.js.map +1 -0
  342. package/dist/esm/base-choice-control-CKR8UdZ6.js +52 -0
  343. package/dist/esm/base-choice-control-CKR8UdZ6.js.map +1 -0
  344. package/dist/esm/bcm-accordion-group.entry.js +20 -18
  345. package/dist/esm/bcm-accordion-group.entry.js.map +1 -1
  346. package/dist/esm/bcm-accordion.entry.js +73 -56
  347. package/dist/esm/bcm-accordion.entry.js.map +1 -1
  348. package/dist/esm/bcm-alert.entry.js +21 -21
  349. package/dist/esm/bcm-alert.entry.js.map +1 -1
  350. package/dist/esm/bcm-avatar.entry.js +22 -12
  351. package/dist/esm/bcm-avatar.entry.js.map +1 -1
  352. package/dist/esm/bcm-badge.entry.js +114 -82
  353. package/dist/esm/bcm-badge.entry.js.map +1 -1
  354. package/dist/esm/bcm-basic-badge.entry.js +73 -59
  355. package/dist/esm/bcm-basic-badge.entry.js.map +1 -1
  356. package/dist/esm/bcm-button-group.entry.js +36 -24
  357. package/dist/esm/bcm-button-group.entry.js.map +1 -1
  358. package/dist/esm/bcm-button.entry.js +336 -0
  359. package/dist/esm/bcm-button.entry.js.map +1 -0
  360. package/dist/esm/bcm-checkbox.entry.js +284 -174
  361. package/dist/esm/bcm-checkbox.entry.js.map +1 -1
  362. package/dist/esm/bcm-chip.entry.js +38 -35
  363. package/dist/esm/bcm-chip.entry.js.map +1 -1
  364. package/dist/esm/bcm-divider.entry.js +55 -55
  365. package/dist/esm/bcm-divider.entry.js.map +1 -1
  366. package/dist/esm/bcm-drawer.entry.js +330 -0
  367. package/dist/esm/bcm-drawer.entry.js.map +1 -0
  368. package/dist/esm/bcm-dropdown-item.entry.js +36 -33
  369. package/dist/esm/bcm-dropdown-item.entry.js.map +1 -1
  370. package/dist/esm/bcm-dropdown.entry.js +18 -17
  371. package/dist/esm/bcm-dropdown.entry.js.map +1 -1
  372. package/dist/esm/bcm-file-upload.entry.js +550 -0
  373. package/dist/esm/bcm-file-upload.entry.js.map +1 -0
  374. package/dist/esm/bcm-input.entry.js +250 -158
  375. package/dist/esm/bcm-input.entry.js.map +1 -1
  376. package/dist/esm/bcm-linked.entry.js +450 -0
  377. package/dist/esm/bcm-linked.entry.js.map +1 -0
  378. package/dist/esm/bcm-modal.entry.js +358 -0
  379. package/dist/esm/bcm-modal.entry.js.map +1 -0
  380. package/dist/esm/bcm-pop-confirm.entry.js +379 -0
  381. package/dist/esm/bcm-pop-confirm.entry.js.map +1 -0
  382. package/dist/esm/bcm-popover.entry.js +449 -0
  383. package/dist/esm/bcm-popover.entry.js.map +1 -0
  384. package/dist/esm/bcm-radio-group.entry.js +103 -80
  385. package/dist/esm/bcm-radio-group.entry.js.map +1 -1
  386. package/dist/esm/bcm-radio.entry.js +239 -106
  387. package/dist/esm/bcm-radio.entry.js.map +1 -1
  388. package/dist/esm/bcm-segment.bcm-segmented-picker.entry.js.map +1 -0
  389. package/dist/esm/bcm-segment_2.entry.js +332 -0
  390. package/dist/esm/bcm-shortcut.entry.js +5 -4
  391. package/dist/esm/bcm-shortcut.entry.js.map +1 -1
  392. package/dist/esm/bcm-switch.entry.js +281 -148
  393. package/dist/esm/bcm-switch.entry.js.map +1 -1
  394. package/dist/esm/bcm-tab.entry.js +42 -0
  395. package/dist/esm/bcm-tab.entry.js.map +1 -0
  396. package/dist/esm/bcm-tabs.entry.js +191 -237
  397. package/dist/esm/bcm-tabs.entry.js.map +1 -1
  398. package/dist/esm/bcm-text.entry.js +86 -85
  399. package/dist/esm/bcm-text.entry.js.map +1 -1
  400. package/dist/esm/bcm-textarea.entry.js +224 -154
  401. package/dist/esm/bcm-textarea.entry.js.map +1 -1
  402. package/dist/esm/bcm-tooltip.entry.js +412 -0
  403. package/dist/esm/bcm-tooltip.entry.js.map +1 -0
  404. package/dist/esm/bromcom-ui.js +3 -3
  405. package/dist/esm/floating-ui.dom-DBDSgIvP.js +1615 -0
  406. package/dist/esm/floating-ui.dom-DBDSgIvP.js.map +1 -0
  407. package/dist/esm/{index-CRwAh9Np.js → index-B6Ppbs5O.js} +111 -34
  408. package/dist/esm/index-B6Ppbs5O.js.map +1 -0
  409. package/dist/esm/loader.js +3 -3
  410. package/dist/esm/{validation-messages-CUvT12BL.js → validation-messages-nf_HKsGq.js} +6 -7
  411. package/dist/{cjs/validation-messages-BjfpSEWk.js.map → esm/validation-messages-nf_HKsGq.js.map} +1 -1
  412. package/dist/types/components/_shared/form/base-choice-control.d.ts +15 -0
  413. package/dist/types/components/_shared/form/base-form-control.d.ts +11 -0
  414. package/dist/types/components/checkbox/checkbox.component.d.ts +89 -71
  415. package/dist/types/components/input/input.component.d.ts +5 -0
  416. package/dist/types/components/radio/radio.component.d.ts +21 -0
  417. package/dist/types/components/segmented-picker/segment.component.d.ts +42 -0
  418. package/dist/types/components/segmented-picker/segmented-picker.component.d.ts +91 -24
  419. package/dist/types/components/switch/switch.component.d.ts +83 -43
  420. package/dist/types/components/tabs/tab.component.d.ts +33 -0
  421. package/dist/types/components/tabs/tabs.component.d.ts +51 -64
  422. package/dist/types/components/textarea/textarea.component.d.ts +5 -0
  423. package/dist/types/components/upload/file-upload.component.d.ts +107 -0
  424. package/dist/types/components.d.ts +830 -382
  425. package/package.json +2 -2
  426. package/dist/bromcom-ui/_commonjsHelpers-CvGrISen.js.map +0 -1
  427. package/dist/bromcom-ui/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.esm.js.map +0 -1
  428. package/dist/bromcom-ui/bcm-segmented-picker-option.entry.esm.js.map +0 -1
  429. package/dist/bromcom-ui/bcm-segmented-picker.entry.esm.js.map +0 -1
  430. package/dist/bromcom-ui/bcm-tabs-content.entry.esm.js.map +0 -1
  431. package/dist/bromcom-ui/bcm-tabs-list.entry.esm.js.map +0 -1
  432. package/dist/bromcom-ui/bcm-tabs-trigger.entry.esm.js.map +0 -1
  433. package/dist/bromcom-ui/generate-id-Crb5QsB-.js.map +0 -1
  434. package/dist/bromcom-ui/index-40rmUZjU.js.map +0 -1
  435. package/dist/bromcom-ui/index-BCaJmHBB.js.map +0 -1
  436. package/dist/bromcom-ui/p-0c7c6896.entry.js +0 -2
  437. package/dist/bromcom-ui/p-0c7c6896.entry.js.map +0 -1
  438. package/dist/bromcom-ui/p-11d0e649.entry.js +0 -2
  439. package/dist/bromcom-ui/p-11d0e649.entry.js.map +0 -1
  440. package/dist/bromcom-ui/p-12f38632.entry.js +0 -2
  441. package/dist/bromcom-ui/p-12f38632.entry.js.map +0 -1
  442. package/dist/bromcom-ui/p-13cbd1f5.entry.js +0 -2
  443. package/dist/bromcom-ui/p-13cbd1f5.entry.js.map +0 -1
  444. package/dist/bromcom-ui/p-1507908f.entry.js.map +0 -1
  445. package/dist/bromcom-ui/p-1ce9913f.entry.js +0 -2
  446. package/dist/bromcom-ui/p-1ce9913f.entry.js.map +0 -1
  447. package/dist/bromcom-ui/p-206d767e.entry.js +0 -2
  448. package/dist/bromcom-ui/p-206d767e.entry.js.map +0 -1
  449. package/dist/bromcom-ui/p-3cf7a7f4.entry.js +0 -2
  450. package/dist/bromcom-ui/p-3cf7a7f4.entry.js.map +0 -1
  451. package/dist/bromcom-ui/p-4505feba.entry.js +0 -2
  452. package/dist/bromcom-ui/p-4505feba.entry.js.map +0 -1
  453. package/dist/bromcom-ui/p-496014ca.entry.js.map +0 -1
  454. package/dist/bromcom-ui/p-4a932cd3.entry.js +0 -2
  455. package/dist/bromcom-ui/p-4a932cd3.entry.js.map +0 -1
  456. package/dist/bromcom-ui/p-4e554b8d.entry.js +0 -2
  457. package/dist/bromcom-ui/p-4e554b8d.entry.js.map +0 -1
  458. package/dist/bromcom-ui/p-57c4c4c4.entry.js +0 -2
  459. package/dist/bromcom-ui/p-57c4c4c4.entry.js.map +0 -1
  460. package/dist/bromcom-ui/p-61293ab2.entry.js +0 -2
  461. package/dist/bromcom-ui/p-61293ab2.entry.js.map +0 -1
  462. package/dist/bromcom-ui/p-61789456.entry.js +0 -2
  463. package/dist/bromcom-ui/p-61789456.entry.js.map +0 -1
  464. package/dist/bromcom-ui/p-65d0f188.entry.js +0 -2
  465. package/dist/bromcom-ui/p-65d0f188.entry.js.map +0 -1
  466. package/dist/bromcom-ui/p-83f707dc.entry.js +0 -2
  467. package/dist/bromcom-ui/p-83f707dc.entry.js.map +0 -1
  468. package/dist/bromcom-ui/p-8ba02e7e.entry.js +0 -2
  469. package/dist/bromcom-ui/p-8ba02e7e.entry.js.map +0 -1
  470. package/dist/bromcom-ui/p-9e9bf32e.entry.js +0 -2
  471. package/dist/bromcom-ui/p-9e9bf32e.entry.js.map +0 -1
  472. package/dist/bromcom-ui/p-CRwAh9Np.js +0 -3
  473. package/dist/bromcom-ui/p-CRwAh9Np.js.map +0 -1
  474. package/dist/bromcom-ui/p-CUvT12BL.js +0 -2
  475. package/dist/bromcom-ui/p-c87a6acf.entry.js +0 -2
  476. package/dist/bromcom-ui/p-c87a6acf.entry.js.map +0 -1
  477. package/dist/bromcom-ui/p-e0e235a8.entry.js +0 -2
  478. package/dist/bromcom-ui/p-e0e235a8.entry.js.map +0 -1
  479. package/dist/bromcom-ui/p-e1ce8b55.entry.js +0 -2
  480. package/dist/bromcom-ui/p-e1ce8b55.entry.js.map +0 -1
  481. package/dist/bromcom-ui/p-e4dddb0b.entry.js +0 -2
  482. package/dist/bromcom-ui/p-e4dddb0b.entry.js.map +0 -1
  483. package/dist/bromcom-ui/p-f9426924.entry.js +0 -2
  484. package/dist/bromcom-ui/p-f9426924.entry.js.map +0 -1
  485. package/dist/bromcom-ui/p-faa0e62c.entry.js +0 -2
  486. package/dist/bromcom-ui/p-faa0e62c.entry.js.map +0 -1
  487. package/dist/bromcom-ui/p-fcb4399f.entry.js +0 -2
  488. package/dist/bromcom-ui/p-fcb4399f.entry.js.map +0 -1
  489. package/dist/bromcom-ui/tv-SlGJ5EfR.js.map +0 -1
  490. package/dist/bromcom-ui/validation-messages-CUvT12BL.js.map +0 -1
  491. package/dist/cjs/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.cjs.js.map +0 -1
  492. package/dist/cjs/bcm-button_7.cjs.entry.js +0 -4131
  493. package/dist/cjs/bcm-segmented-picker-option.cjs.entry.js +0 -105
  494. package/dist/cjs/bcm-segmented-picker-option.entry.cjs.js.map +0 -1
  495. package/dist/cjs/bcm-segmented-picker.cjs.entry.js +0 -142
  496. package/dist/cjs/bcm-segmented-picker.entry.cjs.js.map +0 -1
  497. package/dist/cjs/bcm-tabs-content.cjs.entry.js +0 -18
  498. package/dist/cjs/bcm-tabs-content.entry.cjs.js.map +0 -1
  499. package/dist/cjs/bcm-tabs-list.cjs.entry.js +0 -82
  500. package/dist/cjs/bcm-tabs-list.entry.cjs.js.map +0 -1
  501. package/dist/cjs/bcm-tabs-trigger.cjs.entry.js +0 -120
  502. package/dist/cjs/bcm-tabs-trigger.entry.cjs.js.map +0 -1
  503. package/dist/cjs/index-CmYzUr-k.js.map +0 -1
  504. package/dist/collection/components/segmented-picker/segmented-picker-option.component.js +0 -253
  505. package/dist/collection/components/segmented-picker/segmented-picker-option.component.js.map +0 -1
  506. package/dist/collection/components/segmented-picker/segmented-picker-option.css +0 -1
  507. package/dist/collection/components/tabs/tabs-content.component.js +0 -46
  508. package/dist/collection/components/tabs/tabs-content.component.js.map +0 -1
  509. package/dist/collection/components/tabs/tabs-content.css +0 -1
  510. package/dist/collection/components/tabs/tabs-list.component.js +0 -133
  511. package/dist/collection/components/tabs/tabs-list.component.js.map +0 -1
  512. package/dist/collection/components/tabs/tabs-list.css +0 -1
  513. package/dist/collection/components/tabs/tabs-trigger.component.js +0 -267
  514. package/dist/collection/components/tabs/tabs-trigger.component.js.map +0 -1
  515. package/dist/collection/components/tabs/tabs-trigger.css +0 -1
  516. package/dist/components/bcm-segmented-picker-option.d.ts +0 -11
  517. package/dist/components/bcm-segmented-picker-option.js +0 -133
  518. package/dist/components/bcm-segmented-picker-option.js.map +0 -1
  519. package/dist/components/bcm-tabs-content.js +0 -41
  520. package/dist/components/bcm-tabs-content.js.map +0 -1
  521. package/dist/components/bcm-tabs-list.js +0 -106
  522. package/dist/components/bcm-tabs-list.js.map +0 -1
  523. package/dist/components/bcm-tabs-trigger.js +0 -148
  524. package/dist/components/bcm-tabs-trigger.js.map +0 -1
  525. package/dist/components/p-6VLsKZvR.js.map +0 -1
  526. package/dist/components/p-CUvT12BL.js.map +0 -1
  527. package/dist/components/p-CaemikSK.js +0 -147
  528. package/dist/components/p-CaemikSK.js.map +0 -1
  529. package/dist/components/p-CsIBm0J5.js.map +0 -1
  530. package/dist/esm/bcm-button.bcm-drawer.bcm-linked.bcm-modal.bcm-pop-confirm.bcm-popover.bcm-tooltip.entry.js.map +0 -1
  531. package/dist/esm/bcm-button_7.entry.js +0 -4123
  532. package/dist/esm/bcm-segmented-picker-option.entry.js +0 -103
  533. package/dist/esm/bcm-segmented-picker-option.entry.js.map +0 -1
  534. package/dist/esm/bcm-segmented-picker.entry.js +0 -140
  535. package/dist/esm/bcm-segmented-picker.entry.js.map +0 -1
  536. package/dist/esm/bcm-tabs-content.entry.js +0 -16
  537. package/dist/esm/bcm-tabs-content.entry.js.map +0 -1
  538. package/dist/esm/bcm-tabs-list.entry.js +0 -80
  539. package/dist/esm/bcm-tabs-list.entry.js.map +0 -1
  540. package/dist/esm/bcm-tabs-trigger.entry.js +0 -118
  541. package/dist/esm/bcm-tabs-trigger.entry.js.map +0 -1
  542. package/dist/esm/index-CRwAh9Np.js.map +0 -1
  543. package/dist/types/components/segmented-picker/segmented-picker-option.component.d.ts +0 -30
  544. package/dist/types/components/tabs/tabs-content.component.d.ts +0 -13
  545. package/dist/types/components/tabs/tabs-list.component.d.ts +0 -20
  546. package/dist/types/components/tabs/tabs-trigger.component.d.ts +0 -49
@@ -0,0 +1,905 @@
1
+ import { h, Fragment, Host, } from "@stencil/core";
2
+ import { tv } from "../../utils/tv";
3
+ /**
4
+ * @component BcmFileUpload
5
+ * @description A fully featured drag-and-drop file uploader component.
6
+ * Supports form-associated behavior, validation, custom size limits,
7
+ * accepted file type filtering, multiple file selection, progress tracking,
8
+ * upload canceling, file removal, and accessibility events (focus/blur).
9
+ *
10
+ * Upload progress is currently simulated locally. The `uploadUrl` prop
11
+ * is reserved for future real HTTP upload integration and has no effect yet.
12
+ *
13
+ * @example Basic usage
14
+ * <bcm-file-upload name="report" label="Upload Report"></bcm-file-upload>
15
+ *
16
+ * @example Multiple files
17
+ * <bcm-file-upload name="attachments" multiple></bcm-file-upload>
18
+ *
19
+ * @example Custom max size and accepted formats
20
+ * <bcm-file-upload
21
+ * name="medicalFiles"
22
+ * accept=".pdf,.jpg"
23
+ * maxSize={5}
24
+ * ></bcm-file-upload>
25
+ *
26
+ * @prop {string} name
27
+ * The name of the form field used when the component is inside a `<form>`.
28
+ * Supports automatic FormData generation including:
29
+ * - single upload: name="file"
30
+ * - multiple upload: name="file[0], file[1], ..."
31
+ *
32
+ * @prop {string} label
33
+ * Optional label shown above the upload zone.
34
+ *
35
+ * @prop {string} caption
36
+ * Optional helper text rendered below the file list. Example: “Max size 5MB”.
37
+ *
38
+ * @prop {boolean} multiple
39
+ * Allows selecting and uploading multiple files at once.
40
+ *
41
+ * @prop {string} accept
42
+ * Comma-separated list of allowed file extensions.
43
+ * Example: ".pdf,.xls,.png".
44
+ *
45
+ * @prop {number} maxSize
46
+ * Maximum allowed size per file (in MB). If exceeded, an error alert appears.
47
+ *
48
+ * @prop {boolean} required
49
+ * Enables form validation — at least one file must be uploaded.
50
+ * Validity integrates with native `<form>` using ElementInternals.
51
+ *
52
+ * @prop {boolean} disabled
53
+ * Makes the uploader non-interactive: no clicking, no drag-and-drop.
54
+ *
55
+ * @prop {"medium" | "small"} size
56
+ * Controls spacing, typography, and visual density of the upload zone.
57
+ *
58
+ * @prop {string} uploadUrl
59
+ * Reserved for future backend upload integration.
60
+ * Currently has no effect and does not trigger any HTTP requests.
61
+ *
62
+ * @prop {number} maxFileCount
63
+ * Optional limit for how many files can be selected in total.
64
+ * Only applied when `multiple` is true.
65
+ * If exceeded, new files are ignored and a max-file-count error is shown.
66
+ *
67
+ * @prop {BcmUploadErrorMessages} customErrorMessages
68
+ * Optional override for all error messages:
69
+ * - maxSize: file too large
70
+ * - type: unsupported file type
71
+ * - maxFileCount: too many files selected
72
+ * - required: no file selected while required
73
+ *
74
+ *
75
+ * @event {EventEmitter<File[]>} bcmFileChange
76
+ * Fired whenever the component's internal file list changes.
77
+ * Emits an array of the current File objects.
78
+ *
79
+ * @event {EventEmitter<BcmUploadItem>} bcmFileRemoved
80
+ * Fired when the user removes a file from the list.
81
+ *
82
+ * @event {EventEmitter<BcmUploadItem>} bcmUploadCanceled
83
+ * Fired when an upload is canceled before completion.
84
+ *
85
+ * @event {EventEmitter<FocusEvent>} bcmFocus
86
+ * Fired when upload zone receives keyboard or mouse focus.
87
+ *
88
+ * @event {EventEmitter<FocusEvent>} bcmBlur
89
+ * Fired when upload zone loses focus.
90
+ *
91
+ *
92
+ * @csspart upload-zone
93
+ * The root clickable drop area for file selection or drag-and-drop.
94
+ *
95
+ * @csspart file-list
96
+ * The container wrapping rendered file rows.
97
+ *
98
+ * @csspart file-row
99
+ * A single file entry including its name, actions, and progress bar.
100
+ *
101
+ * @csspart remove-btn
102
+ * The remove action button inside uploaded file rows.
103
+ *
104
+ * @csspart cancel-btn
105
+ * The cancel upload button during uploading progress.
106
+ *
107
+ * @csspart download-btn
108
+ * The download button for already uploaded files.
109
+ *
110
+ * @csspart label
111
+ * The external label text displayed above the component.
112
+ *
113
+ * @csspart caption
114
+ * Helper or informative caption displayed below the uploaded list.
115
+ */
116
+ const uploadClasses = tv({
117
+ slots: {
118
+ container: 'bcm-ui-element flex flex-col gap-2 w-full max-w-64',
119
+ label: 'text-size-4 font-medium text-color-label',
120
+ // Upload Zone
121
+ zone: [
122
+ 'relative rounded border border-dashed transition-all duration-200 ease-in-out',
123
+ 'px-4 py-4 select-none',
124
+ 'border-color-default bg-color-basic-masterpage',
125
+ 'flex items-center justify-center',
126
+ ],
127
+ zoneActive: 'border-color-primary bg-color-soft-blue',
128
+ iconContainer: 'flex items-center justify-center shrink-0',
129
+ iconSizeClass: 'text-size-10',
130
+ zoneTextWrapper: 'flex flex-col flex-1 min-w-0',
131
+ zoneTextMain: 'text-size-4 text-color-default font-medium',
132
+ zoneLink: 'text-color-primary hover:underline',
133
+ zoneTextSub: 'text-size-3 text-color-caption',
134
+ // File List
135
+ list: 'flex flex-col gap-3',
136
+ // File Row
137
+ fileRow: [
138
+ 'flex flex-col items-center gap-2 rounded border transition-colors min-w-0 px-3 py-1.5',
139
+ 'bg-color-default border-color-default',
140
+ ],
141
+ fileIcon: 'flex items-center justify-center rounded bg-color-soft-blue shrink-0',
142
+ fileNameWrapper: 'flex flex-col flex-1 min-w-0',
143
+ fileTitle: 'text-size-4 font-medium text-color-default',
144
+ fileName: 'text-size-4 text-color-default truncate',
145
+ // Progress
146
+ progressWrapper: 'flex items-center gap-3 w-full',
147
+ progressBar: 'h-full bg-color-primary rounded transition-all duration-300 ease-out',
148
+ percent: 'text-size-4 font-medium text-color-caption min-w-[3ch] text-right',
149
+ // Actions
150
+ actions: 'flex items-center gap-2',
151
+ iconBtn: [
152
+ 'size-4 rounded-full flex items-center justify-center transition-colors cursor-pointer appearance-none',
153
+ 'text-color-icon-default hover:bg-color-default-hover border-none',
154
+ ],
155
+ caption: 'text-size-3 text-color-caption',
156
+ },
157
+ variants: {
158
+ size: {
159
+ medium: {
160
+ zone: 'flex-col text-center gap-2',
161
+ iconContainer: 'h-10 w-[50px]',
162
+ zoneTextWrapper: 'items-center gap-1',
163
+ },
164
+ small: {
165
+ zone: 'px-3 py-4 gap-2 flex-row text-left',
166
+ iconContainer: 'size-8',
167
+ iconSizeClass: 'text-size-8',
168
+ zoneTextWrapper: 'items-start gap-1',
169
+ label: 'text-size-3',
170
+ caption: 'text-size-2',
171
+ },
172
+ },
173
+ disabled: {
174
+ true: 'opacity-60 cursor-not-allowed',
175
+ false: '',
176
+ },
177
+ },
178
+ compoundVariants: [
179
+ {
180
+ disabled: true,
181
+ class: {
182
+ zone: 'bg-color-disabled border-color-disabled cursor-not-allowed',
183
+ zoneTextMain: 'text-color-disabled',
184
+ zoneTextSub: 'text-color-disabled',
185
+ zoneLink: 'text-color-disabled cursor-not-allowed no-underline hover:no-underline',
186
+ },
187
+ },
188
+ {
189
+ disabled: false,
190
+ class: {
191
+ zone: 'cursor-pointer',
192
+ },
193
+ },
194
+ ],
195
+ defaultVariants: {
196
+ size: 'medium',
197
+ disabled: false,
198
+ },
199
+ });
200
+ export class BcmFileUpload {
201
+ host;
202
+ internals;
203
+ fileInput;
204
+ uploadTimer;
205
+ // Focus target for validation errors and keyboard focus
206
+ uploadZoneRef;
207
+ name = 'file';
208
+ label = '';
209
+ caption = '';
210
+ multiple = false;
211
+ accept = '.xls,.pdf';
212
+ maxSize = 2; // MB
213
+ required = false;
214
+ disabled = false;
215
+ size = 'medium';
216
+ /**
217
+ * Reserved for future backend upload integration.
218
+ * Currently does not affect component behavior.
219
+ */
220
+ uploadUrl;
221
+ /**
222
+ * Maximum number of files allowed in total.
223
+ * Only applied when `multiple` is true.
224
+ */
225
+ maxFileCount;
226
+ /**
227
+ * Allows consumers to override default error messages.
228
+ */
229
+ customErrorMessages;
230
+ files = [];
231
+ dragActive = false;
232
+ maxSizeError = false;
233
+ typeError = false;
234
+ maxFileCountError = false;
235
+ // Emits when file list changes
236
+ bcmFileChange;
237
+ // Emits when a file is removed
238
+ bcmFileRemoved;
239
+ // Emits when an upload is canceled
240
+ bcmUploadCanceled;
241
+ // Emits when the upload zone receives focus
242
+ bcmFocus;
243
+ // Emits when the upload zone loses focus
244
+ bcmBlur;
245
+ internalMaxSizeInBytes = this.maxSize * 1024 * 1024;
246
+ componentWillLoad() {
247
+ this.internalMaxSizeInBytes = this.maxSize * 1024 * 1024;
248
+ this.updateFormValueAndValidity();
249
+ }
250
+ disconnectedCallback() {
251
+ // Clear interval when component is removed from the DOM
252
+ if (this.uploadTimer) {
253
+ window.clearInterval(this.uploadTimer);
254
+ this.uploadTimer = undefined;
255
+ }
256
+ }
257
+ handleMaxSizeChange() {
258
+ this.internalMaxSizeInBytes = this.maxSize * 1024 * 1024;
259
+ }
260
+ /**
261
+ * Normalize and check a file against the `accept` attribute.
262
+ */
263
+ isFileAccepted(file) {
264
+ if (!this.accept)
265
+ return true;
266
+ const extension = '.' + (file.name.split('.').pop() || '').toLowerCase();
267
+ const accepted = this.accept
268
+ .toLowerCase()
269
+ .split(',')
270
+ .map(x => x.trim())
271
+ .filter(Boolean); // e.g. ['.pdf', '.jpg', '.png']
272
+ return accepted.includes(extension);
273
+ }
274
+ /**
275
+ * Update form value and validity state for form-associated behavior.
276
+ */
277
+ updateFormValueAndValidity() {
278
+ if (!this.internals)
279
+ return;
280
+ if (!this.files.length) {
281
+ this.internals.setFormValue(null);
282
+ if (this.required) {
283
+ const msg = this.customErrorMessages?.required ||
284
+ 'Please upload at least one file.';
285
+ this.internals.setValidity({ valueMissing: true }, msg,
286
+ // Use upload zone if available, otherwise host as the validation anchor
287
+ this.uploadZoneRef ?? this.host);
288
+ }
289
+ else {
290
+ this.internals.setValidity({});
291
+ }
292
+ return;
293
+ }
294
+ const formData = new FormData();
295
+ this.files.forEach((item, index) => {
296
+ const key = this.multiple ? `${this.name}[${index}]` : this.name;
297
+ formData.append(key, item.file);
298
+ });
299
+ this.internals.setFormValue(formData);
300
+ this.internals.setValidity({});
301
+ }
302
+ emitChange() {
303
+ this.bcmFileChange.emit(this.files.map(f => f.file));
304
+ }
305
+ /**
306
+ * Simulate upload progress. Replace with real upload logic if needed.
307
+ */
308
+ startFakeUpload() {
309
+ if (this.uploadTimer) {
310
+ window.clearInterval(this.uploadTimer);
311
+ }
312
+ this.uploadTimer = window.setInterval(() => {
313
+ let anyUploading = false;
314
+ this.files = this.files.map(item => {
315
+ if (item.status !== 'uploading')
316
+ return item;
317
+ anyUploading = true;
318
+ const current = item.progress ?? 0;
319
+ const next = Math.min(current + 15, 100);
320
+ if (next >= 100) {
321
+ return { ...item, status: 'uploaded', progress: undefined };
322
+ }
323
+ return { ...item, progress: next };
324
+ });
325
+ if (!anyUploading && this.uploadTimer) {
326
+ window.clearInterval(this.uploadTimer);
327
+ this.uploadTimer = undefined;
328
+ this.updateFormValueAndValidity();
329
+ this.emitChange();
330
+ }
331
+ }, 300);
332
+ }
333
+ /**
334
+ * Add files from input or drop.
335
+ */
336
+ addFiles(fileList) {
337
+ if (!fileList || this.disabled)
338
+ return;
339
+ const newItems = [];
340
+ let hasSizeError = false;
341
+ let hasTypeError = false;
342
+ Array.from(fileList).forEach(file => {
343
+ if (!this.isFileAccepted(file)) {
344
+ hasTypeError = true;
345
+ return;
346
+ }
347
+ if (file.size > this.internalMaxSizeInBytes) {
348
+ hasSizeError = true;
349
+ return;
350
+ }
351
+ newItems.push({
352
+ id: crypto.randomUUID(),
353
+ file,
354
+ status: 'uploading',
355
+ progress: 0,
356
+ });
357
+ });
358
+ this.maxSizeError = hasSizeError;
359
+ this.typeError = hasTypeError;
360
+ this.maxFileCountError = false;
361
+ // If there are no valid files, just update validity and exit.
362
+ if (!newItems.length) {
363
+ this.updateFormValueAndValidity();
364
+ this.emitChange();
365
+ return;
366
+ }
367
+ let merged;
368
+ if (this.multiple) {
369
+ if (typeof this.maxFileCount === 'number') {
370
+ const remaining = this.maxFileCount - this.files.length;
371
+ if (remaining <= 0) {
372
+ this.maxFileCountError = true;
373
+ this.updateFormValueAndValidity();
374
+ this.emitChange();
375
+ return;
376
+ }
377
+ const acceptedNew = newItems.slice(0, Math.max(0, remaining));
378
+ if (acceptedNew.length < newItems.length) {
379
+ this.maxFileCountError = true;
380
+ }
381
+ merged = [...this.files, ...acceptedNew];
382
+ }
383
+ else {
384
+ merged = [...this.files, ...newItems];
385
+ }
386
+ }
387
+ else {
388
+ // single file mode → only take first new item
389
+ merged = [newItems[0]];
390
+ }
391
+ this.files = merged;
392
+ this.updateFormValueAndValidity();
393
+ this.emitChange();
394
+ // Only fake upload for now
395
+ this.startFakeUpload();
396
+ }
397
+ removeFile(item) {
398
+ this.files = this.files.filter(f => f.id !== item.id);
399
+ this.bcmFileRemoved.emit(item);
400
+ this.updateFormValueAndValidity();
401
+ this.emitChange();
402
+ }
403
+ cancelUpload(item) {
404
+ this.files = this.files.filter(f => f.id !== item.id);
405
+ this.bcmUploadCanceled.emit(item);
406
+ this.updateFormValueAndValidity();
407
+ this.emitChange();
408
+ }
409
+ onFileInputChange = (event) => {
410
+ const input = event.target;
411
+ this.addFiles(input.files);
412
+ // Reset input so the same file can be selected again
413
+ input.value = '';
414
+ };
415
+ downloadFile(file) {
416
+ const url = URL.createObjectURL(file);
417
+ const a = document.createElement('a');
418
+ a.href = url;
419
+ a.download = file.name;
420
+ a.click();
421
+ URL.revokeObjectURL(url);
422
+ }
423
+ handleDrop(ev) {
424
+ ev.preventDefault();
425
+ this.dragActive = false;
426
+ if (this.disabled)
427
+ return;
428
+ const files = ev.dataTransfer?.files || null;
429
+ if (!files || files.length === 0)
430
+ return;
431
+ const first = files.item(0);
432
+ if (!first || !this.isFileAccepted(first)) {
433
+ this.typeError = true;
434
+ return;
435
+ }
436
+ this.addFiles(files);
437
+ }
438
+ handleDragOver(ev) {
439
+ ev.preventDefault();
440
+ if (this.disabled)
441
+ return;
442
+ this.dragActive = true;
443
+ }
444
+ handleDragLeave(ev) {
445
+ ev.preventDefault();
446
+ this.dragActive = false;
447
+ }
448
+ openFileDialog = () => {
449
+ if (this.disabled)
450
+ return;
451
+ this.fileInput?.click();
452
+ };
453
+ formResetCallback() {
454
+ this.files = [];
455
+ this.maxSizeError = false;
456
+ this.typeError = false;
457
+ this.maxFileCountError = false;
458
+ if (this.uploadTimer) {
459
+ window.clearInterval(this.uploadTimer);
460
+ this.uploadTimer = undefined;
461
+ }
462
+ this.updateFormValueAndValidity();
463
+ this.emitChange();
464
+ }
465
+ /**
466
+ * When the browser or user calls element.focus(),
467
+ * move focus to the upload zone.
468
+ */
469
+ focus(options) {
470
+ this.uploadZoneRef?.focus(options);
471
+ }
472
+ handleFocus = (event) => {
473
+ this.bcmFocus.emit(event);
474
+ };
475
+ handleBlur = (event) => {
476
+ this.bcmBlur.emit(event);
477
+ };
478
+ renderErrors() {
479
+ if (!this.maxSizeError && !this.typeError && !this.maxFileCountError) {
480
+ return null;
481
+ }
482
+ const acceptedFormats = this.accept
483
+ .replace(/\./g, '')
484
+ .toUpperCase()
485
+ .replace(/,/g, ', ');
486
+ const maxSizeMsg = this.customErrorMessages?.maxSize ||
487
+ 'File size exceeds the maximum allowed limit.';
488
+ const typeMsg = this.customErrorMessages?.type ||
489
+ `Unsupported file type. Allowed formats: ${acceptedFormats}`;
490
+ const maxFileCountMsg = this.customErrorMessages?.maxFileCount ||
491
+ 'You have reached the maximum number of files.';
492
+ return (h("div", { class: "w-full space-y-1" }, this.maxSizeError && (h("bcm-alert", { status: "error", size: "small", dismissible: true, onBcmDismiss: () => (this.maxSizeError = false) }, maxSizeMsg)), this.typeError && (h("bcm-alert", { status: "error", size: "small", dismissible: true, onBcmDismiss: () => (this.typeError = false) }, typeMsg)), this.maxFileCountError && (h("bcm-alert", { status: "error", size: "small", dismissible: true, onBcmDismiss: () => (this.maxFileCountError = false) }, maxFileCountMsg))));
493
+ }
494
+ renderUploadZone() {
495
+ const classes = uploadClasses({ size: this.size, disabled: this.disabled });
496
+ const { zone, zoneActive, iconContainer, iconSizeClass, zoneTextWrapper, zoneTextMain, zoneTextSub, zoneLink, } = classes;
497
+ const zoneClasses = [zone(), this.dragActive && zoneActive()]
498
+ .filter(Boolean)
499
+ .join(' ');
500
+ const maxMb = Math.round(this.internalMaxSizeInBytes / (1024 * 1024));
501
+ const iconColorClass = this.dragActive
502
+ ? 'text-color-primary'
503
+ : 'text-color-icon-default';
504
+ return (h("div", { ref: el => (this.uploadZoneRef = el), tabindex: this.disabled ? undefined : 0, part: "upload-zone", class: zoneClasses, onClick: this.openFileDialog, onFocus: this.handleFocus, onBlur: this.handleBlur, onDragOver: ev => this.handleDragOver(ev), onDragLeave: ev => this.handleDragLeave(ev), onDrop: ev => this.handleDrop(ev) }, h("div", { class: iconContainer() }, h("bcm-icon", { name: "fa-solid fa-cloud-arrow-up", class: `${iconColorClass} ${iconSizeClass()}` })), h("div", { class: zoneTextWrapper() }, h("div", { class: zoneTextMain() }, "Drag & Drop", ' ', h("span", { class: "text-color-helper" }, "or "), h("a", { class: zoneLink(), onClick: e => {
505
+ e.preventDefault();
506
+ this.openFileDialog();
507
+ } }, "Choose File")), h("div", { class: zoneTextSub() }, "Max: ", maxMb, "MB Formats:", ' ', this.accept.replace(/\./g, '').toUpperCase().replace(/,/g, ', '))), h("input", { ref: el => (this.fileInput = el), type: "file", hidden: true, accept: this.accept, multiple: this.multiple, disabled: this.disabled, onChange: this.onFileInputChange })));
508
+ }
509
+ renderFileRow(item) {
510
+ const { percent, actions, iconBtn, fileRow, fileTitle } = uploadClasses({
511
+ size: this.size,
512
+ disabled: this.disabled,
513
+ });
514
+ const isUploading = item?.status === 'uploading';
515
+ return (h("div", { part: "file-row", class: fileRow(), title: item?.file?.name }, h("div", { class: "flex items-center justify-between w-full gap-2 min-w-0" }, h("div", { class: "flex items-center gap-1.5 min-w-0 flex-1 flex-shrink" }, h("div", { class: "flex items-center rounded bg-color-default shrink-0 text-size-3 text-color-caption" }, h("bcm-icon", { name: "fa-regular fa-file" })), h("span", { class: fileTitle() + ' truncate' }, item?.file?.name)), h("div", { class: actions() + ' flex-shrink-0' }, item.status === 'uploaded' && (h(Fragment, null, h("button", { type: "button", part: "download-btn", class: iconBtn(), onClick: () => this.downloadFile(item.file), title: "Download" }, h("bcm-icon", { name: "fa-regular fa-download", class: "text-size-4" })), h("button", { type: "button", part: "remove-btn", class: iconBtn(), onClick: () => this.removeFile(item), title: "Remove" }, h("bcm-icon", { name: "fa-regular fa-trash", class: "text-size-4" })))), isUploading && (h("button", { type: "button", part: "cancel-btn", class: 'text-color-default bg-transparent hover:bg-color-default-hover text-size-4 cursor-pointer flex items-center justify-center size-5 rounded-full border-none', onClick: () => this.cancelUpload(item), title: "Cancel" }, h("bcm-icon", { name: "fa-regular fa-xmark", class: "text-size-4" }))))), isUploading && (h("div", { class: "flex items-center gap-3 w-full min-w-0" }, h("div", { class: "h-1.5 flex-1 rounded-full bg-color-surface-default overflow-hidden" }, h("div", { class: "h-full bg-color-primary rounded-full transition-all duration-300 ease-out", style: { width: `${item.progress ?? 0}%` } })), h("span", { class: percent() }, item.progress ?? 0, "%")))));
516
+ }
517
+ render() {
518
+ const { container, label, list, caption } = uploadClasses({
519
+ size: this.size,
520
+ disabled: this.disabled,
521
+ });
522
+ return (h(Host, { key: '55e97908c7f1e8050231e1996086232e577c6f7f', tabindex: "-1" }, h("div", { key: '1a4ec527f4238923e8c1bba953c1eca16692b5ee', class: container() }, this.label && (h("label", { key: '07af6d58fbf4c3e97e9d2278173419ec024694ed', part: "label", class: label() }, this.label)), this.renderUploadZone(), this.renderErrors(), this.files.length > 0 && (h("div", { key: '17689bdd0cd4f7d060f35b616700fdf4ce8a0a70', part: "file-list", class: list() }, this.files.map(item => this.renderFileRow(item)))), this.caption && (h("span", { key: '89a5f04f9becb9af49040534e1e063c8adf9bfd6', part: "caption", class: caption() }, this.caption)))));
523
+ }
524
+ static get is() { return "bcm-file-upload"; }
525
+ static get encapsulation() { return "shadow"; }
526
+ static get formAssociated() { return true; }
527
+ static get originalStyleUrls() {
528
+ return {
529
+ "$": ["file-upload.css"]
530
+ };
531
+ }
532
+ static get styleUrls() {
533
+ return {
534
+ "$": ["file-upload.css"]
535
+ };
536
+ }
537
+ static get properties() {
538
+ return {
539
+ "name": {
540
+ "type": "string",
541
+ "mutable": false,
542
+ "complexType": {
543
+ "original": "string",
544
+ "resolved": "string",
545
+ "references": {}
546
+ },
547
+ "required": false,
548
+ "optional": false,
549
+ "docs": {
550
+ "tags": [],
551
+ "text": ""
552
+ },
553
+ "getter": false,
554
+ "setter": false,
555
+ "reflect": false,
556
+ "attribute": "name",
557
+ "defaultValue": "'file'"
558
+ },
559
+ "label": {
560
+ "type": "string",
561
+ "mutable": false,
562
+ "complexType": {
563
+ "original": "string",
564
+ "resolved": "string",
565
+ "references": {}
566
+ },
567
+ "required": false,
568
+ "optional": false,
569
+ "docs": {
570
+ "tags": [],
571
+ "text": ""
572
+ },
573
+ "getter": false,
574
+ "setter": false,
575
+ "reflect": false,
576
+ "attribute": "label",
577
+ "defaultValue": "''"
578
+ },
579
+ "caption": {
580
+ "type": "string",
581
+ "mutable": false,
582
+ "complexType": {
583
+ "original": "string",
584
+ "resolved": "string",
585
+ "references": {}
586
+ },
587
+ "required": false,
588
+ "optional": true,
589
+ "docs": {
590
+ "tags": [],
591
+ "text": ""
592
+ },
593
+ "getter": false,
594
+ "setter": false,
595
+ "reflect": false,
596
+ "attribute": "caption",
597
+ "defaultValue": "''"
598
+ },
599
+ "multiple": {
600
+ "type": "boolean",
601
+ "mutable": false,
602
+ "complexType": {
603
+ "original": "boolean",
604
+ "resolved": "boolean",
605
+ "references": {}
606
+ },
607
+ "required": false,
608
+ "optional": false,
609
+ "docs": {
610
+ "tags": [],
611
+ "text": ""
612
+ },
613
+ "getter": false,
614
+ "setter": false,
615
+ "reflect": false,
616
+ "attribute": "multiple",
617
+ "defaultValue": "false"
618
+ },
619
+ "accept": {
620
+ "type": "string",
621
+ "mutable": false,
622
+ "complexType": {
623
+ "original": "string",
624
+ "resolved": "string",
625
+ "references": {}
626
+ },
627
+ "required": false,
628
+ "optional": false,
629
+ "docs": {
630
+ "tags": [],
631
+ "text": ""
632
+ },
633
+ "getter": false,
634
+ "setter": false,
635
+ "reflect": false,
636
+ "attribute": "accept",
637
+ "defaultValue": "'.xls,.pdf'"
638
+ },
639
+ "maxSize": {
640
+ "type": "number",
641
+ "mutable": true,
642
+ "complexType": {
643
+ "original": "number",
644
+ "resolved": "number",
645
+ "references": {}
646
+ },
647
+ "required": false,
648
+ "optional": false,
649
+ "docs": {
650
+ "tags": [],
651
+ "text": ""
652
+ },
653
+ "getter": false,
654
+ "setter": false,
655
+ "reflect": false,
656
+ "attribute": "max-size",
657
+ "defaultValue": "2"
658
+ },
659
+ "required": {
660
+ "type": "boolean",
661
+ "mutable": false,
662
+ "complexType": {
663
+ "original": "boolean",
664
+ "resolved": "boolean",
665
+ "references": {}
666
+ },
667
+ "required": false,
668
+ "optional": false,
669
+ "docs": {
670
+ "tags": [],
671
+ "text": ""
672
+ },
673
+ "getter": false,
674
+ "setter": false,
675
+ "reflect": false,
676
+ "attribute": "required",
677
+ "defaultValue": "false"
678
+ },
679
+ "disabled": {
680
+ "type": "boolean",
681
+ "mutable": false,
682
+ "complexType": {
683
+ "original": "boolean",
684
+ "resolved": "boolean",
685
+ "references": {}
686
+ },
687
+ "required": false,
688
+ "optional": false,
689
+ "docs": {
690
+ "tags": [],
691
+ "text": ""
692
+ },
693
+ "getter": false,
694
+ "setter": false,
695
+ "reflect": false,
696
+ "attribute": "disabled",
697
+ "defaultValue": "false"
698
+ },
699
+ "size": {
700
+ "type": "string",
701
+ "mutable": false,
702
+ "complexType": {
703
+ "original": "'medium' | 'small'",
704
+ "resolved": "\"medium\" | \"small\"",
705
+ "references": {}
706
+ },
707
+ "required": false,
708
+ "optional": false,
709
+ "docs": {
710
+ "tags": [],
711
+ "text": ""
712
+ },
713
+ "getter": false,
714
+ "setter": false,
715
+ "reflect": false,
716
+ "attribute": "size",
717
+ "defaultValue": "'medium'"
718
+ },
719
+ "uploadUrl": {
720
+ "type": "string",
721
+ "mutable": false,
722
+ "complexType": {
723
+ "original": "string",
724
+ "resolved": "string",
725
+ "references": {}
726
+ },
727
+ "required": false,
728
+ "optional": true,
729
+ "docs": {
730
+ "tags": [],
731
+ "text": "Reserved for future backend upload integration.\nCurrently does not affect component behavior."
732
+ },
733
+ "getter": false,
734
+ "setter": false,
735
+ "reflect": false,
736
+ "attribute": "upload-url"
737
+ },
738
+ "maxFileCount": {
739
+ "type": "number",
740
+ "mutable": false,
741
+ "complexType": {
742
+ "original": "number",
743
+ "resolved": "number",
744
+ "references": {}
745
+ },
746
+ "required": false,
747
+ "optional": true,
748
+ "docs": {
749
+ "tags": [],
750
+ "text": "Maximum number of files allowed in total.\nOnly applied when `multiple` is true."
751
+ },
752
+ "getter": false,
753
+ "setter": false,
754
+ "reflect": false,
755
+ "attribute": "max-file-count"
756
+ },
757
+ "customErrorMessages": {
758
+ "type": "unknown",
759
+ "mutable": false,
760
+ "complexType": {
761
+ "original": "BcmUploadErrorMessages",
762
+ "resolved": "BcmUploadErrorMessages",
763
+ "references": {
764
+ "BcmUploadErrorMessages": {
765
+ "location": "local",
766
+ "path": "/Users/muratpolatozkan/works/bromcom/bromcom-ui-v2/src/components/upload/file-upload.component.tsx",
767
+ "id": "src/components/upload/file-upload.component.tsx::BcmUploadErrorMessages"
768
+ }
769
+ }
770
+ },
771
+ "required": false,
772
+ "optional": true,
773
+ "docs": {
774
+ "tags": [],
775
+ "text": "Allows consumers to override default error messages."
776
+ },
777
+ "getter": false,
778
+ "setter": false
779
+ }
780
+ };
781
+ }
782
+ static get states() {
783
+ return {
784
+ "files": {},
785
+ "dragActive": {},
786
+ "maxSizeError": {},
787
+ "typeError": {},
788
+ "maxFileCountError": {}
789
+ };
790
+ }
791
+ static get events() {
792
+ return [{
793
+ "method": "bcmFileChange",
794
+ "name": "bcmFileChange",
795
+ "bubbles": false,
796
+ "cancelable": true,
797
+ "composed": false,
798
+ "docs": {
799
+ "tags": [],
800
+ "text": ""
801
+ },
802
+ "complexType": {
803
+ "original": "File[]",
804
+ "resolved": "File[]",
805
+ "references": {
806
+ "File": {
807
+ "location": "global",
808
+ "id": "global::File"
809
+ }
810
+ }
811
+ }
812
+ }, {
813
+ "method": "bcmFileRemoved",
814
+ "name": "bcmFileRemoved",
815
+ "bubbles": false,
816
+ "cancelable": true,
817
+ "composed": false,
818
+ "docs": {
819
+ "tags": [],
820
+ "text": ""
821
+ },
822
+ "complexType": {
823
+ "original": "BcmUploadItem",
824
+ "resolved": "BcmUploadItem",
825
+ "references": {
826
+ "BcmUploadItem": {
827
+ "location": "local",
828
+ "path": "/Users/muratpolatozkan/works/bromcom/bromcom-ui-v2/src/components/upload/file-upload.component.tsx",
829
+ "id": "src/components/upload/file-upload.component.tsx::BcmUploadItem"
830
+ }
831
+ }
832
+ }
833
+ }, {
834
+ "method": "bcmUploadCanceled",
835
+ "name": "bcmUploadCanceled",
836
+ "bubbles": false,
837
+ "cancelable": true,
838
+ "composed": false,
839
+ "docs": {
840
+ "tags": [],
841
+ "text": ""
842
+ },
843
+ "complexType": {
844
+ "original": "BcmUploadItem",
845
+ "resolved": "BcmUploadItem",
846
+ "references": {
847
+ "BcmUploadItem": {
848
+ "location": "local",
849
+ "path": "/Users/muratpolatozkan/works/bromcom/bromcom-ui-v2/src/components/upload/file-upload.component.tsx",
850
+ "id": "src/components/upload/file-upload.component.tsx::BcmUploadItem"
851
+ }
852
+ }
853
+ }
854
+ }, {
855
+ "method": "bcmFocus",
856
+ "name": "bcmFocus",
857
+ "bubbles": false,
858
+ "cancelable": true,
859
+ "composed": false,
860
+ "docs": {
861
+ "tags": [],
862
+ "text": ""
863
+ },
864
+ "complexType": {
865
+ "original": "FocusEvent",
866
+ "resolved": "FocusEvent",
867
+ "references": {
868
+ "FocusEvent": {
869
+ "location": "global",
870
+ "id": "global::FocusEvent"
871
+ }
872
+ }
873
+ }
874
+ }, {
875
+ "method": "bcmBlur",
876
+ "name": "bcmBlur",
877
+ "bubbles": false,
878
+ "cancelable": true,
879
+ "composed": false,
880
+ "docs": {
881
+ "tags": [],
882
+ "text": ""
883
+ },
884
+ "complexType": {
885
+ "original": "FocusEvent",
886
+ "resolved": "FocusEvent",
887
+ "references": {
888
+ "FocusEvent": {
889
+ "location": "global",
890
+ "id": "global::FocusEvent"
891
+ }
892
+ }
893
+ }
894
+ }];
895
+ }
896
+ static get elementRef() { return "host"; }
897
+ static get watchers() {
898
+ return [{
899
+ "propName": "maxSize",
900
+ "methodName": "handleMaxSizeChange"
901
+ }];
902
+ }
903
+ static get attachInternalsMemberName() { return "internals"; }
904
+ }
905
+ //# sourceMappingURL=file-upload.component.js.map