@govbr-ds/webcomponents 2.0.0-next.2 → 2.0.0-next.20

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 (386) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +193 -97
  3. package/dist/cjs/app-globals-77a217c6.js +11 -0
  4. package/dist/cjs/app-globals-77a217c6.js.map +1 -0
  5. package/dist/cjs/br-avatar.cjs.entry.js +77 -0
  6. package/dist/cjs/br-avatar.cjs.entry.js.map +1 -0
  7. package/dist/cjs/br-button_2.cjs.entry.js +2491 -0
  8. package/dist/cjs/br-button_2.cjs.entry.js.map +1 -0
  9. package/dist/cjs/br-checkbox.cjs.entry.js +76 -0
  10. package/dist/cjs/br-checkbox.cjs.entry.js.map +1 -0
  11. package/dist/cjs/br-dropdown.cjs.entry.js +100 -0
  12. package/dist/cjs/br-dropdown.cjs.entry.js.map +1 -0
  13. package/dist/cjs/br-input.cjs.entry.js +150 -0
  14. package/dist/cjs/br-input.cjs.entry.js.map +1 -0
  15. package/dist/cjs/br-item.cjs.entry.js +146 -0
  16. package/dist/cjs/br-item.cjs.entry.js.map +1 -0
  17. package/dist/cjs/br-list.cjs.entry.js +82 -0
  18. package/dist/cjs/br-list.cjs.entry.js.map +1 -0
  19. package/dist/cjs/br-loading.cjs.entry.js +43 -0
  20. package/dist/cjs/br-loading.cjs.entry.js.map +1 -0
  21. package/dist/cjs/br-message.cjs.entry.js +68 -0
  22. package/dist/cjs/br-message.cjs.entry.js.map +1 -0
  23. package/dist/cjs/br-radio.cjs.entry.js +79 -0
  24. package/dist/cjs/br-radio.cjs.entry.js.map +1 -0
  25. package/dist/cjs/br-switch.cjs.entry.js +81 -0
  26. package/dist/cjs/br-switch.cjs.entry.js.map +1 -0
  27. package/dist/cjs/br-tag.cjs.entry.js +88 -0
  28. package/dist/cjs/br-tag.cjs.entry.js.map +1 -0
  29. package/dist/cjs/br-textarea.cjs.entry.js +102 -0
  30. package/dist/cjs/br-textarea.cjs.entry.js.map +1 -0
  31. package/dist/cjs/br-upload.cjs.entry.js +168 -0
  32. package/dist/cjs/br-upload.cjs.entry.js.map +1 -0
  33. package/dist/cjs/index-81c11ce2.js +1864 -0
  34. package/dist/cjs/index-81c11ce2.js.map +1 -0
  35. package/dist/cjs/index.cjs.js +8 -0
  36. package/dist/cjs/index.cjs.js.map +1 -0
  37. package/dist/cjs/inherited-attributes-16f7d388.js +107 -0
  38. package/dist/cjs/inherited-attributes-16f7d388.js.map +1 -0
  39. package/dist/cjs/loader.cjs.js +21 -0
  40. package/dist/cjs/loader.cjs.js.map +1 -0
  41. package/dist/cjs/v4-2a0fe526.js +74 -0
  42. package/dist/cjs/v4-2a0fe526.js.map +1 -0
  43. package/dist/cjs/webcomponents.cjs.js +52 -0
  44. package/dist/cjs/webcomponents.cjs.js.map +1 -0
  45. package/dist/collection/collection-manifest.json +26 -0
  46. package/dist/collection/components/avatar/avatar.css +538 -0
  47. package/dist/collection/components/avatar/avatar.js +222 -0
  48. package/dist/collection/components/avatar/avatar.js.map +1 -0
  49. package/dist/collection/components/button/button.css +800 -0
  50. package/dist/collection/components/button/button.js +236 -0
  51. package/dist/collection/components/button/button.js.map +1 -0
  52. package/dist/collection/components/checkbox/checkbox.css +595 -0
  53. package/dist/collection/components/checkbox/checkbox.js +279 -0
  54. package/dist/collection/components/checkbox/checkbox.js.map +1 -0
  55. package/dist/collection/components/dropdown/dropdown.css +465 -0
  56. package/dist/collection/components/dropdown/dropdown.js +185 -0
  57. package/dist/collection/components/dropdown/dropdown.js.map +1 -0
  58. package/dist/collection/components/icon/icon.css +450 -0
  59. package/dist/collection/components/icon/icon.js +176 -0
  60. package/dist/collection/components/icon/icon.js.map +1 -0
  61. package/dist/collection/components/input/input.css +671 -0
  62. package/dist/collection/components/input/input.js +580 -0
  63. package/dist/collection/components/input/input.js.map +1 -0
  64. package/dist/collection/components/item/item.css +660 -0
  65. package/dist/collection/components/item/item.js +376 -0
  66. package/dist/collection/components/item/item.js.map +1 -0
  67. package/dist/collection/components/list/list.css +562 -0
  68. package/dist/collection/components/list/list.js +138 -0
  69. package/dist/collection/components/list/list.js.map +1 -0
  70. package/dist/collection/components/loading/loading.css +651 -0
  71. package/dist/collection/components/loading/loading.js +119 -0
  72. package/dist/collection/components/loading/loading.js.map +1 -0
  73. package/dist/collection/components/message/message.css +598 -0
  74. package/dist/collection/components/message/message.js +211 -0
  75. package/dist/collection/components/message/message.js.map +1 -0
  76. package/dist/collection/components/radio/radio.css +550 -0
  77. package/dist/collection/components/radio/radio.js +247 -0
  78. package/dist/collection/components/radio/radio.js.map +1 -0
  79. package/dist/collection/components/switch/switch.css +621 -0
  80. package/dist/collection/components/switch/switch.js +320 -0
  81. package/dist/collection/components/switch/switch.js.map +1 -0
  82. package/dist/collection/components/tag/tag.css +643 -0
  83. package/dist/collection/components/tag/tag.js +256 -0
  84. package/dist/collection/components/tag/tag.js.map +1 -0
  85. package/dist/collection/components/textarea/textarea.css +516 -0
  86. package/dist/collection/components/textarea/textarea.js +298 -0
  87. package/dist/collection/components/textarea/textarea.js.map +1 -0
  88. package/dist/collection/components/upload/upload.css +560 -0
  89. package/dist/collection/components/upload/upload.js +469 -0
  90. package/dist/collection/components/upload/upload.js.map +1 -0
  91. package/dist/collection/index.js +2 -0
  92. package/dist/collection/index.js.map +1 -0
  93. package/dist/collection/pages/components/button/index.js +18 -0
  94. package/dist/collection/pages/components/checkbox/index.js +18 -0
  95. package/dist/collection/pages/components/dropdown/index.js +18 -0
  96. package/dist/collection/pages/components/icon/index.js +18 -0
  97. package/dist/collection/pages/components/input/index.js +27 -0
  98. package/dist/collection/pages/components/item/index.js +18 -0
  99. package/dist/collection/pages/components/list/index.js +19 -0
  100. package/dist/collection/pages/components/message/index.js +18 -0
  101. package/dist/collection/pages/components/radio/index.js +18 -0
  102. package/dist/collection/pages/components/switch/index.js +18 -0
  103. package/dist/collection/pages/components/tag/index.js +18 -0
  104. package/dist/collection/pages/components/textarea/index.js +19 -0
  105. package/dist/collection/pages/components/upload/index.js +19 -0
  106. package/dist/collection/pages/scripts/menu.js +221 -0
  107. package/dist/collection/pages/scripts/pageLoader.js +180 -0
  108. package/dist/collection/scripts/menu.js +146 -0
  109. package/dist/collection/utils/inherited-attributes.js +102 -0
  110. package/dist/collection/utils/inherited-attributes.js.map +1 -0
  111. package/dist/collection/utils/interfaces.js +2 -0
  112. package/dist/collection/utils/interfaces.js.map +1 -0
  113. package/dist/collection/utils/unique-id-generator.js +13 -0
  114. package/dist/collection/utils/unique-id-generator.js.map +1 -0
  115. package/dist/components/br-avatar.d.ts +11 -0
  116. package/dist/components/br-avatar.js +6 -0
  117. package/dist/components/br-avatar.js.map +1 -0
  118. package/dist/components/br-button.d.ts +11 -0
  119. package/dist/components/br-button.js +6 -0
  120. package/dist/components/br-button.js.map +1 -0
  121. package/dist/components/br-checkbox.d.ts +11 -0
  122. package/dist/components/br-checkbox.js +6 -0
  123. package/dist/components/br-checkbox.js.map +1 -0
  124. package/dist/components/br-dropdown.d.ts +11 -0
  125. package/dist/components/br-dropdown.js +6 -0
  126. package/dist/components/br-dropdown.js.map +1 -0
  127. package/dist/components/br-icon.d.ts +11 -0
  128. package/dist/components/br-icon.js +6 -0
  129. package/dist/components/br-icon.js.map +1 -0
  130. package/dist/components/br-input.d.ts +11 -0
  131. package/dist/components/br-input.js +6 -0
  132. package/dist/components/br-input.js.map +1 -0
  133. package/dist/components/br-item.d.ts +11 -0
  134. package/dist/components/br-item.js +6 -0
  135. package/dist/components/br-item.js.map +1 -0
  136. package/dist/components/br-list.d.ts +11 -0
  137. package/dist/components/br-list.js +6 -0
  138. package/dist/components/br-list.js.map +1 -0
  139. package/dist/components/br-loading.d.ts +11 -0
  140. package/dist/components/br-loading.js +6 -0
  141. package/dist/components/br-loading.js.map +1 -0
  142. package/dist/components/br-message.d.ts +11 -0
  143. package/dist/components/br-message.js +6 -0
  144. package/dist/components/br-message.js.map +1 -0
  145. package/dist/components/br-radio.d.ts +11 -0
  146. package/dist/components/br-radio.js +6 -0
  147. package/dist/components/br-radio.js.map +1 -0
  148. package/dist/components/br-switch.d.ts +11 -0
  149. package/dist/components/br-switch.js +6 -0
  150. package/dist/components/br-switch.js.map +1 -0
  151. package/dist/components/br-tag.d.ts +11 -0
  152. package/dist/components/br-tag.js +6 -0
  153. package/dist/components/br-tag.js.map +1 -0
  154. package/dist/components/br-textarea.d.ts +11 -0
  155. package/dist/components/br-textarea.js +6 -0
  156. package/dist/components/br-textarea.js.map +1 -0
  157. package/dist/components/br-upload.d.ts +11 -0
  158. package/dist/components/br-upload.js +6 -0
  159. package/dist/components/br-upload.js.map +1 -0
  160. package/dist/components/index.d.ts +33 -0
  161. package/dist/components/index.js +6 -0
  162. package/dist/components/index.js.map +1 -0
  163. package/dist/components/p-2d8e59f6.js +7 -0
  164. package/dist/components/p-2d8e59f6.js.map +1 -0
  165. package/dist/components/p-64831033.js +17 -0
  166. package/dist/components/p-64831033.js.map +1 -0
  167. package/dist/components/p-74a4eb38.js +6 -0
  168. package/dist/components/p-74a4eb38.js.map +1 -0
  169. package/dist/components/p-d5a8d30c.js +6 -0
  170. package/dist/components/p-d5a8d30c.js.map +1 -0
  171. package/dist/components/p-e4af8eac.js +6 -0
  172. package/dist/components/p-e4af8eac.js.map +1 -0
  173. package/dist/esm/app-globals-72548b13.js +9 -0
  174. package/dist/esm/app-globals-72548b13.js.map +1 -0
  175. package/dist/esm/br-avatar.entry.js +73 -0
  176. package/dist/esm/br-avatar.entry.js.map +1 -0
  177. package/dist/esm/br-button_2.entry.js +2486 -0
  178. package/dist/esm/br-button_2.entry.js.map +1 -0
  179. package/dist/esm/br-checkbox.entry.js +72 -0
  180. package/dist/esm/br-checkbox.entry.js.map +1 -0
  181. package/dist/esm/br-dropdown.entry.js +96 -0
  182. package/dist/esm/br-dropdown.entry.js.map +1 -0
  183. package/dist/esm/br-input.entry.js +146 -0
  184. package/dist/esm/br-input.entry.js.map +1 -0
  185. package/dist/esm/br-item.entry.js +142 -0
  186. package/dist/esm/br-item.entry.js.map +1 -0
  187. package/dist/esm/br-list.entry.js +78 -0
  188. package/dist/esm/br-list.entry.js.map +1 -0
  189. package/dist/esm/br-loading.entry.js +39 -0
  190. package/dist/esm/br-loading.entry.js.map +1 -0
  191. package/dist/esm/br-message.entry.js +64 -0
  192. package/dist/esm/br-message.entry.js.map +1 -0
  193. package/dist/esm/br-radio.entry.js +75 -0
  194. package/dist/esm/br-radio.entry.js.map +1 -0
  195. package/dist/esm/br-switch.entry.js +77 -0
  196. package/dist/esm/br-switch.entry.js.map +1 -0
  197. package/dist/esm/br-tag.entry.js +84 -0
  198. package/dist/esm/br-tag.entry.js.map +1 -0
  199. package/dist/esm/br-textarea.entry.js +98 -0
  200. package/dist/esm/br-textarea.entry.js.map +1 -0
  201. package/dist/esm/br-upload.entry.js +164 -0
  202. package/dist/esm/br-upload.entry.js.map +1 -0
  203. package/dist/esm/index-aab4a630.js +1834 -0
  204. package/dist/esm/index-aab4a630.js.map +1 -0
  205. package/dist/esm/index.js +6 -0
  206. package/dist/esm/index.js.map +1 -0
  207. package/dist/esm/inherited-attributes-553a7c36.js +105 -0
  208. package/dist/esm/inherited-attributes-553a7c36.js.map +1 -0
  209. package/dist/esm/loader.js +17 -0
  210. package/dist/esm/loader.js.map +1 -0
  211. package/dist/esm/polyfills/core-js.js +11 -0
  212. package/dist/esm/polyfills/dom.js +79 -0
  213. package/dist/esm/polyfills/es5-html-element.js +1 -0
  214. package/dist/esm/polyfills/index.js +34 -0
  215. package/dist/esm/polyfills/system.js +6 -0
  216. package/dist/esm/v4-c99c1585.js +72 -0
  217. package/dist/esm/v4-c99c1585.js.map +1 -0
  218. package/dist/esm/webcomponents.js +47 -0
  219. package/dist/esm/webcomponents.js.map +1 -0
  220. package/dist/esm-es5/app-globals-72548b13.js +6 -0
  221. package/dist/esm-es5/app-globals-72548b13.js.map +1 -0
  222. package/dist/esm-es5/br-avatar.entry.js +6 -0
  223. package/dist/esm-es5/br-avatar.entry.js.map +1 -0
  224. package/dist/esm-es5/br-button_2.entry.js +17 -0
  225. package/dist/esm-es5/br-button_2.entry.js.map +1 -0
  226. package/dist/esm-es5/br-checkbox.entry.js +6 -0
  227. package/dist/esm-es5/br-checkbox.entry.js.map +1 -0
  228. package/dist/esm-es5/br-dropdown.entry.js +6 -0
  229. package/dist/esm-es5/br-dropdown.entry.js.map +1 -0
  230. package/dist/esm-es5/br-input.entry.js +6 -0
  231. package/dist/esm-es5/br-input.entry.js.map +1 -0
  232. package/dist/esm-es5/br-item.entry.js +6 -0
  233. package/dist/esm-es5/br-item.entry.js.map +1 -0
  234. package/dist/esm-es5/br-list.entry.js +6 -0
  235. package/dist/esm-es5/br-list.entry.js.map +1 -0
  236. package/dist/esm-es5/br-loading.entry.js +6 -0
  237. package/dist/esm-es5/br-loading.entry.js.map +1 -0
  238. package/dist/esm-es5/br-message.entry.js +6 -0
  239. package/dist/esm-es5/br-message.entry.js.map +1 -0
  240. package/dist/esm-es5/br-radio.entry.js +6 -0
  241. package/dist/esm-es5/br-radio.entry.js.map +1 -0
  242. package/dist/esm-es5/br-switch.entry.js +6 -0
  243. package/dist/esm-es5/br-switch.entry.js.map +1 -0
  244. package/dist/esm-es5/br-tag.entry.js +6 -0
  245. package/dist/esm-es5/br-tag.entry.js.map +1 -0
  246. package/dist/esm-es5/br-textarea.entry.js +6 -0
  247. package/dist/esm-es5/br-textarea.entry.js.map +1 -0
  248. package/dist/esm-es5/br-upload.entry.js +6 -0
  249. package/dist/esm-es5/br-upload.entry.js.map +1 -0
  250. package/dist/esm-es5/index-aab4a630.js +6 -0
  251. package/dist/esm-es5/index-aab4a630.js.map +1 -0
  252. package/dist/esm-es5/index.js +5 -0
  253. package/dist/esm-es5/index.js.map +1 -0
  254. package/dist/esm-es5/inherited-attributes-553a7c36.js +6 -0
  255. package/dist/esm-es5/inherited-attributes-553a7c36.js.map +1 -0
  256. package/dist/esm-es5/loader.js +6 -0
  257. package/dist/esm-es5/loader.js.map +1 -0
  258. package/dist/esm-es5/v4-c99c1585.js +6 -0
  259. package/dist/esm-es5/v4-c99c1585.js.map +1 -0
  260. package/dist/esm-es5/webcomponents.js +6 -0
  261. package/dist/esm-es5/webcomponents.js.map +1 -0
  262. package/dist/index.cjs.js +1 -0
  263. package/dist/index.js +1 -0
  264. package/dist/playwright.config.js +39 -0
  265. package/dist/playwright.config.js.map +1 -0
  266. package/dist/types/builds/govbr-ds/bibliotecas/wbc/govbr-ds-wbc/packages/webcomponents/.stencil/playwright.config.d.ts +5 -0
  267. package/dist/types/components/avatar/avatar.d.ts +60 -0
  268. package/dist/types/components/button/button.d.ts +64 -0
  269. package/dist/types/components/checkbox/checkbox.d.ts +78 -0
  270. package/dist/types/components/dropdown/dropdown.d.ts +64 -0
  271. package/dist/types/components/icon/icon.d.ts +58 -0
  272. package/dist/types/components/input/input.d.ts +151 -0
  273. package/dist/types/components/item/item.d.ts +96 -0
  274. package/dist/types/components/list/list.d.ts +34 -0
  275. package/dist/types/components/loading/loading.d.ts +34 -0
  276. package/dist/types/components/message/message.d.ts +62 -0
  277. package/dist/types/components/radio/radio.d.ts +75 -0
  278. package/dist/types/components/switch/switch.d.ts +78 -0
  279. package/dist/types/components/tag/tag.d.ts +73 -0
  280. package/dist/types/components/textarea/textarea.d.ts +66 -0
  281. package/dist/types/components/upload/upload.d.ts +160 -0
  282. package/dist/types/components.d.ts +1682 -0
  283. package/dist/types/index.d.ts +10 -0
  284. package/dist/types/stencil-public-runtime.d.ts +1680 -0
  285. package/dist/types/utils/inherited-attributes.d.ts +20 -0
  286. package/dist/types/utils/interfaces.d.ts +3 -0
  287. package/dist/types/utils/unique-id-generator.d.ts +1 -0
  288. package/dist/webcomponents/index.esm.js +6 -0
  289. package/dist/webcomponents/index.esm.js.map +1 -0
  290. package/dist/webcomponents/p-05343155.system.entry.js +6 -0
  291. package/dist/webcomponents/p-05343155.system.entry.js.map +1 -0
  292. package/dist/webcomponents/p-183614c8.system.entry.js +6 -0
  293. package/dist/webcomponents/p-183614c8.system.entry.js.map +1 -0
  294. package/dist/webcomponents/p-2083ff7b.entry.js +6 -0
  295. package/dist/webcomponents/p-2083ff7b.entry.js.map +1 -0
  296. package/dist/webcomponents/p-24da392a.entry.js +6 -0
  297. package/dist/webcomponents/p-24da392a.entry.js.map +1 -0
  298. package/dist/webcomponents/p-254a2b7c.js +6 -0
  299. package/dist/webcomponents/p-254a2b7c.js.map +1 -0
  300. package/dist/webcomponents/p-28476b17.system.entry.js +6 -0
  301. package/dist/webcomponents/p-28476b17.system.entry.js.map +1 -0
  302. package/dist/webcomponents/p-2c2c8629.js +7 -0
  303. package/dist/webcomponents/p-2c2c8629.js.map +1 -0
  304. package/dist/webcomponents/p-3f00a196.entry.js +6 -0
  305. package/dist/webcomponents/p-3f00a196.entry.js.map +1 -0
  306. package/dist/webcomponents/p-430afeb5.system.js +7 -0
  307. package/dist/webcomponents/p-430afeb5.system.js.map +1 -0
  308. package/dist/webcomponents/p-447c8036.entry.js +6 -0
  309. package/dist/webcomponents/p-447c8036.entry.js.map +1 -0
  310. package/dist/webcomponents/p-5539ffa8.entry.js +6 -0
  311. package/dist/webcomponents/p-5539ffa8.entry.js.map +1 -0
  312. package/dist/webcomponents/p-55604b7f.system.entry.js +6 -0
  313. package/dist/webcomponents/p-55604b7f.system.entry.js.map +1 -0
  314. package/dist/webcomponents/p-61523bc9.entry.js +6 -0
  315. package/dist/webcomponents/p-61523bc9.entry.js.map +1 -0
  316. package/dist/webcomponents/p-626fe2cb.entry.js +6 -0
  317. package/dist/webcomponents/p-626fe2cb.entry.js.map +1 -0
  318. package/dist/webcomponents/p-6a8226b3.system.entry.js +6 -0
  319. package/dist/webcomponents/p-6a8226b3.system.entry.js.map +1 -0
  320. package/dist/webcomponents/p-6e286eba.system.js +6 -0
  321. package/dist/webcomponents/p-6e286eba.system.js.map +1 -0
  322. package/dist/webcomponents/p-71be2e3f.system.entry.js +6 -0
  323. package/dist/webcomponents/p-71be2e3f.system.entry.js.map +1 -0
  324. package/dist/webcomponents/p-74a4eb38.js +6 -0
  325. package/dist/webcomponents/p-74a4eb38.js.map +1 -0
  326. package/dist/webcomponents/p-7a4e1265.system.entry.js +6 -0
  327. package/dist/webcomponents/p-7a4e1265.system.entry.js.map +1 -0
  328. package/dist/webcomponents/p-8039a644.system.entry.js +6 -0
  329. package/dist/webcomponents/p-8039a644.system.entry.js.map +1 -0
  330. package/dist/webcomponents/p-842b2513.entry.js +6 -0
  331. package/dist/webcomponents/p-842b2513.entry.js.map +1 -0
  332. package/dist/webcomponents/p-8f156fc4.system.entry.js +6 -0
  333. package/dist/webcomponents/p-8f156fc4.system.entry.js.map +1 -0
  334. package/dist/webcomponents/p-90e2e623.system.js +6 -0
  335. package/dist/webcomponents/p-90e2e623.system.js.map +1 -0
  336. package/dist/webcomponents/p-9f0d01d1.entry.js +6 -0
  337. package/dist/webcomponents/p-9f0d01d1.entry.js.map +1 -0
  338. package/dist/webcomponents/p-a71689a5.system.js +6 -0
  339. package/dist/webcomponents/p-a71689a5.system.js.map +1 -0
  340. package/dist/webcomponents/p-ae629243.system.entry.js +6 -0
  341. package/dist/webcomponents/p-ae629243.system.entry.js.map +1 -0
  342. package/dist/webcomponents/p-b88a5d9a.system.js +6 -0
  343. package/dist/webcomponents/p-b88a5d9a.system.js.map +1 -0
  344. package/dist/webcomponents/p-b9fd2bc0.system.entry.js +6 -0
  345. package/dist/webcomponents/p-b9fd2bc0.system.entry.js.map +1 -0
  346. package/dist/webcomponents/p-baad00f8.system.entry.js +6 -0
  347. package/dist/webcomponents/p-baad00f8.system.entry.js.map +1 -0
  348. package/dist/webcomponents/p-d174c8cd.entry.js +6 -0
  349. package/dist/webcomponents/p-d174c8cd.entry.js.map +1 -0
  350. package/dist/webcomponents/p-d5a8d30c.js +6 -0
  351. package/dist/webcomponents/p-d5a8d30c.js.map +1 -0
  352. package/dist/webcomponents/p-d83e2172.system.entry.js +17 -0
  353. package/dist/webcomponents/p-d83e2172.system.entry.js.map +1 -0
  354. package/dist/webcomponents/p-dcf41d91.entry.js +6 -0
  355. package/dist/webcomponents/p-dcf41d91.entry.js.map +1 -0
  356. package/dist/webcomponents/p-e027fca2.entry.js +6 -0
  357. package/dist/webcomponents/p-e027fca2.entry.js.map +1 -0
  358. package/dist/webcomponents/p-e6d921ef.entry.js +17 -0
  359. package/dist/webcomponents/p-e6d921ef.entry.js.map +1 -0
  360. package/dist/webcomponents/p-e751c991.system.js +6 -0
  361. package/dist/webcomponents/p-e751c991.system.js.map +1 -0
  362. package/dist/webcomponents/p-e8b5b14f.entry.js +6 -0
  363. package/dist/webcomponents/p-e8b5b14f.entry.js.map +1 -0
  364. package/dist/webcomponents/p-f5e674ba.system.entry.js +6 -0
  365. package/dist/webcomponents/p-f5e674ba.system.entry.js.map +1 -0
  366. package/dist/webcomponents/webcomponents.esm.js +6 -0
  367. package/dist/webcomponents/webcomponents.esm.js.map +1 -0
  368. package/dist/webcomponents/webcomponents.js +127 -0
  369. package/hydrate/index.d.ts +242 -0
  370. package/hydrate/index.js +22120 -0
  371. package/hydrate/index.mjs +22112 -0
  372. package/hydrate/package.json +12 -0
  373. package/loader/cdn.js +6 -0
  374. package/loader/index.cjs.js +6 -0
  375. package/loader/index.d.ts +24 -0
  376. package/loader/index.es2017.js +6 -0
  377. package/loader/index.js +7 -0
  378. package/loader/package.json +11 -0
  379. package/package.json +54 -89
  380. package/vscode-data.json +915 -0
  381. package/dist/webcomponents.common.js +0 -23958
  382. package/dist/webcomponents.common.js.map +0 -1
  383. package/dist/webcomponents.umd.js +0 -23969
  384. package/dist/webcomponents.umd.js.map +0 -1
  385. package/dist/webcomponents.umd.min.js +0 -8
  386. package/dist/webcomponents.umd.min.js.map +0 -1
@@ -0,0 +1,98 @@
1
+ /*!
2
+ * Construído com @govbr-ds/webcomponents
3
+ * Padrão Digital de Governo.
4
+ */
5
+ import { r as registerInstance, h, a as Host, g as getElement } from './index-aab4a630.js';
6
+ import { i as inheritAriaAttributes } from './inherited-attributes-553a7c36.js';
7
+ import { v as v4 } from './v4-c99c1585.js';
8
+
9
+ const textareaCss = "*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}html{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}a{background-color:transparent}strong{font-weight:bolder}small{font-size:80%}img{border-style:none}button,input,textarea{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;-moz-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}[hidden]{display:none}.d-flex{display:-ms-flexbox !important;display:flex !important}.align-items-center{-ms-flex-align:center !important;align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter) * 0.5);padding-right:calc(var(--grid-gutter) * 0.5);width:100%}.col{-ms-flex:1 0 0%;flex:1 0 0%;min-width:8.3333333333%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.container{--grid-margin:var(--grid-portrait-margin);--grid-maxwidth:var(--grid-portrait-maxwidth);margin-left:auto;margin-right:auto;max-width:var(--grid-maxwidth);padding-left:var(--grid-margin);padding-right:var(--grid-margin);width:100%}.row{--grid-gutter:var(--grid-portrait-gutter);display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:calc(var(--grid-gutter) * -0.5);margin-right:calc(var(--grid-gutter) * -0.5)}@media (min-width: 576px){.container{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-sm) - var(--grid-tablet-margin))}}@media (min-width: 992px){.container{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-md) - var(--grid-tablet-margin))}}@media (min-width: 1280px){.container{--grid-margin:var(--grid-desktop-margin)}.row{--grid-gutter:var(--grid-desktop-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-lg) - var(--grid-desktop-margin))}}@media (min-width: 1600px){.container{--grid-margin:var(--grid-tv-margin)}.row{--grid-gutter:var(--grid-tv-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-xl) - var(--grid-tv-margin))}}.mt-1{margin-top:var(--spacing-scale-half) !important}.mr-1{margin-right:var(--spacing-scale-half) !important}.mr-2{margin-right:var(--spacing-scale-base) !important}.mr-n2{margin-right:calc(var(--spacing-scale-base) * -1) !important}.mb-3{margin-bottom:var(--spacing-scale-2x) !important}.mr-auto{margin-right:auto !important}.pt-half{padding-top:var(--spacing-scale-half) !important}.py-3{padding-bottom:var(--spacing-scale-2x) !important;padding-top:var(--spacing-scale-2x) !important}.py-4{padding-bottom:var(--spacing-scale-3x) !important;padding-top:var(--spacing-scale-3x) !important}body{--bg-color:var(--background);--bg-color-rgb:var(--background-rgb);--bg-color-hsl:var(--background-hsl);--font-size:var(--font-size-scale-base);--font-weight:var(--font-weight-regular);--link-color:var(--interactive);--link-color-rgb:var(--interactive-rgb);--link-color-hsl:var(--interactive-hsl);--line-height:var(--font-line-height-medium);--text-color:var(--color);--text-color-rgb:var(--color-rgb);--text-color-hsl:var(--color-hsl);background:var(--bg-color);color:var(--text-color);font-family:var(--font-family-base);font-size:var(--font-size);font-weight:var(--font-weight);line-height:var(--line-height)}p{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-2x);margin-top:0}p a{text-decoration:underline}@media (min-width: 576px){p{font-size:var(--font-size-scale-up-01)}}a{--focus-offset:var(--spacing-scale-half);color:var(--interactive);text-decoration:none}a:focus{outline:none}a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a:not(:disabled):active{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--pressed))), to(rgba(var(--interactive-rgb), var(--pressed))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}button{cursor:pointer}img{max-width:100%;vertical-align:middle}ul{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}label,.label{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half)}::-moz-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-webkit-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}:-ms-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-ms-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::placeholder,.placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}input,textarea,.input{color:var(--color-light);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-half)}.text-pure-0{color:var(--pure-0) !important}.text-primary-default{color:var(--color-primary-default) !important}.bg-support-01{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark);background:var(--color-support-01) !important}.text-nowrap{white-space:nowrap !important}.text-base{font-size:var(--font-size-scale-base) !important}.highlight{background:var(--status-highlight-background) -webkit-gradient(linear, left top, left bottom, from(var(--status-highlight-overlay)), to(var(--status-highlight-overlay)));background:var(--status-highlight-background) linear-gradient(var(--status-highlight-overlay), var(--status-highlight-overlay));color:var(--status-highlight-text);padding:0 var(--spacing-scale-half)}[disabled],.disabled{cursor:not-allowed;opacity:var(--disabled)}[disabled] *,.disabled *{pointer-events:none}[data-toggle=dropdown]+*{position:absolute}.dropdown{position:relative}.dropdown [data-toggle=dropdown]+*{-webkit-box-shadow:var(--surface-shadow-sm);box-shadow:var(--surface-shadow-sm);left:0;position:absolute;top:100%}.dropdown .br-item{--color:var(--color-light);--color-rgb:var(--color-light-rgb);--text-color:var(--color-light);--interactive:var(--interactive-light);--interactive-rgb:var(--color-rgb);--visited:var(--visited-light);--hover:var(--hover-light);--pressed:var(--pressed-light);--focus-color:var(--focus-color-light);--focus:var(--focus-color-light);--item-padding-y:var(--spacing-scale-2x);background-color:var(--background-light);color:var(--color)}.dropdown .br-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown .br-item.selected{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark)}.br-textarea{--textarea-padding:var(--textarea-medium);--textarea-small:var(--spacing-scale-base);--textarea-medium:var(--spacing-scale-baseh);--textarea-large:var(--spacing-scale-2x);color:var(--color)}.br-textarea label{display:inline-block;margin-bottom:var(--spacing-scale-half)}.br-textarea textarea{background:var(--background-light);border:1px solid var(--border-color-alternative);border-radius:6px;color:var(--color);display:block;font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);padding:var(--textarea-padding);width:100%}.br-textarea.small textarea{--textarea-padding:var(--textarea-small)}.br-textarea.medium textarea{--textarea-padding:var(--textarea-medium)}.br-textarea.large textarea{--textarea-padding:var(--textarea-large)}.br-textarea.success textarea{border-color:var(--success);border-width:2px}.br-textarea.danger textarea{border-color:var(--danger);border-width:2px}.br-textarea.warning textarea{border-color:var(--warning);border-width:2px}.br-textarea.info textarea{border-color:var(--info);border-width:2px}.br-textarea textarea:focus,.br-textarea textarea:focus-visible{border-color:var(--focus) !important;-webkit-box-shadow:0 0 0 var(--surface-width-md) var(--focus);box-shadow:0 0 0 var(--surface-width-md) var(--focus);outline:none}.br-textarea textarea:hover:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--color-rgb), var(--hover))), to(rgba(var(--color-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}.br-textarea.dark-mode,.br-textarea.dark-mode label{--color:var(--color-dark);--focus-color:var(--focus-color-dark)}.br-textarea.dark-mode textarea{color:var(--color-light)}:host{display:block;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Rawline, Raleway, sans-serif}";
10
+ const BrTextareaStyle0 = textareaCss;
11
+
12
+ const Textarea = class {
13
+ constructor(hostRef) {
14
+ registerInstance(this, hostRef);
15
+ if (hostRef.$hostElement$["s-ei"]) {
16
+ this.elementInternals = hostRef.$hostElement$["s-ei"];
17
+ }
18
+ else {
19
+ this.elementInternals = hostRef.$hostElement$.attachInternals();
20
+ hostRef.$hostElement$["s-ei"] = this.elementInternals;
21
+ }
22
+ /**
23
+ * Manipula a mudança de valor do textarea. Atualiza o valor e emite um evento de mudança.
24
+ * @param event - O evento de entrada do textarea.
25
+ */
26
+ this.handleChange = (event) => {
27
+ var _a;
28
+ const textarea = event.target;
29
+ this.value = textarea.value;
30
+ this.currentLength = (_a = this.value) === null || _a === void 0 ? void 0 : _a.length;
31
+ this.emitValueChange();
32
+ };
33
+ this.inheritedAttributes = {};
34
+ this.value = undefined;
35
+ this.label = undefined;
36
+ this.placeholder = undefined;
37
+ this.disabled = false;
38
+ this.maxlength = 0;
39
+ this.state = undefined;
40
+ this.density = 'medium';
41
+ this.isInline = false;
42
+ this.currentLength = undefined;
43
+ this.customId = `br-textarea-${v4()}`;
44
+ }
45
+ componentWillLoad() {
46
+ var _a;
47
+ this.currentLength = (_a = this.value) === null || _a === void 0 ? void 0 : _a.length;
48
+ this.inheritedAttributes = inheritAriaAttributes(this.el);
49
+ }
50
+ valueChanged() {
51
+ var _a;
52
+ this.currentLength = (_a = this.value) === null || _a === void 0 ? void 0 : _a.length;
53
+ }
54
+ /**
55
+ * Define um novo valor para o textarea.
56
+ * @param newValue - O novo valor a ser definido.
57
+ */
58
+ async setValue(newValue) {
59
+ var _a;
60
+ this.value = newValue;
61
+ this.currentLength = (_a = this.value) === null || _a === void 0 ? void 0 : _a.length;
62
+ this.emitValueChange();
63
+ }
64
+ emitValueChange() {
65
+ const changeEvent = new CustomEvent('valueChange', {
66
+ detail: { value: this.value },
67
+ bubbles: true,
68
+ composed: true,
69
+ });
70
+ this.el.dispatchEvent(changeEvent);
71
+ }
72
+ getCssClassMap() {
73
+ return {
74
+ 'br-textarea': true,
75
+ small: this.density === 'small',
76
+ medium: this.density === 'medium',
77
+ large: this.density === 'large',
78
+ success: this.state === 'success',
79
+ danger: this.state === 'danger',
80
+ warning: this.state === 'warning',
81
+ };
82
+ }
83
+ render() {
84
+ const caracteresRestantes = this.maxlength - this.currentLength;
85
+ const mostrarLimite = this.currentLength > 0;
86
+ return (h(Host, { key: '8bb5ea9efb0e2ee82d1c4074d7f9a8332fcfb635' }, h("div", Object.assign({ key: 'cedcc004557860b4b2724c5180f2c012a109fcc1', class: this.getCssClassMap() }, this.inheritedAttributes), h("div", { key: '3998a88b69f3dddc63ea41d08db7de96af28d25d', class: this.isInline ? 'row' : '' }, this.isInline ? (h("div", { class: "col-auto pt-half" }, h("label", { htmlFor: this.customId }, this.label))) : (h("label", { htmlFor: this.customId }, this.label)), h("div", { key: '8f94f9c2aaf2758e5ee9be6938be50ce8c82db7c', class: this.isInline ? 'col' : '' }, h("textarea", Object.assign({ key: 'a642046a4dd9da93ac051eb6bf0ecfe711433680', id: this.customId, value: this.value, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleChange }, (this.maxlength > 0 ? { maxLength: this.maxlength } : {}))), h("div", { key: 'b859da1b3f48ed513e32374251a31ad3fc0f108f', class: "text-base mt-1" }, this.maxlength > 0 && (h("div", { key: '0aaebed51ac98b00c4fca6e7d857664d117b0d74' }, mostrarLimite ? (h("span", { class: "restantes", "aria-live": "polite", role: "status", id: "limitmax" }, "Restam ", h("strong", null, caracteresRestantes), " caracteres")) : (h("span", { class: "limit", "aria-live": "polite" }, "Limite m\u00E1ximo de ", h("strong", null, this.maxlength), " caracteres"))))), h("slot", { key: 'e24c4673cc638ce9e37acf05d2d80fea32b7f8fa' }))))));
87
+ }
88
+ static get formAssociated() { return true; }
89
+ get el() { return getElement(this); }
90
+ static get watchers() { return {
91
+ "value": ["valueChanged"]
92
+ }; }
93
+ };
94
+ Textarea.style = BrTextareaStyle0;
95
+
96
+ export { Textarea as br_textarea };
97
+
98
+ //# sourceMappingURL=br-textarea.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"br-textarea.entry.js","mappings":"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","names":["uuidv4"],"sources":["src/components/textarea/textarea.scss?tag=br-textarea&encapsulation=shadow","src/components/textarea/textarea.tsx"],"sourcesContent":["@import \"../../../../../node_modules/@govbr-ds/core/src/components/textarea/textarea.scss\";\n:host {\n display: block;\n box-sizing: border-box;\n font-family: Rawline, Raleway, sans-serif;\n}\n","import { AttachInternals, Component, Element, h, Host, Method, Prop, State, Watch } from '@stencil/core'\n\nimport { v4 as uuidv4 } from 'uuid'\nimport { Attributes, inheritAriaAttributes } from '../../utils/inherited-attributes'\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/textarea?tab=designer).\n *\n * @slot default - Espaço de conteúdo do textarea. Geralmente usado para incluir texto adicional ou instruções para o usuário.\n */\n@Component({\n tag: 'br-textarea',\n styleUrl: 'textarea.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Textarea {\n @Element() el: HTMLBrTextareaElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Valor atual do textarea. Este valor pode ser alterado programaticamente.\n */\n @Prop({ mutable: true, reflect: true }) value: string\n\n /**\n * Texto do rótulo associado ao textarea. Este rótulo é exibido acima do campo de entrada.\n */\n @Prop({ reflect: true }) label: string\n\n /**\n * Texto exibido quando o textarea está vazio. Ajuda a guiar o usuário sobre o que deve ser inserido.\n */\n @Prop({ reflect: true }) placeholder: string\n\n /**\n * Indica se o textarea está desabilitado. Quando verdadeiro, o usuário não pode interagir com o campo.\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Número máximo de caracteres permitidos no textarea. Se definido como 0, não há limite.\n */\n @Prop({ reflect: true }) maxlength: number = 0\n\n /**\n * Define o estado visual do componente, podendo ser 'danger', 'success' ou 'warning'.\n */\n @Prop({ reflect: true }) state: 'danger' | 'success' | 'warning'\n /**\n * Ajusta a densidade do componente, podendo ser 'small', 'medium' ou 'large'.\n */\n @Prop({ reflect: true }) density: 'small' | 'medium' | 'large' = 'medium'\n\n /**\n * Se verdadeiro, o rótulo e o input estarão na mesma linha (layout inline).\n */\n @Prop({ reflect: true }) isInline: boolean = false\n\n /**\n * Comprimento atual do texto no textarea. É atualizado sempre que o valor do textarea muda.\n */\n @State() currentLength: number\n\n /**\n * Identificador único do textarea.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true, attribute: 'id' }) customId: string = `br-textarea-${uuidv4()}`\n\n componentWillLoad() {\n this.currentLength = this.value?.length\n this.inheritedAttributes = inheritAriaAttributes(this.el)\n }\n\n @Watch('value')\n valueChanged() {\n this.currentLength = this.value?.length\n }\n\n /**\n * Manipula a mudança de valor do textarea. Atualiza o valor e emite um evento de mudança.\n * @param event - O evento de entrada do textarea.\n */\n private readonly handleChange = (event: Event) => {\n const textarea = event.target as HTMLTextAreaElement\n this.value = textarea.value\n this.currentLength = this.value?.length\n this.emitValueChange()\n }\n\n /**\n * Define um novo valor para o textarea.\n * @param newValue - O novo valor a ser definido.\n */\n @Method()\n async setValue(newValue: string) {\n this.value = newValue\n this.currentLength = this.value?.length\n this.emitValueChange()\n }\n\n private emitValueChange() {\n const changeEvent = new CustomEvent('valueChange', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n })\n this.el.dispatchEvent(changeEvent)\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-textarea': true,\n small: this.density === 'small',\n medium: this.density === 'medium',\n large: this.density === 'large',\n success: this.state === 'success',\n danger: this.state === 'danger',\n warning: this.state === 'warning',\n }\n }\n\n private inheritedAttributes: Attributes = {}\n\n render() {\n const caracteresRestantes: number = this.maxlength - this.currentLength\n const mostrarLimite = this.currentLength > 0\n\n return (\n <Host>\n <div class={this.getCssClassMap()} {...this.inheritedAttributes}>\n <div class={this.isInline ? 'row' : ''}>\n {this.isInline ? (\n <div class=\"col-auto pt-half\">\n <label htmlFor={this.customId}>{this.label}</label>\n </div>\n ) : (\n <label htmlFor={this.customId}>{this.label}</label>\n )}\n <div class={this.isInline ? 'col' : ''}>\n <textarea\n id={this.customId}\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n onInput={this.handleChange}\n {...(this.maxlength > 0 ? { maxLength: this.maxlength } : {})}\n ></textarea>\n <div class=\"text-base mt-1\">\n {this.maxlength > 0 && (\n <div>\n {mostrarLimite ? (\n <span class=\"restantes\" aria-live=\"polite\" role=\"status\" id=\"limitmax\">\n Restam <strong>{caracteresRestantes}</strong> caracteres\n </span>\n ) : (\n <span class=\"limit\" aria-live=\"polite\">\n Limite máximo de <strong>{this.maxlength}</strong> caracteres\n </span>\n )}\n </div>\n )}\n </div>\n <slot></slot>\n </div>\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"version":3}
@@ -0,0 +1,164 @@
1
+ /*!
2
+ * Construído com @govbr-ds/webcomponents
3
+ * Padrão Digital de Governo.
4
+ */
5
+ import { r as registerInstance, c as createEvent, h, a as Host, g as getElement } from './index-aab4a630.js';
6
+ import { i as inheritAriaAttributes } from './inherited-attributes-553a7c36.js';
7
+
8
+ const uploadCss = "*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}html{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}a{background-color:transparent}strong{font-weight:bolder}small{font-size:80%}img{border-style:none}button,input,textarea{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;-moz-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}[hidden]{display:none}.d-flex{display:-ms-flexbox !important;display:flex !important}.align-items-center{-ms-flex-align:center !important;align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter) * 0.5);padding-right:calc(var(--grid-gutter) * 0.5);width:100%}.col{-ms-flex:1 0 0%;flex:1 0 0%;min-width:8.3333333333%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.container{--grid-margin:var(--grid-portrait-margin);--grid-maxwidth:var(--grid-portrait-maxwidth);margin-left:auto;margin-right:auto;max-width:var(--grid-maxwidth);padding-left:var(--grid-margin);padding-right:var(--grid-margin);width:100%}.row{--grid-gutter:var(--grid-portrait-gutter);display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:calc(var(--grid-gutter) * -0.5);margin-right:calc(var(--grid-gutter) * -0.5)}@media (min-width: 576px){.container{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-sm) - var(--grid-tablet-margin))}}@media (min-width: 992px){.container{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-md) - var(--grid-tablet-margin))}}@media (min-width: 1280px){.container{--grid-margin:var(--grid-desktop-margin)}.row{--grid-gutter:var(--grid-desktop-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-lg) - var(--grid-desktop-margin))}}@media (min-width: 1600px){.container{--grid-margin:var(--grid-tv-margin)}.row{--grid-gutter:var(--grid-tv-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-xl) - var(--grid-tv-margin))}}.mt-1{margin-top:var(--spacing-scale-half) !important}.mr-1{margin-right:var(--spacing-scale-half) !important}.mr-2{margin-right:var(--spacing-scale-base) !important}.mr-n2{margin-right:calc(var(--spacing-scale-base) * -1) !important}.mb-3{margin-bottom:var(--spacing-scale-2x) !important}.mr-auto{margin-right:auto !important}.pt-half{padding-top:var(--spacing-scale-half) !important}.py-3{padding-bottom:var(--spacing-scale-2x) !important;padding-top:var(--spacing-scale-2x) !important}.py-4{padding-bottom:var(--spacing-scale-3x) !important;padding-top:var(--spacing-scale-3x) !important}body{--bg-color:var(--background);--bg-color-rgb:var(--background-rgb);--bg-color-hsl:var(--background-hsl);--font-size:var(--font-size-scale-base);--font-weight:var(--font-weight-regular);--link-color:var(--interactive);--link-color-rgb:var(--interactive-rgb);--link-color-hsl:var(--interactive-hsl);--line-height:var(--font-line-height-medium);--text-color:var(--color);--text-color-rgb:var(--color-rgb);--text-color-hsl:var(--color-hsl);background:var(--bg-color);color:var(--text-color);font-family:var(--font-family-base);font-size:var(--font-size);font-weight:var(--font-weight);line-height:var(--line-height)}p{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-2x);margin-top:0}p a{text-decoration:underline}@media (min-width: 576px){p{font-size:var(--font-size-scale-up-01)}}a{--focus-offset:var(--spacing-scale-half);color:var(--interactive);text-decoration:none}a:focus{outline:none}a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a:not(:disabled):active{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--pressed))), to(rgba(var(--interactive-rgb), var(--pressed))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}button{cursor:pointer}img{max-width:100%;vertical-align:middle}ul{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}label,.label{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half)}::-moz-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-webkit-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}:-ms-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-ms-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::placeholder,.placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}input,textarea,.input{color:var(--color-light);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-half)}.text-pure-0{color:var(--pure-0) !important}.text-primary-default{color:var(--color-primary-default) !important}.bg-support-01{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark);background:var(--color-support-01) !important}.text-nowrap{white-space:nowrap !important}.text-base{font-size:var(--font-size-scale-base) !important}.highlight{background:var(--status-highlight-background) -webkit-gradient(linear, left top, left bottom, from(var(--status-highlight-overlay)), to(var(--status-highlight-overlay)));background:var(--status-highlight-background) linear-gradient(var(--status-highlight-overlay), var(--status-highlight-overlay));color:var(--status-highlight-text);padding:0 var(--spacing-scale-half)}[disabled],.disabled{cursor:not-allowed;opacity:var(--disabled)}[disabled] *,.disabled *{pointer-events:none}[data-toggle=dropdown]+*{position:absolute}.dropdown{position:relative}.dropdown [data-toggle=dropdown]+*{-webkit-box-shadow:var(--surface-shadow-sm);box-shadow:var(--surface-shadow-sm);left:0;position:absolute;top:100%}.dropdown .br-item{--color:var(--color-light);--color-rgb:var(--color-light-rgb);--text-color:var(--color-light);--interactive:var(--interactive-light);--interactive-rgb:var(--color-rgb);--visited:var(--visited-light);--hover:var(--hover-light);--pressed:var(--pressed-light);--focus-color:var(--focus-color-light);--focus:var(--focus-color-light);--item-padding-y:var(--spacing-scale-2x);background-color:var(--background-light);color:var(--color)}.dropdown .br-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown .br-item.selected{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark)}.br-upload input{display:none}.br-upload .upload-button{--button-radius:100em;--button-xsmall:24px;--button-small:32px;--button-medium:40px;--button-large:48px;--button-size:var(--button-medium);-ms-flex-align:center;align-items:center;background-color:transparent;border:0;border-radius:var(--button-radius);color:var(--interactive);cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-semi-bold);height:var(--button-size);-ms-flex-pack:center;justify-content:center;overflow:hidden;padding:0 var(--spacing-scale-3x);position:relative;text-align:center;vertical-align:middle;white-space:nowrap;width:auto;border:var(--surface-width-sm) dashed var(--interactive);border-radius:var(--surface-rounder-sm);display:block;font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);margin-top:var(--spacing-scale-half);max-width:550px;min-height:var(--button-size);padding-left:var(--spacing-scale-2x);padding-right:var(--spacing-scale-2x);text-align:left;width:100%}.br-upload .upload-list{max-width:550px;position:relative}.br-upload .upload-list .content{-ms-flex-item-align:center;align-self:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:70%}.br-upload .upload-list .support{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex}.br-upload .upload-button:disabled{cursor:not-allowed}.br-upload .upload-button:not(:disabled){--focus-offset:var(--spacing-scale-half)}.br-upload .upload-button:not(:disabled):focus{outline:none}.br-upload .upload-button:not(:disabled):focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}.br-upload .upload-button:not(:disabled):not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}.br-upload .upload-button:not(:disabled):not(:disabled):active{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--pressed))), to(rgba(var(--interactive-rgb), var(--pressed))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}.br-upload .upload-button.active,.br-upload .upload-button.is-active,.br-upload .upload-button[active]{--hover:var(--hover-dark);background-color:var(--active);color:var(--color-dark)}.br-upload .upload-button.loading{color:transparent !important;cursor:progress}.br-upload .upload-button.loading:not(:disabled):hover{background-image:none}.br-upload .upload-button.loading::before{border-color:var(--interactive) var(--interactive) transparent;border-style:solid}.br-upload .upload-button.loading.primary::before,.br-upload .upload-button.loading.danger::before,.br-upload .upload-button.loading.success::before,.br-upload .upload-button.loading.info::before{border-color:var(--background) var(--background) transparent}.br-upload.success .upload-button{border-color:var(--success)}.br-upload.danger .upload-button{border-color:var(--danger)}.br-upload.warning .upload-button{border-color:var(--warning)}.br-upload.info .upload-button{border-color:var(--info)}:host{display:block}";
9
+ const BrUploadStyle0 = uploadCss;
10
+
11
+ var UploadState;
12
+ (function (UploadState) {
13
+ UploadState["INFO"] = "info";
14
+ UploadState["WARNING"] = "warning";
15
+ UploadState["DANGER"] = "danger";
16
+ UploadState["SUCCESS"] = "success";
17
+ })(UploadState || (UploadState = {}));
18
+ const Upload = class {
19
+ constructor(hostRef) {
20
+ registerInstance(this, hostRef);
21
+ this.brConnectedCallback = createEvent(this, "brConnectedCallback", 7);
22
+ this.brWillLoad = createEvent(this, "brWillLoad", 7);
23
+ this.brDidLoad = createEvent(this, "brDidLoad", 7);
24
+ this.brWillRender = createEvent(this, "brWillRender", 7);
25
+ this.brDidRender = createEvent(this, "brDidRender", 7);
26
+ this.brShouldUpdate = createEvent(this, "brShouldUpdate", 7);
27
+ this.brWillUpdate = createEvent(this, "brWillUpdate", 7);
28
+ this.brDidUpdate = createEvent(this, "brDidUpdate", 7);
29
+ this.brDidDisconnect = createEvent(this, "brDidDisconnect", 7);
30
+ this.brFormAssociatedCallback = createEvent(this, "brFormAssociatedCallback", 7);
31
+ this.brFormDisabledCallback = createEvent(this, "brFormDisabledCallback", 7);
32
+ this.brFormResetCallback = createEvent(this, "brFormResetCallback", 7);
33
+ this.brFormStateRestoreCallback = createEvent(this, "brFormStateRestoreCallback", 7);
34
+ if (hostRef.$hostElement$["s-ei"]) {
35
+ this.elementInternals = hostRef.$hostElement$["s-ei"];
36
+ }
37
+ else {
38
+ this.elementInternals = hostRef.$hostElement$.attachInternals();
39
+ hostRef.$hostElement$["s-ei"] = this.elementInternals;
40
+ }
41
+ this.inheritedAttributes = {};
42
+ this.accept = '';
43
+ this.label = 'Envio de arquivo';
44
+ this.filesSelected = null;
45
+ this.file = null;
46
+ this.disabled = false;
47
+ this.state = UploadState.INFO;
48
+ this.multiple = false;
49
+ }
50
+ connectedCallback() {
51
+ this.brConnectedCallback.emit();
52
+ }
53
+ componentWillLoad() {
54
+ this.brWillLoad.emit();
55
+ this.inheritedAttributes = inheritAriaAttributes(this.el);
56
+ }
57
+ componentDidLoad() {
58
+ this.brDidLoad.emit();
59
+ }
60
+ componentWillRender() {
61
+ this.brWillRender.emit();
62
+ }
63
+ componentDidRender() {
64
+ this.brDidRender.emit();
65
+ }
66
+ componentShouldUpdate() {
67
+ this.brShouldUpdate.emit();
68
+ }
69
+ componentWillUpdate() {
70
+ this.brWillUpdate.emit();
71
+ }
72
+ componentDidUpdate() {
73
+ this.brDidUpdate.emit();
74
+ }
75
+ disconnectedCallback() {
76
+ this.brDidDisconnect.emit();
77
+ }
78
+ formAssociatedCallback(form) {
79
+ this.brFormAssociatedCallback.emit(form);
80
+ }
81
+ formDisabledCallback(disabled) {
82
+ this.brFormDisabledCallback.emit(disabled);
83
+ }
84
+ formResetCallback() {
85
+ this.brFormResetCallback.emit();
86
+ }
87
+ formStateRestoreCallback(state, _mode) {
88
+ this.brFormStateRestoreCallback.emit([state, _mode]);
89
+ }
90
+ getCssClassMap() {
91
+ return {
92
+ 'br-upload': true,
93
+ [this.state]: true,
94
+ };
95
+ }
96
+ handleRemoveFileSelection(file) {
97
+ const newArrayFilter = Array.from(this.filesSelected).filter((f) => f !== file);
98
+ this.filesSelected = newArrayFilter;
99
+ const fileInput = this.el.shadowRoot.getElementById('single-file');
100
+ fileInput.value = '';
101
+ }
102
+ renderFilesUploaded() {
103
+ const fileSizes = this._calculateFileSize(this.filesSelected);
104
+ return fileSizes.map(({ file, size }) => {
105
+ return (h("div", { class: "br-item d-flex", key: file.name }, h("div", { class: "content text-primary-default mr-auto" }, file.name), h("div", { class: "support mr-n2" }, h("span", { class: "" }, size), h("br-button", { shape: "circle", type: "button", "aria-label": "Remover arquivo", onClick: () => this.handleRemoveFileSelection(file) }, h("br-icon", { "icon-name": "fa-solid:trash", "aria-hidden": "true" })))));
106
+ });
107
+ }
108
+ onInputChange(files) {
109
+ if (files.length === 1) {
110
+ this.filesSelected = files;
111
+ }
112
+ else if (files.length > 0) {
113
+ this.filesSelected = files;
114
+ }
115
+ else {
116
+ console.error(files.length === 0 ? 'NENHUM ARQUIVO ENVIADO' : 'VOCÊ SÓ PODE ENVIAR UM ARQUIVO POR VEZ');
117
+ return false;
118
+ }
119
+ }
120
+ _calculateFileSize(files) {
121
+ return Array.from(files).map((file) => {
122
+ let sOutput = '';
123
+ const aMultiples = ['KB', 'MB', 'GB', 'TB'];
124
+ let nMultiple = 0;
125
+ let nApprox = file.size / 1024;
126
+ if (nApprox < 1) {
127
+ sOutput = `${file.size} bytes`;
128
+ }
129
+ else {
130
+ while (nApprox > 1 && nMultiple < aMultiples.length) {
131
+ sOutput = `${nApprox.toFixed(2)} ${aMultiples[nMultiple]}`;
132
+ nApprox /= 1024;
133
+ nMultiple++;
134
+ }
135
+ }
136
+ return { file: file, size: sOutput || 0 };
137
+ });
138
+ }
139
+ handleDrop(event) {
140
+ var _a;
141
+ event.preventDefault();
142
+ const files = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.files;
143
+ if (files && files.length > 0) {
144
+ this.onInputChange(files);
145
+ }
146
+ }
147
+ handleDragOver(event) {
148
+ event.preventDefault();
149
+ }
150
+ handleFileSelection() {
151
+ const fileInput = this.el.shadowRoot.getElementById('single-file');
152
+ fileInput.click();
153
+ }
154
+ render() {
155
+ return (h(Host, { key: 'aab6988f0879747fdb594e3810704e497718635c' }, h("div", { key: '274726af605123e4be46cd995b295c8eb147cbf4', class: this.getCssClassMap() }, h("label", { key: '40753e4671f13bd2daab5c823284e64dd104214b', class: "upload-label", form: "single-file" }, h("span", { key: 'd49a6054c231e556bb40ee4c8b06f0c8ff950507' }, this.label)), h("button", { key: 'dafa2d9c447bb65f01e9b5dbd81f63dde33d38d2', class: "upload-button", type: "button", "aria-hidden": "true", tabIndex: this.disabled ? -1 : 0, disabled: this.disabled, "aria-label": "Selecionar arquivo para upload", onClick: () => this.handleFileSelection(), onDrop: (event) => this.handleDrop(event), onDragOver: (event) => this.handleDragOver(event) }, h("br-icon", { key: '22b4bf3b4618ecdff30cdcb8db2185db6da0af5f', "icon-name": "fa-solid:upload", height: "16", "aria-hidden": "true" }), h("span", { key: 'f8a3fbc9629d7a8cd85eb434d922356b5c61ab22' }, "Selecione o arquivo")), h("input", Object.assign({ key: '83b65e6e1a55db70d42c6075bea037d58b86c457', class: "upload-input", id: "single-file", type: "file", "aria-hidden": "null", "aria-label": "enviar arquivo", onChange: ($event) => this.onInputChange($event.target.files) }, this.inheritedAttributes, { multiple: this.multiple, disabled: this.disabled, accept: this.accept })), h("div", { key: '0a7a7f508c8379986a56d1a2aa5773b0f0709c17', id: "list-files", class: "upload-list" }, this.filesSelected ? this.renderFilesUploaded() : null))));
156
+ }
157
+ static get formAssociated() { return true; }
158
+ get el() { return getElement(this); }
159
+ };
160
+ Upload.style = BrUploadStyle0;
161
+
162
+ export { Upload as br_upload };
163
+
164
+ //# sourceMappingURL=br-upload.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"br-upload.entry.js","mappings":"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","names":[],"sources":["src/components/upload/upload.scss?tag=br-upload&encapsulation=shadow","src/components/upload/upload.tsx"],"sourcesContent":["@import \"../../../../../node_modules/@govbr-ds/core/src/components/upload/upload.scss\";\n\n:host {\n display: block;\n}\n","// Start of Selection\nimport { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Prop, State } from '@stencil/core'\n\nimport { Attributes, inheritAriaAttributes } from '../../utils/inherited-attributes'\nimport { CssClassMap } from '../../utils/interfaces'\n\nenum UploadState {\n INFO = 'info',\n WARNING = 'warning',\n DANGER = 'danger',\n SUCCESS = 'success',\n}\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/upload?tab=designer).\n *\n * @slot default - Descrição do slot\n */\n@Component({\n tag: 'br-upload',\n styleUrl: 'upload.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Upload {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el!: HTMLBrUploadElement\n\n /**\n * Tipos de arquivo permitidos (ex: 'image/*').\n * Esta propriedade define quais tipos de arquivos podem ser selecionados para upload.\n */\n @Prop() accept: string = ''\n\n /**\n * **[OBRIGATÓRIO]** Texto descritivo do campo de upload.\n * Este é o texto que é mostrado no label do textarea.\n */\n @Prop() label: string = 'Envio de arquivo'\n\n /**\n * Evento emitido quando um arquivo é selecionado.\n * Este estado armazena os arquivos que foram selecionados pelo usuário.\n */\n @State() filesSelected: FileList | null = null\n\n /**\n * Referência ao elemento de arquivo selecionado.\n * Este estado armazena o arquivo que foi selecionado para upload.\n */\n @State() file: File | null = null\n\n /**\n * Indica se o componente está desativado.\n * Quando definido como `true`, o campo de upload se torna não interativo,\n * impedindo que o usuário selecione ou envie arquivos.\n * Isso é útil para controlar a interação do usuário em situações específicas,\n * como durante o carregamento de dados ou quando o formulário está em um estado inválido.\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * **[OBRIGATÓRIO]** Define o estado visual da mensagem.\n * Os possíveis valores são:\n * - 'info': Mensagem informativa.\n * - 'warning': Mensagem de aviso.\n * - 'danger': Mensagem de erro ou alerta.\n * - 'success': Mensagem de sucesso.\n * O valor padrão é 'info'.\n */\n @Prop({ reflect: true }) state: string = UploadState.INFO\n\n /**\n * Indica se o componente permite a seleção de múltiplos arquivos.\n * Quando definido como `true`, o usuário pode selecionar mais de um arquivo para upload.\n */\n @Prop() multiple: boolean = false\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Emite um evento quando o componente é conectado ao DOM.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#connectedcallback) para mais detalhes.\n */\n @Event() brConnectedCallback: EventEmitter<void>\n connectedCallback() {\n this.brConnectedCallback.emit()\n }\n\n /**\n * Emite um evento antes que o componente seja carregado pela primeira vez.\n * Utilize este evento para realizar tarefas de inicialização antes do componente ser exibido.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillload) para mais detalhes.\n */\n @Event() brWillLoad: EventEmitter<void>\n componentWillLoad() {\n this.brWillLoad.emit()\n this.inheritedAttributes = inheritAriaAttributes(this.el)\n }\n\n /**\n * Emite um evento após o componente ter sido carregado pela primeira vez.\n * Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brDidLoad: EventEmitter<void>\n componentDidLoad() {\n this.brDidLoad.emit()\n }\n\n /**\n * Emite um evento antes do componente ser renderizado.\n * Utilize este evento para preparar o componente antes de sua renderização.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillrender) para mais detalhes.\n */\n @Event() brWillRender: EventEmitter<void>\n componentWillRender() {\n this.brWillRender.emit()\n }\n\n /**\n * Emite um evento após o componente ter sido renderizado.\n * Utilize este evento para executar ações que devem ocorrer após a renderização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidrender) para mais detalhes.\n */\n @Event() brDidRender: EventEmitter<void>\n componentDidRender() {\n this.brDidRender.emit()\n }\n\n /**\n * Emite um evento para indicar se o componente deve ser atualizado ou não.\n * Este evento é chamado antes de qualquer atualização do componente para decidir se a atualização deve prosseguir.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentshouldupdate) para mais detalhes.\n */\n @Event() brShouldUpdate: EventEmitter<void>\n componentShouldUpdate() {\n this.brShouldUpdate.emit()\n }\n\n /**\n * Emite um evento antes de o componente ser atualizado.\n * Utilize este evento para realizar ações preparatórias antes da atualização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillupdate) para mais detalhes.\n */\n @Event() brWillUpdate: EventEmitter<void>\n componentWillUpdate() {\n this.brWillUpdate.emit()\n }\n\n /**\n * Emite um evento após o componente ter sido atualizado.\n * Utilize este evento para realizar ações após a atualização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidupdate) para mais detalhes.\n */\n @Event() brDidUpdate: EventEmitter<void>\n componentDidUpdate() {\n this.brDidUpdate.emit()\n }\n\n /**\n * Emite um evento quando o componente é desconectado do DOM.\n * Utilize este evento para realizar a limpeza ou outras ações necessárias quando o componente é removido.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#disconnectedcallback) para mais detalhes.\n */\n @Event() brDidDisconnect: EventEmitter<void>\n disconnectedCallback() {\n this.brDidDisconnect.emit()\n }\n\n /**\n * Emite um evento quando o componente é associado ou removido de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formassociatedcallback) para mais detalhes.\n *\n * @param form - Dados do formulário associado.\n */\n @Event() brFormAssociatedCallback: EventEmitter<FormData>\n formAssociatedCallback(form: FormData) {\n this.brFormAssociatedCallback.emit(form)\n }\n\n /**\n * Emite um evento quando o estado `disabled` do componente muda dentro de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formdisabledcallback) para mais informações.\n *\n * @param disabled - Novo estado `disabled` do componente dentro do formulário.\n */\n @Event() brFormDisabledCallback: EventEmitter<boolean>\n formDisabledCallback(disabled: boolean) {\n this.brFormDisabledCallback.emit(disabled)\n }\n\n /**\n * Emite um evento quando um `<form>` é resetado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formresetcallback) para mais detalhes.\n */\n @Event() brFormResetCallback: EventEmitter<void>\n formResetCallback() {\n this.brFormResetCallback.emit()\n }\n\n /**\n * Emite um evento quando o navegador preenche automaticamente os campos de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formstaterestorecallback) para mais informações.\n *\n * @param state - Estado restaurado do formulário.\n * @param _mode - Modo de preenchimento automático do navegador.\n */\n @Event() brFormStateRestoreCallback: EventEmitter<[state: string, _mode: string]>\n formStateRestoreCallback(state: string, _mode: string) {\n this.brFormStateRestoreCallback.emit([state, _mode])\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-upload': true,\n [this.state]: true,\n }\n }\n\n private inheritedAttributes: Attributes = {}\n\n private handleRemoveFileSelection(file: File) {\n const newArrayFilter = Array.from(this.filesSelected).filter((f) => f !== file)\n this.filesSelected = newArrayFilter as unknown as FileList\n const fileInput = this.el.shadowRoot.getElementById('single-file') as HTMLInputElement\n fileInput.value = ''\n }\n\n private renderFilesUploaded() {\n const fileSizes = this._calculateFileSize(this.filesSelected)\n\n return fileSizes.map(({ file, size }) => {\n return (\n <div class=\"br-item d-flex\" key={file.name}>\n <div class=\"content text-primary-default mr-auto\">{file.name}</div>\n <div class=\"support mr-n2\">\n <span class=\"\">{size}</span>\n <br-button\n shape=\"circle\"\n type=\"button\"\n aria-label=\"Remover arquivo\"\n onClick={() => this.handleRemoveFileSelection(file)}\n >\n <br-icon icon-name=\"fa-solid:trash\" aria-hidden=\"true\"></br-icon>\n </br-button>\n </div>\n </div>\n )\n })\n }\n\n private onInputChange(files: FileList) {\n if (files.length === 1) {\n this.filesSelected = files\n } else if (files.length > 0) {\n this.filesSelected = files\n } else {\n console.error(files.length === 0 ? 'NENHUM ARQUIVO ENVIADO' : 'VOCÊ SÓ PODE ENVIAR UM ARQUIVO POR VEZ')\n\n return false\n }\n }\n\n private _calculateFileSize(files: FileList) {\n return Array.from(files).map((file) => {\n let sOutput = ''\n const aMultiples = ['KB', 'MB', 'GB', 'TB']\n let nMultiple = 0\n let nApprox = file.size / 1024\n\n if (nApprox < 1) {\n sOutput = `${file.size} bytes`\n } else {\n while (nApprox > 1 && nMultiple < aMultiples.length) {\n sOutput = `${nApprox.toFixed(2)} ${aMultiples[nMultiple]}`\n nApprox /= 1024\n nMultiple++\n }\n }\n\n return { file: file, size: sOutput || 0 }\n })\n }\n\n private handleDrop(event: DragEvent) {\n event.preventDefault()\n const files = event.dataTransfer?.files\n if (files && files.length > 0) {\n this.onInputChange(files)\n }\n }\n\n private handleDragOver(event: DragEvent) {\n event.preventDefault()\n }\n\n private handleFileSelection() {\n const fileInput = this.el.shadowRoot.getElementById('single-file') as HTMLInputElement\n fileInput.click()\n }\n\n render() {\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n <label class=\"upload-label\" form=\"single-file\">\n <span>{this.label}</span>\n </label>\n <button\n class=\"upload-button\"\n type=\"button\"\n aria-hidden=\"true\"\n tabIndex={this.disabled ? -1 : 0}\n disabled={this.disabled}\n aria-label=\"Selecionar arquivo para upload\"\n onClick={() => this.handleFileSelection()}\n onDrop={(event) => this.handleDrop(event)}\n onDragOver={(event) => this.handleDragOver(event)}\n >\n <br-icon icon-name=\"fa-solid:upload\" height=\"16\" aria-hidden=\"true\"></br-icon>\n <span>Selecione o arquivo</span>\n </button>\n\n <input\n class=\"upload-input\"\n id=\"single-file\"\n type=\"file\"\n aria-hidden=\"null\"\n aria-label=\"enviar arquivo\"\n onChange={($event: any) => this.onInputChange($event.target.files)}\n {...this.inheritedAttributes}\n multiple={this.multiple}\n disabled={this.disabled}\n accept={this.accept}\n />\n <div id=\"list-files\" class=\"upload-list\">\n {this.filesSelected ? this.renderFilesUploaded() : null}\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"version":3}