@govbr-ds/webcomponents 2.0.0-next.54 → 2.0.0-next.55

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 (272) hide show
  1. package/dist/cjs/br-avatar.cjs.entry.js +1 -1
  2. package/dist/cjs/br-breadcrumb.cjs.entry.js +1 -1
  3. package/dist/cjs/br-button_2.cjs.entry.js +1 -1
  4. package/dist/cjs/br-card.cjs.entry.js +1 -1
  5. package/dist/cjs/br-checkbox.br-input.br-radio.entry.cjs.js.map +1 -1
  6. package/dist/cjs/br-checkbox_3.cjs.entry.js +27 -7
  7. package/dist/cjs/br-checkgroup.cjs.entry.js +23 -2
  8. package/dist/cjs/br-checkgroup.entry.cjs.js.map +1 -1
  9. package/dist/cjs/br-collapse.cjs.entry.js +3 -3
  10. package/dist/cjs/br-divider.cjs.entry.js +1 -1
  11. package/dist/cjs/br-dropdown_2.cjs.entry.js +4 -4
  12. package/dist/cjs/br-footer-category.cjs.entry.js +1 -1
  13. package/dist/cjs/br-footer-item.cjs.entry.js +1 -1
  14. package/dist/cjs/br-footer-legal.cjs.entry.js +1 -1
  15. package/dist/cjs/br-footer-logo.cjs.entry.js +1 -1
  16. package/dist/cjs/br-footer-social.cjs.entry.js +1 -1
  17. package/dist/cjs/br-footer.cjs.entry.js +1 -1
  18. package/dist/cjs/br-item_2.cjs.entry.js +3 -3
  19. package/dist/cjs/br-loading.cjs.entry.js +1 -1
  20. package/dist/cjs/br-magic-button.cjs.entry.js +1 -1
  21. package/dist/cjs/br-message.cjs.entry.js +2 -2
  22. package/dist/cjs/br-modal.cjs.entry.js +2 -2
  23. package/dist/cjs/br-pagination.cjs.entry.js +3 -3
  24. package/dist/cjs/br-scrim.cjs.entry.js +3 -3
  25. package/dist/cjs/br-sign-in.cjs.entry.js +1 -1
  26. package/dist/cjs/br-step-item.cjs.entry.js +3 -3
  27. package/dist/cjs/br-step.cjs.entry.js +4 -4
  28. package/dist/cjs/br-switch.cjs.entry.js +2 -2
  29. package/dist/cjs/br-tab-item.cjs.entry.js +2 -2
  30. package/dist/cjs/br-tab.cjs.entry.js +2 -2
  31. package/dist/cjs/br-table-cell.cjs.entry.js +1 -1
  32. package/dist/cjs/br-table-header-cell.cjs.entry.js +2 -2
  33. package/dist/cjs/br-table-header-row.cjs.entry.js +1 -1
  34. package/dist/cjs/br-table-row.cjs.entry.js +1 -1
  35. package/dist/cjs/br-table.cjs.entry.js +1 -1
  36. package/dist/cjs/br-tag.cjs.entry.js +2 -2
  37. package/dist/cjs/br-textarea.cjs.entry.js +2 -2
  38. package/dist/cjs/br-tooltip.cjs.entry.js +7 -7
  39. package/dist/cjs/br-tooltip.entry.cjs.js.map +1 -1
  40. package/dist/cjs/br-upload.cjs.entry.js +1 -1
  41. package/dist/cjs/{index-BrKD46WW.js → index-BMH6bh-k.js} +5 -5
  42. package/dist/cjs/{index-BrKD46WW.js.map → index-BMH6bh-k.js.map} +1 -1
  43. package/dist/cjs/loader.cjs.js +2 -2
  44. package/dist/cjs/webcomponents.cjs.js +2 -2
  45. package/dist/collection/components/checkbox/checkbox.css +1 -1
  46. package/dist/collection/components/checkbox/checkbox.js +67 -2
  47. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  48. package/dist/collection/components/checkgroup/checkgroup.js +24 -2
  49. package/dist/collection/components/checkgroup/checkgroup.js.map +1 -1
  50. package/dist/collection/components/tooltip/tooltip.css +1 -1
  51. package/dist/collection/components/tooltip/tooltip.js +9 -9
  52. package/dist/collection/components/tooltip/tooltip.js.map +1 -1
  53. package/dist/components/br-avatar.js +2 -2
  54. package/dist/components/br-breadcrumb.js +6 -6
  55. package/dist/components/br-button.js +4 -4
  56. package/dist/components/br-card.js +1 -1
  57. package/dist/components/br-checkbox.js +4 -4
  58. package/dist/components/br-checkgroup.js +35 -12
  59. package/dist/components/br-checkgroup.js.map +1 -1
  60. package/dist/components/br-collapse.js +1 -1
  61. package/dist/components/br-divider.js +3 -3
  62. package/dist/components/br-dropdown.js +1 -1
  63. package/dist/components/br-footer-category.js +6 -6
  64. package/dist/components/br-footer-item.js +2 -2
  65. package/dist/components/br-footer-legal.js +1 -1
  66. package/dist/components/br-footer-logo.js +1 -1
  67. package/dist/components/br-footer-social.js +3 -3
  68. package/dist/components/br-footer.js +2 -2
  69. package/dist/components/br-icon.js +1 -1
  70. package/dist/components/br-input.js +3 -3
  71. package/dist/components/br-item.js +4 -4
  72. package/dist/components/br-list.js +1 -1
  73. package/dist/components/br-loading.js +1 -1
  74. package/dist/components/br-magic-button.js +1 -1
  75. package/dist/components/br-message.js +4 -4
  76. package/dist/components/br-modal.js +4 -4
  77. package/dist/components/br-pagination.js +19 -19
  78. package/dist/components/br-radio.js +3 -3
  79. package/dist/components/br-scrim.js +3 -3
  80. package/dist/components/br-select.js +4 -4
  81. package/dist/components/br-sign-in.js +2 -2
  82. package/dist/components/br-step-item.js +5 -5
  83. package/dist/components/br-step.js +4 -4
  84. package/dist/components/br-switch.js +2 -2
  85. package/dist/components/br-tab-item.js +2 -2
  86. package/dist/components/br-tab.js +3 -3
  87. package/dist/components/br-table-cell.js +1 -1
  88. package/dist/components/br-table-header-cell.js +2 -2
  89. package/dist/components/br-table-header-row.js +1 -1
  90. package/dist/components/br-table-row.js +1 -1
  91. package/dist/components/br-table.js +1 -1
  92. package/dist/components/br-tag.js +4 -4
  93. package/dist/components/br-textarea.js +2 -2
  94. package/dist/components/br-tooltip.js +23 -17
  95. package/dist/components/br-tooltip.js.map +1 -1
  96. package/dist/components/br-upload.js +3 -3
  97. package/dist/components/index.js +1 -1
  98. package/dist/components/{p-DlfYdKVK.js → p-B9ur_q7F.js} +3 -3
  99. package/dist/components/{p-BvXWoooF.js → p-BJ-YM29G.js} +6 -6
  100. package/dist/components/{p-CbfkIRbr.js → p-BWP8r0JT.js} +5 -5
  101. package/dist/components/{p-C7SshDLN.js → p-BoeRIvHZ.js} +3 -3
  102. package/dist/components/{p-CAhd8ZDl.js → p-CQp43eWt.js} +6 -6
  103. package/dist/components/{p-CJYtJ9rA.js → p-CRZKRz2a.js} +6 -6
  104. package/dist/components/{p-DdHlqVAA.js → p-CYcDQOBK.js} +4 -4
  105. package/dist/components/{p-CluYuP1E.js → p-CrDxo3vJ.js} +11 -11
  106. package/dist/components/{p-fVgzFU2x.js → p-Crb-x7mx.js} +5 -5
  107. package/dist/components/{p-UEoE4lEZ.js → p-DSIavcee.js} +5 -5
  108. package/dist/components/{p-UEoE4lEZ.js.map → p-DSIavcee.js.map} +1 -1
  109. package/dist/components/{p-BP_bkfX0.js → p-Df9PHAqP.js} +5 -5
  110. package/dist/components/{p-5SSsI0rM.js → p-qE6Oj6FE.js} +39 -16
  111. package/dist/components/p-qE6Oj6FE.js.map +1 -0
  112. package/dist/custom-elements.json +64 -3
  113. package/dist/esm/br-avatar.entry.js +1 -1
  114. package/dist/esm/br-breadcrumb.entry.js +1 -1
  115. package/dist/esm/br-button_2.entry.js +1 -1
  116. package/dist/esm/br-card.entry.js +1 -1
  117. package/dist/esm/br-checkbox.br-input.br-radio.entry.js.map +1 -1
  118. package/dist/esm/br-checkbox_3.entry.js +27 -7
  119. package/dist/esm/br-checkgroup.entry.js +23 -2
  120. package/dist/esm/br-checkgroup.entry.js.map +1 -1
  121. package/dist/esm/br-collapse.entry.js +3 -3
  122. package/dist/esm/br-divider.entry.js +1 -1
  123. package/dist/esm/br-dropdown_2.entry.js +4 -4
  124. package/dist/esm/br-footer-category.entry.js +1 -1
  125. package/dist/esm/br-footer-item.entry.js +1 -1
  126. package/dist/esm/br-footer-legal.entry.js +1 -1
  127. package/dist/esm/br-footer-logo.entry.js +1 -1
  128. package/dist/esm/br-footer-social.entry.js +1 -1
  129. package/dist/esm/br-footer.entry.js +1 -1
  130. package/dist/esm/br-item_2.entry.js +3 -3
  131. package/dist/esm/br-loading.entry.js +1 -1
  132. package/dist/esm/br-magic-button.entry.js +1 -1
  133. package/dist/esm/br-message.entry.js +2 -2
  134. package/dist/esm/br-modal.entry.js +2 -2
  135. package/dist/esm/br-pagination.entry.js +3 -3
  136. package/dist/esm/br-scrim.entry.js +3 -3
  137. package/dist/esm/br-sign-in.entry.js +1 -1
  138. package/dist/esm/br-step-item.entry.js +3 -3
  139. package/dist/esm/br-step.entry.js +4 -4
  140. package/dist/esm/br-switch.entry.js +2 -2
  141. package/dist/esm/br-tab-item.entry.js +2 -2
  142. package/dist/esm/br-tab.entry.js +2 -2
  143. package/dist/esm/br-table-cell.entry.js +1 -1
  144. package/dist/esm/br-table-header-cell.entry.js +2 -2
  145. package/dist/esm/br-table-header-row.entry.js +1 -1
  146. package/dist/esm/br-table-row.entry.js +1 -1
  147. package/dist/esm/br-table.entry.js +1 -1
  148. package/dist/esm/br-tag.entry.js +2 -2
  149. package/dist/esm/br-textarea.entry.js +2 -2
  150. package/dist/esm/br-tooltip.entry.js +7 -7
  151. package/dist/esm/br-tooltip.entry.js.map +1 -1
  152. package/dist/esm/br-upload.entry.js +1 -1
  153. package/dist/esm/{index-BfdJCt8z.js → index-B8ePxGky.js} +5 -5
  154. package/dist/esm/{index-BfdJCt8z.js.map → index-B8ePxGky.js.map} +1 -1
  155. package/dist/esm/loader.js +3 -3
  156. package/dist/esm/webcomponents.js +3 -3
  157. package/dist/hydrate/index.js +87 -42
  158. package/dist/hydrate/index.mjs +87 -42
  159. package/dist/types/components/checkbox/checkbox.d.ts +16 -0
  160. package/dist/types/components/checkgroup/checkgroup.d.ts +4 -0
  161. package/dist/types/components/tooltip/tooltip.d.ts +8 -2
  162. package/dist/types/components.d.ts +19 -4
  163. package/dist/webcomponents/br-checkbox.br-input.br-radio.entry.esm.js.map +1 -1
  164. package/dist/webcomponents/br-checkgroup.entry.esm.js.map +1 -1
  165. package/dist/webcomponents/br-tooltip.entry.esm.js.map +1 -1
  166. package/dist/webcomponents/{p-385f1fc1.entry.js → p-0063c1ca.entry.js} +2 -2
  167. package/dist/webcomponents/{p-b1588547.entry.js → p-01cb070e.entry.js} +3 -3
  168. package/dist/webcomponents/p-01cb070e.entry.js.map +1 -0
  169. package/dist/webcomponents/{p-51a4437b.entry.js → p-0598c69a.entry.js} +3 -3
  170. package/dist/webcomponents/p-0598c69a.entry.js.map +1 -0
  171. package/dist/webcomponents/{p-09ea68bf.entry.js → p-0b416eb1.entry.js} +4 -4
  172. package/dist/webcomponents/p-0b416eb1.entry.js.map +1 -0
  173. package/dist/webcomponents/{p-064cebca.entry.js → p-0c36aed5.entry.js} +2 -2
  174. package/dist/webcomponents/{p-896eba3e.entry.js → p-0dd13c9e.entry.js} +3 -3
  175. package/dist/webcomponents/p-0dd13c9e.entry.js.map +1 -0
  176. package/dist/webcomponents/{p-9104f854.entry.js → p-1e33522c.entry.js} +3 -3
  177. package/dist/webcomponents/p-1e33522c.entry.js.map +1 -0
  178. package/dist/webcomponents/{p-b0af2ffd.entry.js → p-28a4e258.entry.js} +2 -2
  179. package/dist/webcomponents/{p-211aba9d.entry.js → p-2cf9bcb1.entry.js} +3 -3
  180. package/dist/webcomponents/p-2cf9bcb1.entry.js.map +1 -0
  181. package/dist/webcomponents/{p-eb3ac13c.entry.js → p-2d543ca6.entry.js} +2 -2
  182. package/dist/webcomponents/{p-66ad5bd5.entry.js → p-2ea132c9.entry.js} +4 -4
  183. package/dist/webcomponents/p-2ea132c9.entry.js.map +1 -0
  184. package/dist/webcomponents/{p-cabfc229.entry.js → p-30a4f7e6.entry.js} +2 -2
  185. package/dist/webcomponents/{p-9a159d6b.entry.js → p-546d525e.entry.js} +4 -4
  186. package/dist/webcomponents/p-546d525e.entry.js.map +1 -0
  187. package/dist/webcomponents/{p-4765c88d.entry.js → p-56303a31.entry.js} +2 -2
  188. package/dist/webcomponents/{p-3f1cc792.entry.js → p-58ee07c6.entry.js} +2 -2
  189. package/dist/webcomponents/{p-8a881b03.entry.js → p-5df97a1d.entry.js} +4 -4
  190. package/dist/webcomponents/p-5df97a1d.entry.js.map +1 -0
  191. package/dist/webcomponents/{p-57265844.entry.js → p-6ee1f25c.entry.js} +2 -2
  192. package/dist/webcomponents/{p-df20226f.entry.js → p-7e6d3c45.entry.js} +22 -16
  193. package/dist/webcomponents/p-7e6d3c45.entry.js.map +1 -0
  194. package/dist/webcomponents/{p-c3741444.entry.js → p-83b768fa.entry.js} +2 -2
  195. package/dist/webcomponents/{p-8d46e898.entry.js → p-8e565a3e.entry.js} +33 -11
  196. package/dist/webcomponents/p-8e565a3e.entry.js.map +1 -0
  197. package/dist/webcomponents/{p-455f7879.entry.js → p-9459386e.entry.js} +2 -2
  198. package/dist/webcomponents/{p-BfdJCt8z.js → p-B8ePxGky.js} +5 -5
  199. package/dist/webcomponents/{p-BfdJCt8z.js.map → p-B8ePxGky.js.map} +1 -1
  200. package/dist/webcomponents/{p-79900dbe.entry.js → p-a2ee4a54.entry.js} +2 -2
  201. package/dist/webcomponents/{p-64ec3ea7.entry.js → p-a63043c9.entry.js} +3 -3
  202. package/dist/webcomponents/{p-64ec3ea7.entry.js.map → p-a63043c9.entry.js.map} +1 -1
  203. package/dist/webcomponents/{p-4f8a3137.entry.js → p-ada2e0bd.entry.js} +2 -2
  204. package/dist/webcomponents/{p-c39f0d13.entry.js → p-b54ef824.entry.js} +5 -5
  205. package/dist/webcomponents/p-b54ef824.entry.js.map +1 -0
  206. package/dist/webcomponents/{p-2b18d6b0.entry.js → p-b9898fce.entry.js} +3 -3
  207. package/dist/webcomponents/p-b9898fce.entry.js.map +1 -0
  208. package/dist/webcomponents/{p-bff8b2de.entry.js → p-bee32cb5.entry.js} +2 -2
  209. package/dist/webcomponents/{p-828603e5.entry.js → p-bfc505b3.entry.js} +2 -2
  210. package/dist/webcomponents/{p-05d12063.entry.js → p-c0fc2f0b.entry.js} +34 -14
  211. package/dist/webcomponents/p-c0fc2f0b.entry.js.map +1 -0
  212. package/dist/webcomponents/{p-113d6d45.entry.js → p-c3911457.entry.js} +2 -2
  213. package/dist/webcomponents/{p-b5ea91cb.entry.js → p-cc4b8946.entry.js} +3 -3
  214. package/dist/webcomponents/p-cc4b8946.entry.js.map +1 -0
  215. package/dist/webcomponents/{p-b25f7786.entry.js → p-dba3dd23.entry.js} +2 -2
  216. package/dist/webcomponents/{p-41d25819.entry.js → p-dc2029cf.entry.js} +2 -2
  217. package/dist/webcomponents/{p-9f3917a2.entry.js → p-e9fffc9a.entry.js} +5 -5
  218. package/dist/webcomponents/p-e9fffc9a.entry.js.map +1 -0
  219. package/dist/webcomponents/{p-40d777f1.entry.js → p-fa825ada.entry.js} +2 -2
  220. package/dist/webcomponents/{p-91449297.entry.js → p-fc202c5e.entry.js} +2 -2
  221. package/dist/webcomponents/{p-2699dd80.entry.js → p-ffb0524d.entry.js} +4 -4
  222. package/dist/webcomponents/p-ffb0524d.entry.js.map +1 -0
  223. package/dist/webcomponents/webcomponents.esm.js +16 -16
  224. package/dist/webcomponents.html-custom-data.json +6 -1
  225. package/package.json +1 -1
  226. package/dist/components/p-5SSsI0rM.js.map +0 -1
  227. package/dist/webcomponents/p-05d12063.entry.js.map +0 -1
  228. package/dist/webcomponents/p-09ea68bf.entry.js.map +0 -1
  229. package/dist/webcomponents/p-211aba9d.entry.js.map +0 -1
  230. package/dist/webcomponents/p-2699dd80.entry.js.map +0 -1
  231. package/dist/webcomponents/p-2b18d6b0.entry.js.map +0 -1
  232. package/dist/webcomponents/p-51a4437b.entry.js.map +0 -1
  233. package/dist/webcomponents/p-66ad5bd5.entry.js.map +0 -1
  234. package/dist/webcomponents/p-896eba3e.entry.js.map +0 -1
  235. package/dist/webcomponents/p-8a881b03.entry.js.map +0 -1
  236. package/dist/webcomponents/p-8d46e898.entry.js.map +0 -1
  237. package/dist/webcomponents/p-9104f854.entry.js.map +0 -1
  238. package/dist/webcomponents/p-9a159d6b.entry.js.map +0 -1
  239. package/dist/webcomponents/p-9f3917a2.entry.js.map +0 -1
  240. package/dist/webcomponents/p-b1588547.entry.js.map +0 -1
  241. package/dist/webcomponents/p-b5ea91cb.entry.js.map +0 -1
  242. package/dist/webcomponents/p-c39f0d13.entry.js.map +0 -1
  243. package/dist/webcomponents/p-df20226f.entry.js.map +0 -1
  244. /package/dist/components/{p-DlfYdKVK.js.map → p-B9ur_q7F.js.map} +0 -0
  245. /package/dist/components/{p-BvXWoooF.js.map → p-BJ-YM29G.js.map} +0 -0
  246. /package/dist/components/{p-CbfkIRbr.js.map → p-BWP8r0JT.js.map} +0 -0
  247. /package/dist/components/{p-C7SshDLN.js.map → p-BoeRIvHZ.js.map} +0 -0
  248. /package/dist/components/{p-CAhd8ZDl.js.map → p-CQp43eWt.js.map} +0 -0
  249. /package/dist/components/{p-CJYtJ9rA.js.map → p-CRZKRz2a.js.map} +0 -0
  250. /package/dist/components/{p-DdHlqVAA.js.map → p-CYcDQOBK.js.map} +0 -0
  251. /package/dist/components/{p-CluYuP1E.js.map → p-CrDxo3vJ.js.map} +0 -0
  252. /package/dist/components/{p-fVgzFU2x.js.map → p-Crb-x7mx.js.map} +0 -0
  253. /package/dist/components/{p-BP_bkfX0.js.map → p-Df9PHAqP.js.map} +0 -0
  254. /package/dist/webcomponents/{p-385f1fc1.entry.js.map → p-0063c1ca.entry.js.map} +0 -0
  255. /package/dist/webcomponents/{p-064cebca.entry.js.map → p-0c36aed5.entry.js.map} +0 -0
  256. /package/dist/webcomponents/{p-b0af2ffd.entry.js.map → p-28a4e258.entry.js.map} +0 -0
  257. /package/dist/webcomponents/{p-eb3ac13c.entry.js.map → p-2d543ca6.entry.js.map} +0 -0
  258. /package/dist/webcomponents/{p-cabfc229.entry.js.map → p-30a4f7e6.entry.js.map} +0 -0
  259. /package/dist/webcomponents/{p-4765c88d.entry.js.map → p-56303a31.entry.js.map} +0 -0
  260. /package/dist/webcomponents/{p-3f1cc792.entry.js.map → p-58ee07c6.entry.js.map} +0 -0
  261. /package/dist/webcomponents/{p-57265844.entry.js.map → p-6ee1f25c.entry.js.map} +0 -0
  262. /package/dist/webcomponents/{p-c3741444.entry.js.map → p-83b768fa.entry.js.map} +0 -0
  263. /package/dist/webcomponents/{p-455f7879.entry.js.map → p-9459386e.entry.js.map} +0 -0
  264. /package/dist/webcomponents/{p-79900dbe.entry.js.map → p-a2ee4a54.entry.js.map} +0 -0
  265. /package/dist/webcomponents/{p-4f8a3137.entry.js.map → p-ada2e0bd.entry.js.map} +0 -0
  266. /package/dist/webcomponents/{p-bff8b2de.entry.js.map → p-bee32cb5.entry.js.map} +0 -0
  267. /package/dist/webcomponents/{p-828603e5.entry.js.map → p-bfc505b3.entry.js.map} +0 -0
  268. /package/dist/webcomponents/{p-113d6d45.entry.js.map → p-c3911457.entry.js.map} +0 -0
  269. /package/dist/webcomponents/{p-b25f7786.entry.js.map → p-dba3dd23.entry.js.map} +0 -0
  270. /package/dist/webcomponents/{p-41d25819.entry.js.map → p-dc2029cf.entry.js.map} +0 -0
  271. /package/dist/webcomponents/{p-40d777f1.entry.js.map → p-fa825ada.entry.js.map} +0 -0
  272. /package/dist/webcomponents/{p-91449297.entry.js.map → p-fc202c5e.entry.js.map} +0 -0
@@ -66,7 +66,18 @@ export declare class Checkbox {
66
66
  * **Nota:** Esta propriedade não deve ser utilizada para determinar se o checkbox está selecionado; para verificar o estado de seleção, use a propriedade `checked`.
67
67
  */
68
68
  readonly value: string;
69
+ /**
70
+ * Indica se o checkbox é pai de um grupo de checkboxes.
71
+ */
72
+ readonly isFather: boolean;
73
+ /**
74
+ * Indica se o slot default possui conteúdo.
75
+ */
69
76
  slotDefault: boolean;
77
+ /**
78
+ * Define o número de checkboxes filhos em um grupo de checkboxes.
79
+ */
80
+ numberOfChildren: number;
70
81
  /**
71
82
  * Disparado depois que o valor do `checked` foi alterado
72
83
  */
@@ -90,5 +101,10 @@ export declare class Checkbox {
90
101
  * Inverte o valor da prop `checked`
91
102
  */
92
103
  toggleChecked(): Promise<void>;
104
+ /**
105
+ * Define o número de checkboxes filhos em um grupo de checkboxes.
106
+ * @param value Número de checkboxes filhos.
107
+ */
108
+ setNumberOfChildren(value: number): Promise<void>;
93
109
  render(): any;
94
110
  }
@@ -50,11 +50,15 @@ export declare class Checkgroup {
50
50
  * Indica se o grupo de checkboxes está indeterminado
51
51
  */
52
52
  isIndeterminate: boolean;
53
+ numberOfChildren: number;
53
54
  componentWillLoad(): void;
55
+ componentDidLoad(): void;
54
56
  private getCssClassMap;
55
57
  handleChange(event: Event): void;
56
58
  private isParentCheckbox;
57
59
  private readonly handleAllCheckboxChange;
58
60
  private updateGroupState;
61
+ private setNumberOfChildren;
62
+ private monitorSlotChanges;
59
63
  render(): any;
60
64
  }
@@ -85,11 +85,17 @@ export declare class Tooltip {
85
85
  /**
86
86
  * Evento emitido quando o tooltip é aberto.
87
87
  */
88
- brDidOpen: EventEmitter<void>;
88
+ brDidOpen: EventEmitter<{
89
+ id: string;
90
+ visible: boolean;
91
+ }>;
89
92
  /**
90
93
  * Evento emitido quando o tooltip é fechado.
91
94
  */
92
- brDidClose: EventEmitter<void>;
95
+ brDidClose: EventEmitter<{
96
+ id: string;
97
+ visible: boolean;
98
+ }>;
93
99
  /**
94
100
  * Listener para o evento de foco no elemento acionador.
95
101
  * Este evento é utilizado para exibir o tooltip quando o elemento acionador recebe foco.
@@ -211,6 +211,11 @@ export namespace Components {
211
211
  * @default false
212
212
  */
213
213
  "indeterminate": boolean;
214
+ /**
215
+ * Indica se o checkbox é pai de um grupo de checkboxes.
216
+ * @default false
217
+ */
218
+ "isFather": boolean;
214
219
  /**
215
220
  * Texto descritivo exibido à direita do checkbox. Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.
216
221
  */
@@ -224,6 +229,11 @@ export namespace Components {
224
229
  * @param value Novo valor para o estado indeterminado.
225
230
  */
226
231
  "setIndeterminate": (value: boolean) => Promise<void>;
232
+ /**
233
+ * Define o número de checkboxes filhos em um grupo de checkboxes.
234
+ * @param value Número de checkboxes filhos.
235
+ */
236
+ "setNumberOfChildren": (value: number) => Promise<void>;
227
237
  /**
228
238
  * Indica a validade do checkbox. Valores possíveis: 'valid': O checkbox é considerado válido. 'invalid': O checkbox é considerado inválido. Se não for especificado, o valor padrão é `null`, indicando que a validade não foi definida.
229
239
  */
@@ -2749,8 +2759,8 @@ declare global {
2749
2759
  new (): HTMLBrTextareaElement;
2750
2760
  };
2751
2761
  interface HTMLBrTooltipElementEventMap {
2752
- "brDidOpen": void;
2753
- "brDidClose": void;
2762
+ "brDidOpen": { id: string; visible: boolean };
2763
+ "brDidClose": { id: string; visible: boolean };
2754
2764
  }
2755
2765
  /**
2756
2766
  * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https:
@@ -3027,6 +3037,11 @@ declare namespace LocalJSX {
3027
3037
  * @default false
3028
3038
  */
3029
3039
  "indeterminate"?: boolean;
3040
+ /**
3041
+ * Indica se o checkbox é pai de um grupo de checkboxes.
3042
+ * @default false
3043
+ */
3044
+ "isFather"?: boolean;
3030
3045
  /**
3031
3046
  * Texto descritivo exibido à direita do checkbox. Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.
3032
3047
  */
@@ -4710,11 +4725,11 @@ declare namespace LocalJSX {
4710
4725
  /**
4711
4726
  * Evento emitido quando o tooltip é fechado.
4712
4727
  */
4713
- "onBrDidClose"?: (event: BrTooltipCustomEvent<void>) => void;
4728
+ "onBrDidClose"?: (event: BrTooltipCustomEvent<{ id: string; visible: boolean }>) => void;
4714
4729
  /**
4715
4730
  * Evento emitido quando o tooltip é aberto.
4716
4731
  */
4717
- "onBrDidOpen"?: (event: BrTooltipCustomEvent<void>) => void;
4732
+ "onBrDidOpen"?: (event: BrTooltipCustomEvent<{ id: string; visible: boolean }>) => void;
4718
4733
  /**
4719
4734
  * Define a posição do tooltip em relação ao elemento acionador. As opções disponíveis são: 'top', 'bottom', 'left' e 'right'.
4720
4735
  * @default 'top'
@@ -1 +1 @@
1
- {"version":3,"file":"br-checkbox.br-input.br-radio.entry.esm.js","sources":["../../packages/webcomponents/src/components/checkbox/checkbox.scss?tag=br-checkbox&encapsulation=shadow","../../packages/webcomponents/src/components/checkbox/checkbox.tsx","../../packages/webcomponents/src/components/input/input.scss?tag=br-input&encapsulation=shadow","../../packages/webcomponents/src/components/input/input.tsx","../../packages/webcomponents/src/components/radio/radio.scss?tag=br-radio&encapsulation=shadow","../../packages/webcomponents/src/components/radio/radio.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/checkbox/checkbox\";\n\n:host {\n display: inline-block;\n\n .br-checkbox {\n --checkbox-padding: var(--spacing-scale-half);\n --checkbox-size: 24px;\n\n display: flex;\n position: relative;\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/checkbox?tab=designer).\n *\n * @slot default - O texto descritivo pode ser passado por propriedade (label) ou por slot.\n *\n * @example\n * ```html\n * <br-checkbox label=\"Aceito os termos\"></br-checkbox>\n * ```\n */\n@Component({\n tag: 'br-checkbox',\n styleUrl: 'checkbox.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Checkbox {\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: HTMLBrCheckboxElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define o estado intermediário do checkbox.\n * Quando verdadeiro, exibe uma marcação parcial visual que indica seleção parcial.\n * Útil para representar grupos onde alguns itens estão selecionados, mas não todos.\n * Ao clicar no checkbox neste estado, ele será automaticamente alterado para marcado.\n */\n @Prop({ reflect: true, mutable: true }) indeterminate: 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-checkbox-${checkboxId++}`\n\n /**\n * Desativa o checkbox, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Define se o label associado ao checkbox deve ser oculto.\n * Se definido como verdadeiro, o texto do label será oculto, mas o checkbox ainda estará visível e funcional.\n */\n @Prop({ reflect: true }) readonly hasHiddenLabel: boolean = false\n\n /**\n * Texto descritivo exibido à direita do checkbox.\n * Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.\n */\n @Prop({ reflect: true }) readonly label: string\n\n /**\n * Define o nome do checkbox, que é utilizado para agrupar checkboxes 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 * Indica a validade do checkbox.\n * Valores possíveis:\n * 'valid': O checkbox é considerado válido.\n * 'invalid': O checkbox é considerado inválido.\n * Se não for especificado, o valor padrão é `null`, indicando que a validade não foi definida.\n */\n @Prop({ reflect: true }) readonly state: 'valid' | 'invalid'\n\n /**\n * Define o valor associado ao checkbox quando ele faz parte de um formulário nativo (`<form>`).\n * Esse valor é enviado com o formulário quando o checkbox está selecionado.\n * **Nota:** Esta propriedade não deve ser utilizada para determinar se o checkbox está selecionado; para verificar o estado de seleção, use a propriedade `checked`.\n */\n @Prop({ reflect: true }) readonly value: string\n\n @State() slotDefault: boolean = false\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n @Event() checkedChange: EventEmitter<boolean>\n\n /**\n * Disparado depois que o valor do `indeterminate` foi alterado.\n */\n @Event() indeterminateChange: EventEmitter<boolean>\n\n @Watch('indeterminate')\n updateIndeterminate(newValue: boolean) {\n const input = this.el.shadowRoot.querySelector('input')\n if (input !== null) {\n input.indeterminate = newValue\n }\n }\n\n componentWillLoad() {\n this.hasSlotContentDefault()\n }\n\n private hasSlotContentDefault(): void {\n this.slotDefault = this.el.innerHTML !== ''\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-checkbox': true,\n valid: this.state === 'valid',\n invalid: this.state === 'invalid',\n disabled: this.disabled,\n 'hidden-label': this.hasHiddenLabel,\n }\n }\n\n private getAriaCheckedValue(): string {\n if (this.indeterminate) {\n return 'mixed'\n }\n return this.checked ? 'true' : 'false'\n }\n\n private readonly handleCheckedChange = () => {\n if (this.indeterminate) {\n // Sai do estado indeterminado ao clicar e define como marcado\n this.indeterminate = false\n this.checked = true\n this.indeterminateChange.emit(this.indeterminate)\n } else {\n // Alterna entre marcado e desmarcado\n this.checked = !this.checked\n this.indeterminate = false\n }\n this.checkedChange.emit(this.checked)\n }\n\n /**\n * Define o estado indeterminado do checkbox.\n * @param value Novo valor para o estado indeterminado.\n */\n @Method()\n async setIndeterminate(value: boolean) {\n this.indeterminate = value\n this.updateIndeterminate(value)\n this.indeterminateChange.emit(this.indeterminate)\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 render() {\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n <input\n type=\"checkbox\"\n id={this.customId}\n name={this.name}\n checked={this.checked}\n disabled={this.disabled}\n value={this.value}\n onChange={this.handleCheckedChange}\n ref={(el) => el && (el.indeterminate = this.indeterminate)}\n aria-checked={this.getAriaCheckedValue()}\n />\n <label htmlFor={this.customId} class={this.hasHiddenLabel ? 'visually-hidden' : undefined}>\n {this.slotDefault ? <slot></slot> : this.label}\n </label>\n </div>\n </Host>\n )\n }\n}\n\nlet checkboxId = 0\n","@import \"~@govbr-ds/core/src/components/input/input\";\n\n:host {\n display: inline-block;\n\n .br-input .input-icon {\n margin: 0 var(--spacing-scale-2x);\n }\n\n .br-input .input-icon + input {\n padding-left: var(--spacing-scale-6x);\n }\n}\n\n.br-input {\n br-button {\n float: right;\n margin-right: var(--input-button-margin);\n margin-top: calc((var(--input-size) + var(--spacing-scale-half)) * -1);\n padding: 0;\n position: relative;\n\n &.button-transform {\n transform: translateY(calc((var(--input-size) - 32px) * 0.5));\n }\n }\n\n .input-label {\n margin-top: 0 !important;\n }\n\n &.input-inline {\n display: flex;\n align-items: center;\n }\n}\n\n/* Estilo borderless para composições contextuais */\n:host([borderless]) {\n .br-input input {\n border-color: transparent;\n }\n\n .br-input input:focus,\n .br-input input:focus-visible {\n border-color: var(--border-color-alternative);\n }\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Prop, State } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n *\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/input?tab=designer).\n *\n * @slot action - Botão à direita do input.\n * @slot icon - Ícone à esquerda do input.\n * @slot help-text - Personalização do texto de ajuda.\n * @slot feedback - Mensagem de feedback como resposta específica a uma interação do usuário com o input. Pode ser feedback de erro, aviso, sucesso ou informação.\n *\n * @example\n * ```html\n * <br-input label=\"Nome\" placeholder=\"Digite seu nome\"></br-input>\n * ```\n */\n@Component({\n tag: 'br-input',\n styleUrl: 'input.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Input {\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: HTMLBrInputElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Especifica o tipo de entrada do campo. Pode ser um dos seguintes:\n * - 'color': Seletor de cor\n * - 'email': Campo para e-mail\n * - 'hidden': Campo oculto\n * - 'password': Campo para senha\n * - 'range': Controle deslizante\n * - 'search': Campo de pesquisa\n * - 'number': Campo para números\n * - 'tel': Campo para números de telefone\n * - 'text': Campo de texto padrão\n * - 'url': Campo para URLs\n */\n @Prop({ reflect: true }) readonly type:\n | 'color'\n | 'email'\n | 'hidden'\n | 'password'\n | 'range'\n | 'search'\n | 'number'\n | 'tel'\n | 'text'\n | 'file'\n | 'url' = 'text'\n\n /**\n * Controla o comportamento de preenchimento automático do navegador para o input.\n */\n @Prop({ reflect: true }) readonly autocomplete: 'on' | 'off'\n\n /**\n * Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\n */\n @Prop({ reflect: true }) readonly density: 'large' | 'medium' | 'small' = 'medium'\n\n /**\n * Desativa o input, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\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 * Se verdadeiro, o input terá destaque visual.\n */\n @Prop({ reflect: true }) readonly isHighlight: boolean = false\n\n /**\n * Define o estado do input\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 }) readonly state: 'info' | 'warning' | 'danger' | 'success'\n\n /**\n * Texto exibido como rótulo do input.\n */\n @Prop({ reflect: true }) readonly label: 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-input-${inputId++}`\n\n /**\n * Nome do input, utilizado para identificação em formulários.\n */\n @Prop({ reflect: true }) readonly name: 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 * Se verdadeiro, o valor do input é exibido, mas não pode ser editado pelo usuário.\n */\n @Prop({ reflect: true }) readonly readonly: boolean = false\n\n /**\n * Se verdadeiro, o input é obrigatório e deve ser preenchido antes que o formulário possa ser enviado.\n */\n @Prop({ reflect: true }) readonly required: boolean = false\n\n /**\n * Valor exibido no input.\n * Pode ser alterado pelo usuário se a propriedade `readonly` não estiver ativa.\n */\n @Prop({ reflect: true, mutable: true }) value: string\n\n /**\n * Largura do campo de entrada (por exemplo, '88px').\n * Quando definido, sobrescreve a largura padrão de 100%.\n */\n @Prop({ reflect: true }) readonly controlWidth?: string\n\n /**\n * Remove a borda do input quando não está em foco.\n * Útil para composições contextuais (ex.: paginação).\n */\n @Prop({ reflect: true }) readonly borderless: boolean = false\n\n /**\n * Texto adicional que fornece ajuda ou informações sobre o input.\n */\n @Prop({ reflect: true }) readonly helpText: string\n\n /**\n * Controla a correção automática do texto.\n */\n @Prop({ reflect: true }) readonly autocorrect: 'off' | 'on' = 'off'\n\n /**\n * Define o valor mínimo para campos de entrada numéricos.\n */\n @Prop({ reflect: true }) readonly min: number\n\n /**\n * Define o valor máximo para campos de entrada numéricos.\n */\n @Prop({ reflect: true }) readonly max: number\n\n /**\n * Define o comprimento mínimo do valor do campo de entrada.\n */\n @Prop({ reflect: true }) readonly minlength: number\n\n /**\n * Define o comprimento máximo do valor do campo de entrada.\n */\n @Prop({ reflect: true }) readonly maxlength: number\n\n /**\n * Se verdadeiro, permite a seleção de múltiplos arquivos.\n */\n @Prop({ reflect: true }) readonly multiple: boolean = false\n\n /**\n * Define o padrão de entrada para validação.\n */\n @Prop({ reflect: true }) readonly pattern: string\n\n /**\n * Define o valor do passo para campos de entrada numéricos.\n */\n @Prop({ reflect: true }) readonly step: number\n\n /**\n * Texto exibido no botão de ação à direita do input.\n */\n @Prop({ reflect: true }) readonly actionLabel: string\n\n @State() isPasswordVisible: boolean = false\n\n @State() internalState: 'info' | 'warning' | 'danger' | 'success' = 'info'\n\n @State() hasIconSlot: boolean = false\n\n @State() hasActionSlot: boolean = false\n\n @State() hasFeedbackSlot: boolean = false\n\n componentWillLoad() {\n this.hasIconSlot = this.hasSlotContent('icon')\n this.hasActionSlot = this.hasSlotContent('action')\n this.hasFeedbackSlot = this.hasSlotContent('feedback')\n this.internalState = this.state\n\n if (this.hasFeedbackSlot) {\n this.initializeStateWithFeedback()\n }\n }\n\n componentDidLoad() {\n if (this.hasFeedbackSlot) {\n this.setupSlotFeedbackListener()\n }\n }\n\n private initializeStateWithFeedback() {\n const initialMessageElement = this.el.querySelector('br-message')\n\n if (initialMessageElement !== null || initialMessageElement !== undefined) {\n const messageState = initialMessageElement.getAttribute('state')\n this.internalState = (messageState as 'info' | 'warning' | 'danger' | 'success') || this.state\n } else {\n this.internalState = this.state\n }\n }\n\n private setupSlotFeedbackListener() {\n const slot = this.el.shadowRoot?.querySelector('slot[name=\"feedback\"]')\n if (slot !== null && slot !== undefined) {\n slot.addEventListener('slotchange', () => {\n this.syncStateWithSlotFeedback()\n })\n }\n }\n\n private syncStateWithSlotFeedback() {\n const messageElement = this.el.querySelector('br-message')\n\n if (messageElement !== null && messageElement !== undefined) {\n this.internalState = messageElement.getAttribute('state') as 'info' | 'warning' | 'danger' | 'success'\n } else {\n this.internalState = this.state\n }\n }\n\n private getInputCssClassMap(): CssClassMap {\n return {\n 'br-input': true,\n 'input-button': this.hasActionSlot,\n small: this.density === 'small',\n large: this.density === 'large',\n medium: this.density === 'medium',\n 'input-inline': this.isInline,\n 'input-highlight': this.isHighlight,\n success: this.internalState === 'success',\n danger: this.internalState === 'danger',\n info: this.internalState === 'info',\n warning: this.internalState === 'warning',\n }\n }\n\n /**\n * Valor atualizado do input\n */\n @Event() valueChange: EventEmitter<string>\n\n private readonly handleInput = (event: Event) => {\n this.value = (event.target as HTMLInputElement).value\n this.valueChange.emit(this.value)\n }\n\n private readonly renderLabel = () => {\n if (this.label?.length > 0) {\n if (this.isInline) {\n return (\n <div class=\"input-label\">\n <label part=\"label\" class=\"text-nowrap\" htmlFor={this.customId}>\n {this.label}\n </label>\n </div>\n )\n } else {\n return (\n <label part=\"label\" htmlFor={this.customId}>\n {this.label}\n </label>\n )\n }\n }\n }\n\n private hasSlotContent(slotName: string): boolean {\n return this.el.querySelector(`[slot=\"${slotName}\"]`) !== null\n }\n\n private readonly renderInput = () => {\n return (\n <input\n class={this.isHighlight ? 'input-highlight' : null}\n id={this.customId}\n style={this.controlWidth !== undefined && this.controlWidth !== null ? { width: this.controlWidth } : undefined}\n autocomplete={this.autocomplete}\n disabled={this.disabled}\n autoCorrect={this.autocorrect}\n min={this.min}\n max={this.max}\n minLength={this.minlength}\n maxLength={this.maxlength}\n multiple={this.multiple}\n name={this.name}\n pattern={this.pattern}\n step={this.step}\n onInput={this.handleInput}\n placeholder={this.placeholder}\n readonly={this.readonly}\n required={this.required}\n title={this.el.title}\n type={this.type}\n value={this.value}\n />\n )\n }\n\n private readonly renderHelpText = () => {\n return this.helpText?.length > 0 ? <p>{this.helpText}</p> : <slot name=\"help-text\"></slot>\n }\n\n private readonly renderIconPassword = () => {\n const iconName = this.isPasswordVisible ? 'fa-solid:eye-slash' : 'fa-solid:eye'\n return <br-icon icon-name={iconName}></br-icon>\n }\n\n private readonly togglePasswordVisibility = () => {\n const input = this.el.shadowRoot.querySelector('input')\n this.isPasswordVisible = !this.isPasswordVisible\n input.type = this.isPasswordVisible ? 'text' : 'password'\n }\n\n private renderIconSlot() {\n if (this.hasSlotContent('icon')) {\n return (\n <div class=\"input-icon\">\n <slot name=\"icon\"></slot>\n </div>\n )\n }\n }\n\n private renderButton() {\n if (this.type === 'password') {\n return (\n <br-button\n class=\"button-transform\"\n shape=\"circle\"\n density=\"small\"\n aria-label={this.isPasswordVisible ? 'Esconder senha' : 'Mostrar senha'}\n aria-pressed={this.isPasswordVisible ? 'true' : 'false'}\n onClick={this.togglePasswordVisibility}\n >\n {this.renderIconPassword()}\n </br-button>\n )\n } else if (this.hasSlotContent('action')) {\n return (\n <br-button class=\"button-transform\" shape=\"circle\" density=\"small\" aria-label={this.actionLabel}>\n <slot name=\"action\"></slot>\n </br-button>\n )\n }\n return null\n }\n\n private readonly renderInlineInputContent = () => {\n if (this.hasIconSlot) {\n return <div class=\"input-content\">{this.renderInputWithIcon()}</div>\n } else {\n return <div class=\"input-content\">{this.renderInputWithoutIcon()}</div>\n }\n }\n\n private readonly renderInputContent = () => {\n return this.hasIconSlot ? this.renderInputWithIcon() : this.renderInputWithoutIcon()\n }\n\n private readonly renderInputWithIcon = () => {\n return (\n <div class=\"input-group\">\n {this.renderIconSlot()}\n {this.renderInput()}\n {this.renderButton()}\n {this.renderHelpText()}\n </div>\n )\n }\n\n private readonly renderInputWithoutIcon = () => {\n return [this.renderInput(), this.renderButton(), this.renderHelpText()]\n }\n\n private renderFeedback() {\n if (this.hasFeedbackSlot) {\n return <slot name=\"feedback\"></slot>\n }\n }\n\n render() {\n return (\n <Host>\n <div class={this.getInputCssClassMap()}>\n {this.renderLabel()}\n\n {this.isInline ? this.renderInlineInputContent() : this.renderInputContent()}\n\n {this.renderFeedback()}\n </div>\n </Host>\n )\n }\n}\n\nlet inputId = 0\n","@import \"~@govbr-ds/core/src/components/radio/radio\";\n@include radio-checked;\n\n:host {\n display: inline-block;\n\n .br-radio.hidden-label {\n label {\n padding-left: calc(var(--checkbox-size) + var(--surface-width-md) * 2);\n text-indent: -10000px;\n white-space: nowrap;\n width: 0;\n }\n }\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop } 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/radio?tab=designer).\n *\n * @slot default - O texto descritivo pode ser passado por propriedade (label) ou por slot.\n */\n\n@Component({\n tag: 'br-radio',\n styleUrl: 'radio.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Radio {\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: HTMLBrRadioElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define o estado de seleção do radio.\n * Se definido como verdadeiro, o radio estará marcado. Caso contrário, estará desmarcado.\n */\n @Prop({ reflect: true, mutable: true }) checked: boolean = false\n\n /**\n * Desativa o radio, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Indica a validade do radio.\n * Valores possíveis:\n * - 'valid': O radio é considerado válido.\n * - 'invalid': O radio é considerado inválido.\n * Se não for especificado, o valor padrão é `null`, indicando que a validade não foi definida.\n */\n @Prop({ reflect: true }) readonly state: 'valid' | 'invalid'\n\n /**\n * Define se o label associado ao radio deve ser oculto.\n * Se definido como verdadeiro, o texto do label será oculto, mas o radio ainda estará visível e funcional.\n */\n @Prop({ reflect: true, attribute: 'has-hidden-label' }) readonly hasHiddenLabel: 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-radio-${radioId++}`\n\n /**\n * Define o nome do radio, que é utilizado para agrupar radios 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\n @Prop({ reflect: true }) readonly name!: string\n\n /**\n * Texto descritivo exibido à direita do radio.\n * Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.\n */\n @Prop({ reflect: true }) readonly label: string\n\n /**\n * Define o valor associado ao radio quando ele faz parte de um formulário nativo (`<form>`).\n * Esse valor é enviado com o formulário quando o radio está selecionado.\n * **Nota:** Esta propriedade não deve ser utilizada para determinar se o radio está selecionado; para verificar o estado de seleção, use a propriedade `checked`.\n */\n @Prop({ reflect: true }) readonly value: string\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n @Event({ bubbles: true, composed: true }) checkedChange: EventEmitter<boolean>\n\n @Listen('checkedChange', { target: 'window' })\n handleCheckedChange(event: CustomEvent) {\n if (\n (event.target as HTMLBrRadioElement).customId !== this.customId &&\n (event.target as HTMLBrRadioElement).name === this.name\n ) {\n this.checked = false\n }\n }\n\n /**\n * Navega e seleciona o próximo/anterior rádio habilitado no grupo via teclas de seta.\n * Ativado por 'keydown', move a seleção entre rádios do mesmo 'name'\n * usando as setas, partindo do rádio atualmente checado.\n * @param {KeyboardEvent} event O evento de teclado.\n * @listens keydown\n */\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (this.disabled || !this.checked) return\n\n const isArrowKey = ['ArrowRight', 'ArrowDown', 'ArrowLeft', 'ArrowUp'].includes(event.key)\n if (!isArrowKey) return\n\n event.preventDefault()\n\n const radios = Array.from(document.querySelectorAll<HTMLBrRadioElement>('br-radio')).filter(\n (el: HTMLBrRadioElement) => el.name === this.name && !el.disabled\n )\n\n const currentIndex = radios.findIndex((radio: HTMLBrRadioElement) => radio.customId === this.customId)\n if (currentIndex === -1) return\n\n let nextIndex = currentIndex\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n nextIndex = (currentIndex + 1) % radios.length\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n nextIndex = (currentIndex - 1 + radios.length) % radios.length\n }\n\n const nextRadio: HTMLBrRadioElement | undefined = radios[nextIndex]\n nextRadio?.toggleChecked?.()\n nextRadio?.shadowRoot?.querySelector('input')?.focus()\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-radio': true,\n valid: this.state === 'valid',\n invalid: this.state === 'invalid',\n disabled: this.disabled,\n 'hidden-label': this.hasHiddenLabel,\n }\n }\n\n /**\n * Handler para o event `click`\n * @param event Objeto Event\n */\n private readonly onClick = (event: MouseEvent) => {\n event.stopPropagation()\n this.checked = (event.target as HTMLInputElement).checked\n }\n\n /**\n * Handler para o evento `change`\n */\n private readonly onChange = () => {\n this.checkedChange.emit(this.checked)\n }\n\n render() {\n return (\n <Host aria-disabled={this.disabled ? 'true' : null}>\n <div class={this.getCssClassMap()}>\n <input\n part=\"radio-input\"\n aria-label={this.hasHiddenLabel && this.label ? this.label : null}\n type=\"radio\"\n id={this.customId}\n name={this.name}\n checked={this.checked}\n disabled={this.disabled}\n value={this.value}\n onClick={this.onClick}\n onChange={this.onChange}\n />\n <label part=\"radio-label\" htmlFor={this.customId}>\n <slot>{this.label}</slot>\n </label>\n </div>\n </Host>\n )\n }\n}\n\nlet radioId = 0\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"br-checkbox.br-input.br-radio.entry.esm.js","sources":["../../packages/webcomponents/src/components/checkbox/checkbox.scss?tag=br-checkbox&encapsulation=shadow","../../packages/webcomponents/src/components/checkbox/checkbox.tsx","../../packages/webcomponents/src/components/input/input.scss?tag=br-input&encapsulation=shadow","../../packages/webcomponents/src/components/input/input.tsx","../../packages/webcomponents/src/components/radio/radio.scss?tag=br-radio&encapsulation=shadow","../../packages/webcomponents/src/components/radio/radio.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/checkbox/checkbox\";\n\n:host {\n display: inline-block;\n\n .br-checkbox {\n --checkbox-padding: var(--spacing-scale-half);\n --checkbox-size: 24px;\n\n display: flex;\n position: relative;\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n white-space: nowrap;\n border: 0;\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/checkbox?tab=designer).\n *\n * @slot default - O texto descritivo pode ser passado por propriedade (label) ou por slot.\n *\n * @example\n * ```html\n * <br-checkbox label=\"Aceito os termos\"></br-checkbox>\n * ```\n */\n@Component({\n tag: 'br-checkbox',\n styleUrl: 'checkbox.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Checkbox {\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: HTMLBrCheckboxElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define o estado intermediário do checkbox.\n * Quando verdadeiro, exibe uma marcação parcial visual que indica seleção parcial.\n * Útil para representar grupos onde alguns itens estão selecionados, mas não todos.\n * Ao clicar no checkbox neste estado, ele será automaticamente alterado para marcado.\n */\n @Prop({ reflect: true, mutable: true }) indeterminate: 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-checkbox-${checkboxId++}`\n\n /**\n * Desativa o checkbox, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Define se o label associado ao checkbox deve ser oculto.\n * Se definido como verdadeiro, o texto do label será oculto, mas o checkbox ainda estará visível e funcional.\n */\n @Prop({ reflect: true }) readonly hasHiddenLabel: boolean = false\n\n /**\n * Texto descritivo exibido à direita do checkbox.\n * Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.\n */\n @Prop({ reflect: true }) readonly label: string\n\n /**\n * Define o nome do checkbox, que é utilizado para agrupar checkboxes 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 * Indica a validade do checkbox.\n * Valores possíveis:\n * 'valid': O checkbox é considerado válido.\n * 'invalid': O checkbox é considerado inválido.\n * Se não for especificado, o valor padrão é `null`, indicando que a validade não foi definida.\n */\n @Prop({ reflect: true }) readonly state: 'valid' | 'invalid'\n\n /**\n * Define o valor associado ao checkbox quando ele faz parte de um formulário nativo (`<form>`).\n * Esse valor é enviado com o formulário quando o checkbox está selecionado.\n * **Nota:** Esta propriedade não deve ser utilizada para determinar se o checkbox está selecionado; para verificar o estado de seleção, use a propriedade `checked`.\n */\n @Prop({ reflect: true }) readonly value: string\n\n /**\n * Indica se o checkbox é pai de um grupo de checkboxes.\n */\n @Prop({ reflect: false }) readonly isFather: boolean = false\n\n /**\n * Indica se o slot default possui conteúdo.\n */\n @State() slotDefault: boolean = false\n\n /**\n * Define o número de checkboxes filhos em um grupo de checkboxes.\n */\n @State() numberOfChildren: number = 0\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n @Event() checkedChange: EventEmitter<boolean>\n\n /**\n * Disparado depois que o valor do `indeterminate` foi alterado.\n */\n @Event() indeterminateChange: EventEmitter<boolean>\n\n @Watch('indeterminate')\n updateIndeterminate(newValue: boolean) {\n const input = this.el.shadowRoot.querySelector('input')\n if (input !== null) {\n input.indeterminate = newValue\n }\n }\n\n componentWillLoad() {\n this.hasSlotContentDefault()\n }\n\n private hasSlotContentDefault(): void {\n this.slotDefault = this.el.innerHTML !== ''\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-checkbox': true,\n valid: this.state === 'valid',\n invalid: this.state === 'invalid',\n disabled: this.disabled,\n 'hidden-label': this.hasHiddenLabel,\n }\n }\n\n private getAriaCheckedValue(): string {\n if (this.indeterminate) {\n return 'mixed'\n }\n return this.checked ? 'true' : 'false'\n }\n\n private readonly handleCheckedChange = () => {\n if (this.indeterminate) {\n // Sai do estado indeterminado ao clicar e define como marcado\n this.indeterminate = false\n this.checked = true\n this.indeterminateChange.emit(this.indeterminate)\n } else {\n // Alterna entre marcado e desmarcado\n this.checked = !this.checked\n this.indeterminate = false\n }\n this.checkedChange.emit(this.checked)\n }\n\n /**\n * Define o estado indeterminado do checkbox.\n * @param value Novo valor para o estado indeterminado.\n */\n @Method()\n async setIndeterminate(value: boolean) {\n this.indeterminate = value\n this.updateIndeterminate(value)\n this.indeterminateChange.emit(this.indeterminate)\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 /**\n * Define o número de checkboxes filhos em um grupo de checkboxes.\n * @param value Número de checkboxes filhos.\n */\n @Method()\n async setNumberOfChildren(value: number) {\n this.numberOfChildren = value\n }\n\n render() {\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n <input\n type=\"checkbox\"\n id={this.customId}\n name={this.name}\n checked={this.checked}\n disabled={this.disabled}\n value={this.value}\n onChange={this.handleCheckedChange}\n ref={(el) => el && (el.indeterminate = this.indeterminate)}\n aria-checked={this.getAriaCheckedValue()}\n aria-describedby={this.numberOfChildren > 0 ? 'children-number' : null}\n />\n <label htmlFor={this.customId} class={this.hasHiddenLabel ? 'visually-hidden' : undefined}>\n {this.slotDefault ? <slot></slot> : this.label}\n </label>\n </div>\n {this.isFather ? (\n <span id=\"children-number\" class=\"sr-only\">\n Número de opções: {this.numberOfChildren}\n </span>\n ) : null}\n </Host>\n )\n }\n}\n\nlet checkboxId = 0\n","@import \"~@govbr-ds/core/src/components/input/input\";\n\n:host {\n display: inline-block;\n\n .br-input .input-icon {\n margin: 0 var(--spacing-scale-2x);\n }\n\n .br-input .input-icon + input {\n padding-left: var(--spacing-scale-6x);\n }\n}\n\n.br-input {\n br-button {\n float: right;\n margin-right: var(--input-button-margin);\n margin-top: calc((var(--input-size) + var(--spacing-scale-half)) * -1);\n padding: 0;\n position: relative;\n\n &.button-transform {\n transform: translateY(calc((var(--input-size) - 32px) * 0.5));\n }\n }\n\n .input-label {\n margin-top: 0 !important;\n }\n\n &.input-inline {\n display: flex;\n align-items: center;\n }\n}\n\n/* Estilo borderless para composições contextuais */\n:host([borderless]) {\n .br-input input {\n border-color: transparent;\n }\n\n .br-input input:focus,\n .br-input input:focus-visible {\n border-color: var(--border-color-alternative);\n }\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Prop, State } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n *\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/input?tab=designer).\n *\n * @slot action - Botão à direita do input.\n * @slot icon - Ícone à esquerda do input.\n * @slot help-text - Personalização do texto de ajuda.\n * @slot feedback - Mensagem de feedback como resposta específica a uma interação do usuário com o input. Pode ser feedback de erro, aviso, sucesso ou informação.\n *\n * @example\n * ```html\n * <br-input label=\"Nome\" placeholder=\"Digite seu nome\"></br-input>\n * ```\n */\n@Component({\n tag: 'br-input',\n styleUrl: 'input.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Input {\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: HTMLBrInputElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Especifica o tipo de entrada do campo. Pode ser um dos seguintes:\n * - 'color': Seletor de cor\n * - 'email': Campo para e-mail\n * - 'hidden': Campo oculto\n * - 'password': Campo para senha\n * - 'range': Controle deslizante\n * - 'search': Campo de pesquisa\n * - 'number': Campo para números\n * - 'tel': Campo para números de telefone\n * - 'text': Campo de texto padrão\n * - 'url': Campo para URLs\n */\n @Prop({ reflect: true }) readonly type:\n | 'color'\n | 'email'\n | 'hidden'\n | 'password'\n | 'range'\n | 'search'\n | 'number'\n | 'tel'\n | 'text'\n | 'file'\n | 'url' = 'text'\n\n /**\n * Controla o comportamento de preenchimento automático do navegador para o input.\n */\n @Prop({ reflect: true }) readonly autocomplete: 'on' | 'off'\n\n /**\n * Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\n */\n @Prop({ reflect: true }) readonly density: 'large' | 'medium' | 'small' = 'medium'\n\n /**\n * Desativa o input, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\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 * Se verdadeiro, o input terá destaque visual.\n */\n @Prop({ reflect: true }) readonly isHighlight: boolean = false\n\n /**\n * Define o estado do input\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 }) readonly state: 'info' | 'warning' | 'danger' | 'success'\n\n /**\n * Texto exibido como rótulo do input.\n */\n @Prop({ reflect: true }) readonly label: 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-input-${inputId++}`\n\n /**\n * Nome do input, utilizado para identificação em formulários.\n */\n @Prop({ reflect: true }) readonly name: 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 * Se verdadeiro, o valor do input é exibido, mas não pode ser editado pelo usuário.\n */\n @Prop({ reflect: true }) readonly readonly: boolean = false\n\n /**\n * Se verdadeiro, o input é obrigatório e deve ser preenchido antes que o formulário possa ser enviado.\n */\n @Prop({ reflect: true }) readonly required: boolean = false\n\n /**\n * Valor exibido no input.\n * Pode ser alterado pelo usuário se a propriedade `readonly` não estiver ativa.\n */\n @Prop({ reflect: true, mutable: true }) value: string\n\n /**\n * Largura do campo de entrada (por exemplo, '88px').\n * Quando definido, sobrescreve a largura padrão de 100%.\n */\n @Prop({ reflect: true }) readonly controlWidth?: string\n\n /**\n * Remove a borda do input quando não está em foco.\n * Útil para composições contextuais (ex.: paginação).\n */\n @Prop({ reflect: true }) readonly borderless: boolean = false\n\n /**\n * Texto adicional que fornece ajuda ou informações sobre o input.\n */\n @Prop({ reflect: true }) readonly helpText: string\n\n /**\n * Controla a correção automática do texto.\n */\n @Prop({ reflect: true }) readonly autocorrect: 'off' | 'on' = 'off'\n\n /**\n * Define o valor mínimo para campos de entrada numéricos.\n */\n @Prop({ reflect: true }) readonly min: number\n\n /**\n * Define o valor máximo para campos de entrada numéricos.\n */\n @Prop({ reflect: true }) readonly max: number\n\n /**\n * Define o comprimento mínimo do valor do campo de entrada.\n */\n @Prop({ reflect: true }) readonly minlength: number\n\n /**\n * Define o comprimento máximo do valor do campo de entrada.\n */\n @Prop({ reflect: true }) readonly maxlength: number\n\n /**\n * Se verdadeiro, permite a seleção de múltiplos arquivos.\n */\n @Prop({ reflect: true }) readonly multiple: boolean = false\n\n /**\n * Define o padrão de entrada para validação.\n */\n @Prop({ reflect: true }) readonly pattern: string\n\n /**\n * Define o valor do passo para campos de entrada numéricos.\n */\n @Prop({ reflect: true }) readonly step: number\n\n /**\n * Texto exibido no botão de ação à direita do input.\n */\n @Prop({ reflect: true }) readonly actionLabel: string\n\n @State() isPasswordVisible: boolean = false\n\n @State() internalState: 'info' | 'warning' | 'danger' | 'success' = 'info'\n\n @State() hasIconSlot: boolean = false\n\n @State() hasActionSlot: boolean = false\n\n @State() hasFeedbackSlot: boolean = false\n\n componentWillLoad() {\n this.hasIconSlot = this.hasSlotContent('icon')\n this.hasActionSlot = this.hasSlotContent('action')\n this.hasFeedbackSlot = this.hasSlotContent('feedback')\n this.internalState = this.state\n\n if (this.hasFeedbackSlot) {\n this.initializeStateWithFeedback()\n }\n }\n\n componentDidLoad() {\n if (this.hasFeedbackSlot) {\n this.setupSlotFeedbackListener()\n }\n }\n\n private initializeStateWithFeedback() {\n const initialMessageElement = this.el.querySelector('br-message')\n\n if (initialMessageElement !== null || initialMessageElement !== undefined) {\n const messageState = initialMessageElement.getAttribute('state')\n this.internalState = (messageState as 'info' | 'warning' | 'danger' | 'success') || this.state\n } else {\n this.internalState = this.state\n }\n }\n\n private setupSlotFeedbackListener() {\n const slot = this.el.shadowRoot?.querySelector('slot[name=\"feedback\"]')\n if (slot !== null && slot !== undefined) {\n slot.addEventListener('slotchange', () => {\n this.syncStateWithSlotFeedback()\n })\n }\n }\n\n private syncStateWithSlotFeedback() {\n const messageElement = this.el.querySelector('br-message')\n\n if (messageElement !== null && messageElement !== undefined) {\n this.internalState = messageElement.getAttribute('state') as 'info' | 'warning' | 'danger' | 'success'\n } else {\n this.internalState = this.state\n }\n }\n\n private getInputCssClassMap(): CssClassMap {\n return {\n 'br-input': true,\n 'input-button': this.hasActionSlot,\n small: this.density === 'small',\n large: this.density === 'large',\n medium: this.density === 'medium',\n 'input-inline': this.isInline,\n 'input-highlight': this.isHighlight,\n success: this.internalState === 'success',\n danger: this.internalState === 'danger',\n info: this.internalState === 'info',\n warning: this.internalState === 'warning',\n }\n }\n\n /**\n * Valor atualizado do input\n */\n @Event() valueChange: EventEmitter<string>\n\n private readonly handleInput = (event: Event) => {\n this.value = (event.target as HTMLInputElement).value\n this.valueChange.emit(this.value)\n }\n\n private readonly renderLabel = () => {\n if (this.label?.length > 0) {\n if (this.isInline) {\n return (\n <div class=\"input-label\">\n <label part=\"label\" class=\"text-nowrap\" htmlFor={this.customId}>\n {this.label}\n </label>\n </div>\n )\n } else {\n return (\n <label part=\"label\" htmlFor={this.customId}>\n {this.label}\n </label>\n )\n }\n }\n }\n\n private hasSlotContent(slotName: string): boolean {\n return this.el.querySelector(`[slot=\"${slotName}\"]`) !== null\n }\n\n private readonly renderInput = () => {\n return (\n <input\n class={this.isHighlight ? 'input-highlight' : null}\n id={this.customId}\n style={this.controlWidth !== undefined && this.controlWidth !== null ? { width: this.controlWidth } : undefined}\n autocomplete={this.autocomplete}\n disabled={this.disabled}\n autoCorrect={this.autocorrect}\n min={this.min}\n max={this.max}\n minLength={this.minlength}\n maxLength={this.maxlength}\n multiple={this.multiple}\n name={this.name}\n pattern={this.pattern}\n step={this.step}\n onInput={this.handleInput}\n placeholder={this.placeholder}\n readonly={this.readonly}\n required={this.required}\n title={this.el.title}\n type={this.type}\n value={this.value}\n />\n )\n }\n\n private readonly renderHelpText = () => {\n return this.helpText?.length > 0 ? <p>{this.helpText}</p> : <slot name=\"help-text\"></slot>\n }\n\n private readonly renderIconPassword = () => {\n const iconName = this.isPasswordVisible ? 'fa-solid:eye-slash' : 'fa-solid:eye'\n return <br-icon icon-name={iconName}></br-icon>\n }\n\n private readonly togglePasswordVisibility = () => {\n const input = this.el.shadowRoot.querySelector('input')\n this.isPasswordVisible = !this.isPasswordVisible\n input.type = this.isPasswordVisible ? 'text' : 'password'\n }\n\n private renderIconSlot() {\n if (this.hasSlotContent('icon')) {\n return (\n <div class=\"input-icon\">\n <slot name=\"icon\"></slot>\n </div>\n )\n }\n }\n\n private renderButton() {\n if (this.type === 'password') {\n return (\n <br-button\n class=\"button-transform\"\n shape=\"circle\"\n density=\"small\"\n aria-label={this.isPasswordVisible ? 'Esconder senha' : 'Mostrar senha'}\n aria-pressed={this.isPasswordVisible ? 'true' : 'false'}\n onClick={this.togglePasswordVisibility}\n >\n {this.renderIconPassword()}\n </br-button>\n )\n } else if (this.hasSlotContent('action')) {\n return (\n <br-button class=\"button-transform\" shape=\"circle\" density=\"small\" aria-label={this.actionLabel}>\n <slot name=\"action\"></slot>\n </br-button>\n )\n }\n return null\n }\n\n private readonly renderInlineInputContent = () => {\n if (this.hasIconSlot) {\n return <div class=\"input-content\">{this.renderInputWithIcon()}</div>\n } else {\n return <div class=\"input-content\">{this.renderInputWithoutIcon()}</div>\n }\n }\n\n private readonly renderInputContent = () => {\n return this.hasIconSlot ? this.renderInputWithIcon() : this.renderInputWithoutIcon()\n }\n\n private readonly renderInputWithIcon = () => {\n return (\n <div class=\"input-group\">\n {this.renderIconSlot()}\n {this.renderInput()}\n {this.renderButton()}\n {this.renderHelpText()}\n </div>\n )\n }\n\n private readonly renderInputWithoutIcon = () => {\n return [this.renderInput(), this.renderButton(), this.renderHelpText()]\n }\n\n private renderFeedback() {\n if (this.hasFeedbackSlot) {\n return <slot name=\"feedback\"></slot>\n }\n }\n\n render() {\n return (\n <Host>\n <div class={this.getInputCssClassMap()}>\n {this.renderLabel()}\n\n {this.isInline ? this.renderInlineInputContent() : this.renderInputContent()}\n\n {this.renderFeedback()}\n </div>\n </Host>\n )\n }\n}\n\nlet inputId = 0\n","@import \"~@govbr-ds/core/src/components/radio/radio\";\n@include radio-checked;\n\n:host {\n display: inline-block;\n\n .br-radio.hidden-label {\n label {\n padding-left: calc(var(--checkbox-size) + var(--surface-width-md) * 2);\n text-indent: -10000px;\n white-space: nowrap;\n width: 0;\n }\n }\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop } 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/radio?tab=designer).\n *\n * @slot default - O texto descritivo pode ser passado por propriedade (label) ou por slot.\n */\n\n@Component({\n tag: 'br-radio',\n styleUrl: 'radio.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Radio {\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: HTMLBrRadioElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define o estado de seleção do radio.\n * Se definido como verdadeiro, o radio estará marcado. Caso contrário, estará desmarcado.\n */\n @Prop({ reflect: true, mutable: true }) checked: boolean = false\n\n /**\n * Desativa o radio, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Indica a validade do radio.\n * Valores possíveis:\n * - 'valid': O radio é considerado válido.\n * - 'invalid': O radio é considerado inválido.\n * Se não for especificado, o valor padrão é `null`, indicando que a validade não foi definida.\n */\n @Prop({ reflect: true }) readonly state: 'valid' | 'invalid'\n\n /**\n * Define se o label associado ao radio deve ser oculto.\n * Se definido como verdadeiro, o texto do label será oculto, mas o radio ainda estará visível e funcional.\n */\n @Prop({ reflect: true, attribute: 'has-hidden-label' }) readonly hasHiddenLabel: 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-radio-${radioId++}`\n\n /**\n * Define o nome do radio, que é utilizado para agrupar radios 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\n @Prop({ reflect: true }) readonly name!: string\n\n /**\n * Texto descritivo exibido à direita do radio.\n * Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.\n */\n @Prop({ reflect: true }) readonly label: string\n\n /**\n * Define o valor associado ao radio quando ele faz parte de um formulário nativo (`<form>`).\n * Esse valor é enviado com o formulário quando o radio está selecionado.\n * **Nota:** Esta propriedade não deve ser utilizada para determinar se o radio está selecionado; para verificar o estado de seleção, use a propriedade `checked`.\n */\n @Prop({ reflect: true }) readonly value: string\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n @Event({ bubbles: true, composed: true }) checkedChange: EventEmitter<boolean>\n\n @Listen('checkedChange', { target: 'window' })\n handleCheckedChange(event: CustomEvent) {\n if (\n (event.target as HTMLBrRadioElement).customId !== this.customId &&\n (event.target as HTMLBrRadioElement).name === this.name\n ) {\n this.checked = false\n }\n }\n\n /**\n * Navega e seleciona o próximo/anterior rádio habilitado no grupo via teclas de seta.\n * Ativado por 'keydown', move a seleção entre rádios do mesmo 'name'\n * usando as setas, partindo do rádio atualmente checado.\n * @param {KeyboardEvent} event O evento de teclado.\n * @listens keydown\n */\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (this.disabled || !this.checked) return\n\n const isArrowKey = ['ArrowRight', 'ArrowDown', 'ArrowLeft', 'ArrowUp'].includes(event.key)\n if (!isArrowKey) return\n\n event.preventDefault()\n\n const radios = Array.from(document.querySelectorAll<HTMLBrRadioElement>('br-radio')).filter(\n (el: HTMLBrRadioElement) => el.name === this.name && !el.disabled\n )\n\n const currentIndex = radios.findIndex((radio: HTMLBrRadioElement) => radio.customId === this.customId)\n if (currentIndex === -1) return\n\n let nextIndex = currentIndex\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n nextIndex = (currentIndex + 1) % radios.length\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n nextIndex = (currentIndex - 1 + radios.length) % radios.length\n }\n\n const nextRadio: HTMLBrRadioElement | undefined = radios[nextIndex]\n nextRadio?.toggleChecked?.()\n nextRadio?.shadowRoot?.querySelector('input')?.focus()\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-radio': true,\n valid: this.state === 'valid',\n invalid: this.state === 'invalid',\n disabled: this.disabled,\n 'hidden-label': this.hasHiddenLabel,\n }\n }\n\n /**\n * Handler para o event `click`\n * @param event Objeto Event\n */\n private readonly onClick = (event: MouseEvent) => {\n event.stopPropagation()\n this.checked = (event.target as HTMLInputElement).checked\n }\n\n /**\n * Handler para o evento `change`\n */\n private readonly onChange = () => {\n this.checkedChange.emit(this.checked)\n }\n\n render() {\n return (\n <Host aria-disabled={this.disabled ? 'true' : null}>\n <div class={this.getCssClassMap()}>\n <input\n part=\"radio-input\"\n aria-label={this.hasHiddenLabel && this.label ? this.label : null}\n type=\"radio\"\n id={this.customId}\n name={this.name}\n checked={this.checked}\n disabled={this.disabled}\n value={this.value}\n onClick={this.onClick}\n onChange={this.onChange}\n />\n <label part=\"radio-label\" htmlFor={this.customId}>\n <slot>{this.label}</slot>\n </label>\n </div>\n </Host>\n )\n }\n}\n\nlet radioId = 0\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"br-checkgroup.entry.esm.js","sources":["../../packages/webcomponents/src/components/checkgroup/checkgroup.scss?tag=br-checkgroup&encapsulation=shadow","../../packages/webcomponents/src/components/checkgroup/checkgroup.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/checkbox/checkbox\";\n\n:host {\n display: block;\n}\n","import { AttachInternals, Component, Element, h, Host, Listen, 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/utilitarios/js/checkgroup?tab=desenvolvedor).\n *\n * @slot default - Slot para adicionar os checkboxes que serão controlados pelo checkgroup.\n *\n * @example\n * ```html\n * <br-checkgroup label=\"Opções\">\n * <br-checkbox label=\"A\"></br-checkbox>\n * <br-checkbox label=\"B\"></br-checkbox>\n * </br-checkgroup>\n * ```\n */\n@Component({\n tag: 'br-checkgroup',\n styleUrl: 'checkgroup.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Checkgroup {\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: HTMLBrCheckgroupElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Texto descritivo do grupo.\n */\n @Prop() label: string\n\n /**\n * Define o texto do label quando o checkbox está marcado.\n */\n @Prop({ reflect: true }) labelSelecionado: string = 'Desselecionar tudo'\n\n /**\n * Define o texto do label quando o checkbox está desmarcado.\n */\n @Prop({ reflect: true }) labelDesselecionado: string = 'Selecionar tudo'\n\n /**\n * Define o estado intermediário do checkbox.\n * Se definido como verdadeiro, o checkbox exibirá um estado intermediário, que é um estado visual que indica que a opção está parcialmente selecionada.\n * Este estado é útil quando o checkbox faz parte de um grupo com seleção parcial.\n */\n @Prop({ reflect: true }) indeterminate: 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-checkgroup-${checkgroupId++}`\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 @State() checked: boolean = false\n\n /**\n * Indica se o grupo de checkboxes está indeterminado\n */\n @State() isIndeterminate: boolean = false\n\n componentWillLoad() {\n this.isIndeterminate = this.el.hasAttribute('indeterminate')\n\n this.updateGroupState()\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-checkgroup': true,\n }\n }\n\n @Listen('checkedChange', {\n target: 'document',\n })\n handleChange(event: Event) {\n const target = event.target as HTMLBrCheckboxElement\n\n if (this.isParentCheckbox(target)) {\n this.checked = !this.checked\n this.handleAllCheckboxChange()\n } else {\n this.updateGroupState()\n }\n }\n\n private isParentCheckbox(target: HTMLBrCheckboxElement): boolean {\n return target === this.el.shadowRoot?.querySelector('br-checkbox')\n }\n\n private readonly handleAllCheckboxChange = () => {\n const checkListAll = Array.from(this.el.querySelectorAll('br-checkbox'))\n\n checkListAll.forEach((item) => {\n item.checked = this.checked\n item.indeterminate = false\n })\n\n const parentCheckbox = this.el.shadowRoot?.querySelector('br-checkbox')\n if (parentCheckbox !== null) {\n parentCheckbox.indeterminate = false\n }\n }\n\n private updateGroupState() {\n const checkListAll = Array.from(this.el.querySelectorAll('br-checkbox'))\n const allChecked = checkListAll.every((item) => item.checked)\n const noneChecked = checkListAll.every((item) => !item.checked)\n\n if (allChecked) {\n this.checked = true\n this.isIndeterminate = false\n } else if (noneChecked) {\n this.checked = false\n this.isIndeterminate = false\n } else {\n this.checked = false\n this.isIndeterminate = true\n }\n }\n\n render() {\n return (\n <Host>\n <div class={this.getCssClassMap()} style={{ width: '100%' }}>\n {this.label && <label>{this.label}</label>}\n <div class=\"mb-1\">\n <div class=\"checkgroup-example\">\n <br-checkbox\n name={`checkgroup-${this.customId}`}\n checked={this.checked}\n indeterminate={this.isIndeterminate}\n label={this.checked ? this.labelDesselecionado : this.labelSelecionado}\n aria-label={this.checked ? this.labelDesselecionado : this.labelSelecionado}\n onCheckedChange={this.handleChange.bind(this)}\n ></br-checkbox>\n </div>\n </div>\n <div class=\"mb-1 ml-2\">\n <slot></slot>\n </div>\n </div>\n </Host>\n )\n }\n}\n\nlet checkgroupId = 0\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"br-checkgroup.entry.esm.js","sources":["../../packages/webcomponents/src/components/checkgroup/checkgroup.scss?tag=br-checkgroup&encapsulation=shadow","../../packages/webcomponents/src/components/checkgroup/checkgroup.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/checkbox/checkbox\";\n\n:host {\n display: block;\n}\n","import { AttachInternals, Component, Element, h, Host, Listen, 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/utilitarios/js/checkgroup?tab=desenvolvedor).\n *\n * @slot default - Slot para adicionar os checkboxes que serão controlados pelo checkgroup.\n *\n * @example\n * ```html\n * <br-checkgroup label=\"Opções\">\n * <br-checkbox label=\"A\"></br-checkbox>\n * <br-checkbox label=\"B\"></br-checkbox>\n * </br-checkgroup>\n * ```\n */\n@Component({\n tag: 'br-checkgroup',\n styleUrl: 'checkgroup.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Checkgroup {\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: HTMLBrCheckgroupElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Texto descritivo do grupo.\n */\n @Prop() label: string\n\n /**\n * Define o texto do label quando o checkbox está marcado.\n */\n @Prop({ reflect: true }) labelSelecionado: string = 'Desselecionar tudo'\n\n /**\n * Define o texto do label quando o checkbox está desmarcado.\n */\n @Prop({ reflect: true }) labelDesselecionado: string = 'Selecionar tudo'\n\n /**\n * Define o estado intermediário do checkbox.\n * Se definido como verdadeiro, o checkbox exibirá um estado intermediário, que é um estado visual que indica que a opção está parcialmente selecionada.\n * Este estado é útil quando o checkbox faz parte de um grupo com seleção parcial.\n */\n @Prop({ reflect: true }) indeterminate: 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-checkgroup-${checkgroupId++}`\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 @State() checked: boolean = false\n\n /**\n * Indica se o grupo de checkboxes está indeterminado\n */\n @State() isIndeterminate: boolean = false\n\n @State() numberOfChildren: number = 0\n\n componentWillLoad() {\n this.isIndeterminate = this.el.hasAttribute('indeterminate')\n\n this.updateGroupState()\n }\n\n componentDidLoad() {\n this.setNumberOfChildren()\n this.monitorSlotChanges()\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-checkgroup': true,\n }\n }\n\n @Listen('checkedChange', {\n target: 'document',\n })\n handleChange(event: Event) {\n const target = event.target as HTMLBrCheckboxElement\n\n if (this.isParentCheckbox(target)) {\n this.checked = !this.checked\n this.handleAllCheckboxChange()\n } else {\n this.updateGroupState()\n }\n }\n\n private isParentCheckbox(target: HTMLBrCheckboxElement): boolean {\n return target === this.el.shadowRoot?.querySelector('br-checkbox')\n }\n\n private readonly handleAllCheckboxChange = () => {\n const checkListAll = Array.from(this.el.querySelectorAll('br-checkbox'))\n\n checkListAll.forEach((item) => {\n item.checked = this.checked\n item.indeterminate = false\n })\n\n const parentCheckbox = this.el.shadowRoot?.querySelector('br-checkbox')\n if (parentCheckbox !== null) {\n parentCheckbox.indeterminate = false\n }\n }\n\n private updateGroupState() {\n const checkListAll = Array.from(this.el.querySelectorAll('br-checkbox'))\n const allChecked = checkListAll.every((item) => item.checked)\n const noneChecked = checkListAll.every((item) => !item.checked)\n\n if (allChecked) {\n this.checked = true\n this.isIndeterminate = false\n } else if (noneChecked) {\n this.checked = false\n this.isIndeterminate = false\n } else {\n this.checked = false\n this.isIndeterminate = true\n }\n }\n\n private setNumberOfChildren() {\n const slotElement = this.el.shadowRoot?.querySelector('slot')\n const checkboxList = slotElement?.assignedElements().filter((el) => el.tagName.toLowerCase() === 'br-checkbox')\n\n const checkboxFather = this.el.shadowRoot?.querySelector('br-checkbox')\n\n if (checkboxList.length !== 0 && checkboxFather !== null) {\n checkboxFather.setNumberOfChildren(checkboxList.length)\n }\n }\n\n private monitorSlotChanges() {\n const slotElement = this.el.shadowRoot?.querySelector('slot')\n\n slotElement?.addEventListener('slotchange', () => {\n this.setNumberOfChildren()\n })\n }\n\n render() {\n return (\n <Host>\n <div class={this.getCssClassMap()} style={{ width: '100%' }}>\n {this.label && <label>{this.label}</label>}\n <div class=\"mb-1\">\n <div class=\"checkgroup-example\">\n <br-checkbox\n name={`checkgroup-${this.customId}`}\n checked={this.checked}\n indeterminate={this.isIndeterminate}\n label={this.checked ? this.labelDesselecionado : this.labelSelecionado}\n aria-label={this.checked ? this.labelDesselecionado : this.labelSelecionado}\n onCheckedChange={this.handleChange.bind(this)}\n is-father\n ></br-checkbox>\n </div>\n </div>\n <div class=\"mb-1 ml-2\">\n <slot></slot>\n </div>\n </div>\n </Host>\n )\n }\n}\n\nlet checkgroupId = 0\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"br-tooltip.entry.esm.js","sources":["../../packages/webcomponents/src/components/tooltip/tooltip.scss?tag=br-tooltip&encapsulation=shadow","../../packages/webcomponents/src/components/tooltip/tooltip.tsx"],"sourcesContent":[":host {\n display: block;\n position: relative;\n}\n\n.br-tooltip {\n .content {\n display: none;\n border-radius: 4px;\n box-shadow: var(--surface-offset-xl) var(--surface-offset-xl) var(--surface-offset-xl) rgb(0 0 0 / 16%);\n color: var(--pure-0);\n font-size: var(--font-size-scale-down-01);\n font-weight: var(--font-weight-regular);\n width: max-content;\n position: absolute;\n left: 0;\n top: 0;\n text-align: center;\n z-index: 4;\n\n &.small {\n padding: var(--spacing-scale-base) var(--spacing-scale-base);\n }\n\n &.medium {\n padding: var(--spacing-scale-baseh) var(--spacing-scale-baseh);\n }\n\n &.large {\n padding: var(--spacing-scale-2x) var(--spacing-scale-2x);\n }\n\n &.is-visible {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n &.popover {\n br-button {\n align-self: flex-start;\n margin-left: var(--spacing-scale-half);\n }\n }\n\n &:focus-visible {\n outline: var(--focus) var(--focus-style) var(--focus-width);\n outline-offset: var(--focus-offset);\n }\n }\n\n .arrow {\n position: absolute;\n width: 8px;\n height: 8px;\n transform: rotate(45deg);\n }\n\n .content,\n .arrow {\n &.info {\n background-color: var(--blue-warm-vivid-60);\n\n br-button::part(button) {\n color: var(--pure-0);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--pure-0-rgb), var(--hover)), rgb(var(--pure-0-rgb), var(--hover)));\n }\n }\n\n &.warning {\n background-color: var(--yellow-vivid-20);\n color: var(--gray-80);\n\n br-button::part(button) {\n color: var(--gray-80);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--gray-80-rgb), var(--hover)), rgb(var(--gray-80-rgb), var(--hover)));\n }\n }\n\n &.error {\n background-color: var(--red-vivid-50);\n\n br-button::part(button) {\n color: var(--pure-0);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--pure-0-rgb), var(--hover)), rgb(var(--pure-0-rgb), var(--hover)));\n }\n }\n\n &.success {\n background-color: var(--green-cool-vivid-50);\n\n br-button::part(button) {\n color: var(--pure-0);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--pure-0-rgb), var(--hover)), rgb(var(--pure-0-rgb), var(--hover)));\n }\n }\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 { FloatingUIManager } from '../../utils/floating-ui'\nimport Helpers from '../../utils/helpers'\nimport { CssClassMap } from '../../utils/interfaces'\n\ntype TooltipPosition = 'top' | 'bottom' | 'left' | 'right'\ntype TooltipType = 'standard' | 'popover'\ntype TooltipDensity = 'large' | 'medium' | 'small'\ntype TooltipState = 'info' | 'warning' | 'error' | 'success'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https:\n *\n * @slot trigger - Área para o elemento acionador do tooltip.\n * @slot content - Área para o conteúdo do tooltip.\n */\n@Component({\n tag: 'br-tooltip',\n styleUrl: 'tooltip.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Tooltip {\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: HTMLBrTooltipElement\n\n /**\n * Referência ao elemento Internals do componente.\n * O elemento Internals fornece uma interface para acessar e manipular o estado interno do componente.\n * Isso é útil para componentes que precisam se integrar com o sistema de formulários nativo do navegador.\n */\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) customId: string = Helpers.generateUniqueId()\n\n /**\n * Define a posição do tooltip em relação ao elemento acionador.\n * As opções disponíveis são: 'top', 'bottom', 'left' e 'right'.\n * @default 'top'\n */\n @Prop({ reflect: true }) position: TooltipPosition = 'top'\n\n /**\n * Define o tipo de tooltip a ser exibido.\n * As opções disponíveis são: 'standard' e 'popover'.\n * O tipo 'standard' exibe um tooltip simples, enquanto o tipo 'popover' exibe um tooltip com mais informações e fechamento por interação.\n * @default 'standard'\n */\n @Prop({ reflect: true }) type: TooltipType = 'standard'\n\n /**\n * Define a densidade do tooltip.\n * As opções disponíveis são: 'large', 'medium' e 'small'.\n * A densidade 'small' exibe um tooltip mais compacto, enquanto a densidade 'large' exibe um tooltip mais espaçado.\n * @default 'medium'\n */\n @Prop({ reflect: true }) density: TooltipDensity = 'medium'\n\n /**\n * Define o estado do tooltip.\n * Os estados disponíveis são: 'info', 'warning', 'error' e 'success'.\n * @default 'info'\n */\n @Prop({ reflect: true }) state: TooltipState = 'info'\n\n /**\n * Define se o tooltip deve ser exibido automaticamente.\n * Quando definido como true, o tooltip será exibido automaticamente.\n * Quando definido como false, o tooltip será exibido apenas quando acionado pelo usuário.\n * @default false\n */\n @Prop({ reflect: true }) isAutoVisible: boolean = false\n\n /**\n * Define o atraso em milissegundos para exibir o tooltip.\n * @default null\n */\n @Prop({ reflect: true }) showDelay: number = null\n\n /**\n * Define o atraso em milissegundos para ocultar o tooltip.\n * @default null\n */\n @Prop({ reflect: true }) hideDelay: number = null\n\n /**\n * Define a visibilidade do tooltip.\n * Quando definido como true, o tooltip será exibido.\n * Quando definido como false, o tooltip será ocultado.\n * @default false\n */\n @State() isVisible: boolean = false\n\n /**\n * Watcher para monitorar alterações na propriedade `isVisible`.\n * @param visible boolean\n * @returns void\n */\n @Watch('isVisible')\n handleVisibilityChange(visible: boolean) {\n if (this.contentElement == null) return\n\n if (visible) {\n this.positionTooltip()\n this.brDidOpen.emit()\n } else {\n this.clearAutoUpdate?.()\n this.clearAutoUpdate = undefined\n this.brDidClose.emit()\n }\n }\n\n /**\n * Evento emitido quando o tooltip é aberto.\n */\n @Event() brDidOpen: EventEmitter<void>\n\n /**\n * Evento emitido quando o tooltip é fechado.\n */\n @Event() brDidClose: EventEmitter<void>\n\n /**\n * Listener para o evento de foco no elemento acionador.\n * Este evento é utilizado para exibir o tooltip quando o elemento acionador recebe foco.\n */\n @Listen('focusin')\n handleFocusIn() {\n if (!this.fromPointerDown) {\n this.showContent()\n }\n this.fromPointerDown = false\n }\n\n /**\n * Listener para o evento de desfoque no elemento acionador.\n * Este evento é utilizado para ocultar o tooltip quando o elemento acionador perde o foco.\n */\n @Listen('focusout')\n handleFocusOut() {\n this.hideContent()\n }\n\n /**\n * Listener para o evento de teclado no documento.\n * Este evento é utilizado para fechar o tooltip quando a tecla Escape é pressionada.\n * @param event KeyboardEvent\n */\n @Listen('keydown', { target: 'document' })\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault()\n this.hideContent()\n this.triggerElement?.focus()\n }\n }\n\n private floatingManager: FloatingUIManager\n\n /**\n * Elemento que aciona a exibição do tooltip.\n * Este elemento é referenciado para garantir que o tooltip seja posicionado corretamente em relação a ele.\n */\n private triggerElement: HTMLDivElement\n\n /**\n * Elemento que contém o conteúdo do tooltip.\n * Este elemento é referenciado para garantir que o tooltip seja posicionado corretamente em relação a ele.\n */\n private contentElement: HTMLDivElement\n\n /**\n * Elemento que representa a seta do tooltip.\n * Este elemento é utilizado para indicar a direção do tooltip em relação ao elemento acionador.\n */\n private arrowElement: HTMLDivElement\n\n /**\n * Função de limpeza para atualizar a posição do tooltip automaticamente.\n * Esta função é chamada quando o tooltip não está mais visível ou quando o componente é desconectado.\n * Isso garante que o tooltip não consuma recursos desnecessários quando não estiver em uso.\n */\n private clearAutoUpdate: () => void\n\n /**\n * Tempo limite para exibir o tooltip automaticamente.\n */\n private showTimer: ReturnType<typeof setTimeout>\n\n /**\n * Tempo limite para ocultar o tooltip.\n */\n private hideTimer: ReturnType<typeof setTimeout>\n\n /**\n * Indica se o tooltip foi acionado por um clique do mouse.\n * Isso é utilizado para evitar conflito com o acionamento por foco.\n */\n private fromPointerDown: boolean = false\n\n /**\n * Controla a exibição do tooltip.\n * Quando o tooltip é exibido, ele é posicionado em relação ao elemento acionador.\n * Isso é feito utilizando a biblioteca Floating UI, que calcula a posição ideal do tooltip com base no espaço disponível na tela.\n * A função `autoUpdate` é utilizada para atualizar automaticamente a posição do tooltip quando o elemento acionador é movido ou redimensionado.\n */\n private positionTooltip() {\n if (this.triggerElement == null || this.contentElement == null) return\n\n this.floatingManager = new FloatingUIManager({\n triggerElement: this.triggerElement,\n contentElement: this.contentElement,\n arrowElement: this.arrowElement,\n placement: this.position,\n })\n\n this.floatingManager.start()\n }\n\n private cleanupPositioning() {\n this.floatingManager?.stop()\n }\n\n /**\n * Define os eventos de interação do tooltip.\n * Os eventos de interação incluem mouseenter, mouseleave, focus e blur.\n * @returns void\n */\n private setupInteractions() {\n if (this.triggerElement == null || this.contentElement == null) return\n\n if (this.type === 'standard') {\n this.triggerElement.addEventListener('mouseenter', this.showContent)\n this.triggerElement.addEventListener('mouseleave', this.hideContent)\n }\n\n if (this.type === 'popover') {\n this.triggerElement.addEventListener('pointerdown', this.toggleContent)\n }\n\n if (this.isAutoVisible) {\n requestAnimationFrame(() => {\n this.clearShowTimer()\n this.setShowTimer()\n })\n }\n }\n\n /**\n * Alterna a exibição do tooltip.\n * Se o tooltip estiver visível, ele será ocultado.\n * Se o tooltip estiver oculto, ele será exibido.\n */\n private toggleContent = () => {\n this.fromPointerDown = true\n\n if (this.isVisible) {\n this.hideContent()\n } else {\n this.showContent()\n }\n }\n\n /**\n * Processa as ações relacionadas à exibição do tooltip.\n * Isso inclui exibir o tooltip e iniciar o tempo limite de ocultação automática.\n * @returns void\n */\n private showContent = () => {\n if (this.contentElement == null) return\n\n this.isVisible = true\n\n if (this.isAutoVisible) {\n if (this.hideDelay !== null) {\n this.clearHideTimer()\n this.setHideTimer()\n }\n }\n\n if (this.type === 'popover') {\n document.addEventListener('click', this.handleOutsideClick)\n }\n }\n\n /**\n * Processa as ações relacionadas ao fechamento do tooltip.\n * Isso inclui ocultar o tooltip e limpar o tempo limite de ocultação automática.\n * @returns void\n */\n private hideContent = () => {\n if (this.contentElement == null) return\n\n this.isVisible = false\n\n if (this.type === 'popover') {\n document.removeEventListener('click', this.handleOutsideClick)\n requestAnimationFrame(() => this.contentElement?.focus())\n }\n }\n\n /**\n * Configura o tempo limite para exibir o tooltip automaticamente.\n * O tempo limite é definido pelo valor da propriedade `showDelay`.\n */\n private setShowTimer() {\n this.showTimer = setTimeout(() => {\n this.showContent()\n }, this.showDelay || 0)\n }\n\n /**\n * Limpa o tempo limite de exibição automática do tooltip.\n */\n private clearShowTimer() {\n if (this.showTimer !== undefined) {\n clearTimeout(this.showTimer)\n this.showTimer = undefined\n }\n }\n\n /**\n * Configura o tempo limite para ocultar o tooltip automaticamente.\n * O tempo limite é definido pelo valor da propriedade `hideDelay`.\n */\n private setHideTimer() {\n this.hideTimer = setTimeout(() => {\n this.hideContent()\n }, this.hideDelay)\n }\n\n /**\n * Limpa o tempo limite de ocultação automática do tooltip.\n */\n private clearHideTimer() {\n if (this.hideTimer !== undefined) {\n clearTimeout(this.hideTimer)\n this.hideTimer = undefined\n }\n }\n\n /**\n * Lida com cliques fora do tooltip.\n * É utilizado para o tooltip do tipo 'popover'.\n * @param event MouseEvent\n */\n private handleOutsideClick = (event: MouseEvent) => {\n const path = event.composedPath()\n\n if (\n this.isVisible &&\n this.type === 'popover' &&\n !path.includes(this.contentElement) &&\n !path.includes(this.triggerElement)\n ) {\n this.hideContent()\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS do componente.\n * @returns Um objeto que representa o mapeamento de classes CSS do componente.\n */\n private getCssClassMap(): CssClassMap {\n return {\n 'br-tooltip': true,\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS do trigger.\n * @returns Um objeto que representa o mapeamento de classes CSS do trigger.\n */\n private getTriggerCssClassMap(): CssClassMap {\n return {\n trigger: true,\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS do conteúdo.\n * @returns Um objeto que representa o mapeamento de classes CSS do conteúdo.\n */\n private getContentCssClassMap(): CssClassMap {\n return {\n 'is-visible': this.isVisible,\n content: true,\n popover: this.type === 'popover',\n large: this.density === 'large',\n medium: this.density === 'medium',\n small: this.density === 'small',\n info: this.state === 'info',\n warning: this.state === 'warning',\n error: this.state === 'error',\n success: this.state === 'success',\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS da seta.\n * @returns Um objeto que representa o mapeamento de classes CSS da seta.\n */\n private getArrowCssClassMap(): CssClassMap {\n return {\n arrow: true,\n large: this.density === 'large',\n medium: this.density === 'medium',\n small: this.density === 'small',\n info: this.state === 'info',\n warning: this.state === 'warning',\n error: this.state === 'error',\n success: this.state === 'success',\n }\n }\n\n /**\n * Método do ciclo de vida do componente.\n * Este método é chamado uma única vez após o componente ser montado no DOM.\n */\n componentDidLoad() {\n if (typeof window === 'undefined') return\n this.setupInteractions()\n }\n\n /**\n * Método do ciclo de vida do componente.\n * Este método é chamado quando o componente é desconectado do DOM.\n */\n disconnectedCallback() {\n if (this.type === 'standard') {\n this.triggerElement?.removeEventListener('mouseenter', this.showContent)\n this.triggerElement?.removeEventListener('mouseleave', this.hideContent)\n } else if (this.type === 'popover') {\n this.triggerElement?.removeEventListener('pointerdown', this.toggleContent)\n document.removeEventListener('click', this.handleOutsideClick)\n }\n\n this.cleanupPositioning()\n\n this.clearShowTimer()\n this.clearHideTimer()\n }\n\n /**\n * Renderiza o componente.\n * Este método é responsável por gerar o conteúdo HTML do componente.\n * Ele utiliza a função `h` do Stencil para criar elementos JSX.\n * @returns JSX.Element\n */\n render() {\n return (\n <Host>\n <div id={this.customId} class={this.getCssClassMap()}>\n <div\n class={this.getTriggerCssClassMap()}\n ref={(el) => (this.triggerElement = el as HTMLDivElement)}\n aria-describedby={`${this.customId}-content`}\n aria-expanded={this.isVisible ? 'true' : 'false'}\n aria-controls={`${this.customId}-content`}\n role=\"button\"\n tabindex=\"-1 \"\n >\n <slot name=\"trigger\"></slot>\n </div>\n <div\n id={`${this.customId}-content`}\n class={this.getContentCssClassMap()}\n ref={(el) => (this.contentElement = el as HTMLDivElement)}\n role={this.type === 'popover' ? 'dialog' : 'tooltip'}\n tabindex=\"-1\"\n >\n <slot name=\"content\"></slot>\n {this.type === 'popover' && (\n <br-button\n class=\"close\"\n shape=\"circle\"\n density=\"small\"\n onClick={this.hideContent}\n aria-label=\"Fechar popover\"\n >\n <br-icon icon-name=\"fa6-solid:xmark\"></br-icon>\n </br-button>\n )}\n <div class={this.getArrowCssClassMap()} ref={(el) => (this.arrowElement = el as HTMLDivElement)}></div>\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"br-tooltip.entry.esm.js","sources":["../../packages/webcomponents/src/components/tooltip/tooltip.scss?tag=br-tooltip&encapsulation=shadow","../../packages/webcomponents/src/components/tooltip/tooltip.tsx"],"sourcesContent":[":host {\n display: inline-block;\n position: relative;\n}\n\n.br-tooltip {\n .content {\n display: none;\n border-radius: 4px;\n box-shadow: var(--surface-offset-xl) var(--surface-offset-xl) var(--surface-offset-xl) rgb(0 0 0 / 16%);\n color: var(--pure-0);\n font-size: var(--font-size-scale-down-01);\n font-weight: var(--font-weight-regular);\n width: max-content;\n position: absolute;\n left: 0;\n top: 0;\n text-align: center;\n z-index: 4;\n\n &.small {\n padding: var(--spacing-scale-base) var(--spacing-scale-base);\n }\n\n &.medium {\n padding: var(--spacing-scale-baseh) var(--spacing-scale-baseh);\n }\n\n &.large {\n padding: var(--spacing-scale-2x) var(--spacing-scale-2x);\n }\n\n &.is-visible {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n &.popover {\n br-button {\n align-self: flex-start;\n margin-left: var(--spacing-scale-half);\n }\n }\n\n &:focus-visible {\n outline: var(--focus) var(--focus-style) var(--focus-width);\n outline-offset: var(--focus-offset);\n }\n }\n\n .arrow {\n position: absolute;\n width: 8px;\n height: 8px;\n transform: rotate(45deg);\n }\n\n .content,\n .arrow {\n &.info {\n background-color: var(--blue-warm-vivid-60);\n\n br-button::part(button) {\n color: var(--pure-0);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--pure-0-rgb), var(--hover)), rgb(var(--pure-0-rgb), var(--hover)));\n }\n }\n\n &.warning {\n background-color: var(--yellow-vivid-20);\n color: var(--gray-80);\n\n br-button::part(button) {\n color: var(--gray-80);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--gray-80-rgb), var(--hover)), rgb(var(--gray-80-rgb), var(--hover)));\n }\n }\n\n &.error {\n background-color: var(--red-vivid-50);\n\n br-button::part(button) {\n color: var(--pure-0);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--pure-0-rgb), var(--hover)), rgb(var(--pure-0-rgb), var(--hover)));\n }\n }\n\n &.success {\n background-color: var(--green-cool-vivid-50);\n\n br-button::part(button) {\n color: var(--pure-0);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--pure-0-rgb), var(--hover)), rgb(var(--pure-0-rgb), var(--hover)));\n }\n }\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 { FloatingUIManager } from '../../utils/floating-ui'\nimport Helpers from '../../utils/helpers'\nimport { CssClassMap } from '../../utils/interfaces'\n\ntype TooltipPosition = 'top' | 'bottom' | 'left' | 'right'\ntype TooltipType = 'standard' | 'popover'\ntype TooltipDensity = 'large' | 'medium' | 'small'\ntype TooltipState = 'info' | 'warning' | 'error' | 'success'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https:\n *\n * @slot trigger - Área para o elemento acionador do tooltip.\n * @slot content - Área para o conteúdo do tooltip.\n */\n@Component({\n tag: 'br-tooltip',\n styleUrl: 'tooltip.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Tooltip {\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: HTMLBrTooltipElement\n\n /**\n * Referência ao elemento Internals do componente.\n * O elemento Internals fornece uma interface para acessar e manipular o estado interno do componente.\n * Isso é útil para componentes que precisam se integrar com o sistema de formulários nativo do navegador.\n */\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) customId: string = Helpers.generateUniqueId()\n\n /**\n * Define a posição do tooltip em relação ao elemento acionador.\n * As opções disponíveis são: 'top', 'bottom', 'left' e 'right'.\n * @default 'top'\n */\n @Prop({ reflect: true }) position: TooltipPosition = 'top'\n\n /**\n * Define o tipo de tooltip a ser exibido.\n * As opções disponíveis são: 'standard' e 'popover'.\n * O tipo 'standard' exibe um tooltip simples, enquanto o tipo 'popover' exibe um tooltip com mais informações e fechamento por interação.\n * @default 'standard'\n */\n @Prop({ reflect: true }) type: TooltipType = 'standard'\n\n /**\n * Define a densidade do tooltip.\n * As opções disponíveis são: 'large', 'medium' e 'small'.\n * A densidade 'small' exibe um tooltip mais compacto, enquanto a densidade 'large' exibe um tooltip mais espaçado.\n * @default 'medium'\n */\n @Prop({ reflect: true }) density: TooltipDensity = 'medium'\n\n /**\n * Define o estado do tooltip.\n * Os estados disponíveis são: 'info', 'warning', 'error' e 'success'.\n * @default 'info'\n */\n @Prop({ reflect: true }) state: TooltipState = 'info'\n\n /**\n * Define se o tooltip deve ser exibido automaticamente.\n * Quando definido como true, o tooltip será exibido automaticamente.\n * Quando definido como false, o tooltip será exibido apenas quando acionado pelo usuário.\n * @default false\n */\n @Prop({ reflect: true }) isAutoVisible: boolean = false\n\n /**\n * Define o atraso em milissegundos para exibir o tooltip.\n * @default null\n */\n @Prop({ reflect: true }) showDelay: number = null\n\n /**\n * Define o atraso em milissegundos para ocultar o tooltip.\n * @default null\n */\n @Prop({ reflect: true }) hideDelay: number = null\n\n /**\n * Define a visibilidade do tooltip.\n * Quando definido como true, o tooltip será exibido.\n * Quando definido como false, o tooltip será ocultado.\n * @default false\n */\n @State() isVisible: boolean = false\n\n /**\n * Watcher para monitorar alterações na propriedade `isVisible`.\n * @param visible boolean\n * @returns void\n */\n @Watch('isVisible')\n handleVisibilityChange(visible: boolean) {\n if (this.contentElement == null) return\n\n if (visible) {\n this.positionTooltip()\n this.brDidOpen.emit({ id: this.customId, visible: true })\n } else {\n this.clearAutoUpdate?.()\n this.clearAutoUpdate = undefined\n this.brDidClose.emit({ id: this.customId, visible: false })\n }\n }\n\n /**\n * Evento emitido quando o tooltip é aberto.\n */\n @Event({\n eventName: 'brDidOpen',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n brDidOpen: EventEmitter<{ id: string; visible: boolean }>\n\n /**\n * Evento emitido quando o tooltip é fechado.\n */\n @Event({\n eventName: 'brDidClose',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n brDidClose: EventEmitter<{ id: string; visible: boolean }>\n\n /**\n * Listener para o evento de foco no elemento acionador.\n * Este evento é utilizado para exibir o tooltip quando o elemento acionador recebe foco.\n */\n @Listen('focusin')\n handleFocusIn() {\n if (!this.fromPointerDown) {\n this.showContent()\n }\n this.fromPointerDown = false\n }\n\n /**\n * Listener para o evento de desfoque no elemento acionador.\n * Este evento é utilizado para ocultar o tooltip quando o elemento acionador perde o foco.\n */\n @Listen('focusout')\n handleFocusOut() {\n this.hideContent()\n }\n\n /**\n * Listener para o evento de teclado no documento.\n * Este evento é utilizado para fechar o tooltip quando a tecla Escape é pressionada.\n * @param event KeyboardEvent\n */\n @Listen('keydown', { target: 'document' })\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault()\n this.hideContent()\n this.triggerElement?.focus()\n }\n }\n\n private floatingManager: FloatingUIManager\n\n /**\n * Elemento que aciona a exibição do tooltip.\n * Este elemento é referenciado para garantir que o tooltip seja posicionado corretamente em relação a ele.\n */\n private triggerElement: HTMLDivElement\n\n /**\n * Elemento que contém o conteúdo do tooltip.\n * Este elemento é referenciado para garantir que o tooltip seja posicionado corretamente em relação a ele.\n */\n private contentElement: HTMLDivElement\n\n /**\n * Elemento que representa a seta do tooltip.\n * Este elemento é utilizado para indicar a direção do tooltip em relação ao elemento acionador.\n */\n private arrowElement: HTMLDivElement\n\n /**\n * Função de limpeza para atualizar a posição do tooltip automaticamente.\n * Esta função é chamada quando o tooltip não está mais visível ou quando o componente é desconectado.\n * Isso garante que o tooltip não consuma recursos desnecessários quando não estiver em uso.\n */\n private clearAutoUpdate: () => void\n\n /**\n * Tempo limite para exibir o tooltip automaticamente.\n */\n private showTimer: ReturnType<typeof setTimeout>\n\n /**\n * Tempo limite para ocultar o tooltip.\n */\n private hideTimer: ReturnType<typeof setTimeout>\n\n /**\n * Indica se o tooltip foi acionado por um clique do mouse.\n * Isso é utilizado para evitar conflito com o acionamento por foco.\n */\n private fromPointerDown: boolean = false\n\n /**\n * Controla a exibição do tooltip.\n * Quando o tooltip é exibido, ele é posicionado em relação ao elemento acionador.\n * Isso é feito utilizando a biblioteca Floating UI, que calcula a posição ideal do tooltip com base no espaço disponível na tela.\n * A função `autoUpdate` é utilizada para atualizar automaticamente a posição do tooltip quando o elemento acionador é movido ou redimensionado.\n */\n private positionTooltip() {\n if (this.triggerElement == null || this.contentElement == null) return\n\n this.floatingManager = new FloatingUIManager({\n triggerElement: this.triggerElement,\n contentElement: this.contentElement,\n arrowElement: this.arrowElement,\n placement: this.position,\n })\n\n this.floatingManager.start()\n }\n\n private cleanupPositioning() {\n this.floatingManager?.stop()\n }\n\n /**\n * Define os eventos de interação do tooltip.\n * Os eventos de interação incluem mouseenter, mouseleave, focus e blur.\n * @returns void\n */\n private setupInteractions() {\n if (this.triggerElement == null || this.contentElement == null) return\n\n if (this.type === 'standard') {\n this.triggerElement.addEventListener('mouseenter', this.showContent)\n this.triggerElement.addEventListener('mouseleave', this.hideContent)\n }\n\n if (this.type === 'popover') {\n this.triggerElement.addEventListener('pointerdown', this.toggleContent)\n }\n\n if (this.isAutoVisible) {\n requestAnimationFrame(() => {\n this.clearShowTimer()\n this.setShowTimer()\n })\n }\n }\n\n /**\n * Alterna a exibição do tooltip.\n * Se o tooltip estiver visível, ele será ocultado.\n * Se o tooltip estiver oculto, ele será exibido.\n */\n private toggleContent = () => {\n this.fromPointerDown = true\n\n if (this.isVisible) {\n this.hideContent()\n } else {\n this.showContent()\n }\n }\n\n /**\n * Processa as ações relacionadas à exibição do tooltip.\n * Isso inclui exibir o tooltip e iniciar o tempo limite de ocultação automática.\n * @returns void\n */\n private showContent = () => {\n if (this.contentElement == null) return\n\n this.isVisible = true\n\n if (this.isAutoVisible) {\n if (this.hideDelay !== null) {\n this.clearHideTimer()\n this.setHideTimer()\n }\n }\n\n if (this.type === 'popover') {\n document.addEventListener('click', this.handleOutsideClick)\n }\n }\n\n /**\n * Processa as ações relacionadas ao fechamento do tooltip.\n * Isso inclui ocultar o tooltip e limpar o tempo limite de ocultação automática.\n * @returns void\n */\n private hideContent = () => {\n if (this.contentElement == null) return\n\n this.isVisible = false\n\n if (this.type === 'popover') {\n document.removeEventListener('click', this.handleOutsideClick)\n requestAnimationFrame(() => this.contentElement?.focus())\n }\n }\n\n /**\n * Configura o tempo limite para exibir o tooltip automaticamente.\n * O tempo limite é definido pelo valor da propriedade `showDelay`.\n */\n private setShowTimer() {\n this.showTimer = setTimeout(() => {\n this.showContent()\n }, this.showDelay || 0)\n }\n\n /**\n * Limpa o tempo limite de exibição automática do tooltip.\n */\n private clearShowTimer() {\n if (this.showTimer !== undefined) {\n clearTimeout(this.showTimer)\n this.showTimer = undefined\n }\n }\n\n /**\n * Configura o tempo limite para ocultar o tooltip automaticamente.\n * O tempo limite é definido pelo valor da propriedade `hideDelay`.\n */\n private setHideTimer() {\n this.hideTimer = setTimeout(() => {\n this.hideContent()\n }, this.hideDelay)\n }\n\n /**\n * Limpa o tempo limite de ocultação automática do tooltip.\n */\n private clearHideTimer() {\n if (this.hideTimer !== undefined) {\n clearTimeout(this.hideTimer)\n this.hideTimer = undefined\n }\n }\n\n /**\n * Lida com cliques fora do tooltip.\n * É utilizado para o tooltip do tipo 'popover'.\n * @param event MouseEvent\n */\n private handleOutsideClick = (event: MouseEvent) => {\n const path = event.composedPath()\n\n if (\n this.isVisible &&\n this.type === 'popover' &&\n !path.includes(this.contentElement) &&\n !path.includes(this.triggerElement)\n ) {\n this.hideContent()\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS do componente.\n * @returns Um objeto que representa o mapeamento de classes CSS do componente.\n */\n private getCssClassMap(): CssClassMap {\n return {\n 'br-tooltip': true,\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS do trigger.\n * @returns Um objeto que representa o mapeamento de classes CSS do trigger.\n */\n private getTriggerCssClassMap(): CssClassMap {\n return {\n trigger: true,\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS do conteúdo.\n * @returns Um objeto que representa o mapeamento de classes CSS do conteúdo.\n */\n private getContentCssClassMap(): CssClassMap {\n return {\n 'is-visible': this.isVisible,\n content: true,\n popover: this.type === 'popover',\n large: this.density === 'large',\n medium: this.density === 'medium',\n small: this.density === 'small',\n info: this.state === 'info',\n warning: this.state === 'warning',\n error: this.state === 'error',\n success: this.state === 'success',\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS da seta.\n * @returns Um objeto que representa o mapeamento de classes CSS da seta.\n */\n private getArrowCssClassMap(): CssClassMap {\n return {\n arrow: true,\n large: this.density === 'large',\n medium: this.density === 'medium',\n small: this.density === 'small',\n info: this.state === 'info',\n warning: this.state === 'warning',\n error: this.state === 'error',\n success: this.state === 'success',\n }\n }\n\n /**\n * Método do ciclo de vida do componente.\n * Este método é chamado uma única vez após o componente ser montado no DOM.\n */\n componentDidLoad() {\n if (typeof window === 'undefined') return\n this.setupInteractions()\n }\n\n /**\n * Método do ciclo de vida do componente.\n * Este método é chamado quando o componente é desconectado do DOM.\n */\n disconnectedCallback() {\n if (this.type === 'standard') {\n this.triggerElement?.removeEventListener('mouseenter', this.showContent)\n this.triggerElement?.removeEventListener('mouseleave', this.hideContent)\n } else if (this.type === 'popover') {\n this.triggerElement?.removeEventListener('pointerdown', this.toggleContent)\n document.removeEventListener('click', this.handleOutsideClick)\n }\n\n this.cleanupPositioning()\n\n this.clearShowTimer()\n this.clearHideTimer()\n }\n\n /**\n * Renderiza o componente.\n * Este método é responsável por gerar o conteúdo HTML do componente.\n * Ele utiliza a função `h` do Stencil para criar elementos JSX.\n * @returns JSX.Element\n */\n render() {\n return (\n <Host>\n <div id={this.customId} class={this.getCssClassMap()}>\n <div\n class={this.getTriggerCssClassMap()}\n ref={(el) => (this.triggerElement = el as HTMLDivElement)}\n aria-describedby={`${this.customId}-content`}\n aria-expanded={this.isVisible ? 'true' : 'false'}\n aria-controls={`${this.customId}-content`}\n role=\"button\"\n tabindex=\"-1 \"\n >\n <slot name=\"trigger\"></slot>\n </div>\n <div\n id={`${this.customId}-content`}\n class={this.getContentCssClassMap()}\n ref={(el) => (this.contentElement = el as HTMLDivElement)}\n role={this.type === 'popover' ? 'dialog' : 'tooltip'}\n tabindex=\"-1\"\n >\n <slot name=\"content\"></slot>\n {this.type === 'popover' && (\n <br-button\n class=\"close\"\n shape=\"circle\"\n density=\"small\"\n onClick={this.hideContent}\n aria-label=\"Fechar popover\"\n >\n <br-icon icon-name=\"fa6-solid:xmark\"></br-icon>\n </br-button>\n )}\n <div class={this.getArrowCssClassMap()} ref={(el) => (this.arrowElement = el as HTMLDivElement)}></div>\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"names":[],"mappings":"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"}