@govbr-ds/webcomponents 2.0.0-next.34 → 2.0.0-next.35

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 (405) hide show
  1. package/dist/cjs/br-avatar.cjs.entry.js +1 -1
  2. package/dist/cjs/br-avatar.cjs.entry.js.map +1 -1
  3. package/dist/cjs/br-avatar.entry.cjs.js.map +1 -1
  4. package/dist/cjs/br-breadcrumb.cjs.entry.js +1 -1
  5. package/dist/cjs/br-breadcrumb.cjs.entry.js.map +1 -1
  6. package/dist/cjs/br-breadcrumb.entry.cjs.js.map +1 -1
  7. package/dist/cjs/br-button.br-icon.entry.cjs.js.map +1 -1
  8. package/dist/cjs/br-button_2.cjs.entry.js +2 -2
  9. package/dist/cjs/br-button_2.cjs.entry.js.map +1 -1
  10. package/dist/cjs/br-checkbox.cjs.entry.js +1 -1
  11. package/dist/cjs/br-checkbox.cjs.entry.js.map +1 -1
  12. package/dist/cjs/br-checkbox.entry.cjs.js.map +1 -1
  13. package/dist/cjs/br-checkgroup.cjs.entry.js +1 -1
  14. package/dist/cjs/br-checkgroup.cjs.entry.js.map +1 -1
  15. package/dist/cjs/br-checkgroup.entry.cjs.js.map +1 -1
  16. package/dist/cjs/br-collapse.cjs.entry.js +1 -1
  17. package/dist/cjs/br-collapse.cjs.entry.js.map +1 -1
  18. package/dist/cjs/br-collapse.entry.cjs.js.map +1 -1
  19. package/dist/cjs/br-divider.cjs.entry.js +1 -1
  20. package/dist/cjs/br-divider.cjs.entry.js.map +1 -1
  21. package/dist/cjs/br-divider.entry.cjs.js.map +1 -1
  22. package/dist/cjs/br-dropdown.cjs.entry.js +1 -1
  23. package/dist/cjs/br-dropdown.cjs.entry.js.map +1 -1
  24. package/dist/cjs/br-dropdown.entry.cjs.js.map +1 -1
  25. package/dist/cjs/br-input.br-radio.entry.cjs.js.map +1 -1
  26. package/dist/cjs/br-input_2.cjs.entry.js +2 -2
  27. package/dist/cjs/br-input_2.cjs.entry.js.map +1 -1
  28. package/dist/cjs/br-item.cjs.entry.js +1 -1
  29. package/dist/cjs/br-item.cjs.entry.js.map +1 -1
  30. package/dist/cjs/br-item.entry.cjs.js.map +1 -1
  31. package/dist/cjs/br-list.cjs.entry.js +1 -1
  32. package/dist/cjs/br-list.cjs.entry.js.map +1 -1
  33. package/dist/cjs/br-list.entry.cjs.js.map +1 -1
  34. package/dist/cjs/br-loading.cjs.entry.js +1 -1
  35. package/dist/cjs/br-loading.cjs.entry.js.map +1 -1
  36. package/dist/cjs/br-loading.entry.cjs.js.map +1 -1
  37. package/dist/cjs/br-message.cjs.entry.js +1 -1
  38. package/dist/cjs/br-message.cjs.entry.js.map +1 -1
  39. package/dist/cjs/br-message.entry.cjs.js.map +1 -1
  40. package/dist/cjs/br-select.cjs.entry.js +69 -42
  41. package/dist/cjs/br-select.cjs.entry.js.map +1 -1
  42. package/dist/cjs/br-select.entry.cjs.js.map +1 -1
  43. package/dist/cjs/br-step-item.cjs.entry.js +244 -0
  44. package/dist/cjs/br-step-item.cjs.entry.js.map +1 -0
  45. package/dist/cjs/br-step-item.entry.cjs.js.map +1 -0
  46. package/dist/cjs/br-step.cjs.entry.js +282 -0
  47. package/dist/cjs/br-step.cjs.entry.js.map +1 -0
  48. package/dist/cjs/br-step.entry.cjs.js.map +1 -0
  49. package/dist/cjs/br-switch.cjs.entry.js +2 -2
  50. package/dist/cjs/br-switch.cjs.entry.js.map +1 -1
  51. package/dist/cjs/br-switch.entry.cjs.js.map +1 -1
  52. package/dist/cjs/br-tag.cjs.entry.js +3 -3
  53. package/dist/cjs/br-tag.cjs.entry.js.map +1 -1
  54. package/dist/cjs/br-tag.entry.cjs.js.map +1 -1
  55. package/dist/cjs/br-textarea.cjs.entry.js +2 -2
  56. package/dist/cjs/br-textarea.cjs.entry.js.map +1 -1
  57. package/dist/cjs/br-textarea.entry.cjs.js.map +1 -1
  58. package/dist/cjs/br-upload.cjs.entry.js +2 -2
  59. package/dist/cjs/br-upload.cjs.entry.js.map +1 -1
  60. package/dist/cjs/br-upload.entry.cjs.js.map +1 -1
  61. package/dist/cjs/index-C5PKqcRm.js +8 -0
  62. package/dist/cjs/loader.cjs.js +1 -1
  63. package/dist/cjs/webcomponents.cjs.js +1 -1
  64. package/dist/collection/collection-manifest.json +2 -0
  65. package/dist/collection/components/avatar/avatar.css +1 -1
  66. package/dist/collection/components/breadcrumb/breadcrumb.css +1 -1
  67. package/dist/collection/components/button/button.css +1 -1
  68. package/dist/collection/components/checkbox/checkbox.css +1 -1
  69. package/dist/collection/components/checkgroup/checkgroup.css +1 -1
  70. package/dist/collection/components/collapse/collapse.css +1 -1
  71. package/dist/collection/components/divider/divider.css +1 -1
  72. package/dist/collection/components/dropdown/dropdown.css +1 -1
  73. package/dist/collection/components/icon/icon.css +1 -1
  74. package/dist/collection/components/input/input.css +1 -1
  75. package/dist/collection/components/item/item.css +1 -1
  76. package/dist/collection/components/list/list.css +1 -1
  77. package/dist/collection/components/loading/loading.css +1 -1
  78. package/dist/collection/components/message/message.css +1 -1
  79. package/dist/collection/components/radio/radio.css +1 -1
  80. package/dist/collection/components/select/select.css +1 -1
  81. package/dist/collection/components/select/select.js +72 -45
  82. package/dist/collection/components/select/select.js.map +1 -1
  83. package/dist/{webcomponents/p-df5400e2.entry.js → collection/components/step/step.css} +1 -140
  84. package/dist/collection/components/step/step.js +545 -0
  85. package/dist/collection/components/step/step.js.map +1 -0
  86. package/dist/{webcomponents/p-cc4c57d8.entry.js → collection/components/step-item/step-item.css} +1 -144
  87. package/dist/collection/components/step-item/step-item.js +550 -0
  88. package/dist/collection/components/step-item/step-item.js.map +1 -0
  89. package/dist/collection/components/switch/switch.css +1 -1
  90. package/dist/collection/components/switch/switch.js +1 -1
  91. package/dist/collection/components/tag/tag.css +1 -1
  92. package/dist/collection/components/tag/tag.js +2 -2
  93. package/dist/collection/components/textarea/textarea.css +1 -1
  94. package/dist/collection/components/textarea/textarea.js +1 -1
  95. package/dist/collection/components/textarea/textarea.js.map +1 -1
  96. package/dist/collection/components/upload/upload.css +1 -1
  97. package/dist/collection/components/upload/upload.js +1 -1
  98. package/dist/collection/pages/components/select/index.js +18 -0
  99. package/dist/collection/pages/components/step/index.js +33 -0
  100. package/dist/collection/pages/scripts/menu.js +7 -1
  101. package/dist/collection/pages/scripts/pageLoader.js +3 -16
  102. package/dist/components/br-avatar.js +6 -6
  103. package/dist/components/br-breadcrumb.js +5 -5
  104. package/dist/components/br-button.js +1 -1
  105. package/dist/components/br-checkbox.js +3 -3
  106. package/dist/components/br-checkgroup.js +5 -5
  107. package/dist/components/br-collapse.js +2 -2
  108. package/dist/components/br-divider.js +1 -1
  109. package/dist/components/br-dropdown.js +1 -1
  110. package/dist/components/br-icon.js +3 -3
  111. package/dist/components/br-input.js +4 -4
  112. package/dist/components/br-item.js +3 -3
  113. package/dist/components/br-list.js +1 -1
  114. package/dist/components/br-loading.js +4 -4
  115. package/dist/components/br-message.js +3 -3
  116. package/dist/components/br-radio.js +3 -3
  117. package/dist/components/br-select.js +81 -50
  118. package/dist/components/br-select.js.map +1 -1
  119. package/dist/components/br-step-item.d.ts +11 -0
  120. package/dist/components/br-step-item.js +335 -0
  121. package/dist/components/br-step-item.js.map +1 -0
  122. package/dist/components/br-step.d.ts +11 -0
  123. package/dist/components/br-step.js +312 -0
  124. package/dist/components/br-step.js.map +1 -0
  125. package/dist/components/br-switch.js +6 -6
  126. package/dist/components/br-tag.js +14 -14
  127. package/dist/components/br-textarea.js +10 -10
  128. package/dist/components/br-textarea.js.map +1 -1
  129. package/dist/components/br-upload.js +12 -12
  130. package/dist/components/index.d.ts +4 -0
  131. package/dist/components/index.js +4 -0
  132. package/dist/components/p-BUAXx2fX.js +129 -0
  133. package/dist/components/p-C1G4wYL7.js +173 -0
  134. package/dist/components/p-Cf1VoqB7.js +197 -0
  135. package/dist/components/p-D3sFUq_f.js +284 -0
  136. package/dist/components/p-DJC0NAoD.js +153 -0
  137. package/dist/components/p-DlpHRT0g.js +385 -0
  138. package/dist/components/{p-BPq5El3u.js → p-Dne-S1Hl.js} +3 -3
  139. package/dist/esm/br-avatar.entry.js +1 -1
  140. package/dist/esm/br-avatar.entry.js.map +1 -1
  141. package/dist/esm/br-breadcrumb.entry.js +1 -1
  142. package/dist/esm/br-breadcrumb.entry.js.map +1 -1
  143. package/dist/esm/br-button.br-icon.entry.js.map +1 -1
  144. package/dist/esm/br-button_2.entry.js +2 -2
  145. package/dist/esm/br-button_2.entry.js.map +1 -1
  146. package/dist/esm/br-checkbox.entry.js +1 -1
  147. package/dist/esm/br-checkbox.entry.js.map +1 -1
  148. package/dist/esm/br-checkgroup.entry.js +1 -1
  149. package/dist/esm/br-checkgroup.entry.js.map +1 -1
  150. package/dist/esm/br-collapse.entry.js +1 -1
  151. package/dist/esm/br-collapse.entry.js.map +1 -1
  152. package/dist/esm/br-divider.entry.js +1 -1
  153. package/dist/esm/br-divider.entry.js.map +1 -1
  154. package/dist/esm/br-dropdown.entry.js +1 -1
  155. package/dist/esm/br-dropdown.entry.js.map +1 -1
  156. package/dist/esm/br-input.br-radio.entry.js.map +1 -1
  157. package/dist/esm/br-input_2.entry.js +2 -2
  158. package/dist/esm/br-input_2.entry.js.map +1 -1
  159. package/dist/esm/br-item.entry.js +1 -1
  160. package/dist/esm/br-item.entry.js.map +1 -1
  161. package/dist/esm/br-list.entry.js +1 -1
  162. package/dist/esm/br-list.entry.js.map +1 -1
  163. package/dist/esm/br-loading.entry.js +1 -1
  164. package/dist/esm/br-loading.entry.js.map +1 -1
  165. package/dist/esm/br-message.entry.js +1 -1
  166. package/dist/esm/br-message.entry.js.map +1 -1
  167. package/dist/esm/br-select.entry.js +69 -42
  168. package/dist/esm/br-select.entry.js.map +1 -1
  169. package/dist/esm/br-step-item.entry.js +242 -0
  170. package/dist/esm/br-step-item.entry.js.map +1 -0
  171. package/dist/esm/br-step.entry.js +280 -0
  172. package/dist/esm/br-step.entry.js.map +1 -0
  173. package/dist/esm/br-switch.entry.js +2 -2
  174. package/dist/esm/br-switch.entry.js.map +1 -1
  175. package/dist/esm/br-tag.entry.js +3 -3
  176. package/dist/esm/br-tag.entry.js.map +1 -1
  177. package/dist/esm/br-textarea.entry.js +2 -2
  178. package/dist/esm/br-textarea.entry.js.map +1 -1
  179. package/dist/esm/br-upload.entry.js +2 -2
  180. package/dist/esm/br-upload.entry.js.map +1 -1
  181. package/dist/esm/index-CAyrQrUt.js +8 -0
  182. package/dist/esm/loader.js +1 -1
  183. package/dist/esm/webcomponents.js +1 -1
  184. package/dist/esm-es5/br-avatar.entry.js +1 -1
  185. package/dist/esm-es5/br-avatar.entry.js.map +1 -1
  186. package/dist/esm-es5/br-breadcrumb.entry.js +1 -1
  187. package/dist/esm-es5/br-breadcrumb.entry.js.map +1 -1
  188. package/dist/esm-es5/br-button.br-icon.entry.js.map +1 -1
  189. package/dist/esm-es5/br-button_2.entry.js +158 -158
  190. package/dist/esm-es5/br-checkbox.entry.js +1 -1
  191. package/dist/esm-es5/br-checkbox.entry.js.map +1 -1
  192. package/dist/esm-es5/br-checkgroup.entry.js +1 -1
  193. package/dist/esm-es5/br-checkgroup.entry.js.map +1 -1
  194. package/dist/esm-es5/br-collapse.entry.js +1 -1
  195. package/dist/esm-es5/br-collapse.entry.js.map +1 -1
  196. package/dist/esm-es5/br-divider.entry.js +1 -1
  197. package/dist/esm-es5/br-divider.entry.js.map +1 -1
  198. package/dist/esm-es5/br-dropdown.entry.js +1 -1
  199. package/dist/esm-es5/br-dropdown.entry.js.map +1 -1
  200. package/dist/esm-es5/br-input.br-radio.entry.js.map +1 -1
  201. package/dist/esm-es5/br-input_2.entry.js +23 -23
  202. package/dist/esm-es5/br-item.entry.js +1 -1
  203. package/dist/esm-es5/br-item.entry.js.map +1 -1
  204. package/dist/esm-es5/br-list.entry.js +1 -1
  205. package/dist/esm-es5/br-list.entry.js.map +1 -1
  206. package/dist/esm-es5/br-loading.entry.js +1 -1
  207. package/dist/esm-es5/br-loading.entry.js.map +1 -1
  208. package/dist/esm-es5/br-message.entry.js +1 -1
  209. package/dist/esm-es5/br-message.entry.js.map +1 -1
  210. package/dist/esm-es5/br-select.entry.js +120 -69
  211. package/dist/esm-es5/br-select.entry.js.map +1 -1
  212. package/dist/esm-es5/br-step-item.entry.js +419 -0
  213. package/dist/esm-es5/br-step-item.entry.js.map +1 -0
  214. package/dist/esm-es5/br-step.entry.js +431 -0
  215. package/dist/esm-es5/br-step.entry.js.map +1 -0
  216. package/dist/esm-es5/br-switch.entry.js +6 -6
  217. package/dist/esm-es5/br-switch.entry.js.map +1 -1
  218. package/dist/esm-es5/br-tag.entry.js +7 -7
  219. package/dist/esm-es5/br-tag.entry.js.map +1 -1
  220. package/dist/esm-es5/br-textarea.entry.js +10 -10
  221. package/dist/esm-es5/br-textarea.entry.js.map +1 -1
  222. package/dist/esm-es5/br-upload.entry.js +10 -10
  223. package/dist/esm-es5/br-upload.entry.js.map +1 -1
  224. package/dist/esm-es5/index-CAyrQrUt.js +23 -13
  225. package/dist/esm-es5/loader.js +37 -1
  226. package/dist/esm-es5/webcomponents.js +61 -25
  227. package/dist/hydrate/index.js +659 -66
  228. package/dist/hydrate/index.mjs +659 -66
  229. package/dist/types/components/select/select.d.ts +30 -4
  230. package/dist/types/components/step/step.d.ts +103 -0
  231. package/dist/types/components/step-item/step-item.d.ts +102 -0
  232. package/dist/types/components.d.ts +253 -4
  233. package/dist/webcomponents/br-avatar.entry.esm.js.map +1 -1
  234. package/dist/webcomponents/br-breadcrumb.entry.esm.js.map +1 -1
  235. package/dist/webcomponents/br-button.br-icon.entry.esm.js.map +1 -1
  236. package/dist/webcomponents/br-checkbox.entry.esm.js.map +1 -1
  237. package/dist/webcomponents/br-checkgroup.entry.esm.js.map +1 -1
  238. package/dist/webcomponents/br-collapse.entry.esm.js.map +1 -1
  239. package/dist/webcomponents/br-divider.entry.esm.js.map +1 -1
  240. package/dist/webcomponents/br-dropdown.entry.esm.js.map +1 -1
  241. package/dist/webcomponents/br-input.br-radio.entry.esm.js.map +1 -1
  242. package/dist/webcomponents/br-item.entry.esm.js.map +1 -1
  243. package/dist/webcomponents/br-list.entry.esm.js.map +1 -1
  244. package/dist/webcomponents/br-loading.entry.esm.js.map +1 -1
  245. package/dist/webcomponents/br-message.entry.esm.js.map +1 -1
  246. package/dist/webcomponents/br-select.entry.esm.js.map +1 -1
  247. package/dist/webcomponents/br-step-item.entry.esm.js.map +1 -0
  248. package/dist/webcomponents/br-step.entry.esm.js.map +1 -0
  249. package/dist/webcomponents/br-switch.entry.esm.js.map +1 -1
  250. package/dist/webcomponents/br-tag.entry.esm.js.map +1 -1
  251. package/dist/webcomponents/br-textarea.entry.esm.js.map +1 -1
  252. package/dist/webcomponents/br-upload.entry.esm.js.map +1 -1
  253. package/dist/webcomponents/p-019ce02a.entry.js +163 -0
  254. package/dist/webcomponents/p-0e81892b.system.entry.js +280 -0
  255. package/dist/webcomponents/p-121547cd.entry.js +87 -0
  256. package/dist/webcomponents/p-1e63a10d.system.entry.js +293 -0
  257. package/dist/webcomponents/{p-6b505a38.system.entry.js.map → p-1e63a10d.system.entry.js.map} +1 -1
  258. package/dist/webcomponents/p-302f5fbd.system.entry.js +428 -0
  259. package/dist/webcomponents/p-302f5fbd.system.entry.js.map +1 -0
  260. package/dist/webcomponents/p-3221d882.entry.js +281 -0
  261. package/dist/webcomponents/p-3221d882.entry.js.map +1 -0
  262. package/dist/webcomponents/p-32ca900a.entry.js +166 -0
  263. package/dist/webcomponents/{p-6e166dac.entry.js.map → p-32ca900a.entry.js.map} +1 -1
  264. package/dist/webcomponents/p-352c7312.system.entry.js +235 -0
  265. package/dist/webcomponents/p-36194f7c.entry.js +254 -0
  266. package/dist/webcomponents/p-3e073649.system.entry.js +121 -0
  267. package/dist/webcomponents/p-4c3c46ca.entry.js +152 -0
  268. package/dist/webcomponents/p-4c6733a1.system.entry.js +440 -0
  269. package/dist/webcomponents/p-4c6733a1.system.entry.js.map +1 -0
  270. package/dist/webcomponents/p-58a6aab1.system.entry.js +157 -0
  271. package/dist/webcomponents/p-69b18bcc.entry.js +104 -0
  272. package/dist/webcomponents/p-76426a2e.entry.js +144 -0
  273. package/dist/webcomponents/p-79aa414c.system.entry.js +425 -0
  274. package/dist/webcomponents/p-79e747c1.entry.js +168 -0
  275. package/dist/webcomponents/p-7dd4f2a5.system.entry.js +93 -0
  276. package/dist/webcomponents/{p-1dcPc0rI.system.js.map → p-7tDq9qWy.system.js.map} +1 -1
  277. package/dist/webcomponents/p-83f55139.entry.js +148 -0
  278. package/dist/webcomponents/p-84f8edae.entry.js +110 -0
  279. package/dist/webcomponents/p-928b76d0.entry.js +209 -0
  280. package/dist/webcomponents/{p-Ct3ex90V.system.js.map → p-9wCtgwp6.system.js.map} +1 -1
  281. package/dist/webcomponents/{p-thasv5yZ.system.js.map → p-B3wPFyS5.system.js.map} +1 -1
  282. package/dist/webcomponents/{p-BqvdZkL7.system.js.map → p-B9GHNpiJ.system.js.map} +1 -1
  283. package/dist/webcomponents/{p-usq43hTj.system.js.map → p-BXpIEO27.system.js.map} +1 -1
  284. package/dist/webcomponents/{p-D86s8ueb.system.js.map → p-BXsqNLmg.system.js.map} +1 -1
  285. package/dist/webcomponents/p-Bhwl8CRi.system.js +77 -41
  286. package/dist/webcomponents/{p-C_4ySWyP.system.js.map → p-BoK6TcDE.system.js.map} +1 -1
  287. package/dist/webcomponents/p-BwFsTqJ9.system.js.map +1 -0
  288. package/dist/webcomponents/{p-MDfQKKJ3.system.js.map → p-ByHGgMEG.system.js.map} +1 -1
  289. package/dist/webcomponents/p-CD1bwFZi.system.js.map +1 -0
  290. package/dist/webcomponents/{p-wytm5zt0.system.js.map → p-CVHsq8dp.system.js.map} +1 -1
  291. package/dist/webcomponents/{p-B90gByRD.system.js.map → p-CgEwLRss.system.js.map} +1 -1
  292. package/dist/webcomponents/{p-DFVDihQu.system.js.map → p-CgegvyhC.system.js.map} +1 -1
  293. package/dist/webcomponents/{p-BNl1VeC2.system.js.map → p-D5FcCD9L.system.js.map} +1 -1
  294. package/dist/webcomponents/{p-mh9IZoxC.system.js.map → p-DFnGIoqM.system.js.map} +1 -1
  295. package/dist/webcomponents/{p-YAlbMep3.system.js.map → p-DTG-5_9_.system.js.map} +1 -1
  296. package/dist/webcomponents/{p-dwDliNFd.system.js.map → p-K5tFZU2o.system.js.map} +1 -1
  297. package/dist/webcomponents/p-X9v1LZix.system.js.map +1 -0
  298. package/dist/webcomponents/p-a29ef881.system.entry.js +2386 -0
  299. package/dist/webcomponents/p-b3e7180f.system.entry.js +515 -0
  300. package/dist/webcomponents/p-b9b466b2.system.entry.js +116 -0
  301. package/dist/webcomponents/p-ba1c6153.system.entry.js +278 -0
  302. package/dist/webcomponents/p-c0a85892.entry.js +398 -0
  303. package/dist/webcomponents/p-c2f4ab31.entry.js +144 -0
  304. package/dist/webcomponents/p-c422755c.entry.js +388 -0
  305. package/dist/webcomponents/p-c422755c.entry.js.map +1 -0
  306. package/dist/webcomponents/p-cb5ebcb6.system.entry.js +254 -0
  307. package/dist/webcomponents/p-d33ec3ae.entry.js +140 -0
  308. package/dist/webcomponents/p-d36f650d.system.entry.js +155 -0
  309. package/dist/webcomponents/p-d52fbba3.system.entry.js +251 -0
  310. package/dist/webcomponents/p-dbba1627.system.entry.js +282 -0
  311. package/dist/webcomponents/p-ddce5a0b.entry.js +467 -0
  312. package/dist/webcomponents/p-e4e2fd4f.entry.js +257 -0
  313. package/dist/webcomponents/p-eb06a6e1.entry.js +2361 -0
  314. package/dist/webcomponents/p-ee3853d3.system.entry.js +151 -0
  315. package/dist/webcomponents/p-f8262121.system.entry.js +251 -0
  316. package/dist/webcomponents/p-fd191bf0.entry.js +278 -0
  317. package/dist/webcomponents/p-fd191bf0.entry.js.map +1 -0
  318. package/dist/webcomponents/p-fe37ebb6.system.entry.js +575 -0
  319. package/dist/webcomponents/p-fe37ebb6.system.entry.js.map +1 -0
  320. package/dist/webcomponents/{p-BeMhoFbq.system.js.map → p-gTDesSZK.system.js.map} +1 -1
  321. package/dist/webcomponents/{p-Dde15d6z.system.js.map → p-oLikpHRj.system.js.map} +1 -1
  322. package/dist/webcomponents/webcomponents.esm.js +56 -20
  323. package/package.json +1 -1
  324. package/dist/components/p-4n7uz3ik.js +0 -173
  325. package/dist/components/p-B27qgEvJ.js +0 -284
  326. package/dist/components/p-D27CYIFW.js +0 -153
  327. package/dist/components/p-D6xl9W7Q.js +0 -385
  328. package/dist/components/p-DGRJ0cGS.js +0 -197
  329. package/dist/components/p-Dt9PiOfU.js +0 -129
  330. package/dist/webcomponents/p-06f7eeff.system.entry.js +0 -254
  331. package/dist/webcomponents/p-0b4b4c3c.system.entry.js +0 -235
  332. package/dist/webcomponents/p-0baea87b.system.entry.js +0 -157
  333. package/dist/webcomponents/p-15208deb.system.entry.js +0 -282
  334. package/dist/webcomponents/p-24ffcc2b.system.entry.js +0 -524
  335. package/dist/webcomponents/p-24ffcc2b.system.entry.js.map +0 -1
  336. package/dist/webcomponents/p-27378f51.system.entry.js +0 -251
  337. package/dist/webcomponents/p-37837c94.entry.js +0 -144
  338. package/dist/webcomponents/p-3a508420.system.entry.js +0 -425
  339. package/dist/webcomponents/p-3f0965c1.entry.js +0 -168
  340. package/dist/webcomponents/p-4c5b3ba6.entry.js +0 -254
  341. package/dist/webcomponents/p-5417fc76.system.entry.js +0 -121
  342. package/dist/webcomponents/p-55be3a1b.entry.js +0 -87
  343. package/dist/webcomponents/p-58c537dc.system.entry.js +0 -155
  344. package/dist/webcomponents/p-5e68b68a.system.entry.js +0 -515
  345. package/dist/webcomponents/p-64088f4f.entry.js +0 -398
  346. package/dist/webcomponents/p-689dffab.entry.js +0 -257
  347. package/dist/webcomponents/p-6b505a38.system.entry.js +0 -293
  348. package/dist/webcomponents/p-6e166dac.entry.js +0 -166
  349. package/dist/webcomponents/p-703d9fdd.entry.js +0 -209
  350. package/dist/webcomponents/p-70b7a2e1.system.entry.js +0 -93
  351. package/dist/webcomponents/p-817f83ec.entry.js +0 -148
  352. package/dist/webcomponents/p-8326e9aa.entry.js +0 -110
  353. package/dist/webcomponents/p-91c947d6.entry.js +0 -152
  354. package/dist/webcomponents/p-9e243fa3.entry.js +0 -2361
  355. package/dist/webcomponents/p-be24a356.entry.js +0 -357
  356. package/dist/webcomponents/p-be24a356.entry.js.map +0 -1
  357. package/dist/webcomponents/p-c17f8737.entry.js +0 -104
  358. package/dist/webcomponents/p-c50854a2.system.entry.js +0 -151
  359. package/dist/webcomponents/p-c51e88c5.system.entry.js +0 -280
  360. package/dist/webcomponents/p-d335142c.entry.js +0 -467
  361. package/dist/webcomponents/p-da852ece.system.entry.js +0 -278
  362. package/dist/webcomponents/p-daf44e2e.system.entry.js +0 -116
  363. package/dist/webcomponents/p-de7e8ab8.entry.js +0 -163
  364. package/dist/webcomponents/p-fa6f51fa.system.entry.js +0 -251
  365. package/dist/webcomponents/p-fcb2845b.system.entry.js +0 -2386
  366. package/dist/webcomponents/p-s9klvrRa.system.js.map +0 -1
  367. /package/dist/components/{p-Dt9PiOfU.js.map → p-BUAXx2fX.js.map} +0 -0
  368. /package/dist/components/{p-4n7uz3ik.js.map → p-C1G4wYL7.js.map} +0 -0
  369. /package/dist/components/{p-DGRJ0cGS.js.map → p-Cf1VoqB7.js.map} +0 -0
  370. /package/dist/components/{p-B27qgEvJ.js.map → p-D3sFUq_f.js.map} +0 -0
  371. /package/dist/components/{p-D27CYIFW.js.map → p-DJC0NAoD.js.map} +0 -0
  372. /package/dist/components/{p-D6xl9W7Q.js.map → p-DlpHRT0g.js.map} +0 -0
  373. /package/dist/components/{p-BPq5El3u.js.map → p-Dne-S1Hl.js.map} +0 -0
  374. /package/dist/webcomponents/{p-de7e8ab8.entry.js.map → p-019ce02a.entry.js.map} +0 -0
  375. /package/dist/webcomponents/{p-c51e88c5.system.entry.js.map → p-0e81892b.system.entry.js.map} +0 -0
  376. /package/dist/webcomponents/{p-55be3a1b.entry.js.map → p-121547cd.entry.js.map} +0 -0
  377. /package/dist/webcomponents/{p-0b4b4c3c.system.entry.js.map → p-352c7312.system.entry.js.map} +0 -0
  378. /package/dist/webcomponents/{p-4c5b3ba6.entry.js.map → p-36194f7c.entry.js.map} +0 -0
  379. /package/dist/webcomponents/{p-5417fc76.system.entry.js.map → p-3e073649.system.entry.js.map} +0 -0
  380. /package/dist/webcomponents/{p-91c947d6.entry.js.map → p-4c3c46ca.entry.js.map} +0 -0
  381. /package/dist/webcomponents/{p-0baea87b.system.entry.js.map → p-58a6aab1.system.entry.js.map} +0 -0
  382. /package/dist/webcomponents/{p-c17f8737.entry.js.map → p-69b18bcc.entry.js.map} +0 -0
  383. /package/dist/webcomponents/{p-37837c94.entry.js.map → p-76426a2e.entry.js.map} +0 -0
  384. /package/dist/webcomponents/{p-3a508420.system.entry.js.map → p-79aa414c.system.entry.js.map} +0 -0
  385. /package/dist/webcomponents/{p-3f0965c1.entry.js.map → p-79e747c1.entry.js.map} +0 -0
  386. /package/dist/webcomponents/{p-70b7a2e1.system.entry.js.map → p-7dd4f2a5.system.entry.js.map} +0 -0
  387. /package/dist/webcomponents/{p-817f83ec.entry.js.map → p-83f55139.entry.js.map} +0 -0
  388. /package/dist/webcomponents/{p-8326e9aa.entry.js.map → p-84f8edae.entry.js.map} +0 -0
  389. /package/dist/webcomponents/{p-703d9fdd.entry.js.map → p-928b76d0.entry.js.map} +0 -0
  390. /package/dist/webcomponents/{p-fcb2845b.system.entry.js.map → p-a29ef881.system.entry.js.map} +0 -0
  391. /package/dist/webcomponents/{p-5e68b68a.system.entry.js.map → p-b3e7180f.system.entry.js.map} +0 -0
  392. /package/dist/webcomponents/{p-daf44e2e.system.entry.js.map → p-b9b466b2.system.entry.js.map} +0 -0
  393. /package/dist/webcomponents/{p-da852ece.system.entry.js.map → p-ba1c6153.system.entry.js.map} +0 -0
  394. /package/dist/webcomponents/{p-64088f4f.entry.js.map → p-c0a85892.entry.js.map} +0 -0
  395. /package/dist/webcomponents/{p-cc4c57d8.entry.js.map → p-c2f4ab31.entry.js.map} +0 -0
  396. /package/dist/webcomponents/{p-06f7eeff.system.entry.js.map → p-cb5ebcb6.system.entry.js.map} +0 -0
  397. /package/dist/webcomponents/{p-df5400e2.entry.js.map → p-d33ec3ae.entry.js.map} +0 -0
  398. /package/dist/webcomponents/{p-58c537dc.system.entry.js.map → p-d36f650d.system.entry.js.map} +0 -0
  399. /package/dist/webcomponents/{p-27378f51.system.entry.js.map → p-d52fbba3.system.entry.js.map} +0 -0
  400. /package/dist/webcomponents/{p-15208deb.system.entry.js.map → p-dbba1627.system.entry.js.map} +0 -0
  401. /package/dist/webcomponents/{p-d335142c.entry.js.map → p-ddce5a0b.entry.js.map} +0 -0
  402. /package/dist/webcomponents/{p-689dffab.entry.js.map → p-e4e2fd4f.entry.js.map} +0 -0
  403. /package/dist/webcomponents/{p-9e243fa3.entry.js.map → p-eb06a6e1.entry.js.map} +0 -0
  404. /package/dist/webcomponents/{p-c50854a2.system.entry.js.map → p-ee3853d3.system.entry.js.map} +0 -0
  405. /package/dist/webcomponents/{p-fa6f51fa.system.entry.js.map → p-f8262121.system.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"br-select.entry.esm.js","sources":["../../packages/webcomponents/src/components/select/select.scss?tag=br-select&encapsulation=shadow","../../packages/webcomponents/src/components/select/select.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/select/select\";\n@import \"~@govbr-ds/core/src/components/item/item\";\n\n:host {\n display: block;\n\n .br-select br-list {\n background-color: var(--bg-color);\n box-shadow: var(--select-shadow);\n margin-top: -2px;\n max-height: 404px;\n overflow: auto;\n position: absolute;\n resize: none;\n width: 100%;\n z-index: 1;\n\n @include scrollbar;\n\n &:focus,\n &:active {\n color: var(--color-secondary-09);\n outline: none;\n }\n\n &:hover {\n &::-webkit-scrollbar-thumb {\n background: var(--color-secondary-07);\n }\n }\n\n .br-item br-radio::part(radio-input) {\n visibility: hidden;\n height: 0;\n width: 0;\n }\n\n .br-item br-radio::part(radio-label) {\n padding-left: var(--spacing-scale-base);\n position: relative;\n\n &::before,\n &::after {\n display: none;\n }\n }\n }\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n@Component({\n tag: 'br-select',\n styleUrl: 'select.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Select {\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: HTMLBrSelectElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Rótulo que indica o tipo de informação que deve ser selecionada.\n */\n @Prop({ reflect: true }) label: string\n\n /**\n * Texto auxiliar exibido antes de uma seleção.\n */\n @Prop({ reflect: true }) placeholder: string = ''\n\n /**\n * Habilita o modo múltiplo para selecionar várias opções.\n */\n @Prop({ reflect: true }) isMultiple: boolean = false\n\n /**\n * JSON contendo as opções do select.\n */\n @Prop({ reflect: true }) options: string = '[]'\n\n /**\n * Rótulo para selecionar todas as opções.\n */\n @Prop({ reflect: true }) selectAllLabel: string = 'Selecionar todos'\n\n /**\n * Rótulo para desmarcar todas as opções.\n */\n @Prop({ reflect: true }) unselectAllLabel: string = 'Desselecionar todos'\n\n /**\n * Exibe o ícone de busca no campo de entrada.\n */\n @Prop({ reflect: true }) showSearchIcon: boolean = false\n\n /**\n * Indica se a listagem de itens do select está expandida\n */\n @Prop({ reflect: true }) isOpen: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-select-${selectId++}`\n\n // Representa as opções do select disponíveis para renderização.\n // Cada opção contém `label`, `value` e o estado de seleção (`selected`).\n @State() parsedOptions: { label: string; value: string; selected: boolean }[] = []\n\n // Valor exibido no input, refletindo as opções selecionadas.\n @State() inputValue: string = ''\n\n // Indica se todas as opções estão selecionadas. Comportamento do checkbox \"Selecionar Todos\".\n @State() isAllSelected: boolean = false\n\n // Controla se a lista de opções do select está expandida (aberta) ou colapsada (fechada).\n @State() isExpanded: boolean = false\n\n // Armazena o índice do item atualmente focado, usado para navegação por teclado.\n @State() focusedIndex: number = -1\n\n /**\n * Evento emitido sempre que houver atualização nos itens selecionados.\n */\n @Event() brDidSelectChange: EventEmitter\n\n @Watch('options')\n synchronizeSelect() {\n try {\n const rawOptions = JSON.parse(this.options)\n this.parsedOptions = this.sanitizeOptions(rawOptions)\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n this.emitSelectedOptions()\n } catch (error) {\n console.error('Erro ao processar as opções do select:', error)\n this.parsedOptions = []\n }\n }\n\n componentWillLoad() {\n this.isExpanded = this.isOpen\n this.synchronizeSelect()\n }\n\n componentDidLoad() {\n document.addEventListener('click', this.handleClickOutside)\n }\n\n disconnectedCallback() {\n document.addEventListener('click', this.handleClickOutside)\n }\n\n private sanitizeOptions(\n rawOptions: { label: string; value: string; selected: boolean }[]\n ): { label: string; value: string; selected: boolean }[] {\n const validOptions = []\n const invalidOptions = []\n\n rawOptions.forEach((option) => {\n if (typeof option.label === 'string' && option.label.trim() !== '') {\n validOptions.push({\n label: option.label.trim(),\n value: typeof option.value === 'string' ? option.value : '',\n selected: typeof option.selected === 'boolean' ? option.selected : false,\n })\n } else {\n invalidOptions.push(option)\n }\n })\n\n if (invalidOptions.length > 0) {\n console.warn('Opções inválidas descartadas:', invalidOptions)\n }\n\n return validOptions\n }\n\n private readonly handleClickOutside = (event: MouseEvent) => {\n const target = event.target as HTMLElement\n if (this.isExpanded && !this.el.contains(target)) {\n this.isExpanded = false\n }\n }\n\n private handleKeydownOnInput(event: KeyboardEvent) {\n switch (event.key) {\n case 'Tab':\n this.closeSelect()\n break\n case 'ArrowDown':\n event.preventDefault()\n if (!this.isExpanded) {\n this.openSelect()\n }\n this.focusItemInDirection('next')\n break\n case 'ArrowUp':\n event.preventDefault()\n if (!this.isExpanded) {\n this.openSelect()\n }\n this.focusItemInDirection('previous')\n break\n case 'Escape':\n this.closeSelect()\n this.resetFocus()\n break\n case 'Enter':\n this.toggleOpen()\n break\n default:\n }\n }\n\n private handleKeydownOnList(event: KeyboardEvent) {\n event.preventDefault()\n switch (event.key) {\n case 'Tab':\n case 'Escape':\n this.resetFocus()\n break\n case 'ArrowUp':\n this.focusItemInDirection('previous')\n break\n case 'ArrowDown':\n this.focusItemInDirection('next')\n break\n default:\n break\n }\n }\n\n private handleKeydownOnItem(event: KeyboardEvent, index: number) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.handleSelection(index) // Garante que o índice correto será usado\n } else if (event.key === 'Escape') {\n this.closeSelect()\n }\n }\n\n private handleSelectAllKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.toggleSelectAll()\n } else if (event.key === 'Escape') {\n event.preventDefault()\n this.closeSelect()\n }\n }\n\n private resetFocus() {\n const input = this.el.shadowRoot.querySelector('br-input') as HTMLElement\n input.focus()\n }\n\n private focusItemInDirection(direction: 'next' | 'previous') {\n let itemCount = this.parsedOptions.length\n if (this.isMultiple) itemCount += 1\n\n this.focusedIndex =\n direction === 'next' ? (this.focusedIndex + 1) % itemCount : (this.focusedIndex - 1 + itemCount) % itemCount\n\n this.focusItem(this.focusedIndex)\n }\n\n private focusItem(index: number) {\n const items = this.el.shadowRoot.querySelectorAll('.br-item')\n const item = items[index] as HTMLElement\n item.focus()\n }\n\n private openSelect() {\n this.isExpanded = true\n }\n\n private closeSelect() {\n this.isExpanded = false\n }\n\n private handleSelection(index: number) {\n if (index < 0 || index >= this.parsedOptions.length) {\n return\n }\n\n if (this.isMultiple) {\n this.parsedOptions[index].selected = !this.parsedOptions[index].selected\n } else {\n this.parsedOptions.forEach((option) => (option.selected = false))\n this.parsedOptions[index].selected = true\n this.isExpanded = false\n }\n this.updateSelectedOptions()\n this.emitSelectedOptions()\n this.updateSelectedAllState()\n }\n\n private updateSelectedOptions() {\n this.inputValue = this.getStringValue(this.parsedOptions.filter((option) => option.selected))\n }\n\n private getStringValue(options) {\n if (options.length > 0) {\n const firstSelected = options[0].label || options[0].value\n if (this.isMultiple) {\n const howManySelected = options.length > 1 ? ` + (${options.length - 1})` : ''\n return `${firstSelected}${howManySelected}`\n } else {\n return firstSelected\n }\n }\n return ''\n }\n\n private emitSelectedOptions() {\n const selectedOptions = this.parsedOptions\n .filter((option) => option.selected === true)\n .map((option) => option.label ?? option.value)\n\n this.brDidSelectChange.emit(selectedOptions)\n }\n\n private updateSelectedAllState() {\n const allSelected = this.parsedOptions.every((option) => option.selected)\n this.isAllSelected = allSelected\n }\n\n private toggleSelectAll() {\n if (this.isAllSelected) {\n this.parsedOptions.forEach((option) => (option.selected = false))\n this.isAllSelected = false\n } else {\n this.parsedOptions.forEach((option) => (option.selected = true))\n this.isAllSelected = true\n }\n\n this.updateSelectedOptions()\n this.emitSelectedOptions()\n }\n\n private renderInput() {\n return (\n <br-input\n value={this.inputValue}\n label={this.label}\n placeholder={this.placeholder}\n readonly\n onClick={() => this.toggleOpen()}\n onKeyDown={(event) => this.handleKeydownOnInput(event)}\n >\n {this.showSearchIcon && <br-icon slot=\"icon\" icon-name=\"fa-solid:search\" aria-hidden=\"true\"></br-icon>}\n <br-icon\n slot=\"action\"\n icon-name={this.isExpanded ? 'fa-solid:angle-up' : 'fa-solid:angle-down'}\n height=\"16\"\n aria-hidden=\"true\"\n ></br-icon>\n </br-input>\n )\n }\n\n private renderSelectAllCheckbox() {\n return (\n <div\n class={`br-item highlighted ${this.isAllSelected ? 'selected' : ''}`}\n data-all=\"data-all\"\n tabindex=\"-1\"\n role=\"option\"\n aria-selected={this.isAllSelected}\n onKeyDown={(event) => this.handleSelectAllKeyDown(event)}\n >\n <br-checkbox\n name={`checkbox-${this.customId}`}\n label={this.isAllSelected ? this.unselectAllLabel : this.selectAllLabel}\n checked={this.isAllSelected}\n onCheckedChange={() => this.toggleSelectAll()}\n ></br-checkbox>\n </div>\n )\n }\n\n private renderOptions() {\n return this.parsedOptions.map((option, index) => (\n <div\n class={`br-item ${option.selected ? 'selected' : ''}`}\n key={`${option.label}-${this.customId}`}\n role=\"option\"\n tabindex={this.focusedIndex === index ? 0 : -1}\n aria-selected={option.selected}\n onClick={() => this.handleSelection(index)}\n onKeyDown={(event) => this.handleKeydownOnItem(event, index)}\n >\n {this.isMultiple ? (\n <br-checkbox\n name={`checkbox-${index}-${this.customId}`}\n label={option.label || option.value}\n checked={option.selected === true}\n onCheckedChange={() => this.handleSelection(index)}\n />\n ) : (\n <br-radio\n exportparts=\"radio-input, radio-label\"\n name={`radio-${index}-${this.customId}`}\n label={option.label || option.value}\n checked={option.selected === true}\n onCheckedChange={() => this.handleSelection(index)}\n />\n )}\n </div>\n ))\n }\n\n /**\n * Determina um id para o radio.\n */\n private getComputedId() {\n return this.customId?.length > 0 ? this.customId : `br-select-${this.customId}`\n }\n\n /**\n * Inverte o valor da prop `isOpen`\n */\n @Method()\n async toggleOpen() {\n this.isExpanded = !this.isExpanded\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-select': true,\n }\n }\n\n render() {\n return (\n <div class={this.getCssClassMap()} id={this.getComputedId()}>\n {this.renderInput()}\n\n {this.isExpanded && (\n <br-list tabindex={-1} onKeyDown={(event) => this.handleKeydownOnList(event)}>\n {this.isMultiple && this.renderSelectAllCheckbox()}\n {this.renderOptions()}\n </br-list>\n )}\n </div>\n )\n }\n}\n\nlet selectId = 0\n"],"names":[],"mappings":";;;;;AAAA,MAAM,SAAS,GAAG,o8sEAAo8sE;;MCUz8sE,MAAM,GAAA,MAAA;;;;;;;;;;;;;AAOE,IAAA,gBAAgB;AAEnC;;AAEG;AACsB,IAAA,KAAK;AAE9B;;AAEG;IACsB,WAAW,GAAW,EAAE;AAEjD;;AAEG;IACsB,UAAU,GAAY,KAAK;AAEpD;;AAEG;IACsB,OAAO,GAAW,IAAI;AAE/C;;AAEG;IACsB,cAAc,GAAW,kBAAkB;AAEpE;;AAEG;IACsB,gBAAgB,GAAW,qBAAqB;AAEzE;;AAEG;IACsB,cAAc,GAAY,KAAK;AAExD;;AAEG;IACsB,MAAM,GAAY,KAAK;AAEhD;;;AAGG;AAC+B,IAAA,QAAQ,GAAW,CAAA,UAAA,EAAa,QAAQ,EAAE,EAAE;;;IAIrE,aAAa,GAA0D,EAAE;;IAGzE,UAAU,GAAW,EAAE;;IAGvB,aAAa,GAAY,KAAK;;IAG9B,UAAU,GAAY,KAAK;;IAG3B,YAAY,GAAW,EAAE;AAElC;;AAEG;AACM,IAAA,iBAAiB;IAG1B,iBAAiB,GAAA;AACf,QAAA,IAAI;YACF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;YACrD,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,mBAAmB,EAAE;;QAC1B,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC;AAC9D,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;;;IAI3B,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM;QAC7B,IAAI,CAAC,iBAAiB,EAAE;;IAG1B,gBAAgB,GAAA;QACd,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC;;IAG7D,oBAAoB,GAAA;QAClB,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC;;AAGrD,IAAA,eAAe,CACrB,UAAiE,EAAA;QAEjE,MAAM,YAAY,GAAG,EAAE;QACvB,MAAM,cAAc,GAAG,EAAE;AAEzB,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC5B,YAAA,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAClE,YAAY,CAAC,IAAI,CAAC;AAChB,oBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;AAC1B,oBAAA,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,GAAG,MAAM,CAAC,KAAK,GAAG,EAAE;AAC3D,oBAAA,QAAQ,EAAE,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,MAAM,CAAC,QAAQ,GAAG,KAAK;AACzE,iBAAA,CAAC;;iBACG;AACL,gBAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;;AAE/B,SAAC,CAAC;AAEF,QAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,cAAc,CAAC;;AAG/D,QAAA,OAAO,YAAY;;AAGJ,IAAA,kBAAkB,GAAG,CAAC,KAAiB,KAAI;AAC1D,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAChD,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;AAE3B,KAAC;AAEO,IAAA,oBAAoB,CAAC,KAAoB,EAAA;AAC/C,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,WAAW,EAAE;gBAClB;AACF,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBACpB,IAAI,CAAC,UAAU,EAAE;;AAEnB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;gBACjC;AACF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBACpB,IAAI,CAAC,UAAU,EAAE;;AAEnB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;gBACrC;AACF,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,CAAC,UAAU,EAAE;gBACjB;AACF,YAAA,KAAK,OAAO;gBACV,IAAI,CAAC,UAAU,EAAE;gBACjB;;;AAKE,IAAA,mBAAmB,CAAC,KAAoB,EAAA;QAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,UAAU,EAAE;gBACjB;AACF,YAAA,KAAK,SAAS;AACZ,gBAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;gBACrC;AACF,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;gBACjC;;;IAME,mBAAmB,CAAC,KAAoB,EAAE,KAAa,EAAA;AAC7D,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;;AACtB,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,WAAW,EAAE;;;AAId,IAAA,sBAAsB,CAAC,KAAoB,EAAA;AACjD,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,eAAe,EAAE;;AACjB,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YACjC,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE;;;IAId,UAAU,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAgB;QACzE,KAAK,CAAC,KAAK,EAAE;;AAGP,IAAA,oBAAoB,CAAC,SAA8B,EAAA;AACzD,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM;QACzC,IAAI,IAAI,CAAC,UAAU;YAAE,SAAS,IAAI,CAAC;AAEnC,QAAA,IAAI,CAAC,YAAY;AACf,YAAA,SAAS,KAAK,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,SAAS,IAAI,SAAS;AAE9G,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;;AAG3B,IAAA,SAAS,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC;AAC7D,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAgB;QACxC,IAAI,CAAC,KAAK,EAAE;;IAGN,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;IAGhB,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;AAGjB,IAAA,eAAe,CAAC,KAAa,EAAA;AACnC,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YACnD;;AAGF,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ;;aACnE;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,MAAM,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;YACjE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,IAAI;AACzC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;QAEzB,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,sBAAsB,EAAE;;IAGvB,qBAAqB,GAAA;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;;AAGvF,IAAA,cAAc,CAAC,OAAO,EAAA;AAC5B,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;AAC1D,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,EAAE;AAC9E,gBAAA,OAAO,CAAG,EAAA,aAAa,CAAG,EAAA,eAAe,EAAE;;iBACtC;AACL,gBAAA,OAAO,aAAa;;;AAGxB,QAAA,OAAO,EAAE;;IAGH,mBAAmB,GAAA;AACzB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC;aAC1B,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,KAAK,IAAI;AAC3C,aAAA,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;AAEhD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC;;IAGtC,sBAAsB,GAAA;AAC5B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC;AACzE,QAAA,IAAI,CAAC,aAAa,GAAG,WAAW;;IAG1B,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,MAAM,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;aACrB;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,MAAM,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;QAG3B,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,mBAAmB,EAAE;;IAGpB,WAAW,GAAA;QACjB,QACE,gBACE,KAAK,EAAE,IAAI,CAAC,UAAU,EACtB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,QAAQ,EAAA,IAAA,EACR,OAAO,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE,EAChC,SAAS,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAA,EAErD,IAAI,CAAC,cAAc,IAAI,CAAS,CAAA,SAAA,EAAA,EAAA,IAAI,EAAC,MAAM,EAAW,WAAA,EAAA,iBAAiB,EAAa,aAAA,EAAA,MAAM,EAAW,CAAA,EACtG,CACE,CAAA,SAAA,EAAA,EAAA,IAAI,EAAC,QAAQ,EACF,WAAA,EAAA,IAAI,CAAC,UAAU,GAAG,mBAAmB,GAAG,qBAAqB,EACxE,MAAM,EAAC,IAAI,iBACC,MAAM,EAAA,CACT,CACF;;IAIP,uBAAuB,GAAA;QAC7B,QACE,WACE,KAAK,EAAE,CAAA,oBAAA,EAAuB,IAAI,CAAC,aAAa,GAAG,UAAU,GAAG,EAAE,CAAA,CAAE,EAC3D,UAAA,EAAA,UAAU,EACnB,QAAQ,EAAC,IAAI,EACb,IAAI,EAAC,QAAQ,EAAA,eAAA,EACE,IAAI,CAAC,aAAa,EACjC,SAAS,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAA,EAExD,CACE,CAAA,aAAA,EAAA,EAAA,IAAI,EAAE,CAAA,SAAA,EAAY,IAAI,CAAC,QAAQ,CAAE,CAAA,EACjC,KAAK,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,EACvE,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,eAAe,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,EAChC,CAAA,CACX;;IAIF,aAAa,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,MAC1C,CACE,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,CAAW,QAAA,EAAA,MAAM,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE,CAAA,CAAE,EACrD,GAAG,EAAE,CAAA,EAAG,MAAM,CAAC,KAAK,CAAI,CAAA,EAAA,IAAI,CAAC,QAAQ,EAAE,EACvC,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK,GAAG,CAAC,GAAG,EAAE,mBAC/B,MAAM,CAAC,QAAQ,EAC9B,OAAO,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAC1C,SAAS,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,EAE3D,EAAA,IAAI,CAAC,UAAU,IACd,CACE,CAAA,aAAA,EAAA,EAAA,IAAI,EAAE,CAAA,SAAA,EAAY,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,CAAE,CAAA,EAC1C,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EACnC,OAAO,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,EACjC,eAAe,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAClD,CAAA,KAEF,gBACE,WAAW,EAAC,0BAA0B,EACtC,IAAI,EAAE,CAAA,MAAA,EAAS,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,CAAE,CAAA,EACvC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EACnC,OAAO,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,EACjC,eAAe,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAClD,CACH,CACG,CACP,CAAC;;AAGJ;;AAEG;IACK,aAAa,GAAA;QACnB,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,aAAa,IAAI,CAAC,QAAQ,CAAA,CAAE;;AAGjF;;AAEG;AAEH,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU;;IAG5B,cAAc,GAAA;QACpB,OAAO;AACL,YAAA,WAAW,EAAE,IAAI;SAClB;;IAGH,MAAM,GAAA;AACJ,QAAA,QACE,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,EAAA,EACxD,IAAI,CAAC,WAAW,EAAE,EAElB,IAAI,CAAC,UAAU,KACd,gEAAS,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAA,EACzE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,uBAAuB,EAAE,EACjD,IAAI,CAAC,aAAa,EAAE,CACb,CACX,CACG;;;;;;;AAKZ,IAAI,QAAQ,GAAG,CAAC;;;;;"}
1
+ {"version":3,"file":"br-select.entry.esm.js","sources":["../../packages/webcomponents/src/components/select/select.scss?tag=br-select&encapsulation=shadow","../../packages/webcomponents/src/components/select/select.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/select/select\";\n@import \"~@govbr-ds/core/src/components/item/item\";\n\n:host {\n display: block;\n\n .br-select br-list {\n background-color: var(--bg-color);\n box-shadow: var(--select-shadow);\n margin-top: -2px;\n max-height: 404px;\n overflow: auto;\n position: absolute;\n resize: none;\n width: 100%;\n z-index: 1;\n\n @include scrollbar;\n\n &:focus,\n &:active {\n color: var(--color-secondary-09);\n outline: none;\n }\n\n &:hover {\n &::-webkit-scrollbar-thumb {\n background: var(--color-secondary-07);\n }\n }\n\n .br-item br-radio::part(radio-input) {\n visibility: hidden;\n height: 0;\n width: 0;\n }\n\n .br-item br-radio::part(radio-label) {\n padding-left: var(--spacing-scale-base);\n position: relative;\n\n &::before,\n &::after {\n display: none;\n }\n }\n }\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n@Component({\n tag: 'br-select',\n styleUrl: 'select.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Select {\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: HTMLBrSelectElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Rótulo que indica o tipo de informação que deve ser selecionada.\n */\n @Prop({ reflect: true }) label: string\n\n /**\n * Texto auxiliar exibido antes de uma seleção.\n */\n @Prop({ reflect: true }) placeholder: string = ''\n\n /**\n * Habilita o modo múltiplo para selecionar várias opções.\n */\n @Prop({ reflect: true }) isMultiple: boolean = false\n\n /**\n * Define as opções disponíveis no componente de seleção.\n * Pode ser fornecida como:\n * - Uma **string** contendo um JSON válido que será analisado em um array de objetos. Exemplo: `'[{\"label\": \"Opção 1\", \"value\": \"1\"}]'.\n * - Um **array de objetos**, onde cada objeto representa uma opção com as propriedades:\n * - `label`: O texto exibido para o usuário (obrigatório).\n * - `value`: O valor associado à opção (obrigatório).\n * - `selected`: Um boolean opcional que indica se a opção está pré-selecionada (padrão: `false`).\n * Se uma string for fornecida, ela será convertida internamente para um array via `JSON.parse`. Caso o formato seja inválido, um erro será registrado e as opções serão definidas como um array vazio.\n * Exemplo de uso:\n * ```typescript\n * options='[{\"label\": \"Sim\", \"value\": \"1\"}, {\"label\": \"Não\", \"value\": \"0\"}]'\n * // ou\n * options=[{ label: \"Sim\", value: \"1\" }, { label: \"Não\", value: \"0\" }]\n * ```\n */\n @Prop({ reflect: true }) options:\n | string\n | {\n label: string\n value: string\n selected?: boolean\n }[] = []\n\n /**\n * Rótulo para selecionar todas as opções.\n */\n @Prop({ reflect: true }) selectAllLabel: string = 'Selecionar todos'\n\n /**\n * Rótulo para desmarcar todas as opções.\n */\n @Prop({ reflect: true }) unselectAllLabel: string = 'Desselecionar todos'\n\n /**\n * Exibe o ícone de busca no campo de entrada.\n */\n @Prop({ reflect: true }) showSearchIcon: boolean = false\n\n /**\n * Indica se a listagem de itens do select está expandida\n */\n @Prop({ reflect: true }) isOpen: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-select-${selectId++}`\n\n // Representa as opções do select disponíveis para renderização.\n // Cada opção contém `label`, `value` e o estado de seleção (`selected`).\n @State() parsedOptions: { label: string; value: string; selected?: boolean }[] = []\n\n // Valor exibido no input, refletindo as opções selecionadas.\n @State() inputValue: string = ''\n\n // Indica se todas as opções estão selecionadas. Comportamento do checkbox \"Selecionar Todos\".\n @State() isAllSelected: boolean = false\n\n // Controla se a lista de opções do select está expandida (aberta) ou colapsada (fechada).\n @State() isExpanded: boolean = false\n\n // Armazena o índice do item atualmente focado, usado para navegação por teclado.\n @State() focusedIndex: number = -1\n\n /**\n * Evento emitido sempre que houver atualização nos itens selecionados.\n */\n @Event() brDidSelectChange: EventEmitter\n\n @Watch('options')\n synchronizeSelect() {\n try {\n let parsedOptions: { label: string; value: string; selected?: boolean }[] = []\n if (typeof this.options === 'string') {\n try {\n const jsonData = JSON.parse(this.options)\n if (Array.isArray(jsonData)) {\n parsedOptions = jsonData\n } else {\n throw new Error('JSON inválido: deve ser um array')\n }\n } catch (error) {\n console.error('Erro ao converter options para JSON:', error.message)\n parsedOptions = []\n }\n } else if (Array.isArray(this.options)) {\n parsedOptions = this.options\n }\n\n // Sanitiza as opções (remove opções inválidas, etc.)\n this.parsedOptions = parsedOptions\n\n // Atualiza o estado do componente\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n this.emitSelectedOptions()\n } catch (error) {\n console.error('Erro ao processar as opções do select:', error)\n this.parsedOptions = []\n }\n }\n\n componentWillLoad() {\n this.isExpanded = this.isOpen\n this.synchronizeSelect()\n }\n\n componentDidLoad() {\n document.addEventListener('click', this.handleClickOutside)\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside)\n }\n\n /**\n * Fecha a lista suspensa (`dropdown`) do `br-select` quando o usuário clica fora do componente.\n * O listener global é adicionado no `componentDidLoad` e removido no `disconnectedCallback` para evitar vazamentos de memória.\n * Se a lista estiver aberta (`this.isExpanded`) e o clique ocorrer fora (`!this.el.contains(target)`), ela é fechada.\n * A reatividade do StencilJS garante a atualização automática da interface.\n * A arrow function (`=>`) mantém o contexto correto de `this` ao ser usada como callback.\n *\n * @param {MouseEvent} event O evento de clique.\n * @returns {void}\n */\n private readonly handleClickOutside = (event: MouseEvent) => {\n const target = event.target as HTMLElement\n if (this.isExpanded && !this.el.contains(target)) {\n this.isExpanded = false\n }\n }\n\n private handleKeydownOnInput(event: KeyboardEvent) {\n switch (event.key) {\n case 'Tab':\n this.closeSelect()\n break\n case 'ArrowDown':\n event.preventDefault()\n if (!this.isExpanded) {\n this.openSelect()\n }\n this.focusItemInDirection('next')\n break\n case 'ArrowUp':\n event.preventDefault()\n if (!this.isExpanded) {\n this.openSelect()\n }\n this.focusItemInDirection('previous')\n break\n case 'Escape':\n this.closeSelect()\n this.resetFocus()\n break\n case 'Enter':\n this.toggleOpen()\n break\n default:\n }\n }\n\n private handleKeydownOnList(event: KeyboardEvent) {\n event.preventDefault()\n switch (event.key) {\n case 'Tab':\n case 'Escape':\n this.resetFocus()\n break\n case 'ArrowUp':\n this.focusItemInDirection('previous')\n break\n case 'ArrowDown':\n this.focusItemInDirection('next')\n break\n default:\n break\n }\n }\n\n private handleKeydownOnItem(event: KeyboardEvent, index: number) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.handleSelection(index)\n } else if (event.key === 'Escape') {\n this.closeSelect()\n }\n }\n\n private handleSelectAllKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.toggleSelectAll()\n } else if (event.key === 'Escape') {\n event.preventDefault()\n this.closeSelect()\n }\n }\n\n private resetFocus() {\n const input = this.el.shadowRoot.querySelector('br-input') as HTMLElement\n input.focus()\n }\n\n private focusItemInDirection(direction: 'next' | 'previous') {\n let itemCount = this.parsedOptions.length\n if (this.isMultiple) itemCount += 1\n\n this.focusedIndex =\n direction === 'next' ? (this.focusedIndex + 1) % itemCount : (this.focusedIndex - 1 + itemCount) % itemCount\n\n this.focusItem(this.focusedIndex)\n }\n\n private focusItem(index: number) {\n const items = this.el.shadowRoot.querySelectorAll('.br-item')\n if (items[index]) {\n const item = items[index] as HTMLElement\n item.focus()\n }\n }\n\n private openSelect() {\n this.isExpanded = true\n }\n\n private closeSelect() {\n this.isExpanded = false\n // Resetar o índice focado ao fechar o select\n this.focusedIndex = -1\n }\n\n private handleSelection(index: number) {\n if (index < 0 || index >= this.parsedOptions.length) {\n return\n }\n\n if (this.isMultiple) {\n const updatedOptions = [...this.parsedOptions]\n updatedOptions[index].selected = !updatedOptions[index].selected\n this.parsedOptions = updatedOptions\n } else {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: false }))\n updatedOptions[index].selected = true\n this.parsedOptions = updatedOptions\n this.isExpanded = false\n }\n this.updateSelectedOptions()\n this.emitSelectedOptions()\n this.updateSelectedAllState()\n }\n\n private updateSelectedOptions() {\n this.inputValue = this.getStringValue(this.parsedOptions.filter((option) => option.selected))\n }\n\n private getStringValue(options: { label: string; value: string; selected?: boolean }[]) {\n if (options.length > 0) {\n const firstSelected = options[0].label || options[0].value\n if (this.isMultiple) {\n const howManySelected = options.length > 1 ? ` + (${options.length - 1})` : ''\n return `${firstSelected}${howManySelected}`\n } else {\n return firstSelected\n }\n }\n return ''\n }\n\n private emitSelectedOptions() {\n const selectedOptions = this.parsedOptions\n .filter((option) => option.selected === true)\n .map((option) => option.label ?? option.value)\n\n this.brDidSelectChange.emit(selectedOptions)\n\n // Atualiza o valor do form associado\n this.elementInternals.setFormValue(JSON.stringify(selectedOptions))\n }\n\n private updateSelectedAllState() {\n const allSelected = this.parsedOptions.every((option) => option.selected)\n this.isAllSelected = allSelected\n }\n\n private toggleSelectAll() {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: !this.isAllSelected }))\n this.parsedOptions = updatedOptions\n this.isAllSelected = !this.isAllSelected\n\n this.updateSelectedOptions()\n this.emitSelectedOptions()\n }\n\n private renderInput() {\n return (\n <br-input\n value={this.inputValue}\n label={this.label}\n placeholder={this.placeholder}\n readonly\n onClick={() => this.toggleOpen()}\n onKeyDown={(event) => this.handleKeydownOnInput(event)}\n >\n {this.showSearchIcon && <br-icon slot=\"icon\" icon-name=\"fa-solid:search\" aria-hidden=\"true\"></br-icon>}\n <br-icon\n slot=\"action\"\n icon-name={this.isExpanded ? 'fa-solid:angle-up' : 'fa-solid:angle-down'}\n height=\"16\"\n aria-hidden=\"true\"\n ></br-icon>\n </br-input>\n )\n }\n\n private renderSelectAllCheckbox() {\n return (\n <div\n class={`br-item highlighted ${this.isAllSelected ? 'selected' : ''}`}\n data-all=\"data-all\"\n tabindex=\"-1\"\n role=\"option\"\n aria-selected={this.isAllSelected}\n onKeyDown={(event) => this.handleSelectAllKeyDown(event)}\n onClick={() => this.toggleSelectAll()}\n >\n <br-checkbox\n name={`checkbox-${this.customId}`}\n label={this.isAllSelected ? this.unselectAllLabel : this.selectAllLabel}\n checked={this.isAllSelected}\n onCheckedChange={() => this.toggleSelectAll()}\n ></br-checkbox>\n </div>\n )\n }\n\n private renderOptions() {\n return this.parsedOptions.map((option, index) => (\n <div\n class={`br-item ${option.selected ? 'selected' : ''}`}\n key={`${option.label}-${this.customId}`}\n role=\"option\"\n tabindex={this.focusedIndex === index ? 0 : -1}\n aria-selected={option.selected}\n onClick={() => this.handleSelection(index)}\n onKeyDown={(event) => this.handleKeydownOnItem(event, index)}\n >\n {this.isMultiple ? (\n <br-checkbox\n name={`checkbox-${index}-${this.customId}`}\n label={option.label || option.value}\n checked={option.selected === true}\n onCheckedChange={() => this.handleSelection(index)}\n />\n ) : (\n <br-radio\n exportparts=\"radio-input, radio-label\"\n name={`radio-${index}-${this.customId}`}\n label={option.label || option.value}\n checked={option.selected === true}\n onCheckedChange={() => this.handleSelection(index)}\n />\n )}\n </div>\n ))\n }\n\n /**\n * Determina um id para o radio.\n */\n private getComputedId() {\n return this.customId?.length > 0 ? this.customId : `br-select-${this.customId}`\n }\n\n /**\n * Inverte o valor da prop `isOpen`\n */\n @Method()\n async toggleOpen() {\n this.isExpanded = !this.isExpanded\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-select': true,\n }\n }\n\n render() {\n return (\n <div class={this.getCssClassMap()} id={this.getComputedId()}>\n {this.renderInput()}\n\n {this.isExpanded && (\n <br-list tabindex={-1} onKeyDown={(event) => this.handleKeydownOnList(event)}>\n {this.isMultiple && this.renderSelectAllCheckbox()}\n {this.renderOptions()}\n </br-list>\n )}\n </div>\n )\n }\n}\n\nlet selectId = 0\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"br-step-item.entry.esm.js","sources":["../../packages/webcomponents/src/components/step-item/step-item.scss?tag=br-step-item&encapsulation=shadow","../../packages/webcomponents/src/components/step-item/step-item.tsx"],"sourcesContent":[":host {\n display: flex;\n}\n\n.disabled-host {\n pointer-events: none;\n}\n\n.step-button {\n position: relative;\n z-index: 2;\n}\n\n.mode-controller {\n border: 1px solid var(--gray-20);\n width: 14px;\n height: 14px;\n cursor: pointer;\n border-radius: 50%;\n background-color: var(--gray-20);\n}\n\n.mode-controller:focus-visible {\n outline-color: var(--focus);\n outline-offset: var(--focus-offset);\n outline-style: var(--focus-style);\n outline-width: var(--focus-width);\n}\n\n.mode-controller:hover {\n background-image: linear-gradient(\n rgba(var(--interactive-rgb), var(--hover)),\n rgba(var(--interactive-rgb), var(--hover))\n );\n}\n\n[data-active].mode-controller {\n border: 1px solid var(--gray-20);\n background-color: var(--active);\n}\n\n.step-item-container-horizontal {\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n}\n\n.step-item-container-vertical {\n display: flex;\n flex-direction: row;\n max-width: max-content;\n}\n\n.step-item-content {\n display: flex;\n position: relative;\n flex-grow: 1;\n margin: auto;\n min-height: 100px;\n min-width: 80px;\n justify-content: center;\n}\n\n.controller {\n display: flex;\n position: relative;\n flex-grow: 1;\n margin: 0 5px;\n min-height: unset;\n min-width: unset;\n}\n\n.step-item-content.label-top {\n flex-direction: column-reverse;\n align-items: center;\n}\n\n.step-item-content.label-bottom {\n flex-direction: column;\n align-items: center;\n}\n\n.step-item-content.label-left {\n flex-direction: row-reverse;\n align-items: center;\n background-color: #fff;\n}\n\n.step-item-content.label-right {\n flex-direction: row;\n align-items: center;\n background-color: #fff;\n}\n\n.step-item-container-vertical .step-item-content.label-right,\n.step-item-container-vertical .step-item-content.label-left {\n background-color: transparent;\n}\n\n.step-item-indicator-area {\n display: inline-block;\n position: relative;\n z-index: 1;\n}\n\n.step-item-indicator-area .icon {\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n z-index: 4;\n border-radius: 50%;\n transform: translate(25px, -5px);\n color: white;\n font-size: 16px;\n font-weight: 900;\n width: 29px;\n height: 29px;\n}\n\n.step-item-indicator-area .icon.no-content {\n transform: translate(0px, 0px);\n width: 41px;\n height: 41px;\n}\n\n[data-active].step-item-indicator-area .icon.no-content {\n transform: translate(5px, 5px);\n width: 30px;\n height: 30px;\n}\n\n.success {\n background-color: var(--success);\n}\n\n.info {\n background-color: var(--info);\n}\n\n.danger {\n background-color: var(--danger);\n}\n\n.warning {\n background-color: var(--warning);\n}\n\n.step-item-label-area {\n padding: 0;\n display: flex;\n}\n\n.step-item-label-area > span {\n font-size: var(--font-size-scale-up-01);\n font-weight: var(--font-weight-medium);\n color: var(--interactive);\n}\n\n.vertical.step-item-label-area.label-top {\n padding-top: 14px;\n}\n\n.vertical.step-item-label-area.label-bottom {\n padding-bottom: 14px;\n}\n\n.horizontal.step-item-label-area.label-top {\n padding-bottom: 14px;\n}\n\n.horizontal.step-item-label-area.label-bottom {\n padding-top: 14px;\n}\n\n.step-item-label-area.label-left {\n padding: 0 14px;\n}\n.step-item-label-area.label-right {\n padding: 0 14px;\n}\n\n.step-item-container-vertical .step-item-content.label-right.last .step-item-indicator-area::after,\n.step-item-container-vertical .step-item-content.label-left.last .step-item-indicator-area::after,\n.step-item-container-horizontal .step-item-content.label-bottom.last .step-item-indicator-area::after {\n display: none;\n}\n\n.step-item-container-vertical .step-item-content.label-top .step-item-label-area,\n.step-item-container-vertical .step-item-content.label-bottom .step-item-label-area {\n flex-direction: column;\n align-items: center;\n}\n\n.step-item-container-vertical::after {\n content: \"\";\n position: relative;\n height: 100%;\n background-color: var(--interactive);\n display: block;\n transform: translate(50%, 20px);\n z-index: -1;\n width: 2px;\n right: 50%;\n}\n\n.step-item-container-vertical.label-bottom::after {\n top: 50%;\n height: 70%;\n}\n\n.step-item-container-vertical.label-top::after {\n top: 50%;\n height: 70%;\n}\n\n.step-item-container-vertical.label-left::after {\n right: 16%;\n top: 12%;\n}\n\n.step-item-container-vertical.label-right::after {\n top: 12%;\n right: 86%;\n}\n\n.step-item-container-horizontal::after {\n content: \"\";\n position: relative;\n height: 2px;\n background-color: var(--interactive);\n display: block;\n transform: translate(50%, 20px);\n z-index: -1;\n width: 100%;\n left: 0;\n bottom: 75%;\n}\n\n.step-item-container-horizontal.label-top::after {\n content: \"\";\n left: 0;\n bottom: 50%;\n}\n\n.step-item-container-horizontal.label-bottom::after {\n content: \"\";\n left: 0;\n bottom: 86%;\n}\n\n.step-item-container-horizontal.label-left::after {\n bottom: 68%;\n width: 70%;\n left: 26%;\n}\n\n.step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 58%;\n left: 42%;\n}\n\n.step-item-container-horizontal.last::after,\n.step-item-container-horizontal.controller::after,\n.step-item-container-vertical.last::after {\n content: \"\";\n height: 0px;\n display: none;\n}\n\n.step-item-container-horizontal .step-item-content.label-left.timeline.last::after {\n content: \"\";\n position: absolute;\n width: 160px;\n height: 2px;\n background-color: var(--interactive);\n display: inline-block;\n right: calc(100% - 80px);\n bottom: 50%;\n z-index: -1;\n}\n.content-type-br-icon {\n color: var(--interactive);\n font-size: 16px;\n font-weight: 900;\n}\n\n[data-active] .content-type-br-icon {\n color: var(--interactive);\n color: #fff;\n}\n\n.button-controller {\n width: 15px;\n height: 15px;\n}\n\n/* Desktops grandes (até 1440px) */\n@media (max-width: 1440px) {\n .step-item-container-horizontal.label-left::after {\n width: 50%;\n left: 48%;\n bottom: 68%;\n }\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 58%;\n left: 48%;\n }\n}\n\n/* Laptops (até 1024px) */\n@media (max-width: 1024px) {\n .step-item-container-horizontal.label-left::after {\n width: 34%;\n left: 58%;\n bottom: 68%;\n }\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\n }\n}\n\n/* Tablets (até 768px) */\n@media (max-width: 768px) {\n .step-item-container-horizontal.label-left::after {\n width: 22%;\n left: 76%;\n bottom: 68%;\n }\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\n }\n}\n\n/* Celulares grandes (até 414px) */\n@media (max-width: 425px) {\n .step-item-container-horizontal.label-left::after {\n width: 20%;\n left: 80%;\n bottom: 68%;\n }\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\n }\n}\n\n/* Celulares médios (até 375px) */\n@media (max-width: 375px) {\n .step-item-container-horizontal.label-left::after {\n width: 18%;\n left: 82%;\n bottom: 68%;\n }\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\n }\n}\n\n/* Celulares pequenos (até 320px) */\n@media (max-width: 320px) {\n .step-item-container-horizontal.label-left::after {\n width: 16%;\n left: 85%;\n bottom: 68%;\n }\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\n }\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\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/step?tab=designer).\n *\n * @slot nomeado label-area: insere o conteúdo customizado dentro do botão que compõe o componente.\n */\n@Component({\n tag: 'br-step-item',\n styleUrl: 'step-item.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class StepItem {\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: HTMLBrStepItemElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Propriedade que define o conteúdo do texto auxiliar de realce do item de Step.\n */\n @Prop({ reflect: true }) label: string = ''\n\n /**\n * Propriedade que define o tipo de ícone de destaque exibido pelo item Step, com quatro opções disponíveis: \"success\", \"info\", \"danger\" e \"warning\".\n */\n @Prop({ reflect: true }) highlight?: 'success' | 'info' | 'danger' | 'warning'\n\n /**\n * Propriedade que define se o item Step está com estado ativo.\n */\n @Prop({ reflect: true }) active: boolean = false\n\n /**\n * Propriedade que define se o item Step está com estado desativado..\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Propriedade Define o nome do ícone do componente BRIcon que será exibido como conteúdo do step item, propriedade funciona apenas quando o state contentType assume o valor br-icon.\n */\n @Prop({ reflect: true }) brIconName?: string = ''\n /**\n * Propriedade Define o nome do ícone o texto de acessibilidade apresentando quando o tipo de conteúdo for o br-icon\n */\n\n @Prop({ reflect: true }) brIconAria: string = ''\n\n @State() showTimeLine: boolean = false\n @State() stepItemPositionStatus: 'first' | 'middle' | 'last' = 'first'\n @State() stepLayout: 'horizontal' | 'vertical' = 'horizontal'\n @State() labelPosition: 'top' | 'right' | 'bottom' | 'left' = 'bottom'\n @State() contentType: 'default' | 'br-icon' | 'no-content' | 'slotted' = 'default'\n @State() mode: 'controller' | 'step' = 'step'\n @State() content: string = ''\n @State() ariaLabelContent: string = ''\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 antes que o componente seja renderizado ou atualizado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brWillRender: EventEmitter<void>\n componentWillRender() {\n let accessibilityContent = ''\n let activeItem = ''\n if (this.contentType === 'slotted') {\n const slotedContent = this.el.lastElementChild\n accessibilityContent =\n this.label !== ''\n ? `passo ${this.content} ${slotedContent.textContent} ${this.label} ${this.highLightAriaLabel[this.highlight]}`\n : `passo ${this.content} ${slotedContent.textContent} ${this.highLightAriaLabel[this.highlight]}`\n this.ariaLabelContent = accessibilityContent\n return\n }\n if (this.contentType === 'br-icon') {\n accessibilityContent =\n `passo ${this.content} ` + this.brIconAria + this.label + this.highLightAriaLabel[this.highlight]\n activeItem = this.active === true ? accessibilityContent + ' selecionado' : accessibilityContent\n this.ariaLabelContent = activeItem\n return\n } else {\n accessibilityContent =\n this.label !== ''\n ? `passo ${this.content} ${this.label} ${this.highLightAriaLabel[this.highlight]}`\n : `passo ${this.content} ${this.highLightAriaLabel[this.highlight]}`\n activeItem = this.active === true ? accessibilityContent + ' selecionado' : accessibilityContent\n this.ariaLabelContent = activeItem\n }\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 antes que o componente seja renderizado ou atualizado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brDidRender: EventEmitter<void>\n componentDidRender() {\n const button = this.el.shadowRoot.getElementById('indicator-area').lastElementChild.shadowRoot\n if (button !== null) {\n button.lastElementChild.setAttribute('role', 'option')\n button.lastElementChild.setAttribute('aria-selected', `${this.active}`)\n button.lastElementChild.setAttribute('aria-label', this.ariaLabelContent)\n }\n }\n\n /**\n * Watch que observa o valor da propriedade active, e ao alterar seu valor este método altera o valor do campo de acessibilidade aria-selected\n */\n @Watch('active')\n watchItemIsActive(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue) {\n const button = this.el.shadowRoot.getElementById('indicator-area').lastElementChild.shadowRoot\n if (button !== null) {\n button.lastElementChild.setAttribute('aria-selected', `${this.active}`)\n }\n }\n }\n\n /**\n *\n * Método disponibilizado via api do elemento que indica a posição do step item, ele serve para setar o state stepItemPositionStatus do componente\n */\n @Method()\n async setStepItemPositionStatus(value: 'first' | 'middle' | 'last') {\n this.stepItemPositionStatus = value\n }\n\n /**\n * Método que define a orientação do stepItem e controla a exibição da linha do tempo após o componente.\n */\n @Method()\n async handleShowTimeLine(value: boolean, layout) {\n this.showTimeLine = value\n this.stepLayout = layout\n }\n\n /**\n *\n * Método disponibilizado via api do elemento que atribui o valor ao estado que define onde o label, o texto de destaque, irá ficar localizado\n */\n @Method()\n async setLabelPosition(value: 'top' | 'right' | 'bottom' | 'left') {\n this.labelPosition = value\n }\n\n /**\n *\n * Método disponibilizado via api do elemento que atribui o valor que irá definir o tipo de conteúdo apresentado dentro do componente stepItem\n */\n @Method()\n async setContentType(value: 'default' | 'br-icon' | 'no-content' | 'slotted') {\n this.contentType = value\n }\n\n /**\n *\n * Método disponibilizado via api do elemento que atribui o valor que irá definir o modo como o componente irá se comportar e exibir seu estilo.\n */\n @Method()\n async setMode(value: 'controller' | 'step') {\n this.mode = value\n }\n /**\n *\n * Método disponibilizado via api do elemento que atribui o valor que irá ser exibido dentro do componente stepItem\n */\n @Method()\n async setContent(value: string) {\n this.content = value\n }\n\n private getStepContainerClassMap(): CssClassMap {\n return {\n 'step-item-container-horizontal': this.stepLayout === 'horizontal',\n 'step-item-container-vertical': this.stepLayout === 'vertical',\n last: this.stepItemPositionStatus == 'last',\n 'label-top': this.labelPosition === 'top',\n 'label-left': this.labelPosition === 'left',\n 'label-right': this.labelPosition === 'right',\n 'label-bottom': this.labelPosition === 'bottom' && this.label !== '',\n controller: this.mode === 'controller',\n 'disabled-div': true,\n }\n }\n\n private getStepItemContentClassMap(): CssClassMap {\n return {\n 'step-item-content': true,\n 'label-bottom': this.labelPosition === 'bottom',\n 'label-top': this.labelPosition === 'top',\n 'label-left': this.labelPosition === 'left',\n 'label-right': this.labelPosition === 'right',\n timeline: this.showTimeLine === true,\n middle: this.stepItemPositionStatus === 'middle',\n first: this.stepItemPositionStatus === 'first',\n controller: this.mode === 'controller',\n }\n }\n\n private getStepItemIndicatorAreaClassMap(): CssClassMap {\n return {\n 'step-item-indicator-area': true,\n }\n }\n\n private getStepItemLabelAreaClassMap(): CssClassMap {\n return {\n 'step-item-label-area': true,\n vertical: this.stepLayout === 'vertical',\n horizontal: this.stepLayout === 'horizontal',\n 'label-bottom': this.labelPosition === 'bottom',\n 'label-top': this.labelPosition === 'top',\n 'label-left': this.labelPosition === 'left',\n 'label-right': this.labelPosition === 'right',\n 'no-label': this.label === '',\n }\n }\n\n private getHighlightClass(): CssClassMap {\n return {\n icon: true,\n success: this.highlight === 'success',\n info: this.highlight === 'info',\n warning: this.highlight === 'warning',\n danger: this.highlight === 'danger',\n 'no-content': this.contentType === 'no-content',\n }\n }\n\n private getStepItemIndicatorClass(): CssClassMap {\n return {\n 'step-button': true,\n controller: this.mode === 'controller',\n 'disabled-host': this.disabled,\n }\n }\n\n private highLightAriaLabel = {\n success: 'passo completo',\n info: 'passo com item informativo',\n warning: 'passo com alerta',\n danger: 'passo com erro',\n undefined: '',\n }\n\n private IconsName = {\n success: 'fa-check',\n info: 'fa-info-circle',\n warning: 'fa-exclamation-triangle',\n danger: 'fa-times',\n }\n\n render() {\n return (\n <Host>\n <div id=\"item-container\" class={this.getStepContainerClassMap()}>\n <div id=\"item-content\" class={this.getStepItemContentClassMap()}>\n <div id=\"indicator-area\" data-active={this.active} class={this.getStepItemIndicatorAreaClassMap()}>\n {this.mode === 'step' && this.highlight && (\n <div class={this.getHighlightClass()}>\n <br-icon\n icon-name={this.IconsName[this.highlight]}\n class={`${this.highlight === 'warning' && 'warning-color'}`}\n ></br-icon>\n </div>\n )}\n\n {this.mode === 'step' && (\n <br-button\n shape=\"circle\"\n emphasis=\"secondary\"\n isActive={this.active}\n class={this.getStepItemIndicatorClass()}\n >\n {this.contentType === 'no-content' && ''}\n {this.contentType === 'default' && this.content}\n {this.contentType === 'br-icon' && (\n <div>\n <br-icon icon-name={this.brIconName} class={'content-type-br-icon'}></br-icon>\n </div>\n )}\n {this.contentType === 'slotted' && <slot name={'content-area'}></slot>}\n </br-button>\n )}\n\n {this.mode === 'controller' && <button data-active={this.active} class={'mode-controller'}></button>}\n </div>\n <div id=\"label-area\" class={this.getStepItemLabelAreaClassMap()}>\n <span> {this.label} </span>\n </div>\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"br-step.entry.esm.js","sources":["../../packages/webcomponents/src/components/step/step.scss?tag=br-step&encapsulation=shadow","../../packages/webcomponents/src/components/step/step.tsx"],"sourcesContent":["@import \"../../../../../node_modules/@govbr-ds/core/src/components/step/step.scss\";\n\n:host {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n}\n\n::slotted([disabled]) {\n opacity: 1 !important;\n}\n\n.step-container {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n overflow: auto;\n flex-grow: 1;\n}\n\n.step-container:focus-visible {\n outline-color: var(--focus);\n outline-offset: var(--focus-offset);\n outline-style: var(--focus-style);\n outline-width: var(--focus-width);\n}\n\n.horizontal {\n flex-direction: row;\n}\n\n.vertical {\n flex-direction: column;\n justify-content: center;\n}\n\n.vertical.label-right {\n align-items: start;\n padding-left: 20px;\n}\n\n.vertical.label-left {\n align-items: start;\n padding-right: 20px;\n}\n\n::slotted(.linha) {\n width: 100px;\n height: 2px;\n display: flex;\n align-items: center;\n background-color: var(--interactive);\n}\n\n::slotted(*) {\n flex: 1;\n min-width: 0;\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n} from '@stencil/core'\n\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/step?tab=designer).\n *\n * @slot default - Slot que abriga o componente step-item. Este slot tem a particularidade de aceitar somente o componente step-item em sua composição. Caso outro elemento ou componente seja incluído dentro dele, o componente Step não será renderizado, e uma mensagem de erro será exibida no console.\n */\n@Component({\n tag: 'br-step',\n styleUrl: 'step.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Step {\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: HTMLBrStepElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * propriedade responsável por definir a orientação do componente Step\n */\n @Prop({ reflect: true }) layout: 'horizontal' | 'vertical' = 'horizontal'\n /**\n *\n * define o passo que começará destacado\n */\n @Prop({ reflect: true }) initialStep: string = '0'\n /**\n *\n * Propriedade que define a posição onde o texto de destaque,label, ficará localizado no stepItem\n */\n @Prop({ reflect: true }) labelPosition?: 'top' | 'right' | 'bottom' | 'left' = 'bottom'\n /**\n *\n * Propriedade que define o tipo de conteúdo a ser exibido dentro do componente step e stepItem\n */\n @Prop({ reflect: true }) contentType: 'default' | 'br-icon' | 'no-content' | 'slotted' = 'default'\n /**\n *\n * Propriedade que define o tipo de comportamento que o componente Step deverá seguir\n */\n @Prop({ reflect: true }) mode: 'controller' | 'step' = 'step'\n\n /**\n *\n * Propriedade que define o tipo de progressão de etapas que o step vai executar\n */\n @Prop({ reflect: true }) progressionType: 'linear' | 'nonlinear' = 'nonlinear'\n\n @State() activeStep: number = 0\n @State() stepItems: Element[] = []\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.setStepItemsLabelPosition()\n this.setStepItemsContentType()\n this.setStepItemsDefaultContent()\n this.setStepItemsMode(this.mode)\n if (this.mode === 'step') {\n this.configureTimeLine()\n }\n if (this.progressionType === 'linear') {\n this.configureLinearProgression()\n }\n if (this.activeStep <= this.stepItems.length - 1) {\n this.stepItems[this.activeStep].setAttribute('active', 'true')\n } else {\n console.warn('br-step initial-step attribute has value more than number of step-items provided')\n }\n this.brDidLoad.emit()\n }\n\n /**\n * Emite um evento antes do componente ser renderizado pela primeira vez, permitindo a preparação de dados ou inicializações necessárias.\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#componentdwillLoad) para mais detalhes.\n */\n @Event() brWilLoad: EventEmitter<void>\n componentWillLoad() {\n this.activeStep = Number(this.initialStep)\n this.getStepItemsElements()\n this.brWilLoad.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(newValue, oldValue, stateName) {\n if (stateName == 'activeStep' && oldValue != newValue) {\n const outOfRange = oldValue > this.stepItems.length - 1\n this.stepItems[this.activeStep].setAttribute('active', 'true')\n if (!outOfRange) {\n this.stepItems[oldValue].removeAttribute('active')\n }\n this.brShouldUpdate.emit()\n }\n }\n\n /**\n * listener para ouvir o evento de click no componente step\n * Através desse listener o componente define qual será o proximo passo do step que terá o estado ativo\n */\n\n @Listen('click', { capture: true })\n handleClick(event) {\n const targetElement = event.target as Element\n if (targetElement.getAttribute('slot') !== null) {\n const slotItem = this.stepItems.findIndex((element) => element.lastElementChild === targetElement)\n this.activeStep = slotItem\n return\n }\n const item = this.stepItems.findIndex((element) => element === targetElement)\n this.activeStep = item\n }\n\n private getStepItemsElements() {\n const slotItems = Array.from(this.el.children)\n const firstChildrenContentTypeValue = slotItems[0].getAttribute('content-type')\n const childrenHaveConsistentContentType = slotItems.every(\n (item) => item.getAttribute('content-type') === firstChildrenContentTypeValue\n )\n const childrenHaveConsistentTagName = slotItems.every((item) => item.tagName.toLowerCase() === 'br-step-item')\n if (childrenHaveConsistentContentType && childrenHaveConsistentTagName) {\n this.stepItems = slotItems\n return\n }\n if (!childrenHaveConsistentTagName) {\n throw new Error('br-step component must have as child elements only br-step-items components')\n }\n if (!childrenHaveConsistentContentType) {\n throw new Error('br-step must have all child elements with same content type attribute value')\n }\n }\n\n private setStepItemsLabelPosition() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements) => {\n if (this.labelPosition !== undefined) {\n elements.setLabelPosition(this.labelPosition)\n }\n })\n }\n\n private setStepItemsDefaultContent() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n const indicatorContent = index + 1\n elements.setContent(indicatorContent.toString())\n })\n }\n\n private async setStepItemsContentType() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n await Promise.all(slotItems.map((element) => element.setContentType(this.contentType)))\n slotItems.forEach((elements, index) => {\n elements.setAttribute('aria-posinset', `${index + 1}`)\n elements.setAttribute('aria-setsize', `${slotItems.length}`)\n })\n }\n\n private setStepItemsMode(mode: 'controller' | 'step') {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements) => {\n if (mode === 'controller') {\n elements.setMode(this.mode)\n elements.setContentType('no-content')\n if (this.layout !== 'horizontal') {\n this.layout = 'horizontal'\n }\n elements.handleShowTimeLine(false, this.layout)\n elements.removeAttribute('label')\n }\n })\n }\n\n private getStepItemPosition(stepItemsElements: HTMLBrStepItemElement[], index) {\n if (index === 0) {\n return 'first'\n }\n if (index > 0 && index < stepItemsElements.length - 1) {\n return 'middle'\n }\n return 'last'\n }\n\n private configureTimeLine() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n const elementPosition = this.getStepItemPosition(slotItems, index)\n elements.setStepItemPositionStatus(elementPosition)\n elements.handleShowTimeLine(true, this.layout)\n })\n }\n\n private configureLinearProgression() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n if (index > 0) {\n elements.setAttribute('disabled', 'true')\n }\n })\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que controla o componente Step, responsável por avançar para o próximo passo e atualizar o valor do estado activeStep\n */\n @Method()\n async ProceedToNextStep() {\n if (this.activeStep + 1 < this.stepItems.length) {\n this.activeStep = this.activeStep + 1\n if (this.progressionType === 'linear') {\n this.stepItems[this.activeStep].removeAttribute('disabled')\n }\n }\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que controla o componente Step, responsável por retornar ao passo anterior e atualizar o valor do estado activeStep\n */\n @Method()\n async BackToPreviousStep() {\n if (this.activeStep - 1 >= 0) {\n this.activeStep = this.activeStep - 1\n }\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que integra um componente externo ao componente Step, permitindo sinalizar validações ou destacar a etapa com estado ativo.\n */\n @Method()\n async StepValidation(validationStatus: 'success' | 'info' | 'danger' | 'warning') {\n this.stepItems[this.activeStep].setAttribute('highlight', validationStatus)\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que permite a um componente externo obter a etapa com o estado ativo do componente Step.\n */\n @Method()\n async GetActiveStep() {\n return this.activeStep\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-step': true,\n 'step-container': true,\n horizontal: this.layout === 'horizontal',\n vertical: this.layout === 'vertical',\n 'label-left': this.labelPosition === 'left',\n 'label-right': this.labelPosition === 'right',\n }\n }\n\n private AriaObjectContent = {\n step: 'Modo etapas ',\n controller: 'Modo controle ',\n default: 'passos com conteúdo numérico ',\n 'br-icon': 'passos com conteúdo que possuem icones ',\n slotted: 'passos com conteúdo customizados ',\n 'no-content': 'passos que apresentam conteúdo por meio de tooltip ',\n linear: 'progressão linear ',\n nonlinear: 'progressão não linear ',\n vertical: 'com layout vertical ',\n horizontal: 'com layout horizontal ',\n }\n\n private getAreaLabel(): string {\n let ariaLabel = ' Lista de Opções '\n if (this.mode !== 'controller') {\n ariaLabel +=\n this.AriaObjectContent[this.mode] +\n this.AriaObjectContent[this.contentType] +\n this.AriaObjectContent[this.progressionType] +\n this.AriaObjectContent[this.layout]\n } else {\n ariaLabel += this.AriaObjectContent[this.mode]\n }\n return ariaLabel\n }\n\n render() {\n return (\n <Host>\n {this.stepItems.length > 0 && (\n <div\n role=\"listbox\"\n tabIndex={0}\n aria-orientation={this.layout}\n aria-label={this.getAreaLabel()}\n class={this.getCssClassMap()}\n >\n <slot></slot>\n </div>\n )}\n </Host>\n )\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"br-switch.entry.esm.js","sources":["../../packages/webcomponents/src/components/switch/switch.scss?tag=br-switch&encapsulation=shadow","../../packages/webcomponents/src/components/switch/switch.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/switch/switch\";\n\n:host {\n display: block;\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } from '@stencil/core'\n\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/switch?tab=designer).\n *\n * @slot default - Descreve o que o switch faz quando a alternância estiver ativada. A label passada por slot tem precedência sobre a propriedade 'label'.\n */\n@Component({\n tag: 'br-switch',\n styleUrl: 'switch.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Switch {\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: HTMLBrSwitchElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Desativa o switch, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Define o estado de seleção do checkbox.\n * Se definido como verdadeiro, o checkbox estará marcado. Caso contrário, estará desmarcado.\n */\n @Prop({ reflect: true, mutable: true }) checked: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-switch-${switchId++}`\n\n /**\n * Texto descritivo.\n * Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.\n */\n @Prop() readonly label: string\n\n /**\n * Posição do rótulo em relação ao switch.\n */\n @Prop({ reflect: true }) readonly labelPosition: 'right' | 'left' | 'top' = 'left'\n\n /**\n * Texto exibido quando o switch está ativado.\n */\n @Prop({ reflect: true }) readonly labelOn: string\n\n /**\n * Texto exibido quando o switch está desativado.\n */\n @Prop({ reflect: true }) readonly labelOff: string\n\n /**\n * Adiciona um ícone ao switch para indicar a mudança de estado.\n */\n @Prop({ reflect: true }) readonly hasIcon: boolean = false\n\n /**\n * Define o nome do switch, que é utilizado para agrupar switches em formulários e identificar o campo.\n * O valor é obrigatório e deve ser fornecido para garantir o correto funcionamento em formulários.\n */\n @Prop({ reflect: true }) readonly name: string\n\n /**\n * Define o valor associado ao switch quando ele faz parte de um formulário nativo (`<form>`).\n * Esse valor é enviado com o formulário quando o switch está selecionado.\n * **Nota:** Esta propriedade não deve ser utilizada para determinar se o switch está selecionado; para verificar o estado de seleção, use a propriedade `checked`.\n */\n @Prop({ reflect: true }) readonly value: string\n\n /** O ajuste da densidade consiste em aumentar ou reduzir a área de interação do switch. Quanto menor for a densidade, maior a área de interação. */\n @Prop({ reflect: true }) readonly density: 'large' | 'medium' | 'small' = 'medium'\n\n // Propriedade interna para verificar a presença de conteúdo no slot default\n @State() _slotDefault: boolean = false\n\n componentWillLoad() {\n this._hasSlotContentDefault()\n }\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n @Event() checkedChange: EventEmitter<boolean>\n private _hasSlotContentDefault(): void {\n this._slotDefault = this.el.innerHTML !== ''\n }\n\n private readonly handleCheckedChange = (event: Event) => {\n this.checked = (event.target as HTMLInputElement).checked\n this.checkedChange.emit(this.checked)\n }\n\n private readonly handleClick = (event: Event) => {\n event.stopPropagation()\n }\n\n /**\n * Inverte o valor da prop `checked`\n */\n @Method()\n async toggleChecked() {\n this.checked = !this.checked\n this.checkedChange.emit(this.checked)\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-switch': true,\n icon: this.hasIcon,\n top: this.labelPosition === 'top',\n right: this.labelPosition === 'right',\n large: this.density === 'large',\n small: this.density === 'small',\n }\n }\n\n render() {\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n <input\n id={this.customId}\n type=\"checkbox\"\n name={this.name}\n checked={this.checked}\n disabled={this.disabled}\n role=\"switch\"\n aria-checked={this.checked.toString()}\n aria-disabled={this.disabled ? 'true' : null}\n onChange={this.handleCheckedChange}\n onClick={this.handleClick}\n />\n <label htmlFor={this.customId}>{this._slotDefault ? <slot></slot> : this.label}</label>\n {this.labelOn && this.labelOff && (\n <div class=\"switch-data\" data-enabled={this.labelOn} data-disabled={this.labelOff}></div>\n )}\n </div>\n </Host>\n )\n }\n}\n\nlet switchId = 0\n"],"names":[],"mappings":";;;;;AAAA,MAAM,SAAS,GAAG,m68DAAm68D;;MCex68D,MAAM,GAAA,MAAA;;;;;;;;;;;;;AAOE,IAAA,gBAAgB;AAEnC;;AAEG;IAC+B,QAAQ,GAAY,KAAK;AAE3D;;;AAGG;IACqC,OAAO,GAAY,KAAK;AAEhE;;;AAGG;AAC+B,IAAA,QAAQ,GAAW,CAAA,UAAA,EAAa,QAAQ,EAAE,EAAE;AAE9E;;;AAGG;AACc,IAAA,KAAK;AAEtB;;AAEG;IAC+B,aAAa,GAA6B,MAAM;AAElF;;AAEG;AAC+B,IAAA,OAAO;AAEzC;;AAEG;AAC+B,IAAA,QAAQ;AAE1C;;AAEG;IAC+B,OAAO,GAAY,KAAK;AAE1D;;;AAGG;AAC+B,IAAA,IAAI;AAEtC;;;;AAIG;AAC+B,IAAA,KAAK;;IAGL,OAAO,GAAiC,QAAQ;;IAGzE,YAAY,GAAY,KAAK;IAEtC,iBAAiB,GAAA;QACf,IAAI,CAAC,sBAAsB,EAAE;;AAG/B;;AAEG;AAEH;;AAEG;AACM,IAAA,aAAa;IACd,sBAAsB,GAAA;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,KAAK,EAAE;;AAG7B,IAAA,mBAAmB,GAAG,CAAC,KAAY,KAAI;QACtD,IAAI,CAAC,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;QACzD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC,KAAC;AAEgB,IAAA,WAAW,GAAG,CAAC,KAAY,KAAI;QAC9C,KAAK,CAAC,eAAe,EAAE;AACzB,KAAC;AAED;;AAEG;AAEH,IAAA,MAAM,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;QAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;IAG/B,cAAc,GAAA;QACpB,OAAO;AACL,YAAA,WAAW,EAAE,IAAI;YACjB,IAAI,EAAE,IAAI,CAAC,OAAO;AAClB,YAAA,GAAG,EAAE,IAAI,CAAC,aAAa,KAAK,KAAK;AACjC,YAAA,KAAK,EAAE,IAAI,CAAC,aAAa,KAAK,OAAO;AACrC,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,OAAO;AAC/B,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,OAAO;SAChC;;IAGH,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAAA,EAC/B,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,EAAE,EAAE,IAAI,CAAC,QAAQ,EACjB,IAAI,EAAC,UAAU,EACf,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,IAAI,EAAC,QAAQ,EACC,cAAA,EAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAA,eAAA,EACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,EAC5C,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAClC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,CAAA,EACF,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAO,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAA,EAAG,IAAI,CAAC,YAAY,GAAG,eAAa,GAAG,IAAI,CAAC,KAAK,CAAS,EACtF,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,KAC5B,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,aAAa,kBAAe,IAAI,CAAC,OAAO,EAAA,eAAA,EAAiB,IAAI,CAAC,QAAQ,EAAA,CAAQ,CAC1F,CACG,CACD;;;;AAKb,IAAI,QAAQ,GAAG,CAAC;;;;;"}
1
+ {"version":3,"file":"br-switch.entry.esm.js","sources":["../../packages/webcomponents/src/components/switch/switch.scss?tag=br-switch&encapsulation=shadow","../../packages/webcomponents/src/components/switch/switch.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/switch/switch\";\n\n:host {\n display: block;\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } from '@stencil/core'\n\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/switch?tab=designer).\n *\n * @slot default - Descreve o que o switch faz quando a alternância estiver ativada. A label passada por slot tem precedência sobre a propriedade 'label'.\n */\n@Component({\n tag: 'br-switch',\n styleUrl: 'switch.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Switch {\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: HTMLBrSwitchElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Desativa o switch, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Define o estado de seleção do checkbox.\n * Se definido como verdadeiro, o checkbox estará marcado. Caso contrário, estará desmarcado.\n */\n @Prop({ reflect: true, mutable: true }) checked: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-switch-${switchId++}`\n\n /**\n * Texto descritivo.\n * Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.\n */\n @Prop() readonly label: string\n\n /**\n * Posição do rótulo em relação ao switch.\n */\n @Prop({ reflect: true }) readonly labelPosition: 'right' | 'left' | 'top' = 'left'\n\n /**\n * Texto exibido quando o switch está ativado.\n */\n @Prop({ reflect: true }) readonly labelOn: string\n\n /**\n * Texto exibido quando o switch está desativado.\n */\n @Prop({ reflect: true }) readonly labelOff: string\n\n /**\n * Adiciona um ícone ao switch para indicar a mudança de estado.\n */\n @Prop({ reflect: true }) readonly hasIcon: boolean = false\n\n /**\n * Define o nome do switch, que é utilizado para agrupar switches em formulários e identificar o campo.\n * O valor é obrigatório e deve ser fornecido para garantir o correto funcionamento em formulários.\n */\n @Prop({ reflect: true }) readonly name: string\n\n /**\n * Define o valor associado ao switch quando ele faz parte de um formulário nativo (`<form>`).\n * Esse valor é enviado com o formulário quando o switch está selecionado.\n * **Nota:** Esta propriedade não deve ser utilizada para determinar se o switch está selecionado; para verificar o estado de seleção, use a propriedade `checked`.\n */\n @Prop({ reflect: true }) readonly value: string\n\n /** O ajuste da densidade consiste em aumentar ou reduzir a área de interação do switch. Quanto menor for a densidade, maior a área de interação. */\n @Prop({ reflect: true }) readonly density: 'large' | 'medium' | 'small' = 'medium'\n\n // Propriedade interna para verificar a presença de conteúdo no slot default\n @State() _slotDefault: boolean = false\n\n componentWillLoad() {\n this._hasSlotContentDefault()\n }\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n @Event() checkedChange: EventEmitter<boolean>\n private _hasSlotContentDefault(): void {\n this._slotDefault = this.el.innerHTML !== ''\n }\n\n private readonly handleCheckedChange = (event: Event) => {\n this.checked = (event.target as HTMLInputElement).checked\n this.checkedChange.emit(this.checked)\n }\n\n private readonly handleClick = (event: Event) => {\n event.stopPropagation()\n }\n\n /**\n * Inverte o valor da prop `checked`\n */\n @Method()\n async toggleChecked() {\n this.checked = !this.checked\n this.checkedChange.emit(this.checked)\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-switch': true,\n icon: this.hasIcon,\n top: this.labelPosition === 'top',\n right: this.labelPosition === 'right',\n large: this.density === 'large',\n small: this.density === 'small',\n }\n }\n\n render() {\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n <input\n id={this.customId}\n type=\"checkbox\"\n name={this.name}\n checked={this.checked}\n disabled={this.disabled}\n role=\"switch\"\n aria-checked={this.checked.toString()}\n aria-disabled={this.disabled ? 'true' : null}\n onChange={this.handleCheckedChange}\n onClick={this.handleClick}\n />\n <label htmlFor={this.customId}>{this._slotDefault ? <slot></slot> : this.label}</label>\n {this.labelOn && this.labelOff && (\n <div class=\"switch-data\" data-enabled={this.labelOn} data-disabled={this.labelOff}></div>\n )}\n </div>\n </Host>\n )\n }\n}\n\nlet switchId = 0\n"],"names":[],"mappings":";;;;;AAAA,MAAM,SAAS,GAAG,k+9DAAk+9D;;MCev+9D,MAAM,GAAA,MAAA;;;;;;;;;;;;;AAOE,IAAA,gBAAgB;AAEnC;;AAEG;IAC+B,QAAQ,GAAY,KAAK;AAE3D;;;AAGG;IACqC,OAAO,GAAY,KAAK;AAEhE;;;AAGG;AAC+B,IAAA,QAAQ,GAAW,CAAA,UAAA,EAAa,QAAQ,EAAE,EAAE;AAE9E;;;AAGG;AACc,IAAA,KAAK;AAEtB;;AAEG;IAC+B,aAAa,GAA6B,MAAM;AAElF;;AAEG;AAC+B,IAAA,OAAO;AAEzC;;AAEG;AAC+B,IAAA,QAAQ;AAE1C;;AAEG;IAC+B,OAAO,GAAY,KAAK;AAE1D;;;AAGG;AAC+B,IAAA,IAAI;AAEtC;;;;AAIG;AAC+B,IAAA,KAAK;;IAGL,OAAO,GAAiC,QAAQ;;IAGzE,YAAY,GAAY,KAAK;IAEtC,iBAAiB,GAAA;QACf,IAAI,CAAC,sBAAsB,EAAE;;AAG/B;;AAEG;AAEH;;AAEG;AACM,IAAA,aAAa;IACd,sBAAsB,GAAA;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,KAAK,EAAE;;AAG7B,IAAA,mBAAmB,GAAG,CAAC,KAAY,KAAI;QACtD,IAAI,CAAC,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;QACzD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC,KAAC;AAEgB,IAAA,WAAW,GAAG,CAAC,KAAY,KAAI;QAC9C,KAAK,CAAC,eAAe,EAAE;AACzB,KAAC;AAED;;AAEG;AAEH,IAAA,MAAM,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;QAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;IAG/B,cAAc,GAAA;QACpB,OAAO;AACL,YAAA,WAAW,EAAE,IAAI;YACjB,IAAI,EAAE,IAAI,CAAC,OAAO;AAClB,YAAA,GAAG,EAAE,IAAI,CAAC,aAAa,KAAK,KAAK;AACjC,YAAA,KAAK,EAAE,IAAI,CAAC,aAAa,KAAK,OAAO;AACrC,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,OAAO;AAC/B,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,OAAO;SAChC;;IAGH,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAAA,EAC/B,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,EAAE,EAAE,IAAI,CAAC,QAAQ,EACjB,IAAI,EAAC,UAAU,EACf,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,IAAI,EAAC,QAAQ,EACC,cAAA,EAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAA,eAAA,EACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,EAC5C,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAClC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,CAAA,EACF,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAO,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAA,EAAG,IAAI,CAAC,YAAY,GAAG,eAAa,GAAG,IAAI,CAAC,KAAK,CAAS,EACtF,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,KAC5B,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,aAAa,kBAAe,IAAI,CAAC,OAAO,EAAA,eAAA,EAAiB,IAAI,CAAC,QAAQ,EAAA,CAAQ,CAC1F,CACG,CACD;;;;AAKb,IAAI,QAAQ,GAAG,CAAC;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"br-tag.entry.esm.js","sources":["../../packages/webcomponents/src/components/tag/tag.scss?tag=br-tag&encapsulation=shadow","../../packages/webcomponents/src/components/tag/tag.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/checkbox/checkbox\";\n@import \"~@govbr-ds/core/src/components/input/input\";\n@import \"~@govbr-ds/core/src/components/tag/tag\";\n\n:host {\n display: block;\n\n .tag-position {\n display: flex;\n justify-content: space-around;\n align-items: center;\n }\n\n .tag-spacing-status {\n margin-left: var(--spacing-scale-half) !important;\n }\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\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/tag?tab=designer).\n *\n * @slot default - Espaço de conteúdo do tag. Geralmente usado para incluir o rótulo ou um ícone.\n */\n\n// Constantes para valores fixos\nconst DENSITY_SMALL = 'small'\nconst DENSITY_MEDIUM = 'medium'\nconst DENSITY_LARGE = 'large'\n\nconst SHAPE_CIRCLE = 'circle'\nconst SHAPE_ROUNDED = 'rounded'\nconst SHAPE_DEFAULT = 'default'\n\n@Component({\n tag: 'br-tag',\n styleUrl: 'tag.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Tag {\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: HTMLBrTagElement\n\n /** API de controle de formulário nativa */\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * A propriedade 'label' é uma string que representa o texto a ser exibido no componente.\n * Ela é refletida no DOM, permitindo que alterações no valor sejam refletidas no elemento HTML correspondente.\n */\n @Prop({ reflect: true }) readonly label: string = ''\n\n /**\n * A propriedade 'iconName' define o nome do ícone que será exibido ao lado do texto.\n * O valor padrão é 'fa-solid:car', que corresponde a um ícone de carro da biblioteca Font Awesome.\n */\n @Prop({ reflect: true }) readonly iconName: string = ''\n\n /**\n * A propriedade 'name' é uma string que representa o nome do grupo da tag para seleção.\n * Ela é refletida no DOM, permitindo que alterações no valor sejam refletidas no elemento HTML correspondente.\n */\n @Prop({ reflect: true }) readonly name: string = ''\n\n /**\n * A tag permite seleção múltipla.\n * */\n @Prop({ reflect: true }) readonly multiple: boolean = false\n\n /**\n * A tag está selecionada.\n * */\n @Prop({ reflect: true, mutable: true }) selected: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-tag-${tagId++}`\n\n /**\n * A propriedade 'color' permite definir a cor do componente.\n * Aceita valores como 'red', 'blue', entre outros, e é refletida no DOM.\n */\n @Prop({ reflect: true }) readonly color: string = ''\n\n /**\n * A propriedade 'density' permite definir a densidade do componente.\n * Aceita valores como 'small', 'medium' e 'large', e é refletida no DOM.\n */\n @Prop({ reflect: true }) readonly density: 'small' | 'medium' | 'large' = DENSITY_SMALL\n\n /**\n * A propriedade 'shape' define o formato do componente.\n * Valores possíveis:\n * - 'circle': Componente com formato circular.\n * - 'rounded': Componente com bordas arredondadas.\n * - 'default': Componente com formato padrão.\n */\n @Prop({ reflect: true }) readonly shape: 'circle' | 'rounded' | 'default' = SHAPE_DEFAULT\n\n /**\n * Status deve ser exibido.\n */\n @Prop({ reflect: true }) readonly status: boolean = false\n\n /**\n * Interação deve ser habilitada.\n */\n @Prop({ reflect: true, mutable: true }) interaction: boolean = false\n\n /**\n * Interação de seleção deve ser habilitada.\n * */\n @Prop({ reflect: true }) interactionSelect: boolean = false\n\n /**\n * Tag deve estar desabilitado.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Tag está selecionada.\n */\n @State() selectedClassValue: boolean = false\n\n /**\n * Evento emitido quando a tag é selecionada.\n */\n @Event() radioSelected: EventEmitter<string>\n\n @Watch('interaction')\n handleInteractionChange(newValue: boolean) {\n if (newValue && this.interactionSelect) {\n console.warn(\n \"Aviso: 'interaction' e 'interactionSelect' não podem ser usados ao mesmo tempo. Alterando o 'interaction' para 'false'.\"\n )\n this.interaction = false\n }\n }\n\n @Watch('interactionSelect')\n handleInteractionSelectChange(newValue: boolean) {\n if (newValue && this.interaction) {\n console.warn(\n \"Aviso: 'interaction' e 'interactionSelect' não podem ser usados ao mesmo tempo. Alterando o 'interaction' para 'false'.\"\n )\n this.interaction = false\n }\n }\n\n componentWillLoad() {\n if (this.interaction && this.interactionSelect) {\n console.warn(\n \"Aviso: 'interaction' e 'interactionSelect' não podem ser usados ao mesmo tempo. Alterando o 'interaction' para 'false'.\"\n )\n this.interaction = false\n }\n }\n connectedCallback() {\n this.selectedClassValue = this.selected\n }\n\n @Watch('selected')\n handleSelectedChange(newValue: boolean) {\n this.selectedClassValue = newValue\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-tag': true,\n interaction: this.interaction,\n 'interaction-select': this.interactionSelect,\n selected: this.selectedClassValue,\n [this.color]: !!this.color,\n [DENSITY_SMALL]: this.density === DENSITY_SMALL,\n [DENSITY_MEDIUM]: this.density === DENSITY_MEDIUM,\n [DENSITY_LARGE]: this.density === DENSITY_LARGE,\n count: this.shape === SHAPE_ROUNDED,\n icon: this.shape === SHAPE_CIRCLE,\n status: this.status,\n }\n }\n\n private renderIcon() {\n return this.iconName && this.iconName.trim() !== '' ? (\n <br-icon icon-name={this.iconName} aria-hidden=\"true\" />\n ) : null\n }\n\n private renderLabel() {\n return this.shape !== SHAPE_CIRCLE && !this.status ? <span>{this.label}</span> : null\n }\n\n private renderCloseButton() {\n if (!this.interaction) return null\n return (\n <br-button\n type=\"button\"\n shape=\"circle\"\n emphasis=\"primary\"\n aria-label=\"Fechar\"\n onClick={this.handleClose}\n disabled={this.disabled}\n >\n <br-icon icon-name=\"fa-solid:times\"></br-icon>\n </br-button>\n )\n }\n\n private renderStatusLabel() {\n return this.status ? <span class=\"tag-spacing-status\">{this.label}</span> : null\n }\n\n private handleClose = () => {\n this.el.remove()\n }\n\n private handleChangeValueChecked = () => {\n if (!this.multiple) {\n this.radioSelected.emit(this.name)\n }\n this.selected = !this.selected\n }\n\n private handleChangeRadioValue = (event: MouseEvent) => {\n if (!this.multiple) {\n this.radioSelected.emit(this.name)\n this.selected = (event.target as HTMLInputElement).checked\n }\n }\n\n @Listen('radioSelected', { target: 'document' })\n handleCheckedChange(event: CustomEvent) {\n if (event.detail === this.name && this.el !== event.target) {\n this.selected = false\n }\n }\n\n render() {\n const mainTagContent = (\n <span class={this.getCssClassMap()} id={this.customId}>\n {this.renderIcon()}\n {this.renderLabel()}\n {this.renderCloseButton()}\n <slot></slot>\n </span>\n )\n\n return (\n <Host>\n {!this.status ? (\n mainTagContent\n ) : (\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {mainTagContent}\n {this.renderStatusLabel()}\n </div>\n )}\n\n {this.interactionSelect && (\n <span class={this.getCssClassMap()} id={this.customId}>\n {this.multiple ? (\n <input\n id={this.label}\n type=\"checkbox\"\n name={this.name}\n value={this.label}\n checked={this.selected}\n onClick={this.handleChangeValueChecked}\n disabled={this.disabled}\n />\n ) : (\n <input\n id={this.label}\n type=\"radio\"\n name={this.name}\n value={this.label}\n checked={this.selected}\n onClick={this.handleChangeRadioValue}\n disabled={this.disabled}\n />\n )}\n <label htmlFor={this.label}>\n {this.renderIcon()}\n <span>{this.label}</span>\n </label>\n </span>\n )}\n </Host>\n )\n }\n}\n\nlet tagId = 0\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"br-tag.entry.esm.js","sources":["../../packages/webcomponents/src/components/tag/tag.scss?tag=br-tag&encapsulation=shadow","../../packages/webcomponents/src/components/tag/tag.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/checkbox/checkbox\";\n@import \"~@govbr-ds/core/src/components/input/input\";\n@import \"~@govbr-ds/core/src/components/tag/tag\";\n\n:host {\n display: block;\n\n .tag-position {\n display: flex;\n justify-content: space-around;\n align-items: center;\n }\n\n .tag-spacing-status {\n margin-left: var(--spacing-scale-half) !important;\n }\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\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/tag?tab=designer).\n *\n * @slot default - Espaço de conteúdo do tag. Geralmente usado para incluir o rótulo ou um ícone.\n */\n\n// Constantes para valores fixos\nconst DENSITY_SMALL = 'small'\nconst DENSITY_MEDIUM = 'medium'\nconst DENSITY_LARGE = 'large'\n\nconst SHAPE_CIRCLE = 'circle'\nconst SHAPE_ROUNDED = 'rounded'\nconst SHAPE_DEFAULT = 'default'\n\n@Component({\n tag: 'br-tag',\n styleUrl: 'tag.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Tag {\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: HTMLBrTagElement\n\n /** API de controle de formulário nativa */\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * A propriedade 'label' é uma string que representa o texto a ser exibido no componente.\n * Ela é refletida no DOM, permitindo que alterações no valor sejam refletidas no elemento HTML correspondente.\n */\n @Prop({ reflect: true }) readonly label: string = ''\n\n /**\n * A propriedade 'iconName' define o nome do ícone que será exibido ao lado do texto.\n * O valor padrão é 'fa-solid:car', que corresponde a um ícone de carro da biblioteca Font Awesome.\n */\n @Prop({ reflect: true }) readonly iconName: string = ''\n\n /**\n * A propriedade 'name' é uma string que representa o nome do grupo da tag para seleção.\n * Ela é refletida no DOM, permitindo que alterações no valor sejam refletidas no elemento HTML correspondente.\n */\n @Prop({ reflect: true }) readonly name: string = ''\n\n /**\n * A tag permite seleção múltipla.\n * */\n @Prop({ reflect: true }) readonly multiple: boolean = false\n\n /**\n * A tag está selecionada.\n * */\n @Prop({ reflect: true, mutable: true }) selected: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-tag-${tagId++}`\n\n /**\n * A propriedade 'color' permite definir a cor do componente.\n * Aceita valores como 'red', 'blue', entre outros, e é refletida no DOM.\n */\n @Prop({ reflect: true }) readonly color: string = ''\n\n /**\n * A propriedade 'density' permite definir a densidade do componente.\n * Aceita valores como 'small', 'medium' e 'large', e é refletida no DOM.\n */\n @Prop({ reflect: true }) readonly density: 'small' | 'medium' | 'large' = DENSITY_SMALL\n\n /**\n * A propriedade 'shape' define o formato do componente.\n * Valores possíveis:\n * - 'circle': Componente com formato circular.\n * - 'rounded': Componente com bordas arredondadas.\n * - 'default': Componente com formato padrão.\n */\n @Prop({ reflect: true }) readonly shape: 'circle' | 'rounded' | 'default' = SHAPE_DEFAULT\n\n /**\n * Status deve ser exibido.\n */\n @Prop({ reflect: true }) readonly status: boolean = false\n\n /**\n * Interação deve ser habilitada.\n */\n @Prop({ reflect: true, mutable: true }) interaction: boolean = false\n\n /**\n * Interação de seleção deve ser habilitada.\n * */\n @Prop({ reflect: true }) interactionSelect: boolean = false\n\n /**\n * Tag deve estar desabilitado.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Tag está selecionada.\n */\n @State() selectedClassValue: boolean = false\n\n /**\n * Evento emitido quando a tag é selecionada.\n */\n @Event() radioSelected: EventEmitter<string>\n\n @Watch('interaction')\n handleInteractionChange(newValue: boolean) {\n if (newValue && this.interactionSelect) {\n console.warn(\n \"Aviso: 'interaction' e 'interactionSelect' não podem ser usados ao mesmo tempo. Alterando o 'interaction' para 'false'.\"\n )\n this.interaction = false\n }\n }\n\n @Watch('interactionSelect')\n handleInteractionSelectChange(newValue: boolean) {\n if (newValue && this.interaction) {\n console.warn(\n \"Aviso: 'interaction' e 'interactionSelect' não podem ser usados ao mesmo tempo. Alterando o 'interaction' para 'false'.\"\n )\n this.interaction = false\n }\n }\n\n componentWillLoad() {\n if (this.interaction && this.interactionSelect) {\n console.warn(\n \"Aviso: 'interaction' e 'interactionSelect' não podem ser usados ao mesmo tempo. Alterando o 'interaction' para 'false'.\"\n )\n this.interaction = false\n }\n }\n connectedCallback() {\n this.selectedClassValue = this.selected\n }\n\n @Watch('selected')\n handleSelectedChange(newValue: boolean) {\n this.selectedClassValue = newValue\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-tag': true,\n interaction: this.interaction,\n 'interaction-select': this.interactionSelect,\n selected: this.selectedClassValue,\n [this.color]: !!this.color,\n [DENSITY_SMALL]: this.density === DENSITY_SMALL,\n [DENSITY_MEDIUM]: this.density === DENSITY_MEDIUM,\n [DENSITY_LARGE]: this.density === DENSITY_LARGE,\n count: this.shape === SHAPE_ROUNDED,\n icon: this.shape === SHAPE_CIRCLE,\n status: this.status,\n }\n }\n\n private renderIcon() {\n return this.iconName && this.iconName.trim() !== '' ? (\n <br-icon icon-name={this.iconName} aria-hidden=\"true\" />\n ) : null\n }\n\n private renderLabel() {\n return this.shape !== SHAPE_CIRCLE && !this.status ? <span>{this.label}</span> : null\n }\n\n private renderCloseButton() {\n if (!this.interaction) return null\n return (\n <br-button\n type=\"button\"\n shape=\"circle\"\n emphasis=\"primary\"\n aria-label=\"Fechar\"\n onClick={this.handleClose}\n disabled={this.disabled}\n >\n <br-icon icon-name=\"fa-solid:times\"></br-icon>\n </br-button>\n )\n }\n\n private renderStatusLabel() {\n return this.status ? <span class=\"tag-spacing-status\">{this.label}</span> : null\n }\n\n private handleClose = () => {\n this.el.remove()\n }\n\n private handleChangeValueChecked = () => {\n if (!this.multiple) {\n this.radioSelected.emit(this.name)\n }\n this.selected = !this.selected\n }\n\n private handleChangeRadioValue = (event: MouseEvent) => {\n if (!this.multiple) {\n this.radioSelected.emit(this.name)\n this.selected = (event.target as HTMLInputElement).checked\n }\n }\n\n @Listen('radioSelected', { target: 'document' })\n handleCheckedChange(event: CustomEvent) {\n if (event.detail === this.name && this.el !== event.target) {\n this.selected = false\n }\n }\n\n render() {\n const mainTagContent = (\n <span class={this.getCssClassMap()} id={this.customId}>\n {this.renderIcon()}\n {this.renderLabel()}\n {this.renderCloseButton()}\n <slot></slot>\n </span>\n )\n\n return (\n <Host>\n {!this.status ? (\n mainTagContent\n ) : (\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {mainTagContent}\n {this.renderStatusLabel()}\n </div>\n )}\n\n {this.interactionSelect && (\n <span class={this.getCssClassMap()} id={this.customId}>\n {this.multiple ? (\n <input\n id={this.label}\n type=\"checkbox\"\n name={this.name}\n value={this.label}\n checked={this.selected}\n onClick={this.handleChangeValueChecked}\n disabled={this.disabled}\n />\n ) : (\n <input\n id={this.label}\n type=\"radio\"\n name={this.name}\n value={this.label}\n checked={this.selected}\n onClick={this.handleChangeRadioValue}\n disabled={this.disabled}\n />\n )}\n <label htmlFor={this.label}>\n {this.renderIcon()}\n <span>{this.label}</span>\n </label>\n </span>\n )}\n </Host>\n )\n }\n}\n\nlet tagId = 0\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"br-textarea.entry.esm.js","sources":["../../packages/webcomponents/src/components/textarea/textarea.scss?tag=br-textarea&encapsulation=shadow","../../packages/webcomponents/src/components/textarea/textarea.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/textarea/textarea\";\n\n:host {\n display: block;\n box-sizing: border-box;\n font-family: Rawline, Raleway, sans-serif;\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\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 exibido no textarea.\n * Pode ser alterado pelo usuário se a propriedade `readonly` não estiver ativa.\n */\n @Prop({ mutable: true, reflect: true }) value: string\n\n /**\n * Texto exibido como rótulo do input.\n */\n @Prop({ reflect: true }) readonly label: string\n\n /**\n * Texto exibido dentro do input quando está vazio, fornecendo uma dica ou sugestão ao usuário.\n */\n @Prop({ reflect: true }) readonly placeholder: string\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-textarea-${textareaId++}`\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 }) readonly 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 }) readonly maxlength: number = 0\n\n /**\n * Mostra o contador com a quantidade máxima de caracteres.\n */\n @Prop({ reflect: true }) readonly showCounter: boolean = false\n\n /**\n * Define o estado visual do componente, podendo ser 'danger', 'success' ou 'warning'.\n */\n @Prop({ reflect: true }) readonly state: 'danger' | 'success' | 'warning'\n /**\n * Ajusta a densidade do componente, podendo ser 'small', 'medium' ou 'large'.\n */\n @Prop({ reflect: true }) readonly 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 }) readonly 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 componentWillLoad() {\n this.currentLength = this.value?.length\n }\n\n /**\n * Valor atualizado do textarea\n */\n @Event() valueChange: EventEmitter<string>\n\n @Watch('value')\n valueChanged() {\n this.currentLength = this.value?.length\n }\n\n private readonly handleInput = (event: Event) => {\n this.value = (event.target as HTMLInputElement).value\n this.currentLength = this.value?.length\n this.valueChange.emit(this.value)\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.valueChange.emit(this.value)\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 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()}>\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.handleInput}\n {...(this.maxlength > 0 ? { maxLength: this.maxlength } : {})}\n ></textarea>\n <div class=\"text-base mt-1\">\n {this.showCounter && (\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\nlet textareaId = 0\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"br-textarea.entry.esm.js","sources":["../../packages/webcomponents/src/components/textarea/textarea.scss?tag=br-textarea&encapsulation=shadow","../../packages/webcomponents/src/components/textarea/textarea.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/textarea/textarea\";\n\n:host {\n display: block;\n box-sizing: border-box;\n font-family: Rawline, Raleway, sans-serif;\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\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 exibido no textarea.\n * Pode ser alterado pelo usuário se a propriedade `readonly` não estiver ativa.\n */\n @Prop({ mutable: true, reflect: true }) value: string\n\n /**\n * Texto exibido como rótulo do input.\n */\n @Prop({ reflect: true }) readonly label: string\n\n /**\n * Texto exibido dentro do input quando está vazio, fornecendo uma dica ou sugestão ao usuário.\n */\n @Prop({ reflect: true }) readonly placeholder: string\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-textarea-${textareaId++}`\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 }) readonly 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 }) readonly maxlength: number = 0\n\n /**\n * Mostra o contador com a quantidade máxima de caracteres.\n */\n @Prop({ reflect: true }) readonly showCounter: boolean = false\n\n /**\n * Define o estado visual do componente, podendo ser 'danger', 'success' ou 'warning'.\n */\n @Prop({ reflect: true }) readonly state: 'danger' | 'success' | 'warning'\n /**\n * Ajusta a densidade do componente, podendo ser 'small', 'medium' ou 'large'.\n */\n @Prop({ reflect: true }) readonly 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 }) readonly 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 componentWillLoad() {\n this.currentLength = this.value?.length\n }\n\n /**\n * Valor atualizado do textarea\n */\n @Event() valueChange: EventEmitter<string>\n\n @Watch('value')\n valueChanged() {\n this.currentLength = this.value?.length\n }\n\n private readonly handleInput = (event: Event) => {\n this.value = (event.target as HTMLInputElement).value\n this.currentLength = this.value?.length\n this.valueChange.emit(this.value)\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.valueChange.emit(this.value)\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 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()}>\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.handleInput}\n {...(this.maxlength > 0 ? { maxLength: this.maxlength } : {})}\n ></textarea>\n <div class=\"text-base mt-1\">\n {this.showCounter && (\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\nlet textareaId = 0\n"],"names":[],"mappings":";;;;;AAAA,MAAM,WAAW,GAAG,ml2DAAml2D;;MC2B1l2D,QAAQ,GAAA,MAAA;;;;;;;;;;;;;AAGA,IAAA,gBAAgB;AAEnC;;;AAGG;AACqC,IAAA,KAAK;AAE7C;;AAEG;AAC+B,IAAA,KAAK;AAEvC;;AAEG;AAC+B,IAAA,WAAW;AAE7C;;;AAGG;AAC+B,IAAA,QAAQ,GAAW,CAAA,YAAA,EAAe,UAAU,EAAE,EAAE;AAElF;;AAEG;IAC+B,QAAQ,GAAY,KAAK;AAE3D;;AAEG;IAC+B,SAAS,GAAW,CAAC;AAEvD;;AAEG;IAC+B,WAAW,GAAY,KAAK;AAE9D;;AAEG;AAC+B,IAAA,KAAK;AACvC;;AAEG;IAC+B,OAAO,GAAiC,QAAQ;AAElF;;AAEG;IAC+B,QAAQ,GAAY,KAAK;AAE3D;;AAEG;AACM,IAAA,aAAa;IAEtB,iBAAiB,GAAA;QACf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM;;AAGzC;;AAEG;AACM,IAAA,WAAW;IAGpB,YAAY,GAAA;QACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM;;AAGxB,IAAA,WAAW,GAAG,CAAC,KAAY,KAAI;QAC9C,IAAI,CAAC,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;QACrD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM;QACvC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,KAAC;AAED;;;AAGG;IAEH,MAAM,QAAQ,CAAC,QAAgB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;QACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM;QACvC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;IAG3B,cAAc,GAAA;QACpB,OAAO;AACL,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,OAAO;AAC/B,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,KAAK,QAAQ;AACjC,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,OAAO;AAC/B,YAAA,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS;AACjC,YAAA,MAAM,EAAE,IAAI,CAAC,KAAK,KAAK,QAAQ;AAC/B,YAAA,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS;SAClC;;IAGH,MAAM,GAAA;QACJ,MAAM,mBAAmB,GAAW,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa;AACvE,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC;AAE5C,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAAA,EAC/B,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,EAAE,EAAA,EACnC,IAAI,CAAC,QAAQ,IACZ,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,kBAAkB,EAAA,EAC3B,CAAO,CAAA,OAAA,EAAA,EAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAG,EAAA,IAAI,CAAC,KAAK,CAAS,CAC/C,KAEN,CAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAA,EAAG,IAAI,CAAC,KAAK,CAAS,CACpD,EACD,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,EAAE,EAAA,EACpC,CACE,CAAA,UAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EAAE,EAAE,IAAI,CAAC,QAAQ,EACjB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,WAAW,EAAA,IACpB,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,EACnD,CAAA,EACZ,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,gBAAgB,EAAA,EACxB,IAAI,CAAC,WAAW,KACf,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACG,aAAa,IACZ,CAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,WAAW,EAAA,WAAA,EAAW,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,UAAU,EAAA,aAC7D,CAAA,CAAA,QAAA,EAAA,IAAA,EAAS,mBAAmB,CAAU,gBACxC,KAEP,YAAM,KAAK,EAAC,OAAO,EAAA,WAAA,EAAW,QAAQ,EAAA,4BACnB,CAAS,CAAA,QAAA,EAAA,IAAA,EAAA,IAAI,CAAC,SAAS,CAAU,gBAC7C,CACR,CACG,CACP,CACG,EACN,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,CACF,CACF,CACD;;;;;;;AAKb,IAAI,UAAU,GAAG,CAAC;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"br-upload.entry.esm.js","sources":["../../packages/webcomponents/src/components/upload/upload.scss?tag=br-upload&encapsulation=shadow","../../packages/webcomponents/src/components/upload/upload.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/upload/upload\";\n\n:host {\n display: block;\n}\n","import { AttachInternals, Component, Element, h, Host, Prop, State } from '@stencil/core'\n\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 * 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 * 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 private getCssClassMap(): CssClassMap {\n return {\n 'br-upload': true,\n [this.state]: true,\n }\n }\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 private readonly handleInputChange = (event: Event) => {\n const target = event.target as HTMLInputElement\n this.onInputChange(target.files)\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 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-label=\"enviar arquivo\"\n onChange={this.handleInputChange}\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"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"br-upload.entry.esm.js","sources":["../../packages/webcomponents/src/components/upload/upload.scss?tag=br-upload&encapsulation=shadow","../../packages/webcomponents/src/components/upload/upload.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/upload/upload\";\n\n:host {\n display: block;\n}\n","import { AttachInternals, Component, Element, h, Host, Prop, State } from '@stencil/core'\n\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 * 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 * 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 private getCssClassMap(): CssClassMap {\n return {\n 'br-upload': true,\n [this.state]: true,\n }\n }\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 private readonly handleInputChange = (event: Event) => {\n const target = event.target as HTMLInputElement\n this.onInputChange(target.files)\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 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-label=\"enviar arquivo\"\n onChange={this.handleInputChange}\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"],"names":[],"mappings":"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"}