@govbr-ds/webcomponents 2.0.0-next.36 → 2.0.0-next.37

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 (315) hide show
  1. package/dist/cjs/br-avatar.cjs.entry.js +1 -1
  2. package/dist/cjs/br-avatar.cjs.entry.js.map +1 -1
  3. package/dist/cjs/br-avatar.entry.cjs.js.map +1 -1
  4. package/dist/cjs/br-breadcrumb.cjs.entry.js +1 -1
  5. package/dist/cjs/br-breadcrumb.cjs.entry.js.map +1 -1
  6. package/dist/cjs/br-breadcrumb.entry.cjs.js.map +1 -1
  7. package/dist/cjs/br-button.br-icon.entry.cjs.js.map +1 -1
  8. package/dist/cjs/br-button_2.cjs.entry.js +9 -3
  9. package/dist/cjs/br-button_2.cjs.entry.js.map +1 -1
  10. package/dist/cjs/br-checkbox.cjs.entry.js +1 -1
  11. package/dist/cjs/br-checkbox.cjs.entry.js.map +1 -1
  12. package/dist/cjs/br-checkbox.entry.cjs.js.map +1 -1
  13. package/dist/cjs/br-checkgroup.cjs.entry.js +1 -1
  14. package/dist/cjs/br-checkgroup.cjs.entry.js.map +1 -1
  15. package/dist/cjs/br-checkgroup.entry.cjs.js.map +1 -1
  16. package/dist/cjs/br-collapse.cjs.entry.js +1 -1
  17. package/dist/cjs/br-collapse.cjs.entry.js.map +1 -1
  18. package/dist/cjs/br-collapse.entry.cjs.js.map +1 -1
  19. package/dist/cjs/br-divider.cjs.entry.js +1 -1
  20. package/dist/cjs/br-divider.cjs.entry.js.map +1 -1
  21. package/dist/cjs/br-divider.entry.cjs.js.map +1 -1
  22. package/dist/cjs/br-dropdown.cjs.entry.js +1 -1
  23. package/dist/cjs/br-dropdown.cjs.entry.js.map +1 -1
  24. package/dist/cjs/br-dropdown.entry.cjs.js.map +1 -1
  25. package/dist/cjs/br-input.br-radio.entry.cjs.js.map +1 -1
  26. package/dist/cjs/br-input_2.cjs.entry.js +2 -2
  27. package/dist/cjs/br-input_2.cjs.entry.js.map +1 -1
  28. package/dist/cjs/br-item.cjs.entry.js +1 -1
  29. package/dist/cjs/br-item.cjs.entry.js.map +1 -1
  30. package/dist/cjs/br-item.entry.cjs.js.map +1 -1
  31. package/dist/cjs/br-list.cjs.entry.js +1 -1
  32. package/dist/cjs/br-list.cjs.entry.js.map +1 -1
  33. package/dist/cjs/br-list.entry.cjs.js.map +1 -1
  34. package/dist/cjs/br-loading.cjs.entry.js +1 -1
  35. package/dist/cjs/br-loading.cjs.entry.js.map +1 -1
  36. package/dist/cjs/br-loading.entry.cjs.js.map +1 -1
  37. package/dist/cjs/br-message.cjs.entry.js +1 -1
  38. package/dist/cjs/br-message.cjs.entry.js.map +1 -1
  39. package/dist/cjs/br-message.entry.cjs.js.map +1 -1
  40. package/dist/cjs/br-select.cjs.entry.js +1 -1
  41. package/dist/cjs/br-select.cjs.entry.js.map +1 -1
  42. package/dist/cjs/br-select.entry.cjs.js.map +1 -1
  43. package/dist/cjs/br-step-item.cjs.entry.js +2 -2
  44. package/dist/cjs/br-step-item.cjs.entry.js.map +1 -1
  45. package/dist/cjs/br-step-item.entry.cjs.js.map +1 -1
  46. package/dist/cjs/br-step.cjs.entry.js +1 -1
  47. package/dist/cjs/br-step.cjs.entry.js.map +1 -1
  48. package/dist/cjs/br-step.entry.cjs.js.map +1 -1
  49. package/dist/cjs/br-switch.cjs.entry.js +2 -2
  50. package/dist/cjs/br-switch.cjs.entry.js.map +1 -1
  51. package/dist/cjs/br-switch.entry.cjs.js.map +1 -1
  52. package/dist/cjs/br-tab-item.cjs.entry.js +76 -0
  53. package/dist/cjs/br-tab-item.cjs.entry.js.map +1 -0
  54. package/dist/cjs/br-tab-item.entry.cjs.js.map +1 -0
  55. package/dist/cjs/br-tab.cjs.entry.js +294 -0
  56. package/dist/cjs/br-tab.cjs.entry.js.map +1 -0
  57. package/dist/cjs/br-tab.entry.cjs.js.map +1 -0
  58. package/dist/cjs/br-tag.cjs.entry.js +3 -3
  59. package/dist/cjs/br-tag.cjs.entry.js.map +1 -1
  60. package/dist/cjs/br-tag.entry.cjs.js.map +1 -1
  61. package/dist/cjs/br-textarea.cjs.entry.js +2 -2
  62. package/dist/cjs/br-textarea.cjs.entry.js.map +1 -1
  63. package/dist/cjs/br-textarea.entry.cjs.js.map +1 -1
  64. package/dist/cjs/br-upload.cjs.entry.js +2 -2
  65. package/dist/cjs/br-upload.cjs.entry.js.map +1 -1
  66. package/dist/cjs/br-upload.entry.cjs.js.map +1 -1
  67. package/dist/cjs/index-DAOr34NM.js +8 -0
  68. package/dist/cjs/loader.cjs.js +1 -1
  69. package/dist/cjs/webcomponents.cjs.js +1 -1
  70. package/dist/collection/collection-manifest.json +2 -0
  71. package/dist/collection/components/avatar/avatar.css +1 -1
  72. package/dist/collection/components/breadcrumb/breadcrumb.css +1 -1
  73. package/dist/collection/components/button/button.css +1 -1
  74. package/dist/collection/components/button/button.js +7 -1
  75. package/dist/collection/components/button/button.js.map +1 -1
  76. package/dist/collection/components/checkbox/checkbox.css +1 -1
  77. package/dist/collection/components/checkgroup/checkgroup.css +1 -1
  78. package/dist/collection/components/collapse/collapse.css +1 -1
  79. package/dist/collection/components/divider/divider.css +1 -1
  80. package/dist/collection/components/dropdown/dropdown.css +1 -1
  81. package/dist/collection/components/icon/icon.css +1 -1
  82. package/dist/collection/components/input/input.css +1 -1
  83. package/dist/collection/components/item/item.css +1 -1
  84. package/dist/collection/components/list/list.css +1 -1
  85. package/dist/collection/components/loading/loading.css +1 -1
  86. package/dist/collection/components/message/message.css +1 -1
  87. package/dist/collection/components/radio/radio.css +1 -1
  88. package/dist/collection/components/select/select.css +1 -1
  89. package/dist/collection/components/step/step.css +1 -1
  90. package/dist/collection/components/step-item/step-item.css +1 -1
  91. package/dist/collection/components/step-item/step-item.js +1 -1
  92. package/dist/collection/components/step-item/step-item.js.map +1 -1
  93. package/dist/collection/components/switch/switch.css +1 -1
  94. package/dist/collection/components/switch/switch.js +1 -1
  95. package/dist/collection/components/tab/tab.css +1 -0
  96. package/dist/collection/components/tab/tab.js +372 -0
  97. package/dist/collection/components/tab/tab.js.map +1 -0
  98. package/dist/collection/components/tab-item/tab-item.css +1 -0
  99. package/dist/collection/components/tab-item/tab-item.js +256 -0
  100. package/dist/collection/components/tab-item/tab-item.js.map +1 -0
  101. package/dist/collection/components/tag/tag.css +1 -1
  102. package/dist/collection/components/tag/tag.js +2 -2
  103. package/dist/collection/components/textarea/textarea.css +1 -1
  104. package/dist/collection/components/textarea/textarea.js +1 -1
  105. package/dist/collection/components/upload/upload.css +1 -1
  106. package/dist/collection/components/upload/upload.js +1 -1
  107. package/dist/collection/pages/components/tab/index.js +18 -0
  108. package/dist/collection/pages/scripts/menu.js +6 -2
  109. package/dist/components/br-avatar.js +2 -2
  110. package/dist/components/br-breadcrumb.js +5 -5
  111. package/dist/components/br-breadcrumb.js.map +1 -1
  112. package/dist/components/br-button.js +4 -4
  113. package/dist/components/br-checkbox.js +3 -3
  114. package/dist/components/br-checkgroup.js +2 -2
  115. package/dist/components/br-collapse.js +2 -2
  116. package/dist/components/br-divider.js +1 -1
  117. package/dist/components/br-dropdown.js +1 -1
  118. package/dist/components/br-icon.js +4 -4
  119. package/dist/components/br-input.js +3 -3
  120. package/dist/components/br-item.js +1 -1
  121. package/dist/components/br-list.js +1 -1
  122. package/dist/components/br-loading.js +1 -1
  123. package/dist/components/br-message.js +3 -3
  124. package/dist/components/br-message.js.map +1 -1
  125. package/dist/components/br-radio.js +1 -1
  126. package/dist/components/br-select.js +7 -7
  127. package/dist/components/br-step-item.js +13 -15
  128. package/dist/components/br-step-item.js.map +1 -1
  129. package/dist/components/br-step.js +1 -1
  130. package/dist/components/br-switch.js +6 -6
  131. package/dist/components/br-tab-item.d.ts +11 -0
  132. package/dist/components/br-tab-item.js +142 -0
  133. package/dist/components/br-tab-item.js.map +1 -0
  134. package/dist/components/br-tab.d.ts +11 -0
  135. package/dist/components/br-tab.js +323 -0
  136. package/dist/components/br-tab.js.map +1 -0
  137. package/dist/components/br-tag.js +9 -9
  138. package/dist/components/br-tag.js.map +1 -1
  139. package/dist/components/br-textarea.js +9 -9
  140. package/dist/components/br-upload.js +12 -12
  141. package/dist/components/br-upload.js.map +1 -1
  142. package/dist/components/index.d.ts +4 -0
  143. package/dist/components/index.js +4 -0
  144. package/dist/components/p--CgLOCRx.js +161 -0
  145. package/dist/components/p--CgLOCRx.js.map +1 -0
  146. package/dist/components/p-BHVw1goI.js +130 -0
  147. package/dist/components/p-BJMTHoO1.js +166 -0
  148. package/dist/components/{p-ZjuPhQfh.js → p-BnUE1zRr.js} +3 -3
  149. package/dist/components/{p-ZjuPhQfh.js.map → p-BnUE1zRr.js.map} +1 -1
  150. package/dist/components/p-D8kzJA95.js +386 -0
  151. package/dist/components/p-D8kzJA95.js.map +1 -0
  152. package/dist/components/p-UBBZzYz0.js +285 -0
  153. package/dist/components/p-XihAdNcR.js +198 -0
  154. package/dist/custom-elements.json +509 -0
  155. package/dist/esm/br-avatar.entry.js +1 -1
  156. package/dist/esm/br-avatar.entry.js.map +1 -1
  157. package/dist/esm/br-breadcrumb.entry.js +1 -1
  158. package/dist/esm/br-breadcrumb.entry.js.map +1 -1
  159. package/dist/esm/br-button.br-icon.entry.js.map +1 -1
  160. package/dist/esm/br-button_2.entry.js +9 -3
  161. package/dist/esm/br-button_2.entry.js.map +1 -1
  162. package/dist/esm/br-checkbox.entry.js +1 -1
  163. package/dist/esm/br-checkbox.entry.js.map +1 -1
  164. package/dist/esm/br-checkgroup.entry.js +1 -1
  165. package/dist/esm/br-checkgroup.entry.js.map +1 -1
  166. package/dist/esm/br-collapse.entry.js +1 -1
  167. package/dist/esm/br-collapse.entry.js.map +1 -1
  168. package/dist/esm/br-divider.entry.js +1 -1
  169. package/dist/esm/br-divider.entry.js.map +1 -1
  170. package/dist/esm/br-dropdown.entry.js +1 -1
  171. package/dist/esm/br-dropdown.entry.js.map +1 -1
  172. package/dist/esm/br-input.br-radio.entry.js.map +1 -1
  173. package/dist/esm/br-input_2.entry.js +2 -2
  174. package/dist/esm/br-input_2.entry.js.map +1 -1
  175. package/dist/esm/br-item.entry.js +1 -1
  176. package/dist/esm/br-item.entry.js.map +1 -1
  177. package/dist/esm/br-list.entry.js +1 -1
  178. package/dist/esm/br-list.entry.js.map +1 -1
  179. package/dist/esm/br-loading.entry.js +1 -1
  180. package/dist/esm/br-loading.entry.js.map +1 -1
  181. package/dist/esm/br-message.entry.js +1 -1
  182. package/dist/esm/br-message.entry.js.map +1 -1
  183. package/dist/esm/br-select.entry.js +1 -1
  184. package/dist/esm/br-select.entry.js.map +1 -1
  185. package/dist/esm/br-step-item.entry.js +2 -2
  186. package/dist/esm/br-step-item.entry.js.map +1 -1
  187. package/dist/esm/br-step.entry.js +1 -1
  188. package/dist/esm/br-step.entry.js.map +1 -1
  189. package/dist/esm/br-switch.entry.js +2 -2
  190. package/dist/esm/br-switch.entry.js.map +1 -1
  191. package/dist/esm/br-tab-item.entry.js +74 -0
  192. package/dist/esm/br-tab-item.entry.js.map +1 -0
  193. package/dist/esm/br-tab.entry.js +292 -0
  194. package/dist/esm/br-tab.entry.js.map +1 -0
  195. package/dist/esm/br-tag.entry.js +3 -3
  196. package/dist/esm/br-tag.entry.js.map +1 -1
  197. package/dist/esm/br-textarea.entry.js +2 -2
  198. package/dist/esm/br-textarea.entry.js.map +1 -1
  199. package/dist/esm/br-upload.entry.js +2 -2
  200. package/dist/esm/br-upload.entry.js.map +1 -1
  201. package/dist/esm/index-ClsF4De3.js +8 -0
  202. package/dist/esm/loader.js +1 -1
  203. package/dist/esm/webcomponents.js +1 -1
  204. package/dist/hydrate/index.js +423 -29
  205. package/dist/hydrate/index.mjs +423 -29
  206. package/dist/types/components/button/button.d.ts +1 -0
  207. package/dist/types/components/tab/tab.d.ts +103 -0
  208. package/dist/types/components/tab-item/tab-item.d.ts +52 -0
  209. package/dist/types/components.d.ts +168 -0
  210. package/dist/webcomponents/br-avatar.entry.esm.js.map +1 -1
  211. package/dist/webcomponents/br-breadcrumb.entry.esm.js.map +1 -1
  212. package/dist/webcomponents/br-button.br-icon.entry.esm.js.map +1 -1
  213. package/dist/webcomponents/br-checkbox.entry.esm.js.map +1 -1
  214. package/dist/webcomponents/br-checkgroup.entry.esm.js.map +1 -1
  215. package/dist/webcomponents/br-collapse.entry.esm.js.map +1 -1
  216. package/dist/webcomponents/br-divider.entry.esm.js.map +1 -1
  217. package/dist/webcomponents/br-dropdown.entry.esm.js.map +1 -1
  218. package/dist/webcomponents/br-input.br-radio.entry.esm.js.map +1 -1
  219. package/dist/webcomponents/br-item.entry.esm.js.map +1 -1
  220. package/dist/webcomponents/br-list.entry.esm.js.map +1 -1
  221. package/dist/webcomponents/br-loading.entry.esm.js.map +1 -1
  222. package/dist/webcomponents/br-message.entry.esm.js.map +1 -1
  223. package/dist/webcomponents/br-select.entry.esm.js.map +1 -1
  224. package/dist/webcomponents/br-step-item.entry.esm.js.map +1 -1
  225. package/dist/webcomponents/br-step.entry.esm.js.map +1 -1
  226. package/dist/webcomponents/br-switch.entry.esm.js.map +1 -1
  227. package/dist/webcomponents/br-tab-item.entry.esm.js.map +1 -0
  228. package/dist/webcomponents/br-tab.entry.esm.js.map +1 -0
  229. package/dist/webcomponents/br-tag.entry.esm.js.map +1 -1
  230. package/dist/webcomponents/br-textarea.entry.esm.js.map +1 -1
  231. package/dist/webcomponents/br-upload.entry.esm.js.map +1 -1
  232. package/dist/webcomponents/p-042418c1.entry.js +282 -0
  233. package/dist/webcomponents/p-266fd1cc.entry.js +210 -0
  234. package/dist/webcomponents/p-266fd1cc.entry.js.map +1 -0
  235. package/dist/webcomponents/p-26a06008.entry.js +277 -0
  236. package/dist/webcomponents/{p-36231217.entry.js.map → p-26a06008.entry.js.map} +1 -1
  237. package/dist/webcomponents/p-39a05b09.entry.js +105 -0
  238. package/dist/webcomponents/p-4904fcbd.entry.js +255 -0
  239. package/dist/webcomponents/p-5ba2ffff.entry.js +258 -0
  240. package/dist/webcomponents/p-5ba2ffff.entry.js.map +1 -0
  241. package/dist/webcomponents/p-5c6f6d89.entry.js +145 -0
  242. package/dist/webcomponents/p-6e345cc1.entry.js +164 -0
  243. package/dist/webcomponents/p-74a30dda.entry.js +145 -0
  244. package/dist/webcomponents/p-8073b5fe.entry.js +376 -0
  245. package/dist/webcomponents/p-82421cdf.entry.js +108 -0
  246. package/dist/webcomponents/p-82421cdf.entry.js.map +1 -0
  247. package/dist/webcomponents/p-8525c0c3.entry.js +149 -0
  248. package/dist/webcomponents/p-86a0426b.entry.js +111 -0
  249. package/dist/webcomponents/p-ba1a8a96.entry.js +141 -0
  250. package/dist/webcomponents/p-c0c4e877.entry.js +88 -0
  251. package/dist/webcomponents/p-c9d64f24.entry.js +169 -0
  252. package/dist/webcomponents/p-cb6a0614.entry.js +153 -0
  253. package/dist/webcomponents/p-cb6a0614.entry.js.map +1 -0
  254. package/dist/webcomponents/p-e2ea234c.entry.js +460 -0
  255. package/dist/webcomponents/p-e2ea234c.entry.js.map +1 -0
  256. package/dist/webcomponents/p-e3880c54.entry.js +167 -0
  257. package/dist/webcomponents/p-e9979a59.entry.js +2369 -0
  258. package/dist/webcomponents/p-e9979a59.entry.js.map +1 -0
  259. package/dist/webcomponents/p-ebe00c81.entry.js +297 -0
  260. package/dist/webcomponents/p-ebe00c81.entry.js.map +1 -0
  261. package/dist/webcomponents/p-fddc4ef2.entry.js +399 -0
  262. package/dist/webcomponents/{p-9cfc8db7.entry.js.map → p-fddc4ef2.entry.js.map} +1 -1
  263. package/dist/webcomponents/webcomponents.esm.js +43 -27
  264. package/dist/webcomponents.html-custom-data.json +30 -0
  265. package/package.json +1 -1
  266. package/dist/components/p-BQZa6fK2.js +0 -198
  267. package/dist/components/p-BQb4_NfQ.js +0 -166
  268. package/dist/components/p-CAjrcMpR.js +0 -154
  269. package/dist/components/p-CAjrcMpR.js.map +0 -1
  270. package/dist/components/p-DP5hSLC1.js +0 -130
  271. package/dist/components/p-DvG8eiYP.js +0 -285
  272. package/dist/components/p-sndAoOGI.js +0 -386
  273. package/dist/components/p-sndAoOGI.js.map +0 -1
  274. package/dist/webcomponents/p-2537ae9c.entry.js +0 -167
  275. package/dist/webcomponents/p-36231217.entry.js +0 -279
  276. package/dist/webcomponents/p-3c0f3cb4.entry.js +0 -169
  277. package/dist/webcomponents/p-477035e2.entry.js +0 -164
  278. package/dist/webcomponents/p-48996f81.entry.js +0 -282
  279. package/dist/webcomponents/p-520c5527.entry.js +0 -149
  280. package/dist/webcomponents/p-64df4b98.entry.js +0 -255
  281. package/dist/webcomponents/p-795c258e.entry.js +0 -105
  282. package/dist/webcomponents/p-94aa48d4.entry.js +0 -460
  283. package/dist/webcomponents/p-94aa48d4.entry.js.map +0 -1
  284. package/dist/webcomponents/p-94aab132.entry.js +0 -141
  285. package/dist/webcomponents/p-9cf1963e.entry.js +0 -145
  286. package/dist/webcomponents/p-9cfc8db7.entry.js +0 -399
  287. package/dist/webcomponents/p-bfb1bd71.entry.js +0 -258
  288. package/dist/webcomponents/p-bfb1bd71.entry.js.map +0 -1
  289. package/dist/webcomponents/p-c5ac5216.entry.js +0 -210
  290. package/dist/webcomponents/p-c5ac5216.entry.js.map +0 -1
  291. package/dist/webcomponents/p-caa64d3d.entry.js +0 -111
  292. package/dist/webcomponents/p-cd2933f6.entry.js +0 -153
  293. package/dist/webcomponents/p-cd2933f6.entry.js.map +0 -1
  294. package/dist/webcomponents/p-db618028.entry.js +0 -2362
  295. package/dist/webcomponents/p-db618028.entry.js.map +0 -1
  296. package/dist/webcomponents/p-ddee0a15.entry.js +0 -88
  297. package/dist/webcomponents/p-eecebb46.entry.js +0 -376
  298. package/dist/webcomponents/p-ff97c81f.entry.js +0 -145
  299. /package/dist/components/{p-DP5hSLC1.js.map → p-BHVw1goI.js.map} +0 -0
  300. /package/dist/components/{p-BQb4_NfQ.js.map → p-BJMTHoO1.js.map} +0 -0
  301. /package/dist/components/{p-DvG8eiYP.js.map → p-UBBZzYz0.js.map} +0 -0
  302. /package/dist/components/{p-BQZa6fK2.js.map → p-XihAdNcR.js.map} +0 -0
  303. /package/dist/webcomponents/{p-48996f81.entry.js.map → p-042418c1.entry.js.map} +0 -0
  304. /package/dist/webcomponents/{p-795c258e.entry.js.map → p-39a05b09.entry.js.map} +0 -0
  305. /package/dist/webcomponents/{p-64df4b98.entry.js.map → p-4904fcbd.entry.js.map} +0 -0
  306. /package/dist/webcomponents/{p-ff97c81f.entry.js.map → p-5c6f6d89.entry.js.map} +0 -0
  307. /package/dist/webcomponents/{p-477035e2.entry.js.map → p-6e345cc1.entry.js.map} +0 -0
  308. /package/dist/webcomponents/{p-9cf1963e.entry.js.map → p-74a30dda.entry.js.map} +0 -0
  309. /package/dist/webcomponents/{p-eecebb46.entry.js.map → p-8073b5fe.entry.js.map} +0 -0
  310. /package/dist/webcomponents/{p-520c5527.entry.js.map → p-8525c0c3.entry.js.map} +0 -0
  311. /package/dist/webcomponents/{p-caa64d3d.entry.js.map → p-86a0426b.entry.js.map} +0 -0
  312. /package/dist/webcomponents/{p-94aab132.entry.js.map → p-ba1a8a96.entry.js.map} +0 -0
  313. /package/dist/webcomponents/{p-ddee0a15.entry.js.map → p-c0c4e877.entry.js.map} +0 -0
  314. /package/dist/webcomponents/{p-3c0f3cb4.entry.js.map → p-c9d64f24.entry.js.map} +0 -0
  315. /package/dist/webcomponents/{p-2537ae9c.entry.js.map → p-e3880c54.entry.js.map} +0 -0
@@ -62,6 +62,7 @@ export declare class Button {
62
62
  */
63
63
  readonly value: string;
64
64
  private readonly handleClick;
65
+ componentDidLoad(): void;
65
66
  private getCssClassMap;
66
67
  render(): any;
67
68
  }
@@ -0,0 +1,103 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ /**
3
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/tab-item?tab=designer).
4
+ *
5
+ * @slot default - Slot com os componentes item da tab
6
+ */
7
+ export declare class Tab {
8
+ el: HTMLBrTabElement;
9
+ elementInternals: ElementInternals;
10
+ /**
11
+ * A propriedade 'density' define a densidade do componente.
12
+ * Os valores possíveis são 'small', 'medium' e 'large'.
13
+ * @type {string}
14
+ * @default 'medium'
15
+ */
16
+ readonly density: 'small' | 'medium' | 'large';
17
+ /**
18
+ * Define se o Tab usará um esquema de cores.
19
+ * Apenas o esquema 'dark' está disponível para o modo escuro.
20
+ * @type {string}
21
+ */
22
+ colorMode: string;
23
+ /**
24
+ * A propriedade 'activeTab' define o tab ativo.
25
+ */
26
+ activeTab: string;
27
+ /**
28
+ * A propriedade 'tabItems' lista dos tabs items .
29
+ */
30
+ tabItems: Element[];
31
+ /**
32
+ * A propriedade 'tabContent' armazena o conteúdo dos tabs.
33
+ * @type {string}
34
+ * @memberof Tab
35
+ */
36
+ tabContent: string;
37
+ private maxWidth;
38
+ private hostStyle;
39
+ private containerStyle;
40
+ private mutationObserver;
41
+ private focusElementIndex;
42
+ brDidActive: EventEmitter;
43
+ private getCssClassMap;
44
+ private setupHostStyles;
45
+ private updateContainerStyles;
46
+ /**
47
+ * Obtém os elementos de tab items dentro do componente.
48
+ * Se não houver elementos, emite um aviso.
49
+ * @private
50
+ * @returns {void}
51
+ * @memberof Tab
52
+ */
53
+ private getTabItemsElements;
54
+ /**
55
+ * Atualiza o conteúdo dos tabs com base nos elementos de tab items.
56
+ * Cada tab item é transformado em um painel de tab com o ID apropriado.
57
+ * O painel ativo é marcado com a classe 'active'.
58
+ * @private
59
+ * @returns {void}
60
+ * @memberof Tab
61
+ * @description
62
+ */
63
+ private updateTabContent;
64
+ /**
65
+ * Atualiza a largura máxima do componente com base na largura da janela.
66
+ * Se a largura da janela não estiver disponível, define a largura máxima como 100%.
67
+ * @private
68
+ * @returns {void}
69
+ * @memberof Tab
70
+ * @description
71
+ * Esta função calcula a largura máxima do componente com base na posição do elemento na tela.
72
+ */
73
+ private updateMaxWidth;
74
+ /**
75
+ * Obtém o ID do tab item.
76
+ * @private
77
+ * @param {Element} tab - O elemento do tab item.
78
+ * @returns {string} - O ID do tab item.
79
+ * @memberof Tab
80
+ * @description
81
+ * Esta função retorna o ID do tab item, que é armazenado no atributo 'tab-item-id'.
82
+ */
83
+ private getTabID;
84
+ /**
85
+ *
86
+ * @param tab
87
+ * @returns
88
+ */
89
+ private isTabActive;
90
+ private verifActiveTab;
91
+ activeTabChanged(newValue: string): void;
92
+ /**
93
+ * Evento de navegação por teclado
94
+ * @param event
95
+ */
96
+ private handleKeyNavigation;
97
+ componentWillLoad(): void;
98
+ componentDidLoad(): void;
99
+ disconnectedCallback(): void;
100
+ private handleTabClick;
101
+ private setActiveTab;
102
+ render(): any;
103
+ }
@@ -0,0 +1,52 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ /**
3
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/tab-item?tab=designer).
4
+ *
5
+ * @slot default - Slot com conteúdo do item da tab
6
+ */
7
+ export declare class TabItem {
8
+ /**
9
+ * Referência ao elemento host do componente.
10
+ * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.
11
+ */
12
+ el: HTMLBrTabItemElement;
13
+ readonly TabItemId: string;
14
+ /**
15
+ * Define ícone do item de tab
16
+ * @type {string}
17
+ */
18
+ readonly icon: string;
19
+ /**
20
+ * Define o título do item de tab
21
+ * @type {string}
22
+ */
23
+ readonly tabItemTitle: string;
24
+ /**
25
+ * Define se mostra somente o ícone
26
+ * @type {boolean}
27
+ * @default false
28
+ */
29
+ readonly onlyIcon: boolean;
30
+ /**
31
+ * Define se o item de tab é ativo
32
+ * @type {boolean}
33
+ */
34
+ isActive: boolean;
35
+ /**
36
+ * Define contador do item de tab
37
+ * @type {string}
38
+ */
39
+ readonly counter: string;
40
+ /**
41
+ * Define se o Tab usará um esquema de cores.
42
+ * Apenas o esquema 'dark' está disponível para o modo escuro.
43
+ * @type {string}
44
+ */
45
+ colorMode: string;
46
+ elementInternals: ElementInternals;
47
+ itemTabClick: EventEmitter<{
48
+ id: string;
49
+ }>;
50
+ private getCssClassMap;
51
+ render(): any;
52
+ }
@@ -804,6 +804,59 @@ export namespace Components {
804
804
  */
805
805
  "value": string;
806
806
  }
807
+ /**
808
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/tab-item?tab=designer).
809
+ */
810
+ interface BrTab {
811
+ /**
812
+ * Define se o Tab usará um esquema de cores. Apenas o esquema 'dark' está disponível para o modo escuro.
813
+ * @type {string}
814
+ */
815
+ "colorMode": string;
816
+ /**
817
+ * A propriedade 'density' define a densidade do componente. Os valores possíveis são 'small', 'medium' e 'large'.
818
+ * @type {string}
819
+ * @default 'medium'
820
+ */
821
+ "density": 'small' | 'medium' | 'large';
822
+ }
823
+ /**
824
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/tab-item?tab=designer).
825
+ */
826
+ interface BrTabItem {
827
+ "TabItemId": string;
828
+ /**
829
+ * Define se o Tab usará um esquema de cores. Apenas o esquema 'dark' está disponível para o modo escuro.
830
+ * @type {string}
831
+ */
832
+ "colorMode": string;
833
+ /**
834
+ * Define contador do item de tab
835
+ * @type {string}
836
+ */
837
+ "counter": string;
838
+ /**
839
+ * Define ícone do item de tab
840
+ * @type {string}
841
+ */
842
+ "icon": string;
843
+ /**
844
+ * Define se o item de tab é ativo
845
+ * @type {boolean}
846
+ */
847
+ "isActive": boolean;
848
+ /**
849
+ * Define se mostra somente o ícone
850
+ * @type {boolean}
851
+ * @default false
852
+ */
853
+ "onlyIcon": boolean;
854
+ /**
855
+ * Define o título do item de tab
856
+ * @type {string}
857
+ */
858
+ "tabItemTitle": string;
859
+ }
807
860
  interface BrTag {
808
861
  /**
809
862
  * A propriedade 'color' permite definir a cor do componente. Aceita valores como 'red', 'blue', entre outros, e é refletida no DOM.
@@ -978,6 +1031,14 @@ export interface BrSwitchCustomEvent<T> extends CustomEvent<T> {
978
1031
  detail: T;
979
1032
  target: HTMLBrSwitchElement;
980
1033
  }
1034
+ export interface BrTabCustomEvent<T> extends CustomEvent<T> {
1035
+ detail: T;
1036
+ target: HTMLBrTabElement;
1037
+ }
1038
+ export interface BrTabItemCustomEvent<T> extends CustomEvent<T> {
1039
+ detail: T;
1040
+ target: HTMLBrTabItemElement;
1041
+ }
981
1042
  export interface BrTagCustomEvent<T> extends CustomEvent<T> {
982
1043
  detail: T;
983
1044
  target: HTMLBrTagElement;
@@ -1287,6 +1348,46 @@ declare global {
1287
1348
  prototype: HTMLBrSwitchElement;
1288
1349
  new (): HTMLBrSwitchElement;
1289
1350
  };
1351
+ interface HTMLBrTabElementEventMap {
1352
+ "brDidActive": any;
1353
+ }
1354
+ /**
1355
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/tab-item?tab=designer).
1356
+ */
1357
+ interface HTMLBrTabElement extends Components.BrTab, HTMLStencilElement {
1358
+ addEventListener<K extends keyof HTMLBrTabElementEventMap>(type: K, listener: (this: HTMLBrTabElement, ev: BrTabCustomEvent<HTMLBrTabElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1359
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1360
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1361
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1362
+ removeEventListener<K extends keyof HTMLBrTabElementEventMap>(type: K, listener: (this: HTMLBrTabElement, ev: BrTabCustomEvent<HTMLBrTabElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1363
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1364
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1365
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1366
+ }
1367
+ var HTMLBrTabElement: {
1368
+ prototype: HTMLBrTabElement;
1369
+ new (): HTMLBrTabElement;
1370
+ };
1371
+ interface HTMLBrTabItemElementEventMap {
1372
+ "itemTabClick": { id: string };
1373
+ }
1374
+ /**
1375
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/tab-item?tab=designer).
1376
+ */
1377
+ interface HTMLBrTabItemElement extends Components.BrTabItem, HTMLStencilElement {
1378
+ addEventListener<K extends keyof HTMLBrTabItemElementEventMap>(type: K, listener: (this: HTMLBrTabItemElement, ev: BrTabItemCustomEvent<HTMLBrTabItemElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1379
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1380
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1381
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1382
+ removeEventListener<K extends keyof HTMLBrTabItemElementEventMap>(type: K, listener: (this: HTMLBrTabItemElement, ev: BrTabItemCustomEvent<HTMLBrTabItemElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1383
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1384
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1385
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1386
+ }
1387
+ var HTMLBrTabItemElement: {
1388
+ prototype: HTMLBrTabItemElement;
1389
+ new (): HTMLBrTabItemElement;
1390
+ };
1290
1391
  interface HTMLBrTagElementEventMap {
1291
1392
  "radioSelected": string;
1292
1393
  }
@@ -1353,6 +1454,8 @@ declare global {
1353
1454
  "br-step": HTMLBrStepElement;
1354
1455
  "br-step-item": HTMLBrStepItemElement;
1355
1456
  "br-switch": HTMLBrSwitchElement;
1457
+ "br-tab": HTMLBrTabElement;
1458
+ "br-tab-item": HTMLBrTabItemElement;
1356
1459
  "br-tag": HTMLBrTagElement;
1357
1460
  "br-textarea": HTMLBrTextareaElement;
1358
1461
  "br-upload": HTMLBrUploadElement;
@@ -2146,6 +2249,61 @@ declare namespace LocalJSX {
2146
2249
  */
2147
2250
  "value"?: string;
2148
2251
  }
2252
+ /**
2253
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/tab-item?tab=designer).
2254
+ */
2255
+ interface BrTab {
2256
+ /**
2257
+ * Define se o Tab usará um esquema de cores. Apenas o esquema 'dark' está disponível para o modo escuro.
2258
+ * @type {string}
2259
+ */
2260
+ "colorMode"?: string;
2261
+ /**
2262
+ * A propriedade 'density' define a densidade do componente. Os valores possíveis são 'small', 'medium' e 'large'.
2263
+ * @type {string}
2264
+ * @default 'medium'
2265
+ */
2266
+ "density"?: 'small' | 'medium' | 'large';
2267
+ "onBrDidActive"?: (event: BrTabCustomEvent<any>) => void;
2268
+ }
2269
+ /**
2270
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/tab-item?tab=designer).
2271
+ */
2272
+ interface BrTabItem {
2273
+ "TabItemId"?: string;
2274
+ /**
2275
+ * Define se o Tab usará um esquema de cores. Apenas o esquema 'dark' está disponível para o modo escuro.
2276
+ * @type {string}
2277
+ */
2278
+ "colorMode"?: string;
2279
+ /**
2280
+ * Define contador do item de tab
2281
+ * @type {string}
2282
+ */
2283
+ "counter"?: string;
2284
+ /**
2285
+ * Define ícone do item de tab
2286
+ * @type {string}
2287
+ */
2288
+ "icon"?: string;
2289
+ /**
2290
+ * Define se o item de tab é ativo
2291
+ * @type {boolean}
2292
+ */
2293
+ "isActive"?: boolean;
2294
+ "onItemTabClick"?: (event: BrTabItemCustomEvent<{ id: string }>) => void;
2295
+ /**
2296
+ * Define se mostra somente o ícone
2297
+ * @type {boolean}
2298
+ * @default false
2299
+ */
2300
+ "onlyIcon"?: boolean;
2301
+ /**
2302
+ * Define o título do item de tab
2303
+ * @type {string}
2304
+ */
2305
+ "tabItemTitle"?: string;
2306
+ }
2149
2307
  interface BrTag {
2150
2308
  /**
2151
2309
  * A propriedade 'color' permite definir a cor do componente. Aceita valores como 'red', 'blue', entre outros, e é refletida no DOM.
@@ -2298,6 +2456,8 @@ declare namespace LocalJSX {
2298
2456
  "br-step": BrStep;
2299
2457
  "br-step-item": BrStepItem;
2300
2458
  "br-switch": BrSwitch;
2459
+ "br-tab": BrTab;
2460
+ "br-tab-item": BrTabItem;
2301
2461
  "br-tag": BrTag;
2302
2462
  "br-textarea": BrTextarea;
2303
2463
  "br-upload": BrUpload;
@@ -2385,6 +2545,14 @@ declare module "@stencil/core" {
2385
2545
  * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/switch?tab=designer).
2386
2546
  */
2387
2547
  "br-switch": LocalJSX.BrSwitch & JSXBase.HTMLAttributes<HTMLBrSwitchElement>;
2548
+ /**
2549
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/tab-item?tab=designer).
2550
+ */
2551
+ "br-tab": LocalJSX.BrTab & JSXBase.HTMLAttributes<HTMLBrTabElement>;
2552
+ /**
2553
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/tab-item?tab=designer).
2554
+ */
2555
+ "br-tab-item": LocalJSX.BrTabItem & JSXBase.HTMLAttributes<HTMLBrTabItemElement>;
2388
2556
  "br-tag": LocalJSX.BrTag & JSXBase.HTMLAttributes<HTMLBrTagElement>;
2389
2557
  /**
2390
2558
  * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/textarea?tab=designer).
@@ -1 +1 @@
1
- {"version":3,"file":"br-avatar.entry.esm.js","sources":["../../packages/webcomponents/src/components/avatar/avatar.scss?tag=br-avatar&encapsulation=shadow","../../packages/webcomponents/src/components/avatar/avatar.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/avatar/avatar\";\n\n:host {\n display: block;\n}\n","import { Component, Element, h, Host, Prop, State, Watch } 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/avatar?tab=designer).\n */\n@Component({\n tag: 'br-avatar',\n styleUrl: 'avatar.scss',\n shadow: true,\n})\nexport class Avatar {\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: HTMLBrAvatarElement\n\n /**\n * Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\n */\n @Prop({ mutable: true }) density: 'small' | 'medium' | 'large' = 'medium'\n\n @Watch('density')\n handleDensityChange(newValue: 'small' | 'medium' | 'large') {\n if (!['small', 'medium', 'large'].includes(newValue)) {\n console.warn(`Valor inválido para density: ${newValue}. Usando 'medium'.`)\n this.density = 'medium'\n }\n this.el.setAttribute('density', this.density)\n }\n\n /**\n * Executa validações iniciais quando o componente é carregado\n */\n componentWillLoad() {\n this.handleDensityChange(this.density)\n }\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-avatar-${avatarId++}`\n\n /**\n * URL da imagem a ser exibida no avatar do tipo 'fotográfico'.\n * Deve ser uma URL válida que aponta para a imagem desejada.\n */\n @Prop() readonly src: string\n\n /**\n * Texto alternativo (alt) associado à imagem do avatar. Essencial para acessibilidade e SEO.\n * Deve descrever de forma clara e concisa o conteúdo da imagem, por exemplo: \"Foto de perfil de João Silva\".\n */\n @Prop() readonly alt = 'Imagem do avatar'\n\n /**\n * Indica se o avatar deve ser exibido como um ícone em vez de uma imagem fotográfica.\n * Se definido como verdadeiro, o avatar será exibido como um ícone.\n */\n @Prop() readonly isIconic: boolean = false\n\n /**\n * Texto exibido no avatar do tipo 'letra'.\n * Esse texto será mostrado em vez de uma imagem e pode ser usado para representar iniciais ou outras informações textuais.\n */\n @Prop() readonly text: string\n\n /**\n * Largura do ícone no avatar do tipo icônico\n * */\n @Prop() readonly iconWidth: string\n\n /**\n * Altura do ícone no avatar do tipo icônico\n */\n @Prop() readonly iconHeight: string\n\n /**\n * Ajuste para a margem de cima do ícone no avatar do tipo icônico\n */\n @Prop() readonly iconMarginTop: string\n\n /**\n * Define se o avatar está desabilitado\n */\n @Prop() readonly disabled = false\n\n @State() private hasError = false\n\n /**\n * Gera um mapa de classes CSS com base nas propriedades do componente.\n * O mapa de classes determina quais classes CSS devem ser aplicadas\n * ao elemento host do componente, ajustando sua aparência.\n *\n * @returns {CssClassMap} Objeto contendo as classes CSS aplicadas.\n */\n private getCssClassMap(): CssClassMap {\n return {\n 'br-avatar': true,\n [this.density]: true,\n error: this.hasError,\n disabled: this.disabled,\n }\n }\n\n private readonly iconSizes = {\n small: { height: '32px', width: '40px' },\n medium: { height: '80px', width: '88px' },\n large: { height: '128px', width: '136px' },\n }\n\n private readonly iconMarginTops = {\n small: '0.7em',\n medium: '1em',\n large: '0.62em',\n }\n\n private readonly handleImageError = () => {\n this.hasError = true\n console.error(`Erro ao carregar imagem do avatar: ${this.src}`)\n }\n\n private renderAvatar() {\n if (this.text?.trim().length > 0) {\n return (\n <span class=\"content bg-support-01 text-pure-0\" title={this.text}>\n {this.text[0].toUpperCase()}\n </span>\n )\n } else if (this.src?.trim().length > 0 && !this.hasError) {\n return (\n <span class=\"content\" title={this.alt || this.text}>\n <img src={this.src} alt={this.alt} loading=\"lazy\" onError={this.handleImageError} />\n </span>\n )\n } else {\n return (\n <span class=\"content\" title={this.text}>\n <br-icon\n icon-name=\"fa-solid:user\"\n height={this.iconHeight?.length > 0 ? this.iconHeight : this.iconSizes[this.density]?.height}\n width={this.iconWidth?.length > 0 ? this.iconWidth : this.iconSizes[this.density]?.width}\n aria-hidden=\"true\"\n style={{\n 'margin-top': this.iconMarginTop?.length > 0 ? this.iconMarginTop : this.iconMarginTops[this.density],\n }}\n ></br-icon>\n </span>\n )\n }\n }\n\n render() {\n return (\n <Host>\n <span id={this.customId} class={this.getCssClassMap()} aria-disabled={this.disabled}>\n {this.renderAvatar()}\n </span>\n </Host>\n )\n }\n}\n\nlet avatarId = 0\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"br-avatar.entry.esm.js","sources":["../../packages/webcomponents/src/components/avatar/avatar.scss?tag=br-avatar&encapsulation=shadow","../../packages/webcomponents/src/components/avatar/avatar.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/avatar/avatar\";\n\n:host {\n display: block;\n}\n","import { Component, Element, h, Host, Prop, State, Watch } 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/avatar?tab=designer).\n */\n@Component({\n tag: 'br-avatar',\n styleUrl: 'avatar.scss',\n shadow: true,\n})\nexport class Avatar {\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: HTMLBrAvatarElement\n\n /**\n * Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\n */\n @Prop({ mutable: true }) density: 'small' | 'medium' | 'large' = 'medium'\n\n @Watch('density')\n handleDensityChange(newValue: 'small' | 'medium' | 'large') {\n if (!['small', 'medium', 'large'].includes(newValue)) {\n console.warn(`Valor inválido para density: ${newValue}. Usando 'medium'.`)\n this.density = 'medium'\n }\n this.el.setAttribute('density', this.density)\n }\n\n /**\n * Executa validações iniciais quando o componente é carregado\n */\n componentWillLoad() {\n this.handleDensityChange(this.density)\n }\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-avatar-${avatarId++}`\n\n /**\n * URL da imagem a ser exibida no avatar do tipo 'fotográfico'.\n * Deve ser uma URL válida que aponta para a imagem desejada.\n */\n @Prop() readonly src: string\n\n /**\n * Texto alternativo (alt) associado à imagem do avatar. Essencial para acessibilidade e SEO.\n * Deve descrever de forma clara e concisa o conteúdo da imagem, por exemplo: \"Foto de perfil de João Silva\".\n */\n @Prop() readonly alt = 'Imagem do avatar'\n\n /**\n * Indica se o avatar deve ser exibido como um ícone em vez de uma imagem fotográfica.\n * Se definido como verdadeiro, o avatar será exibido como um ícone.\n */\n @Prop() readonly isIconic: boolean = false\n\n /**\n * Texto exibido no avatar do tipo 'letra'.\n * Esse texto será mostrado em vez de uma imagem e pode ser usado para representar iniciais ou outras informações textuais.\n */\n @Prop() readonly text: string\n\n /**\n * Largura do ícone no avatar do tipo icônico\n * */\n @Prop() readonly iconWidth: string\n\n /**\n * Altura do ícone no avatar do tipo icônico\n */\n @Prop() readonly iconHeight: string\n\n /**\n * Ajuste para a margem de cima do ícone no avatar do tipo icônico\n */\n @Prop() readonly iconMarginTop: string\n\n /**\n * Define se o avatar está desabilitado\n */\n @Prop() readonly disabled = false\n\n @State() private hasError = false\n\n /**\n * Gera um mapa de classes CSS com base nas propriedades do componente.\n * O mapa de classes determina quais classes CSS devem ser aplicadas\n * ao elemento host do componente, ajustando sua aparência.\n *\n * @returns {CssClassMap} Objeto contendo as classes CSS aplicadas.\n */\n private getCssClassMap(): CssClassMap {\n return {\n 'br-avatar': true,\n [this.density]: true,\n error: this.hasError,\n disabled: this.disabled,\n }\n }\n\n private readonly iconSizes = {\n small: { height: '32px', width: '40px' },\n medium: { height: '80px', width: '88px' },\n large: { height: '128px', width: '136px' },\n }\n\n private readonly iconMarginTops = {\n small: '0.7em',\n medium: '1em',\n large: '0.62em',\n }\n\n private readonly handleImageError = () => {\n this.hasError = true\n console.error(`Erro ao carregar imagem do avatar: ${this.src}`)\n }\n\n private renderAvatar() {\n if (this.text?.trim().length > 0) {\n return (\n <span class=\"content bg-support-01 text-pure-0\" title={this.text}>\n {this.text[0].toUpperCase()}\n </span>\n )\n } else if (this.src?.trim().length > 0 && !this.hasError) {\n return (\n <span class=\"content\" title={this.alt || this.text}>\n <img src={this.src} alt={this.alt} loading=\"lazy\" onError={this.handleImageError} />\n </span>\n )\n } else {\n return (\n <span class=\"content\" title={this.text}>\n <br-icon\n icon-name=\"fa-solid:user\"\n height={this.iconHeight?.length > 0 ? this.iconHeight : this.iconSizes[this.density]?.height}\n width={this.iconWidth?.length > 0 ? this.iconWidth : this.iconSizes[this.density]?.width}\n aria-hidden=\"true\"\n style={{\n 'margin-top': this.iconMarginTop?.length > 0 ? this.iconMarginTop : this.iconMarginTops[this.density],\n }}\n ></br-icon>\n </span>\n )\n }\n }\n\n render() {\n return (\n <Host>\n <span id={this.customId} class={this.getCssClassMap()} aria-disabled={this.disabled}>\n {this.renderAvatar()}\n </span>\n </Host>\n )\n }\n}\n\nlet avatarId = 0\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"br-breadcrumb.entry.esm.js","sources":["../../packages/webcomponents/src/components/breadcrumb/breadcrumb.scss?tag=br-breadcrumb&encapsulation=shadow","../../packages/webcomponents/src/components/breadcrumb/breadcrumb.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/breadcrumb/breadcrumb\";\n@import \"~@govbr-ds/core/src/partial/scss/configs/icons\";\n@import \"~@govbr-ds/core/src/components/button/button\";\n@import \"~@govbr-ds/core/src/components/list/list\";\n@import \"~@govbr-ds/core/src/components/item/item\";\n@import \"~@govbr-ds/core/src/components/divider/divider\";\n\n:host {\n display: block;\n\n .br-breadcrumb {\n .br-icon {\n color: #ccc;\n }\n\n .br-icon,\n .mobile-active-page {\n display: flex;\n align-items: center;\n }\n\n .mobile-crumb-list {\n display: none;\n position: absolute;\n width: 200px;\n box-shadow: var(--surface-shadow-sm);\n }\n\n .mobile-crumb-list.show {\n display: block;\n top: 100%;\n z-index: 999;\n }\n\n .buttonFolderGroup,\n .buttonFolderGroup span {\n display: flex;\n align-items: center;\n }\n\n .mobile-active-page span:focus:focus-visible {\n outline: var(--focus-width) var(--focus-style) var(--focus);\n outline-offset: var(--focus-offset);\n }\n\n .crumb {\n display: flex;\n align-items: center;\n\n span {\n display: flex;\n align-items: center;\n }\n }\n }\n\n .tooltip-box {\n position: fixed;\n background: #1351b4;\n color: #fff;\n padding: 8px 12px;\n border-radius: 4px;\n font-size: 12px;\n white-space: nowrap;\n transform: translate(-50%, -100%);\n pointer-events: none;\n z-index: 9999;\n box-shadow: 0 2px 4px rgba(0 0 0 / 20%);\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n\n &::after {\n content: \"\";\n position: absolute;\n bottom: -5px;\n left: 50%;\n transform: translateX(-50%);\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #1351b4;\n }\n }\n}\n\n:host(:hover) {\n .tooltip-box {\n opacity: 1;\n }\n}\n","/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\nimport { AttachInternals, Component, Element, h, Host, Prop, State } from '@stencil/core'\n\ninterface BreadcrumbItem {\n label: string\n url?: string\n target?: string\n home?: boolean\n active?: boolean\n}\n@Component({\n tag: 'br-breadcrumb',\n styleUrl: 'breadcrumb.scss',\n shadow: true,\n})\nexport class Breadcrumb {\n @Element() el: HTMLBrBreadcrumbElement\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 }) readonly customId: string = `br-breadcrumb-${breadcrumbId++}`\n\n /**\n * URL para home.\n * Caso não seja fornecido, o valor padrão será /.\n */\n @Prop() homeUrl: string = '/'\n\n /**\n * Define o array de objetos que receberá os nomes e links do breadcrumb.\n * Define valor padrão do breadcrumb 'defaultCrumbs'.\n */\n @Prop() crumbs: string | BreadcrumbItem[]\n\n private defaultCrumbs: BreadcrumbItem[] = [\n { label: 'Página 01', url: '/pagina-01' },\n { label: 'Página 02', url: '/pagina-02' },\n { label: 'Página Atual', active: true },\n ]\n\n /**\n * Define o estado oculto ou visível do tooltip.\n */\n @State() showTooltip: boolean = false\n\n /**\n * Define o posicionamento do tooltip na tela.\n */\n @State() tooltipPosition: { x: number; y: number } = { x: 0, y: 0 }\n\n /**\n * Define o texto do tooltip.\n */\n @State() tooltipText: string = ''\n\n /**\n * Define o estado isSmallScreen, usado para verificar a largura do container pai e aplicar as mudanças do formato mobile.\n * No formato mobile o breadcrumb apresenta um comportamento específico.\n */\n @State() isSmallScreen: boolean = false\n\n /**\n * Define se o breadcrumb deve truncar os itens por falta de espaço.\n */\n @State() isTruncate: boolean = false\n\n /**\n * Largura interna dos itens do breadcrumb.\n */\n @State() larguraInterna: number = 0\n\n /**\n * Largura do container pai do breadcrumb.\n */\n @State() larguraPai: number = 0\n\n /**\n * Define o estado do botão 'Folder'.\n * Caso a lista dropdown esteja oculta o ícone no botão será 'folder-plus'.\n * Caso a lista dropdown esteja visível o ícone no botão será 'folder-minus'.\n */\n @State() isFolderOpen: boolean = false\n\n /**\n * Verifica se o texto do link contém mais de 20 caracteres e realiza o truncamento deste caso positivo.\n * O número de caracteres pode ser configurado na variável 'charactersNumberTruncate'.\n */\n private trunc(word: string) {\n return word.length > charactersNumberTruncate ? `${word.slice(0, charactersNumberTruncate)}...` : word\n }\n\n /**\n * Exibe o tooltip e define seu posicionamento, caso o usuário realize o 'mouse over'.\n */\n private handleMouseOver(event: MouseEvent, text: string) {\n const target = event.target as HTMLElement | null\n if (!target) return\n\n const rect = target.getBoundingClientRect()\n this.tooltipPosition = { x: rect.left + rect.width / 2, y: rect.top - 10 }\n\n if (text.length > charactersNumberTruncate) {\n this.tooltipText = text\n this.showTooltip = true\n }\n }\n\n /**\n * Esconde o tooltip caso o usuário realize o 'mouse out'.\n */\n private handleMouseOut() {\n this.showTooltip = false\n }\n\n /**\n * Converte de string para JSON o valor passado na propriedade 'crumbs'.\n * Retorna o valor padrão do Breadcrumbs caso crumbs seja vazio ou inválido\n */\n private getParsedItems(): BreadcrumbItem[] {\n if (!this.crumbs || this.crumbs === '') {\n return this.defaultCrumbs\n }\n\n try {\n const parsed = typeof this.crumbs === 'string' ? JSON.parse(this.crumbs) : this.crumbs\n return Array.isArray(parsed) && parsed.length > 0 ? parsed : this.defaultCrumbs\n } catch {\n console.error('Invalid JSON format for crumbs:', this.crumbs)\n return this.defaultCrumbs\n }\n }\n\n /**\n * Ao clicar no botão HOME, direciona o usuário para URL passada na propriedade 'homeUrl'.\n */\n private handleHomeClick() {\n window.location.href = this.homeUrl\n }\n\n /**\n * Altera o estado do botão 'Folder', caso a lista dropdown esteja aberta ou fechada.\n */\n private toggleFolder() {\n this.isFolderOpen = !this.isFolderOpen\n }\n\n /**\n * Define as classes CSS usadas no breadcrumb.\n */\n private getCssClassMap(): { [key: string]: boolean } {\n return {\n 'br-breadcrumb': true,\n small: this.isSmallScreen,\n }\n }\n\n /**\n * Atualiza o estado 'isSmallScreen' com base no tamanho do container pai, se menor que 570px.\n */\n private resizeObserver: ResizeObserver\n\n /**\n * Atualiza os estados de largura do breadcrumb ao detectar mudanças no container pai.\n */\n private updateContainerSize = (entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n const containerWidth = entry.contentRect.width\n this.isSmallScreen = containerWidth < 570\n this.larguraPai = containerWidth\n this.calcularLarguraItens()\n }\n }\n\n /**\n * Adiciona o 'resizeObserver' para checar o tamanho do container pai.\n */\n connectedCallback() {\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(this.updateContainerSize)\n if (this.el.parentElement !== null) {\n this.resizeObserver.observe(this.el.parentElement)\n }\n }\n }\n\n /**\n * Remove o 'resizeObserver'.\n */\n disconnectedCallback() {\n if (this.resizeObserver != null) {\n this.resizeObserver.disconnect()\n }\n }\n\n /**\n * Calcula a largura total dos itens do breadcrumb para determinar se precisa de truncamento.\n */\n private calcularLarguraItens() {\n requestAnimationFrame(() => {\n const itens = this.el.shadowRoot?.querySelectorAll('.crumb, .mobile-active-page, br-item')\n if (itens) {\n let totalWidth = 0\n itens.forEach((item) => {\n totalWidth += (item as HTMLElement).getBoundingClientRect().width\n })\n this.larguraInterna = totalWidth\n this.isTruncate = this.larguraInterna > this.larguraPai\n }\n })\n }\n\n /**\n * Executa cálculos de largura após o componente ser carregado.\n */\n componentDidLoad() {\n this.calcularLarguraItens()\n }\n\n /**\n * Renderiza botão Home\n */\n private renderHomeButton() {\n const buttonFolderClass = this.isFolderOpen ? 'fa6-solid:folder-minus' : 'fa6-solid:folder-plus'\n return (\n <br-button\n id=\"circle\"\n shape=\"circle\"\n aria-label={this.isSmallScreen ? 'Exibir lista de páginas' : 'Voltar para Home'}\n onClick={this.isSmallScreen ? () => this.toggleFolder() : () => this.handleHomeClick()}\n >\n <br-icon icon-name={`${this.isSmallScreen ? buttonFolderClass : 'fa6-solid:house'}`}></br-icon>\n </br-button>\n )\n }\n\n /**\n * Renderiza botão Folder no comportamento truncado\n */\n private renderTruncateButton() {\n if (this.isTruncate && !this.isSmallScreen) {\n const buttonFolderClass = this.isFolderOpen ? 'fa6-solid:folder-minus' : 'fa6-solid:folder-plus'\n return (\n <div class=\"buttonFolderGroup\">\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <br-button\n id=\"circle\"\n shape=\"circle\"\n aria-label={this.isFolderOpen ? 'Recolher lista de páginas' : 'Exibir lista de páginas'}\n onClick={() => this.toggleFolder()}\n onKeyDown={(event) => this.handleKeyDown(event)}\n >\n <br-icon icon-name={buttonFolderClass}></br-icon>\n </br-button>\n </div>\n )\n }\n return null\n }\n\n /**\n * Renderiza itens do Breadcrumb no comportamento mobile ou truncado\n */\n private renderBreadcrumbItems() {\n const parsedItems = this.getParsedItems()\n const lastItem = parsedItems[parsedItems.length - 2]\n\n return this.isSmallScreen || this.isTruncate ? (\n <div class=\"buttonFolderGroup\">\n {this.isTruncate && !this.isSmallScreen && lastItem ? (\n <span>\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <a\n id=\"nextCrumb\"\n href={lastItem.url || 'javascript:void(0)'}\n target={lastItem.target || '_self'}\n onMouseOver={(event) => this.handleMouseOver(event, lastItem.label)}\n onMouseOut={() => this.handleMouseOut()}\n >\n {this.trunc(lastItem.label)}\n </a>\n </span>\n ) : null}\n {this.renderMobileActiveItem(parsedItems)}\n {this.renderBreadcrumbList(parsedItems)}\n </div>\n ) : (\n parsedItems.map((item, index) => (\n <li\n key={index}\n class={`crumb ${item.home ? 'home' : ''}`}\n data-active={item.active ? 'active' : null}\n aria-label={`Página ${index + 1} de ${parsedItems.length}`}\n >\n {this.renderBreadcrumbLink(item)}\n </li>\n ))\n )\n }\n\n /**\n * Renderiza item da página atual\n */\n private renderMobileActiveItem(parsedItems: BreadcrumbItem[]) {\n const activeItem = parsedItems.find((item) => item.active)\n if (!activeItem) return null\n return (\n <span class=\"mobile-active-page\">\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <span aria-current=\"page\" data-active=\"active\" tabindex=\"0\">\n {activeItem.label}\n </span>\n </span>\n )\n }\n\n /**\n * Renderiza Lista dropdown contendo os itens do Breadcrumb\n */\n private renderBreadcrumbList(parsedItems: BreadcrumbItem[]) {\n return (\n <br-list class={this.isFolderOpen ? 'mobile-crumb-list show' : 'mobile-crumb-list'}>\n {this.isSmallScreen && (\n <div aria-label={`Página 1 de ${parsedItems.length}`}>\n <br-item>\n <a href={this.homeUrl} target=\"_self\">\n Página Inicial\n </a>\n </br-item>\n <span class=\"br-divider\"></span>\n </div>\n )}\n {parsedItems.map((item, index) => {\n if (this.isTruncate && !this.isSmallScreen && index === parsedItems.length - 2) {\n return null\n }\n return (\n !item.active && (\n <div\n key={index}\n aria-label={\n this.isTruncate && !this.isSmallScreen\n ? `Página ${index + 1} de ${parsedItems.length - 2}`\n : `Página ${index + 2} de ${parsedItems.length}`\n }\n >\n <br-item>\n <a\n id={index == 0 ? 'firstElementList' : ''}\n href={item.url || 'javascript:void(0)'}\n target={item.target || '_self'}\n onMouseOver={(event) => this.handleMouseOver(event, item.label)}\n onMouseOut={() => this.handleMouseOut()}\n onKeyDown={\n index == parsedItems.length - 3 && this.isFolderOpen && this.isTruncate && !this.isSmallScreen\n ? (event) => {\n if (event.key === 'Tab') {\n this.handleKeyDownOut(event)\n this.toggleFolder()\n }\n }\n : null\n }\n >\n {this.trunc(item.label)}\n </a>\n </br-item>\n <span class=\"br-divider\"></span>\n </div>\n )\n )\n })}\n </br-list>\n )\n }\n\n /**\n * Renderiza itens do Breadcrumb no formato desktop\n */\n private renderBreadcrumbLink(item: BreadcrumbItem) {\n return item.active ? (\n <span>\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <span aria-current=\"page\" tabindex=\"0\">\n {item.label}\n </span>\n </span>\n ) : (\n <span>\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <a\n href={item.url || 'javascript:void(0)'}\n target={item.target || '_self'}\n onMouseOver={(event) => this.handleMouseOver(event, item.label)}\n onMouseOut={() => this.handleMouseOut()}\n >\n {this.trunc(item.label)}\n </a>\n </span>\n )\n }\n\n /**\n * Renderiza Tooltip\n */\n private renderTooltip() {\n if (!this.showTooltip) return null\n return (\n <div class=\"tooltip-box\" style={{ left: `${this.tooltipPosition.x}px`, top: `${this.tooltipPosition.y}px` }}>\n {this.tooltipText}\n </div>\n )\n }\n\n /**\n * Controla navegação pelo teclado após lista de itens aberta\n * Dispara foco no primeiro item da lista flutuante\n */\n private handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Tab') {\n if (this.isFolderOpen && this.isTruncate && !this.isSmallScreen) {\n setTimeout(() => {\n const element = this.el.shadowRoot?.getElementById('firstElementList')\n if (element) {\n element.focus()\n }\n }, 0) // Aguarda um ciclo de renderização\n }\n }\n }\n\n /**\n * Ao finalizar navegação por teclado dentro da lista, dispara foco no item fora da lista flutuante\n */\n private handleKeyDownOut(event: KeyboardEvent) {\n if (event.key === 'Tab') {\n if (this.isFolderOpen && this.isTruncate && !this.isSmallScreen) {\n setTimeout(() => {\n const element = this.el.shadowRoot?.getElementById('nextCrumb')\n if (element) {\n element.focus()\n }\n }, 0)\n }\n }\n }\n\n render() {\n return (\n <Host>\n <nav class={this.getCssClassMap()} aria-label=\"Breadcrumbs\">\n <ol class=\"crumb-list\">\n {this.renderHomeButton()}\n {this.renderTruncateButton()}\n {this.renderBreadcrumbItems()}\n </ol>\n </nav>\n {this.renderTooltip()}\n </Host>\n )\n }\n}\n\n/**\n * ID do Breadcrumb\n */\nlet breadcrumbId = 0\n\n/**\n * Limite de caracteres para o truncamento\n */\nconst charactersNumberTruncate = 20\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"br-breadcrumb.entry.esm.js","sources":["../../packages/webcomponents/src/components/breadcrumb/breadcrumb.scss?tag=br-breadcrumb&encapsulation=shadow","../../packages/webcomponents/src/components/breadcrumb/breadcrumb.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/breadcrumb/breadcrumb\";\n@import \"~@govbr-ds/core/src/partial/scss/configs/icons\";\n@import \"~@govbr-ds/core/src/components/button/button\";\n@import \"~@govbr-ds/core/src/components/list/list\";\n@import \"~@govbr-ds/core/src/components/item/item\";\n@import \"~@govbr-ds/core/src/components/divider/divider\";\n\n:host {\n display: block;\n\n .br-breadcrumb {\n .br-icon {\n color: #ccc;\n }\n\n .br-icon,\n .mobile-active-page {\n display: flex;\n align-items: center;\n }\n\n .mobile-crumb-list {\n display: none;\n position: absolute;\n width: 200px;\n box-shadow: var(--surface-shadow-sm);\n }\n\n .mobile-crumb-list.show {\n display: block;\n top: 100%;\n z-index: 999;\n }\n\n .buttonFolderGroup,\n .buttonFolderGroup span {\n display: flex;\n align-items: center;\n }\n\n .mobile-active-page {\n span:focus:focus-visible {\n outline: var(--focus-width) var(--focus-style) var(--focus);\n outline-offset: var(--focus-offset);\n }\n\n [data-active] {\n margin: 0 var(--spacing-scale-2x) 0 var(--spacing-scale-base);\n }\n }\n\n .crumb {\n display: flex;\n align-items: center;\n\n span {\n display: flex;\n align-items: center;\n }\n }\n }\n\n .tooltip-box {\n position: fixed;\n background: #1351b4;\n color: #fff;\n padding: 8px 12px;\n border-radius: 4px;\n font-size: 12px;\n white-space: nowrap;\n transform: translate(-50%, -100%);\n pointer-events: none;\n z-index: 9999;\n box-shadow: 0 2px 4px rgba(0 0 0 / 20%);\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n\n &::after {\n content: \"\";\n position: absolute;\n bottom: -5px;\n left: 50%;\n transform: translateX(-50%);\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #1351b4;\n }\n }\n}\n\n:host(:hover) {\n .tooltip-box {\n opacity: 1;\n }\n}\n","/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\nimport { AttachInternals, Component, Element, h, Host, Prop, State } from '@stencil/core'\n\ninterface BreadcrumbItem {\n label: string\n url?: string\n target?: string\n home?: boolean\n active?: boolean\n}\n@Component({\n tag: 'br-breadcrumb',\n styleUrl: 'breadcrumb.scss',\n shadow: true,\n})\nexport class Breadcrumb {\n @Element() el: HTMLBrBreadcrumbElement\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 }) readonly customId: string = `br-breadcrumb-${breadcrumbId++}`\n\n /**\n * URL para home.\n * Caso não seja fornecido, o valor padrão será /.\n */\n @Prop() homeUrl: string = '/'\n\n /**\n * Define o array de objetos que receberá os nomes e links do breadcrumb.\n * Define valor padrão do breadcrumb 'defaultCrumbs'.\n */\n @Prop() crumbs: string | BreadcrumbItem[]\n\n private defaultCrumbs: BreadcrumbItem[] = [\n { label: 'Página 01', url: '/pagina-01' },\n { label: 'Página 02', url: '/pagina-02' },\n { label: 'Página Atual', active: true },\n ]\n\n /**\n * Define o estado oculto ou visível do tooltip.\n */\n @State() showTooltip: boolean = false\n\n /**\n * Define o posicionamento do tooltip na tela.\n */\n @State() tooltipPosition: { x: number; y: number } = { x: 0, y: 0 }\n\n /**\n * Define o texto do tooltip.\n */\n @State() tooltipText: string = ''\n\n /**\n * Define o estado isSmallScreen, usado para verificar a largura do container pai e aplicar as mudanças do formato mobile.\n * No formato mobile o breadcrumb apresenta um comportamento específico.\n */\n @State() isSmallScreen: boolean = false\n\n /**\n * Define se o breadcrumb deve truncar os itens por falta de espaço.\n */\n @State() isTruncate: boolean = false\n\n /**\n * Largura interna dos itens do breadcrumb.\n */\n @State() larguraInterna: number = 0\n\n /**\n * Largura do container pai do breadcrumb.\n */\n @State() larguraPai: number = 0\n\n /**\n * Define o estado do botão 'Folder'.\n * Caso a lista dropdown esteja oculta o ícone no botão será 'folder-plus'.\n * Caso a lista dropdown esteja visível o ícone no botão será 'folder-minus'.\n */\n @State() isFolderOpen: boolean = false\n\n /**\n * Verifica se o texto do link contém mais de 20 caracteres e realiza o truncamento deste caso positivo.\n * O número de caracteres pode ser configurado na variável 'charactersNumberTruncate'.\n */\n private trunc(word: string) {\n return word.length > charactersNumberTruncate ? `${word.slice(0, charactersNumberTruncate)}...` : word\n }\n\n /**\n * Exibe o tooltip e define seu posicionamento, caso o usuário realize o 'mouse over'.\n */\n private handleMouseOver(event: MouseEvent, text: string) {\n const target = event.target as HTMLElement | null\n if (!target) return\n\n const rect = target.getBoundingClientRect()\n this.tooltipPosition = { x: rect.left + rect.width / 2, y: rect.top - 10 }\n\n if (text.length > charactersNumberTruncate) {\n this.tooltipText = text\n this.showTooltip = true\n }\n }\n\n /**\n * Esconde o tooltip caso o usuário realize o 'mouse out'.\n */\n private handleMouseOut() {\n this.showTooltip = false\n }\n\n /**\n * Converte de string para JSON o valor passado na propriedade 'crumbs'.\n * Retorna o valor padrão do Breadcrumbs caso crumbs seja vazio ou inválido\n */\n private getParsedItems(): BreadcrumbItem[] {\n if (!this.crumbs || this.crumbs === '') {\n return this.defaultCrumbs\n }\n\n try {\n const parsed = typeof this.crumbs === 'string' ? JSON.parse(this.crumbs) : this.crumbs\n return Array.isArray(parsed) && parsed.length > 0 ? parsed : this.defaultCrumbs\n } catch {\n console.error('Invalid JSON format for crumbs:', this.crumbs)\n return this.defaultCrumbs\n }\n }\n\n /**\n * Ao clicar no botão HOME, direciona o usuário para URL passada na propriedade 'homeUrl'.\n */\n private handleHomeClick() {\n window.location.href = this.homeUrl\n }\n\n /**\n * Altera o estado do botão 'Folder', caso a lista dropdown esteja aberta ou fechada.\n */\n private toggleFolder() {\n this.isFolderOpen = !this.isFolderOpen\n }\n\n /**\n * Define as classes CSS usadas no breadcrumb.\n */\n private getCssClassMap(): { [key: string]: boolean } {\n return {\n 'br-breadcrumb': true,\n small: this.isSmallScreen,\n }\n }\n\n /**\n * Atualiza o estado 'isSmallScreen' com base no tamanho do container pai, se menor que 570px.\n */\n private resizeObserver: ResizeObserver\n\n /**\n * Atualiza os estados de largura do breadcrumb ao detectar mudanças no container pai.\n */\n private updateContainerSize = (entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n const containerWidth = entry.contentRect.width\n this.isSmallScreen = containerWidth < 570\n this.larguraPai = containerWidth\n this.calcularLarguraItens()\n }\n }\n\n /**\n * Adiciona o 'resizeObserver' para checar o tamanho do container pai.\n */\n connectedCallback() {\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(this.updateContainerSize)\n if (this.el.parentElement !== null) {\n this.resizeObserver.observe(this.el.parentElement)\n }\n }\n }\n\n /**\n * Remove o 'resizeObserver'.\n */\n disconnectedCallback() {\n if (this.resizeObserver != null) {\n this.resizeObserver.disconnect()\n }\n }\n\n /**\n * Calcula a largura total dos itens do breadcrumb para determinar se precisa de truncamento.\n */\n private calcularLarguraItens() {\n requestAnimationFrame(() => {\n const itens = this.el.shadowRoot?.querySelectorAll('.crumb, .mobile-active-page, br-item')\n if (itens) {\n let totalWidth = 0\n itens.forEach((item) => {\n totalWidth += (item as HTMLElement).getBoundingClientRect().width\n })\n this.larguraInterna = totalWidth\n this.isTruncate = this.larguraInterna > this.larguraPai\n }\n })\n }\n\n /**\n * Executa cálculos de largura após o componente ser carregado.\n */\n componentDidLoad() {\n this.calcularLarguraItens()\n }\n\n /**\n * Renderiza botão Home\n */\n private renderHomeButton() {\n const buttonFolderClass = this.isFolderOpen ? 'fa6-solid:folder-minus' : 'fa6-solid:folder-plus'\n return (\n <br-button\n id=\"circle\"\n shape=\"circle\"\n aria-label={this.isSmallScreen ? 'Exibir lista de páginas' : 'Voltar para Home'}\n onClick={this.isSmallScreen ? () => this.toggleFolder() : () => this.handleHomeClick()}\n >\n <br-icon icon-name={`${this.isSmallScreen ? buttonFolderClass : 'fa6-solid:house'}`}></br-icon>\n </br-button>\n )\n }\n\n /**\n * Renderiza botão Folder no comportamento truncado\n */\n private renderTruncateButton() {\n if (this.isTruncate && !this.isSmallScreen) {\n const buttonFolderClass = this.isFolderOpen ? 'fa6-solid:folder-minus' : 'fa6-solid:folder-plus'\n return (\n <div class=\"buttonFolderGroup\">\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <br-button\n id=\"circle\"\n shape=\"circle\"\n aria-label={this.isFolderOpen ? 'Recolher lista de páginas' : 'Exibir lista de páginas'}\n onClick={() => this.toggleFolder()}\n onKeyDown={(event) => this.handleKeyDown(event)}\n >\n <br-icon icon-name={buttonFolderClass}></br-icon>\n </br-button>\n </div>\n )\n }\n return null\n }\n\n /**\n * Renderiza itens do Breadcrumb no comportamento mobile ou truncado\n */\n private renderBreadcrumbItems() {\n const parsedItems = this.getParsedItems()\n const lastItem = parsedItems[parsedItems.length - 2]\n\n return this.isSmallScreen || this.isTruncate ? (\n <div class=\"buttonFolderGroup\">\n {this.isTruncate && !this.isSmallScreen && lastItem ? (\n <span>\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <a\n id=\"nextCrumb\"\n href={lastItem.url || 'javascript:void(0)'}\n target={lastItem.target || '_self'}\n onMouseOver={(event) => this.handleMouseOver(event, lastItem.label)}\n onMouseOut={() => this.handleMouseOut()}\n >\n {this.trunc(lastItem.label)}\n </a>\n </span>\n ) : null}\n {this.renderMobileActiveItem(parsedItems)}\n {this.renderBreadcrumbList(parsedItems)}\n </div>\n ) : (\n parsedItems.map((item, index) => (\n <li\n key={index}\n class={`crumb ${item.home ? 'home' : ''}`}\n data-active={item.active ? 'active' : null}\n aria-label={`Página ${index + 1} de ${parsedItems.length}`}\n >\n {this.renderBreadcrumbLink(item)}\n </li>\n ))\n )\n }\n\n /**\n * Renderiza item da página atual\n */\n private renderMobileActiveItem(parsedItems: BreadcrumbItem[]) {\n const activeItem = parsedItems.find((item) => item.active)\n if (!activeItem) return null\n return (\n <span class=\"mobile-active-page\">\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <span aria-current=\"page\" data-active=\"active\" tabindex=\"0\">\n {activeItem.label}\n </span>\n </span>\n )\n }\n\n /**\n * Renderiza Lista dropdown contendo os itens do Breadcrumb\n */\n private renderBreadcrumbList(parsedItems: BreadcrumbItem[]) {\n return (\n <br-list class={this.isFolderOpen ? 'mobile-crumb-list show' : 'mobile-crumb-list'}>\n {this.isSmallScreen && (\n <div aria-label={`Página 1 de ${parsedItems.length}`}>\n <br-item>\n <a href={this.homeUrl} target=\"_self\">\n Página Inicial\n </a>\n </br-item>\n <span class=\"br-divider\"></span>\n </div>\n )}\n {parsedItems.map((item, index) => {\n if (this.isTruncate && !this.isSmallScreen && index === parsedItems.length - 2) {\n return null\n }\n return (\n !item.active && (\n <div\n key={index}\n aria-label={\n this.isTruncate && !this.isSmallScreen\n ? `Página ${index + 1} de ${parsedItems.length - 2}`\n : `Página ${index + 2} de ${parsedItems.length}`\n }\n >\n <br-item>\n <a\n id={index == 0 ? 'firstElementList' : ''}\n href={item.url || 'javascript:void(0)'}\n target={item.target || '_self'}\n onMouseOver={(event) => this.handleMouseOver(event, item.label)}\n onMouseOut={() => this.handleMouseOut()}\n onKeyDown={\n index == parsedItems.length - 3 && this.isFolderOpen && this.isTruncate && !this.isSmallScreen\n ? (event) => {\n if (event.key === 'Tab') {\n this.handleKeyDownOut(event)\n this.toggleFolder()\n }\n }\n : null\n }\n >\n {this.trunc(item.label)}\n </a>\n </br-item>\n <span class=\"br-divider\"></span>\n </div>\n )\n )\n })}\n </br-list>\n )\n }\n\n /**\n * Renderiza itens do Breadcrumb no formato desktop\n */\n private renderBreadcrumbLink(item: BreadcrumbItem) {\n return item.active ? (\n <span>\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <span aria-current=\"page\" tabindex=\"0\">\n {item.label}\n </span>\n </span>\n ) : (\n <span>\n <br-icon class=\"br-icon\" icon-name=\"fa6-solid:chevron-right\" width=\"12\" height=\"12\"></br-icon>\n <a\n href={item.url || 'javascript:void(0)'}\n target={item.target || '_self'}\n onMouseOver={(event) => this.handleMouseOver(event, item.label)}\n onMouseOut={() => this.handleMouseOut()}\n >\n {this.trunc(item.label)}\n </a>\n </span>\n )\n }\n\n /**\n * Renderiza Tooltip\n */\n private renderTooltip() {\n if (!this.showTooltip) return null\n return (\n <div class=\"tooltip-box\" style={{ left: `${this.tooltipPosition.x}px`, top: `${this.tooltipPosition.y}px` }}>\n {this.tooltipText}\n </div>\n )\n }\n\n /**\n * Controla navegação pelo teclado após lista de itens aberta\n * Dispara foco no primeiro item da lista flutuante\n */\n private handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Tab') {\n if (this.isFolderOpen && this.isTruncate && !this.isSmallScreen) {\n setTimeout(() => {\n const element = this.el.shadowRoot?.getElementById('firstElementList')\n if (element) {\n element.focus()\n }\n }, 0) // Aguarda um ciclo de renderização\n }\n }\n }\n\n /**\n * Ao finalizar navegação por teclado dentro da lista, dispara foco no item fora da lista flutuante\n */\n private handleKeyDownOut(event: KeyboardEvent) {\n if (event.key === 'Tab') {\n if (this.isFolderOpen && this.isTruncate && !this.isSmallScreen) {\n setTimeout(() => {\n const element = this.el.shadowRoot?.getElementById('nextCrumb')\n if (element) {\n element.focus()\n }\n }, 0)\n }\n }\n }\n\n render() {\n return (\n <Host>\n <nav class={this.getCssClassMap()} aria-label=\"Breadcrumbs\">\n <ol class=\"crumb-list\">\n {this.renderHomeButton()}\n {this.renderTruncateButton()}\n {this.renderBreadcrumbItems()}\n </ol>\n </nav>\n {this.renderTooltip()}\n </Host>\n )\n }\n}\n\n/**\n * ID do Breadcrumb\n */\nlet breadcrumbId = 0\n\n/**\n * Limite de caracteres para o truncamento\n */\nconst charactersNumberTruncate = 20\n"],"names":[],"mappings":"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"}