@govbr-ds/webcomponents 2.0.0-next.64 → 2.0.0-next.65

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 (691) hide show
  1. package/dist/cjs/br-avatar.cjs.entry.js +1 -1
  2. package/dist/cjs/br-avatar.entry.cjs.js.map +1 -1
  3. package/dist/cjs/br-breadcrumb.cjs.entry.js +113 -61
  4. package/dist/cjs/br-breadcrumb.entry.cjs.js.map +1 -1
  5. package/dist/cjs/br-button.br-icon.entry.cjs.js.map +1 -1
  6. package/dist/cjs/br-button_2.cjs.entry.js +4 -4
  7. package/dist/cjs/br-card.cjs.entry.js +2 -2
  8. package/dist/cjs/br-card.entry.cjs.js.map +1 -1
  9. package/dist/cjs/br-checkbox.br-input.br-radio.entry.cjs.js.map +1 -1
  10. package/dist/cjs/br-checkbox_3.cjs.entry.js +6 -6
  11. package/dist/cjs/br-checkgroup.cjs.entry.js +2 -2
  12. package/dist/cjs/br-checkgroup.entry.cjs.js.map +1 -1
  13. package/dist/cjs/br-collapse.br-list.entry.cjs.js.map +1 -1
  14. package/dist/cjs/br-collapse_2.cjs.entry.js +4 -4
  15. package/dist/cjs/br-crumb.cjs.entry.js +38 -0
  16. package/dist/cjs/br-crumb.entry.cjs.js.map +1 -0
  17. package/dist/cjs/br-datetime-picker.cjs.entry.js +2 -2
  18. package/dist/cjs/br-datetime-picker.entry.cjs.js.map +1 -1
  19. package/dist/cjs/br-divider.cjs.entry.js +2 -2
  20. package/dist/cjs/br-divider.entry.cjs.js.map +1 -1
  21. package/dist/cjs/br-dropdown.br-select.entry.cjs.js.map +1 -1
  22. package/dist/cjs/br-dropdown_2.cjs.entry.js +123 -40
  23. package/dist/cjs/br-footer-category.cjs.entry.js +3 -3
  24. package/dist/cjs/br-footer-category.entry.cjs.js.map +1 -1
  25. package/dist/cjs/br-footer-item.cjs.entry.js +2 -2
  26. package/dist/cjs/br-footer-item.entry.cjs.js.map +1 -1
  27. package/dist/cjs/br-footer-legal.cjs.entry.js +2 -2
  28. package/dist/cjs/br-footer-legal.entry.cjs.js.map +1 -1
  29. package/dist/cjs/br-footer-logo.cjs.entry.js +2 -2
  30. package/dist/cjs/br-footer-logo.entry.cjs.js.map +1 -1
  31. package/dist/cjs/br-footer-social.cjs.entry.js +2 -2
  32. package/dist/cjs/br-footer-social.entry.cjs.js.map +1 -1
  33. package/dist/cjs/br-footer.cjs.entry.js +2 -2
  34. package/dist/cjs/br-footer.entry.cjs.js.map +1 -1
  35. package/dist/cjs/br-header-function.cjs.entry.js +2 -2
  36. package/dist/cjs/br-header-function.entry.cjs.js.map +1 -1
  37. package/dist/cjs/br-header-link.cjs.entry.js +2 -2
  38. package/dist/cjs/br-header-link.entry.cjs.js.map +1 -1
  39. package/dist/cjs/br-header-list.cjs.entry.js +2 -2
  40. package/dist/cjs/br-header-list.entry.cjs.js.map +1 -1
  41. package/dist/cjs/br-header-logo.cjs.entry.js +2 -2
  42. package/dist/cjs/br-header-logo.entry.cjs.js.map +1 -1
  43. package/dist/cjs/br-header.cjs.entry.js +2 -2
  44. package/dist/cjs/br-header.entry.cjs.js.map +1 -1
  45. package/dist/cjs/br-item.cjs.entry.js +2 -2
  46. package/dist/cjs/br-item.entry.cjs.js.map +1 -1
  47. package/dist/cjs/br-loading.cjs.entry.js +2 -2
  48. package/dist/cjs/br-loading.entry.cjs.js.map +1 -1
  49. package/dist/cjs/br-magic-button.cjs.entry.js +2 -2
  50. package/dist/cjs/br-magic-button.entry.cjs.js.map +1 -1
  51. package/dist/cjs/br-menu-header.cjs.entry.js +2 -2
  52. package/dist/cjs/br-menu-header.entry.cjs.js.map +1 -1
  53. package/dist/cjs/br-menu-info.cjs.entry.js +2 -2
  54. package/dist/cjs/br-menu-info.entry.cjs.js.map +1 -1
  55. package/dist/cjs/br-menu-item.cjs.entry.js +3 -3
  56. package/dist/cjs/br-menu-item.entry.cjs.js.map +1 -1
  57. package/dist/cjs/br-menu-link.cjs.entry.js +2 -2
  58. package/dist/cjs/br-menu-link.entry.cjs.js.map +1 -1
  59. package/dist/cjs/br-menu-list.cjs.entry.js +1 -1
  60. package/dist/cjs/br-menu-list.entry.cjs.js.map +1 -1
  61. package/dist/cjs/br-menu-logo.cjs.entry.js +2 -2
  62. package/dist/cjs/br-menu-logo.entry.cjs.js.map +1 -1
  63. package/dist/cjs/br-menu-social.cjs.entry.js +2 -2
  64. package/dist/cjs/br-menu-social.entry.cjs.js.map +1 -1
  65. package/dist/cjs/br-menu.cjs.entry.js +3 -3
  66. package/dist/cjs/br-menu.entry.cjs.js.map +1 -1
  67. package/dist/cjs/br-message.cjs.entry.js +2 -2
  68. package/dist/cjs/br-message.entry.cjs.js.map +1 -1
  69. package/dist/cjs/br-modal.cjs.entry.js +252 -12
  70. package/dist/cjs/br-modal.entry.cjs.js.map +1 -1
  71. package/dist/cjs/br-pagination.cjs.entry.js +1 -1
  72. package/dist/cjs/br-pagination.entry.cjs.js.map +1 -1
  73. package/dist/cjs/br-scrim.cjs.entry.js +117 -24
  74. package/dist/cjs/br-scrim.entry.cjs.js.map +1 -1
  75. package/dist/cjs/br-select-option.cjs.entry.js +32 -0
  76. package/dist/cjs/br-select-option.entry.cjs.js.map +1 -0
  77. package/dist/cjs/br-sign-in.cjs.entry.js +2 -2
  78. package/dist/cjs/br-sign-in.entry.cjs.js.map +1 -1
  79. package/dist/cjs/br-skip-link.cjs.entry.js +2 -2
  80. package/dist/cjs/br-skip-link.entry.cjs.js.map +1 -1
  81. package/dist/cjs/br-skiplink-item.cjs.entry.js +2 -2
  82. package/dist/cjs/br-skiplink-item.entry.cjs.js.map +1 -1
  83. package/dist/cjs/br-step.br-step-item.entry.cjs.js.map +1 -1
  84. package/dist/cjs/br-step_2.cjs.entry.js +17 -86
  85. package/dist/cjs/br-switch.cjs.entry.js +2 -2
  86. package/dist/cjs/br-switch.entry.cjs.js.map +1 -1
  87. package/dist/cjs/br-tab-item.cjs.entry.js +2 -2
  88. package/dist/cjs/br-tab-item.entry.cjs.js.map +1 -1
  89. package/dist/cjs/br-tab.cjs.entry.js +76 -10
  90. package/dist/cjs/br-tab.entry.cjs.js.map +1 -1
  91. package/dist/cjs/br-table-cell.cjs.entry.js +2 -2
  92. package/dist/cjs/br-table-cell.entry.cjs.js.map +1 -1
  93. package/dist/cjs/br-table-header-cell.cjs.entry.js +2 -2
  94. package/dist/cjs/br-table-header-cell.entry.cjs.js.map +1 -1
  95. package/dist/cjs/br-table-header-row.cjs.entry.js +2 -2
  96. package/dist/cjs/br-table-header-row.entry.cjs.js.map +1 -1
  97. package/dist/cjs/br-table-row.cjs.entry.js +2 -2
  98. package/dist/cjs/br-table-row.entry.cjs.js.map +1 -1
  99. package/dist/cjs/br-table.cjs.entry.js +2 -2
  100. package/dist/cjs/br-table.entry.cjs.js.map +1 -1
  101. package/dist/cjs/br-tag.cjs.entry.js +2 -2
  102. package/dist/cjs/br-tag.entry.cjs.js.map +1 -1
  103. package/dist/cjs/br-textarea.cjs.entry.js +2 -2
  104. package/dist/cjs/br-textarea.entry.cjs.js.map +1 -1
  105. package/dist/cjs/br-tooltip.cjs.entry.js +2 -2
  106. package/dist/cjs/br-tooltip.entry.cjs.js.map +1 -1
  107. package/dist/cjs/br-upload.cjs.entry.js +2 -2
  108. package/dist/cjs/br-upload.entry.cjs.js.map +1 -1
  109. package/dist/cjs/br-wizard-panel.cjs.entry.js +2 -2
  110. package/dist/cjs/br-wizard-panel.entry.cjs.js.map +1 -1
  111. package/dist/cjs/br-wizard.cjs.entry.js +2 -2
  112. package/dist/cjs/br-wizard.entry.cjs.js.map +1 -1
  113. package/dist/cjs/index-CFIH680Y.js +8 -0
  114. package/dist/cjs/loader.cjs.js +1 -1
  115. package/dist/cjs/webcomponents.cjs.js +1 -1
  116. package/dist/collection/collection-manifest.json +2 -0
  117. package/dist/collection/components/avatar/avatar.css +1 -1
  118. package/dist/collection/components/breadcrumb/breadcrumb.css +1 -1
  119. package/dist/collection/components/breadcrumb/breadcrumb.js +124 -57
  120. package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -1
  121. package/dist/collection/components/breadcrumb/crumb/crumb.js +168 -0
  122. package/dist/collection/components/breadcrumb/crumb/crumb.js.map +1 -0
  123. package/dist/collection/components/button/button.css +1 -1
  124. package/dist/collection/components/button/button.js +1 -1
  125. package/dist/collection/components/card/card.css +1 -1
  126. package/dist/collection/components/card/card.js +1 -1
  127. package/dist/collection/components/checkbox/checkbox.css +1 -1
  128. package/dist/collection/components/checkbox/checkbox.js +1 -1
  129. package/dist/collection/components/checkgroup/checkgroup.css +1 -1
  130. package/dist/collection/components/checkgroup/checkgroup.js +1 -1
  131. package/dist/collection/components/collapse/collapse.css +1 -1
  132. package/dist/collection/components/collapse/collapse.js +1 -1
  133. package/dist/collection/components/datetime-picker/datetime-picker.css +1 -1
  134. package/dist/collection/components/datetime-picker/datetime-picker.js +1 -1
  135. package/dist/collection/components/divider/divider.css +1 -1
  136. package/dist/collection/components/divider/divider.js +1 -1
  137. package/dist/collection/components/dropdown/dropdown.css +1 -1
  138. package/dist/collection/components/dropdown/dropdown.js +1 -1
  139. package/dist/collection/components/footer/footer-category/footer-category.css +1 -1
  140. package/dist/collection/components/footer/footer-category/footer-category.js +2 -2
  141. package/dist/collection/components/footer/footer-item/footer-item.css +1 -1
  142. package/dist/collection/components/footer/footer-item/footer-item.js +1 -1
  143. package/dist/collection/components/footer/footer-legal/footer-legal.css +1 -1
  144. package/dist/collection/components/footer/footer-legal/footer-legal.js +1 -1
  145. package/dist/collection/components/footer/footer-logo/footer-logo.css +1 -1
  146. package/dist/collection/components/footer/footer-logo/footer-logo.js +1 -1
  147. package/dist/collection/components/footer/footer-social/footer-social.css +1 -1
  148. package/dist/collection/components/footer/footer-social/footer-social.js +1 -1
  149. package/dist/collection/components/footer/footer.css +1 -1
  150. package/dist/collection/components/footer/footer.js +1 -1
  151. package/dist/collection/components/header/header-function/header-function.css +1 -1
  152. package/dist/collection/components/header/header-function/header-function.js +1 -1
  153. package/dist/collection/components/header/header-link/header-link.css +1 -1
  154. package/dist/collection/components/header/header-link/header-link.js +1 -1
  155. package/dist/collection/components/header/header-list/header-list.css +1 -1
  156. package/dist/collection/components/header/header-list/header-list.js +1 -1
  157. package/dist/collection/components/header/header-logo/header-logo.css +1 -1
  158. package/dist/collection/components/header/header-logo/header-logo.js +1 -1
  159. package/dist/collection/components/header/header.css +1 -1
  160. package/dist/collection/components/header/header.js +1 -1
  161. package/dist/collection/components/icon/icon.css +1 -1
  162. package/dist/collection/components/icon/icon.js +1 -1
  163. package/dist/collection/components/input/input.css +1 -1
  164. package/dist/collection/components/input/input.js +1 -1
  165. package/dist/collection/components/item/item.css +1 -1
  166. package/dist/collection/components/item/item.js +1 -1
  167. package/dist/collection/components/list/list.css +1 -1
  168. package/dist/collection/components/list/list.js +1 -1
  169. package/dist/collection/components/loading/loading.css +1 -1
  170. package/dist/collection/components/loading/loading.js +1 -1
  171. package/dist/collection/components/magic-button/magic-button.css +1 -1
  172. package/dist/collection/components/magic-button/magic-button.js +1 -1
  173. package/dist/collection/components/menu/menu-header/menu-header.css +1 -1
  174. package/dist/collection/components/menu/menu-header/menu-header.js +1 -1
  175. package/dist/collection/components/menu/menu-info/menu-info.css +1 -1
  176. package/dist/collection/components/menu/menu-info/menu-info.js +1 -1
  177. package/dist/collection/components/menu/menu-item/menu-item.css +1 -1
  178. package/dist/collection/components/menu/menu-item/menu-item.js +2 -2
  179. package/dist/collection/components/menu/menu-link/menu-link.css +1 -1
  180. package/dist/collection/components/menu/menu-link/menu-link.js +1 -1
  181. package/dist/collection/components/menu/menu-list/menu-list.css +1 -1
  182. package/dist/collection/components/menu/menu-logo/menu-logo.css +1 -1
  183. package/dist/collection/components/menu/menu-logo/menu-logo.js +1 -1
  184. package/dist/collection/components/menu/menu-social/menu-social.css +1 -1
  185. package/dist/collection/components/menu/menu-social/menu-social.js +1 -1
  186. package/dist/collection/components/menu/menu.css +1 -1
  187. package/dist/collection/components/menu/menu.js +2 -2
  188. package/dist/collection/components/message/message.css +1 -1
  189. package/dist/collection/components/message/message.js +1 -1
  190. package/dist/collection/components/modal/modal.css +1 -1
  191. package/dist/collection/components/modal/modal.js +266 -12
  192. package/dist/collection/components/modal/modal.js.map +1 -1
  193. package/dist/collection/components/pagination/pagination.css +1 -1
  194. package/dist/collection/components/radio/radio.css +1 -1
  195. package/dist/collection/components/radio/radio.js +1 -1
  196. package/dist/collection/components/scrim/scrim.css +1 -1
  197. package/dist/collection/components/scrim/scrim.js +116 -23
  198. package/dist/collection/components/scrim/scrim.js.map +1 -1
  199. package/dist/collection/components/select/select-option/select-option.js +122 -0
  200. package/dist/collection/components/select/select-option/select-option.js.map +1 -0
  201. package/dist/collection/components/select/select.css +1 -1
  202. package/dist/collection/components/select/select.js +151 -38
  203. package/dist/collection/components/select/select.js.map +1 -1
  204. package/dist/collection/components/sign-in/sign-in.css +1 -1
  205. package/dist/collection/components/sign-in/sign-in.js +1 -1
  206. package/dist/collection/components/skip-link/skip-link-item/skip-link-item.css +1 -1
  207. package/dist/collection/components/skip-link/skip-link-item/skip-link-item.js +1 -1
  208. package/dist/collection/components/skip-link/skip-link.css +1 -1
  209. package/dist/collection/components/skip-link/skip-link.js +1 -1
  210. package/dist/collection/components/step/step-item/step-item.css +1 -1
  211. package/dist/collection/components/step/step-item/step-item.js +16 -86
  212. package/dist/collection/components/step/step-item/step-item.js.map +1 -1
  213. package/dist/collection/components/step/step.css +1 -1
  214. package/dist/collection/components/step/step.js +2 -6
  215. package/dist/collection/components/step/step.js.map +1 -1
  216. package/dist/collection/components/switch/switch.css +1 -1
  217. package/dist/collection/components/switch/switch.js +1 -1
  218. package/dist/collection/components/tab/tab-item/tab-item.css +1 -1
  219. package/dist/collection/components/tab/tab-item/tab-item.js +1 -1
  220. package/dist/collection/components/tab/tab.css +1 -1
  221. package/dist/collection/components/tab/tab.js +137 -17
  222. package/dist/collection/components/tab/tab.js.map +1 -1
  223. package/dist/collection/components/table/table-cell/table-cell.css +1 -1
  224. package/dist/collection/components/table/table-cell/table-cell.js +1 -1
  225. package/dist/collection/components/table/table-header-cell/table-header-cell.css +1 -1
  226. package/dist/collection/components/table/table-header-cell/table-header-cell.js +1 -1
  227. package/dist/collection/components/table/table-header-row/table-header-row.css +1 -1
  228. package/dist/collection/components/table/table-header-row/table-header-row.js +1 -1
  229. package/dist/collection/components/table/table-row/table-row.css +1 -1
  230. package/dist/collection/components/table/table-row/table-row.js +1 -1
  231. package/dist/collection/components/table/table.css +1 -1
  232. package/dist/collection/components/table/table.js +1 -1
  233. package/dist/collection/components/tag/tag.css +1 -1
  234. package/dist/collection/components/tag/tag.js +1 -1
  235. package/dist/collection/components/textarea/textarea.css +1 -1
  236. package/dist/collection/components/textarea/textarea.js +1 -1
  237. package/dist/collection/components/tooltip/tooltip.css +1 -1
  238. package/dist/collection/components/tooltip/tooltip.js +1 -1
  239. package/dist/collection/components/upload/upload.css +1 -1
  240. package/dist/collection/components/upload/upload.js +1 -1
  241. package/dist/collection/components/wizard/wizard-panel/wizard-panel.css +1 -1
  242. package/dist/collection/components/wizard/wizard-panel/wizard-panel.js +1 -1
  243. package/dist/collection/components/wizard/wizard.css +1 -1
  244. package/dist/collection/components/wizard/wizard.js +1 -1
  245. package/dist/collection/pages/scripts/menu.js +3 -1
  246. package/dist/collection/pages/scripts/pageLoader.js +4 -2
  247. package/dist/collection/value-accessors/angular-value-accessor-config.js +1 -1
  248. package/dist/collection/value-accessors/angular-value-accessor-config.js.map +1 -1
  249. package/dist/components/br-avatar.js +3 -3
  250. package/dist/components/br-breadcrumb.js +161 -90
  251. package/dist/components/br-breadcrumb.js.map +1 -1
  252. package/dist/components/br-button.js +3 -3
  253. package/dist/components/br-card.js +3 -3
  254. package/dist/components/br-checkbox.js +4 -4
  255. package/dist/components/br-checkgroup.js +11 -11
  256. package/dist/components/br-collapse.js +4 -4
  257. package/dist/components/br-crumb.d.ts +11 -0
  258. package/dist/components/br-crumb.js +80 -0
  259. package/dist/components/br-crumb.js.map +1 -0
  260. package/dist/components/br-datetime-picker.js +324 -324
  261. package/dist/components/br-divider.js +1 -1
  262. package/dist/components/br-dropdown.js +4 -4
  263. package/dist/components/br-footer-category.js +14 -14
  264. package/dist/components/br-footer-item.js +6 -6
  265. package/dist/components/br-footer-legal.js +9 -9
  266. package/dist/components/br-footer-logo.js +4 -4
  267. package/dist/components/br-footer-social.js +7 -7
  268. package/dist/components/br-footer.js +24 -24
  269. package/dist/components/br-header-function.js +6 -6
  270. package/dist/components/br-header-link.js +6 -6
  271. package/dist/components/br-header-list.js +8 -8
  272. package/dist/components/br-header-logo.js +13 -13
  273. package/dist/components/br-header.js +15 -15
  274. package/dist/components/br-icon.js +3 -3
  275. package/dist/components/br-input.js +3 -3
  276. package/dist/components/br-item.js +3 -3
  277. package/dist/components/br-list.js +4 -4
  278. package/dist/components/br-loading.js +7 -7
  279. package/dist/components/br-magic-button.js +7 -7
  280. package/dist/components/br-menu-header.js +14 -14
  281. package/dist/components/br-menu-info.js +5 -5
  282. package/dist/components/br-menu-item.js +3 -3
  283. package/dist/components/br-menu-link.js +9 -9
  284. package/dist/components/br-menu-list.js +4 -4
  285. package/dist/components/br-menu-logo.js +6 -6
  286. package/dist/components/br-menu-social.js +9 -9
  287. package/dist/components/br-menu.js +35 -35
  288. package/dist/components/br-message.js +5 -5
  289. package/dist/components/br-modal.js +230 -21
  290. package/dist/components/br-modal.js.map +1 -1
  291. package/dist/components/br-pagination.js +12 -12
  292. package/dist/components/br-radio.js +4 -4
  293. package/dist/components/br-scrim.js +122 -37
  294. package/dist/components/br-scrim.js.map +1 -1
  295. package/dist/components/br-select-option.d.ts +11 -0
  296. package/dist/components/br-select-option.js +72 -0
  297. package/dist/components/br-select-option.js.map +1 -0
  298. package/dist/components/br-select.js +4 -4
  299. package/dist/components/br-sign-in.js +11 -11
  300. package/dist/components/br-skip-link.js +9 -9
  301. package/dist/components/br-skiplink-item.js +14 -14
  302. package/dist/components/br-step-item.js +4 -4
  303. package/dist/components/br-step.js +3 -3
  304. package/dist/components/br-switch.js +7 -7
  305. package/dist/components/br-tab-item.js +7 -7
  306. package/dist/components/br-tab.js +82 -26
  307. package/dist/components/br-tab.js.map +1 -1
  308. package/dist/components/br-table-cell.js +5 -5
  309. package/dist/components/br-table-header-cell.js +8 -8
  310. package/dist/components/br-table-header-row.js +5 -5
  311. package/dist/components/br-table-row.js +5 -5
  312. package/dist/components/br-table.js +8 -8
  313. package/dist/components/br-tag.js +1 -1
  314. package/dist/components/br-textarea.js +4 -4
  315. package/dist/components/br-tooltip.js +14 -14
  316. package/dist/components/br-upload.js +34 -34
  317. package/dist/components/br-wizard-panel.js +6 -6
  318. package/dist/components/br-wizard.js +12 -12
  319. package/dist/components/br-wizard.js.map +1 -1
  320. package/dist/components/index.d.ts +4 -0
  321. package/dist/components/index.js +5 -1
  322. package/dist/components/{p-CJSXIVVe.js → p-B4_2a6sY.js} +9 -9
  323. package/dist/components/{p-DdjKNpU3.js → p-BVCWXitK.js} +157 -61
  324. package/dist/components/p-BVCWXitK.js.map +1 -0
  325. package/dist/components/p-BXMQkO62.js +399 -0
  326. package/dist/components/p-Bb4aDGZV.js +192 -0
  327. package/dist/components/p-BfM6USmd.js +138 -0
  328. package/dist/components/{p-BIJ6vVdB.js.map → p-BfM6USmd.js.map} +1 -1
  329. package/dist/components/{p-CwtLw60M.js → p-Bjywc5uG.js} +6 -6
  330. package/dist/components/p-BtGv7ZmW.js +229 -0
  331. package/dist/components/p-BtGv7ZmW.js.map +1 -0
  332. package/dist/components/{p-C_OI0BQu.js → p-BwHD1VKm.js} +6 -6
  333. package/dist/components/{p-Bqb7YtL0.js → p-C1NfZb6u.js} +19 -19
  334. package/dist/components/{p-DW63EY0U.js → p-C2apigAS.js} +13 -13
  335. package/dist/components/{p-5Bn_PU3B.js → p-CldlPwBq.js} +8 -8
  336. package/dist/components/p-DLCPJIh7.js +306 -0
  337. package/dist/components/p-DLCPJIh7.js.map +1 -0
  338. package/dist/components/{p-Bri6ECVa.js → p-DexVMiiX.js} +13 -13
  339. package/dist/components/p-DexVMiiX.js.map +1 -0
  340. package/dist/components/{p-DSkSDmzD.js → p-DozXPp1d.js} +3 -3
  341. package/dist/components/p-DzfbHHTf.js +136 -0
  342. package/dist/components/{p-CBj_WCYf.js → p-JsxUUux9.js} +6 -6
  343. package/dist/components/{p-lIb35q2K.js → p-p8k-sBQZ.js} +8 -8
  344. package/dist/custom-elements.json +1388 -710
  345. package/dist/esm/br-avatar.entry.js +2 -2
  346. package/dist/esm/br-avatar.entry.js.map +1 -1
  347. package/dist/esm/br-breadcrumb.entry.js +114 -62
  348. package/dist/esm/br-breadcrumb.entry.js.map +1 -1
  349. package/dist/esm/br-button.br-icon.entry.js.map +1 -1
  350. package/dist/esm/br-button_2.entry.js +5 -5
  351. package/dist/esm/br-card.entry.js +3 -3
  352. package/dist/esm/br-card.entry.js.map +1 -1
  353. package/dist/esm/br-checkbox.br-input.br-radio.entry.js.map +1 -1
  354. package/dist/esm/br-checkbox_3.entry.js +7 -7
  355. package/dist/esm/br-checkgroup.entry.js +3 -3
  356. package/dist/esm/br-checkgroup.entry.js.map +1 -1
  357. package/dist/esm/br-collapse.br-list.entry.js.map +1 -1
  358. package/dist/esm/br-collapse_2.entry.js +5 -5
  359. package/dist/esm/br-crumb.entry.js +36 -0
  360. package/dist/esm/br-crumb.entry.js.map +1 -0
  361. package/dist/esm/br-datetime-picker.entry.js +3 -3
  362. package/dist/esm/br-datetime-picker.entry.js.map +1 -1
  363. package/dist/esm/br-divider.entry.js +3 -3
  364. package/dist/esm/br-divider.entry.js.map +1 -1
  365. package/dist/esm/br-dropdown.br-select.entry.js.map +1 -1
  366. package/dist/esm/br-dropdown_2.entry.js +124 -41
  367. package/dist/esm/br-footer-category.entry.js +4 -4
  368. package/dist/esm/br-footer-category.entry.js.map +1 -1
  369. package/dist/esm/br-footer-item.entry.js +3 -3
  370. package/dist/esm/br-footer-item.entry.js.map +1 -1
  371. package/dist/esm/br-footer-legal.entry.js +3 -3
  372. package/dist/esm/br-footer-legal.entry.js.map +1 -1
  373. package/dist/esm/br-footer-logo.entry.js +3 -3
  374. package/dist/esm/br-footer-logo.entry.js.map +1 -1
  375. package/dist/esm/br-footer-social.entry.js +3 -3
  376. package/dist/esm/br-footer-social.entry.js.map +1 -1
  377. package/dist/esm/br-footer.entry.js +3 -3
  378. package/dist/esm/br-footer.entry.js.map +1 -1
  379. package/dist/esm/br-header-function.entry.js +3 -3
  380. package/dist/esm/br-header-function.entry.js.map +1 -1
  381. package/dist/esm/br-header-link.entry.js +3 -3
  382. package/dist/esm/br-header-link.entry.js.map +1 -1
  383. package/dist/esm/br-header-list.entry.js +3 -3
  384. package/dist/esm/br-header-list.entry.js.map +1 -1
  385. package/dist/esm/br-header-logo.entry.js +3 -3
  386. package/dist/esm/br-header-logo.entry.js.map +1 -1
  387. package/dist/esm/br-header.entry.js +3 -3
  388. package/dist/esm/br-header.entry.js.map +1 -1
  389. package/dist/esm/br-item.entry.js +3 -3
  390. package/dist/esm/br-item.entry.js.map +1 -1
  391. package/dist/esm/br-loading.entry.js +3 -3
  392. package/dist/esm/br-loading.entry.js.map +1 -1
  393. package/dist/esm/br-magic-button.entry.js +3 -3
  394. package/dist/esm/br-magic-button.entry.js.map +1 -1
  395. package/dist/esm/br-menu-header.entry.js +3 -3
  396. package/dist/esm/br-menu-header.entry.js.map +1 -1
  397. package/dist/esm/br-menu-info.entry.js +3 -3
  398. package/dist/esm/br-menu-info.entry.js.map +1 -1
  399. package/dist/esm/br-menu-item.entry.js +4 -4
  400. package/dist/esm/br-menu-item.entry.js.map +1 -1
  401. package/dist/esm/br-menu-link.entry.js +3 -3
  402. package/dist/esm/br-menu-link.entry.js.map +1 -1
  403. package/dist/esm/br-menu-list.entry.js +2 -2
  404. package/dist/esm/br-menu-list.entry.js.map +1 -1
  405. package/dist/esm/br-menu-logo.entry.js +3 -3
  406. package/dist/esm/br-menu-logo.entry.js.map +1 -1
  407. package/dist/esm/br-menu-social.entry.js +3 -3
  408. package/dist/esm/br-menu-social.entry.js.map +1 -1
  409. package/dist/esm/br-menu.entry.js +4 -4
  410. package/dist/esm/br-menu.entry.js.map +1 -1
  411. package/dist/esm/br-message.entry.js +3 -3
  412. package/dist/esm/br-message.entry.js.map +1 -1
  413. package/dist/esm/br-modal.entry.js +253 -13
  414. package/dist/esm/br-modal.entry.js.map +1 -1
  415. package/dist/esm/br-pagination.entry.js +2 -2
  416. package/dist/esm/br-pagination.entry.js.map +1 -1
  417. package/dist/esm/br-scrim.entry.js +118 -25
  418. package/dist/esm/br-scrim.entry.js.map +1 -1
  419. package/dist/esm/br-select-option.entry.js +30 -0
  420. package/dist/esm/br-select-option.entry.js.map +1 -0
  421. package/dist/esm/br-sign-in.entry.js +3 -3
  422. package/dist/esm/br-sign-in.entry.js.map +1 -1
  423. package/dist/esm/br-skip-link.entry.js +3 -3
  424. package/dist/esm/br-skip-link.entry.js.map +1 -1
  425. package/dist/esm/br-skiplink-item.entry.js +3 -3
  426. package/dist/esm/br-skiplink-item.entry.js.map +1 -1
  427. package/dist/esm/br-step.br-step-item.entry.js.map +1 -1
  428. package/dist/esm/br-step_2.entry.js +18 -87
  429. package/dist/esm/br-switch.entry.js +3 -3
  430. package/dist/esm/br-switch.entry.js.map +1 -1
  431. package/dist/esm/br-tab-item.entry.js +3 -3
  432. package/dist/esm/br-tab-item.entry.js.map +1 -1
  433. package/dist/esm/br-tab.entry.js +77 -11
  434. package/dist/esm/br-tab.entry.js.map +1 -1
  435. package/dist/esm/br-table-cell.entry.js +3 -3
  436. package/dist/esm/br-table-cell.entry.js.map +1 -1
  437. package/dist/esm/br-table-header-cell.entry.js +3 -3
  438. package/dist/esm/br-table-header-cell.entry.js.map +1 -1
  439. package/dist/esm/br-table-header-row.entry.js +3 -3
  440. package/dist/esm/br-table-header-row.entry.js.map +1 -1
  441. package/dist/esm/br-table-row.entry.js +3 -3
  442. package/dist/esm/br-table-row.entry.js.map +1 -1
  443. package/dist/esm/br-table.entry.js +3 -3
  444. package/dist/esm/br-table.entry.js.map +1 -1
  445. package/dist/esm/br-tag.entry.js +3 -3
  446. package/dist/esm/br-tag.entry.js.map +1 -1
  447. package/dist/esm/br-textarea.entry.js +3 -3
  448. package/dist/esm/br-textarea.entry.js.map +1 -1
  449. package/dist/esm/br-tooltip.entry.js +3 -3
  450. package/dist/esm/br-tooltip.entry.js.map +1 -1
  451. package/dist/esm/br-upload.entry.js +3 -3
  452. package/dist/esm/br-upload.entry.js.map +1 -1
  453. package/dist/esm/br-wizard-panel.entry.js +3 -3
  454. package/dist/esm/br-wizard-panel.entry.js.map +1 -1
  455. package/dist/esm/br-wizard.entry.js +3 -3
  456. package/dist/esm/br-wizard.entry.js.map +1 -1
  457. package/dist/esm/{index-ByGJPTh2.js → index-CgnD6TrP.js} +11 -3
  458. package/dist/esm/{index-ByGJPTh2.js.map → index-CgnD6TrP.js.map} +1 -1
  459. package/dist/esm/loader.js +3 -3
  460. package/dist/esm/webcomponents.js +3 -3
  461. package/dist/hydrate/index.js +3543 -2986
  462. package/dist/hydrate/index.mjs +3543 -2986
  463. package/dist/types/components/breadcrumb/breadcrumb.d.ts +21 -15
  464. package/dist/types/components/breadcrumb/crumb/crumb.d.ts +35 -0
  465. package/dist/types/components/modal/modal.d.ts +86 -3
  466. package/dist/types/components/scrim/scrim.d.ts +32 -2
  467. package/dist/types/components/select/select-option/select-option.d.ts +29 -0
  468. package/dist/types/components/select/select.d.ts +30 -10
  469. package/dist/types/components/step/step-item/step-item.d.ts +3 -14
  470. package/dist/types/components/tab/tab.d.ts +67 -7
  471. package/dist/types/components.d.ts +215 -12
  472. package/dist/webcomponents/br-avatar.entry.esm.js.map +1 -1
  473. package/dist/webcomponents/br-breadcrumb.entry.esm.js.map +1 -1
  474. package/dist/webcomponents/br-button.br-icon.entry.esm.js.map +1 -1
  475. package/dist/webcomponents/br-card.entry.esm.js.map +1 -1
  476. package/dist/webcomponents/br-checkbox.br-input.br-radio.entry.esm.js.map +1 -1
  477. package/dist/webcomponents/br-checkgroup.entry.esm.js.map +1 -1
  478. package/dist/webcomponents/br-collapse.br-list.entry.esm.js.map +1 -1
  479. package/dist/webcomponents/br-crumb.entry.esm.js.map +1 -0
  480. package/dist/webcomponents/br-datetime-picker.entry.esm.js.map +1 -1
  481. package/dist/webcomponents/br-divider.entry.esm.js.map +1 -1
  482. package/dist/webcomponents/br-dropdown.br-select.entry.esm.js.map +1 -1
  483. package/dist/webcomponents/br-footer-category.entry.esm.js.map +1 -1
  484. package/dist/webcomponents/br-footer-item.entry.esm.js.map +1 -1
  485. package/dist/webcomponents/br-footer-legal.entry.esm.js.map +1 -1
  486. package/dist/webcomponents/br-footer-logo.entry.esm.js.map +1 -1
  487. package/dist/webcomponents/br-footer-social.entry.esm.js.map +1 -1
  488. package/dist/webcomponents/br-footer.entry.esm.js.map +1 -1
  489. package/dist/webcomponents/br-header-function.entry.esm.js.map +1 -1
  490. package/dist/webcomponents/br-header-link.entry.esm.js.map +1 -1
  491. package/dist/webcomponents/br-header-list.entry.esm.js.map +1 -1
  492. package/dist/webcomponents/br-header-logo.entry.esm.js.map +1 -1
  493. package/dist/webcomponents/br-header.entry.esm.js.map +1 -1
  494. package/dist/webcomponents/br-item.entry.esm.js.map +1 -1
  495. package/dist/webcomponents/br-loading.entry.esm.js.map +1 -1
  496. package/dist/webcomponents/br-magic-button.entry.esm.js.map +1 -1
  497. package/dist/webcomponents/br-menu-header.entry.esm.js.map +1 -1
  498. package/dist/webcomponents/br-menu-info.entry.esm.js.map +1 -1
  499. package/dist/webcomponents/br-menu-item.entry.esm.js.map +1 -1
  500. package/dist/webcomponents/br-menu-link.entry.esm.js.map +1 -1
  501. package/dist/webcomponents/br-menu-list.entry.esm.js.map +1 -1
  502. package/dist/webcomponents/br-menu-logo.entry.esm.js.map +1 -1
  503. package/dist/webcomponents/br-menu-social.entry.esm.js.map +1 -1
  504. package/dist/webcomponents/br-menu.entry.esm.js.map +1 -1
  505. package/dist/webcomponents/br-message.entry.esm.js.map +1 -1
  506. package/dist/webcomponents/br-modal.entry.esm.js.map +1 -1
  507. package/dist/webcomponents/br-pagination.entry.esm.js.map +1 -1
  508. package/dist/webcomponents/br-scrim.entry.esm.js.map +1 -1
  509. package/dist/webcomponents/br-select-option.entry.esm.js.map +1 -0
  510. package/dist/webcomponents/br-sign-in.entry.esm.js.map +1 -1
  511. package/dist/webcomponents/br-skip-link.entry.esm.js.map +1 -1
  512. package/dist/webcomponents/br-skiplink-item.entry.esm.js.map +1 -1
  513. package/dist/webcomponents/br-step.br-step-item.entry.esm.js.map +1 -1
  514. package/dist/webcomponents/br-switch.entry.esm.js.map +1 -1
  515. package/dist/webcomponents/br-tab-item.entry.esm.js.map +1 -1
  516. package/dist/webcomponents/br-tab.entry.esm.js.map +1 -1
  517. package/dist/webcomponents/br-table-cell.entry.esm.js.map +1 -1
  518. package/dist/webcomponents/br-table-header-cell.entry.esm.js.map +1 -1
  519. package/dist/webcomponents/br-table-header-row.entry.esm.js.map +1 -1
  520. package/dist/webcomponents/br-table-row.entry.esm.js.map +1 -1
  521. package/dist/webcomponents/br-table.entry.esm.js.map +1 -1
  522. package/dist/webcomponents/br-tag.entry.esm.js.map +1 -1
  523. package/dist/webcomponents/br-textarea.entry.esm.js.map +1 -1
  524. package/dist/webcomponents/br-tooltip.entry.esm.js.map +1 -1
  525. package/dist/webcomponents/br-upload.entry.esm.js.map +1 -1
  526. package/dist/webcomponents/br-wizard-panel.entry.esm.js.map +1 -1
  527. package/dist/webcomponents/br-wizard.entry.esm.js.map +1 -1
  528. package/dist/webcomponents/{p-f2ea0d7e.entry.js → p-020c598b.entry.js} +19 -19
  529. package/dist/webcomponents/{p-f2ea0d7e.entry.js.map → p-020c598b.entry.js.map} +1 -1
  530. package/dist/webcomponents/{p-83001853.entry.js → p-09a09974.entry.js} +6 -6
  531. package/dist/webcomponents/{p-83001853.entry.js.map → p-09a09974.entry.js.map} +1 -1
  532. package/dist/webcomponents/{p-bd803fec.entry.js → p-0be0b270.entry.js} +372 -372
  533. package/dist/webcomponents/{p-bd803fec.entry.js.map → p-0be0b270.entry.js.map} +1 -1
  534. package/dist/webcomponents/p-0d8da69a.entry.js +50 -0
  535. package/dist/webcomponents/{p-8b3688ab.entry.js → p-107ad6d3.entry.js} +6 -6
  536. package/dist/webcomponents/{p-01b4fecb.entry.js → p-10b0d158.entry.js} +6 -6
  537. package/dist/webcomponents/{p-f1fb559a.entry.js → p-13b1b500.entry.js} +7 -7
  538. package/dist/webcomponents/p-15561737.entry.js +428 -0
  539. package/dist/webcomponents/p-15561737.entry.js.map +1 -0
  540. package/dist/webcomponents/{p-c0cdb81f.entry.js → p-24dd7de0.entry.js} +9 -9
  541. package/dist/webcomponents/{p-e5875d3d.entry.js → p-26ec56f1.entry.js} +5 -5
  542. package/dist/webcomponents/{p-e5875d3d.entry.js.map → p-26ec56f1.entry.js.map} +1 -1
  543. package/dist/webcomponents/p-34cd69c7.entry.js +105 -0
  544. package/dist/webcomponents/{p-d856888c.entry.js.map → p-34cd69c7.entry.js.map} +1 -1
  545. package/dist/webcomponents/{p-c06a79b8.entry.js → p-3956e4ac.entry.js} +6 -6
  546. package/dist/webcomponents/{p-462c5647.entry.js → p-4071b981.entry.js} +4 -4
  547. package/dist/webcomponents/p-42f11872.entry.js +60 -0
  548. package/dist/webcomponents/{p-f16a5e27.entry.js → p-4ad3b8c9.entry.js} +8 -8
  549. package/dist/webcomponents/{p-de358dbe.entry.js → p-512385f0.entry.js} +7 -7
  550. package/dist/webcomponents/{p-cfecd64a.entry.js → p-53c2b2c2.entry.js} +34 -34
  551. package/dist/webcomponents/p-567b17e6.entry.js +346 -0
  552. package/dist/webcomponents/{p-46dfc3ee.entry.js → p-57d49488.entry.js} +5 -5
  553. package/dist/webcomponents/p-58a862f9.entry.js +44 -0
  554. package/dist/webcomponents/p-58a862f9.entry.js.map +1 -0
  555. package/dist/webcomponents/p-59d41342.entry.js +101 -0
  556. package/dist/webcomponents/{p-c1b0a116.entry.js → p-5b7f446c.entry.js} +7 -7
  557. package/dist/webcomponents/{p-bd978abf.entry.js → p-610c2e8e.entry.js} +4 -4
  558. package/dist/webcomponents/p-62651eba.entry.js +44 -0
  559. package/dist/webcomponents/{p-50f1b088.entry.js → p-6bf86e0b.entry.js} +6 -6
  560. package/dist/webcomponents/{p-10e25a32.entry.js → p-6f8abd26.entry.js} +41 -41
  561. package/dist/webcomponents/{p-a2eec4fb.entry.js → p-7a93d79b.entry.js} +123 -38
  562. package/dist/webcomponents/p-7a93d79b.entry.js.map +1 -0
  563. package/dist/webcomponents/p-7d8eb8ac.entry.js +40 -0
  564. package/dist/webcomponents/p-7d8eb8ac.entry.js.map +1 -0
  565. package/dist/webcomponents/{p-56aabe89.entry.js → p-857cfe62.entry.js} +19 -19
  566. package/dist/webcomponents/p-898d950f.entry.js +84 -0
  567. package/dist/webcomponents/{p-6ecb3439.entry.js → p-8a931bfe.entry.js} +9 -9
  568. package/dist/webcomponents/p-8b7cc3a9.entry.js +92 -0
  569. package/dist/webcomponents/{p-ca2d95f7.entry.js → p-946cc8f3.entry.js} +142 -48
  570. package/dist/webcomponents/p-946cc8f3.entry.js.map +1 -0
  571. package/dist/webcomponents/p-9bb74d81.entry.js +133 -0
  572. package/dist/webcomponents/{p-cfa86a23.entry.js.map → p-9bb74d81.entry.js.map} +1 -1
  573. package/dist/webcomponents/p-9fabdfb4.entry.js +75 -0
  574. package/dist/webcomponents/{p-9b50e6af.entry.js → p-9fe9f5d2.entry.js} +6 -6
  575. package/dist/webcomponents/{p-ByGJPTh2.js → p-CgnD6TrP.js} +3 -3
  576. package/dist/webcomponents/{p-ByGJPTh2.js.map → p-CgnD6TrP.js.map} +1 -1
  577. package/dist/webcomponents/p-a09cf1bc.entry.js +145 -0
  578. package/dist/webcomponents/{p-30af66b3.entry.js → p-ae4feb1e.entry.js} +9 -9
  579. package/dist/webcomponents/p-b020467b.entry.js +351 -0
  580. package/dist/webcomponents/p-b020467b.entry.js.map +1 -0
  581. package/dist/webcomponents/{p-336071a5.entry.js → p-b04b7996.entry.js} +13 -13
  582. package/dist/webcomponents/{p-d7070712.entry.js → p-b39c2ad1.entry.js} +5 -5
  583. package/dist/webcomponents/{p-4bb5aeab.entry.js → p-b8e4bc36.entry.js} +17 -17
  584. package/dist/webcomponents/{p-66d26793.entry.js → p-b9c38611.entry.js} +3 -3
  585. package/dist/webcomponents/p-c4e28f37.entry.js +446 -0
  586. package/dist/webcomponents/p-c4e28f37.entry.js.map +1 -0
  587. package/dist/webcomponents/{p-d090d412.entry.js → p-cf764a83.entry.js} +6 -6
  588. package/dist/webcomponents/{p-27eb10f9.entry.js → p-d75fccd1.entry.js} +13 -13
  589. package/dist/webcomponents/p-da17c570.entry.js +134 -0
  590. package/dist/webcomponents/{p-6a9d2a0b.entry.js → p-df170bb4.entry.js} +6 -6
  591. package/dist/webcomponents/p-e55b41b4.entry.js +159 -0
  592. package/dist/webcomponents/{p-7537c4ba.entry.js.map → p-e55b41b4.entry.js.map} +1 -1
  593. package/dist/webcomponents/{p-a365183a.entry.js → p-e58dbeef.entry.js} +6 -6
  594. package/dist/webcomponents/p-e5ff5232.entry.js +452 -0
  595. package/dist/webcomponents/p-e5ff5232.entry.js.map +1 -0
  596. package/dist/webcomponents/{p-007c0f38.entry.js → p-f2f32774.entry.js} +14 -14
  597. package/dist/webcomponents/{p-2be1c309.entry.js → p-f583b74c.entry.js} +7 -7
  598. package/dist/webcomponents/{p-2be1c309.entry.js.map → p-f583b74c.entry.js.map} +1 -1
  599. package/dist/webcomponents/{p-061dbde5.entry.js → p-f723c6fc.entry.js} +5 -5
  600. package/dist/webcomponents/p-f86da8f9.entry.js +94 -0
  601. package/dist/webcomponents/p-fc94c64c.entry.js +50 -0
  602. package/dist/webcomponents/webcomponents.esm.js +3 -3
  603. package/dist/webcomponents.html-custom-data.json +136 -79
  604. package/package.json +1 -1
  605. package/dist/components/p-AOxMWARt.js +0 -136
  606. package/dist/components/p-BIJ6vVdB.js +0 -138
  607. package/dist/components/p-B_YesJM8.js +0 -192
  608. package/dist/components/p-Bc03PTAW.js +0 -306
  609. package/dist/components/p-Bc03PTAW.js.map +0 -1
  610. package/dist/components/p-Bri6ECVa.js.map +0 -1
  611. package/dist/components/p-C3Rduy2t.js +0 -399
  612. package/dist/components/p-CWRBs6PD.js +0 -316
  613. package/dist/components/p-CWRBs6PD.js.map +0 -1
  614. package/dist/components/p-DdjKNpU3.js.map +0 -1
  615. package/dist/webcomponents/p-0e3a9a52.entry.js +0 -44
  616. package/dist/webcomponents/p-271fafec.entry.js +0 -94
  617. package/dist/webcomponents/p-2768bb52.entry.js +0 -92
  618. package/dist/webcomponents/p-2a6b20bb.entry.js +0 -60
  619. package/dist/webcomponents/p-2de59d45.entry.js +0 -145
  620. package/dist/webcomponents/p-3c75367e.entry.js +0 -50
  621. package/dist/webcomponents/p-492972fb.entry.js +0 -380
  622. package/dist/webcomponents/p-492972fb.entry.js.map +0 -1
  623. package/dist/webcomponents/p-4cc446e4.entry.js +0 -50
  624. package/dist/webcomponents/p-5710a3e9.entry.js +0 -529
  625. package/dist/webcomponents/p-5710a3e9.entry.js.map +0 -1
  626. package/dist/webcomponents/p-7537c4ba.entry.js +0 -159
  627. package/dist/webcomponents/p-8c0f167a.entry.js +0 -101
  628. package/dist/webcomponents/p-90401ecd.entry.js +0 -219
  629. package/dist/webcomponents/p-90401ecd.entry.js.map +0 -1
  630. package/dist/webcomponents/p-a2eec4fb.entry.js.map +0 -1
  631. package/dist/webcomponents/p-aa7635d4.entry.js +0 -346
  632. package/dist/webcomponents/p-b30ef853.entry.js +0 -75
  633. package/dist/webcomponents/p-b8e4b353.entry.js +0 -84
  634. package/dist/webcomponents/p-c5b716c8.entry.js +0 -134
  635. package/dist/webcomponents/p-c73b38c5.entry.js +0 -297
  636. package/dist/webcomponents/p-c73b38c5.entry.js.map +0 -1
  637. package/dist/webcomponents/p-ca2d95f7.entry.js.map +0 -1
  638. package/dist/webcomponents/p-cfa86a23.entry.js +0 -133
  639. package/dist/webcomponents/p-d856888c.entry.js +0 -105
  640. /package/dist/components/{p-CJSXIVVe.js.map → p-B4_2a6sY.js.map} +0 -0
  641. /package/dist/components/{p-C3Rduy2t.js.map → p-BXMQkO62.js.map} +0 -0
  642. /package/dist/components/{p-B_YesJM8.js.map → p-Bb4aDGZV.js.map} +0 -0
  643. /package/dist/components/{p-CwtLw60M.js.map → p-Bjywc5uG.js.map} +0 -0
  644. /package/dist/components/{p-C_OI0BQu.js.map → p-BwHD1VKm.js.map} +0 -0
  645. /package/dist/components/{p-Bqb7YtL0.js.map → p-C1NfZb6u.js.map} +0 -0
  646. /package/dist/components/{p-DW63EY0U.js.map → p-C2apigAS.js.map} +0 -0
  647. /package/dist/components/{p-5Bn_PU3B.js.map → p-CldlPwBq.js.map} +0 -0
  648. /package/dist/components/{p-DSkSDmzD.js.map → p-DozXPp1d.js.map} +0 -0
  649. /package/dist/components/{p-AOxMWARt.js.map → p-DzfbHHTf.js.map} +0 -0
  650. /package/dist/components/{p-CBj_WCYf.js.map → p-JsxUUux9.js.map} +0 -0
  651. /package/dist/components/{p-lIb35q2K.js.map → p-p8k-sBQZ.js.map} +0 -0
  652. /package/dist/webcomponents/{p-3c75367e.entry.js.map → p-0d8da69a.entry.js.map} +0 -0
  653. /package/dist/webcomponents/{p-8b3688ab.entry.js.map → p-107ad6d3.entry.js.map} +0 -0
  654. /package/dist/webcomponents/{p-01b4fecb.entry.js.map → p-10b0d158.entry.js.map} +0 -0
  655. /package/dist/webcomponents/{p-f1fb559a.entry.js.map → p-13b1b500.entry.js.map} +0 -0
  656. /package/dist/webcomponents/{p-c0cdb81f.entry.js.map → p-24dd7de0.entry.js.map} +0 -0
  657. /package/dist/webcomponents/{p-c06a79b8.entry.js.map → p-3956e4ac.entry.js.map} +0 -0
  658. /package/dist/webcomponents/{p-462c5647.entry.js.map → p-4071b981.entry.js.map} +0 -0
  659. /package/dist/webcomponents/{p-2a6b20bb.entry.js.map → p-42f11872.entry.js.map} +0 -0
  660. /package/dist/webcomponents/{p-f16a5e27.entry.js.map → p-4ad3b8c9.entry.js.map} +0 -0
  661. /package/dist/webcomponents/{p-de358dbe.entry.js.map → p-512385f0.entry.js.map} +0 -0
  662. /package/dist/webcomponents/{p-cfecd64a.entry.js.map → p-53c2b2c2.entry.js.map} +0 -0
  663. /package/dist/webcomponents/{p-aa7635d4.entry.js.map → p-567b17e6.entry.js.map} +0 -0
  664. /package/dist/webcomponents/{p-46dfc3ee.entry.js.map → p-57d49488.entry.js.map} +0 -0
  665. /package/dist/webcomponents/{p-8c0f167a.entry.js.map → p-59d41342.entry.js.map} +0 -0
  666. /package/dist/webcomponents/{p-c1b0a116.entry.js.map → p-5b7f446c.entry.js.map} +0 -0
  667. /package/dist/webcomponents/{p-bd978abf.entry.js.map → p-610c2e8e.entry.js.map} +0 -0
  668. /package/dist/webcomponents/{p-0e3a9a52.entry.js.map → p-62651eba.entry.js.map} +0 -0
  669. /package/dist/webcomponents/{p-50f1b088.entry.js.map → p-6bf86e0b.entry.js.map} +0 -0
  670. /package/dist/webcomponents/{p-10e25a32.entry.js.map → p-6f8abd26.entry.js.map} +0 -0
  671. /package/dist/webcomponents/{p-56aabe89.entry.js.map → p-857cfe62.entry.js.map} +0 -0
  672. /package/dist/webcomponents/{p-b8e4b353.entry.js.map → p-898d950f.entry.js.map} +0 -0
  673. /package/dist/webcomponents/{p-6ecb3439.entry.js.map → p-8a931bfe.entry.js.map} +0 -0
  674. /package/dist/webcomponents/{p-2768bb52.entry.js.map → p-8b7cc3a9.entry.js.map} +0 -0
  675. /package/dist/webcomponents/{p-b30ef853.entry.js.map → p-9fabdfb4.entry.js.map} +0 -0
  676. /package/dist/webcomponents/{p-9b50e6af.entry.js.map → p-9fe9f5d2.entry.js.map} +0 -0
  677. /package/dist/webcomponents/{p-2de59d45.entry.js.map → p-a09cf1bc.entry.js.map} +0 -0
  678. /package/dist/webcomponents/{p-30af66b3.entry.js.map → p-ae4feb1e.entry.js.map} +0 -0
  679. /package/dist/webcomponents/{p-336071a5.entry.js.map → p-b04b7996.entry.js.map} +0 -0
  680. /package/dist/webcomponents/{p-d7070712.entry.js.map → p-b39c2ad1.entry.js.map} +0 -0
  681. /package/dist/webcomponents/{p-4bb5aeab.entry.js.map → p-b8e4bc36.entry.js.map} +0 -0
  682. /package/dist/webcomponents/{p-66d26793.entry.js.map → p-b9c38611.entry.js.map} +0 -0
  683. /package/dist/webcomponents/{p-d090d412.entry.js.map → p-cf764a83.entry.js.map} +0 -0
  684. /package/dist/webcomponents/{p-27eb10f9.entry.js.map → p-d75fccd1.entry.js.map} +0 -0
  685. /package/dist/webcomponents/{p-c5b716c8.entry.js.map → p-da17c570.entry.js.map} +0 -0
  686. /package/dist/webcomponents/{p-6a9d2a0b.entry.js.map → p-df170bb4.entry.js.map} +0 -0
  687. /package/dist/webcomponents/{p-a365183a.entry.js.map → p-e58dbeef.entry.js.map} +0 -0
  688. /package/dist/webcomponents/{p-007c0f38.entry.js.map → p-f2f32774.entry.js.map} +0 -0
  689. /package/dist/webcomponents/{p-061dbde5.entry.js.map → p-f723c6fc.entry.js.map} +0 -0
  690. /package/dist/webcomponents/{p-271fafec.entry.js.map → p-f86da8f9.entry.js.map} +0 -0
  691. /package/dist/webcomponents/{p-4cc446e4.entry.js.map → p-fc94c64c.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"br-menu.entry.esm.js","sources":["../../packages/webcomponents/src/components/menu/menu.scss?tag=br-menu&encapsulation=shadow","../../packages/webcomponents/src/components/menu/menu.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/button/button\";\n@import \"~@govbr-ds/core/src/components/menu/menu\";\n\n:host {\n display: block;\n}\n\n.menu-trigger {\n br-button {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n &::part(button) {\n border-radius: 0 !important;\n }\n }\n\n .trigger-label {\n flex: 1;\n text-align: center;\n font-weight: var(--font-weight-semi-bold);\n }\n\n .trigger-icon {\n flex-shrink: 0;\n margin-left: var(--spacing-scale-2x);\n }\n}\n\n::slotted(.drill-down-hidden),\n::slotted(br-menu-list.drill-down-hidden),\n::slotted(br-menu-item.drill-down-hidden) {\n display: none !important;\n}\n\n::slotted(br-menu-link) {\n margin-bottom: var(--spacing-scale-2x);\n\n &:last-of-type {\n margin-bottom: 0; // Remove margem do último\n }\n}\n\n.menu-back-button {\n border-bottom: 1px solid var(--color-neutral-light-20);\n\n .back-btn {\n display: flex;\n align-items: center;\n gap: var(--spacing-scale-2x);\n box-sizing: border-box;\n padding-block: var(--menu-item-padding, var(--menu-item-medium));\n padding-inline: var(--spacing-scale-2x);\n border: none;\n background: transparent;\n color: var(--color-primary-dark);\n font-size: var(--font-size-scale-base);\n cursor: pointer;\n width: 100%;\n justify-content: flex-start;\n transition:\n background-color 0.2s ease,\n color 0.2s ease,\n transform 0.1s ease;\n\n &:hover {\n background-image: linear-gradient(\n rgb(var(--interactive-rgb) / var(--hover)),\n rgb(var(--interactive-rgb) / var(--hover))\n );\n }\n\n &:focus-visible {\n outline: var(--focus-width) var(--focus-style) var(--focus-color);\n outline-offset: var(--focus-offset);\n border-radius: 0;\n }\n\n &:active {\n background: var(--color-primary-dark);\n transform: translateY(1px);\n }\n\n br-icon {\n font-size: var(--font-size-scale-up-01);\n color: var(--active);\n }\n\n .back-title {\n text-align: center;\n color: var(--active);\n font-weight: var(--font-weight-semi-bold);\n }\n\n .current-icon {\n margin-left: auto;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n --interactive: var(--active);\n\n br-icon {\n font-size: var(--font-size-scale-up-01);\n }\n }\n }\n}\n","import { Component, h, Host, Element as HostElement, Listen, Prop, State } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/menu?tab=designer).\n *\n * @slot default - Slot para o conteúdo principal do menu (menu-list e menu-item).\n * @slot header - Slot para o cabeçalho do menu, exibido apenas em modo não contextual.\n * @slot logo - Slot para logotipos de parceiros no rodapé.\n * @slot link - Slot para links externos no rodapé (use br-menu-link).\n * @slot social - Slot para ícones de redes sociais no rodapé.\n * @slot info - Slot para informações adicionais no rodapé.\n *\n * @part footer - Parte para o contêiner principal do rodapé do menu, agrupando logos, links, redes sociais e informações.\n * @part logo - Parte para a área de logotipos de parceiros no rodapé.\n * @part link - Parte para links úteis ou navegação secundária no rodapé.\n * @part social - Parte para ícones de redes sociais no rodapé.\n * @part info - Parte para informações adicionais, como licença ou direitos autorais.\n */\n@Component({\n tag: 'br-menu',\n styleUrl: 'menu.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Menu {\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 @HostElement() private el: HTMLElement\n\n /**\n * Classes CSS para definir breakpoints responsivos do menu.\n * Utilize esta propriedade para controlar a largura do menu em diferentes tamanhos de tela.\n */\n // Por padrão não aplica colunas; quando contextual e sem valor definido, usa 'col-sm-4 col-lg-3'\n @Prop() breakpoints: string = ''\n\n /**\n * Define se o menu deve usar comportamento push (sempre visível em telas maiores).\n * Quando ativado, o menu permanece fixo na lateral e empurra o conteúdo principal.\n */\n @Prop() push: boolean = false\n\n /**\n * Define se o menu deve usar comportamento contextual (aparece na parte inferior).\n * Quando ativado, o menu é posicionado na parte inferior da tela em dispositivos móveis.\n */\n @Prop() contextual: boolean = false\n\n /**\n * Define a densidade dos itens do menu, alterando o espaçamento interno.\n * - `small` (densidade alta): itens mais compactos\n * - `medium` (padrão): equilíbrio entre economia de espaço e separação\n * - `large` (densidade baixa): maior espaçamento (recomendado em touch)\n */\n @Prop({ reflect: true }) density: 'large' | 'medium' | 'small' = 'medium'\n\n /**\n * Título da seção de redes sociais exibida no rodapé do menu.\n * Utilize esta propriedade para personalizar o texto que aparece acima dos ícones sociais.\n */\n @Prop({ reflect: true }) socialTitle: string = 'Redes Sociais'\n\n /**\n * Rótulo do botão trigger do menu contextual.\n * Exibido apenas em modo contextual e em telas menores (mobile).\n */\n @Prop() contextualLabel: string = 'Menu Contextual'\n\n // Define se o menu está aberto/visível ou fechado\n @State() active: boolean = false\n\n // Indica se o menu está exibindo um submenu (drill-down ativo)\n @State() inSubmenu: boolean = false\n\n // Representa o nível atual de navegação no drill-down (0 para o nível raiz)\n @State() currentLevel: number = 0\n\n // Controla quais menus drop-down estão expandidos no modo acordeão\n @State() expandedDropMenus: { [key: string]: boolean } = {}\n\n // Pilha de navegação para controle do drill-down e navegação de volta\n @State() navigationStack: Array<{ element: HTMLElement; label: string; id: string }> = []\n\n // Armazena o elemento que tinha foco antes do menu abrir (para restaurar o foco ao fechar)\n private previouslyFocusedElement: HTMLElement | null = null\n\n // IDs dos requestAnimationFrame para cancelamento no cleanup\n private rafIds: number[] = []\n\n componentDidLoad() {\n // Garante que apenas um item tenha active no carregamento inicial\n this.ensureSingleActiveItem()\n }\n\n /**\n * Método do ciclo de vida do componente.\n * Este método é chamado quando o componente é desconectado do DOM.\n * Realiza limpeza de recursos para evitar vazamento de memória.\n */\n disconnectedCallback() {\n // Cancela todos os requestAnimationFrame pendentes\n this.rafIds.forEach((id) => cancelAnimationFrame(id))\n this.rafIds = []\n }\n\n private ensureSingleActiveItem() {\n const allMenuItems = this.el.querySelectorAll('br-menu-item')\n let firstActiveItem: HTMLElement | null = null\n\n // Encontra o primeiro item com active e remove dos demais\n for (let i = 0; i < allMenuItems.length; i++) {\n const item = allMenuItems[i] as HTMLElement & { active: boolean; displayMode?: string }\n\n // Verifica se o item tem active\n if (item.active || item.hasAttribute('active')) {\n // Se é um header de menu-list (folder), remove o active\n const displayMode = item.getAttribute('display-mode')\n if (displayMode && displayMode !== 'none') {\n item.active = false\n item.removeAttribute('active')\n continue\n }\n\n // Se já encontramos um item ativo antes, remove deste\n if (firstActiveItem) {\n item.active = false\n item.removeAttribute('active')\n } else {\n // É o primeiro item ativo válido\n firstActiveItem = item\n item.active = true\n }\n }\n }\n }\n\n @Listen('click', { capture: true })\n handleMenuItemClick(ev: Event) {\n // Busca o menu-item mais próximo do alvo do clique\n const path = ev.composedPath()\n let menuItemHost: HTMLElement | null = null\n\n // Percorre o caminho do evento para encontrar o br-menu-item\n for (const element of path) {\n if (element instanceof HTMLElement && element.tagName === 'BR-MENU-ITEM') {\n menuItemHost = element\n break\n }\n // Para quando chegar no host do menu\n if (element === this.el) break\n }\n\n if (!menuItemHost || !this.el.contains(menuItemHost)) return\n\n // Ignora se for um header de menu-list (folder/dropdown que tem filhos)\n // Menus que expandem/têm submenus não devem receber classe active\n const parentMenuList = menuItemHost.parentElement\n if (parentMenuList?.tagName === 'BR-MENU-LIST') {\n // Se é filho direto de br-menu-list, verifica se é o header (primeiro br-menu-item)\n const header = parentMenuList.shadowRoot?.querySelector('br-menu-item')\n if (header === menuItemHost) {\n // É um header de folder, não deve receber active\n return\n }\n }\n\n // Também verifica via atributo display-mode\n const displayMode = menuItemHost.getAttribute('display-mode')\n if (displayMode && displayMode !== 'none') {\n return\n }\n\n // Remove active de todos os menu-items\n const allMenuItems = this.el.querySelectorAll('br-menu-item')\n for (let i = 0; i < allMenuItems.length; i++) {\n const item = allMenuItems[i] as HTMLElement & { active: boolean }\n item.active = false\n }\n\n // Marca o item clicado como ativo\n ;(menuItemHost as HTMLElement & { active: boolean }).active = true\n }\n\n @Listen('keydown', { target: 'window' })\n handleKeyDown(ev: KeyboardEvent) {\n // Permite ativar o botão contextual com Enter ou Espaço quando o menu está fechado\n if (!this.active && this.contextual && (ev.key === 'Enter' || ev.key === ' ')) {\n const target = ev.target as HTMLElement\n const isContextualButton = target?.closest?.('#contextual-trigger') || target?.id === 'contextual-trigger'\n\n if (isContextualButton) {\n ev.preventDefault()\n this.toggleMenu()\n return\n }\n }\n\n if (!this.active) return\n const targetEl = ev.target as HTMLElement | null\n const isFormField =\n targetEl &&\n (targetEl.tagName === 'INPUT' ||\n targetEl.tagName === 'TEXTAREA' ||\n targetEl.tagName === 'SELECT' ||\n targetEl.isContentEditable)\n\n // Focus trap: gerencia Tab/Shift+Tab para manter o foco dentro do menu\n if (ev.key === 'Tab') {\n const focusableElements = this.getFocusableElements()\n if (focusableElements.length === 0) return\n\n const firstElement = focusableElements[0]\n const lastElement = focusableElements[focusableElements.length - 1]\n const deepActive = this.getDeepActiveElement()\n\n // Se Tab sem Shift e está no último elemento, volta para o primeiro\n if (!ev.shiftKey && deepActive === lastElement) {\n ev.preventDefault()\n firstElement.focus()\n return\n }\n\n // Se Shift+Tab e está no primeiro elemento, vai para o último\n if (ev.shiftKey && deepActive === firstElement) {\n ev.preventDefault()\n lastElement.focus()\n return\n }\n }\n\n // Voltar/fechar\n if (this.inSubmenu && (ev.key === 'ArrowLeft' || ev.key === 'Backspace' || ev.key === 'Escape')) {\n ev.preventDefault()\n this.goBack()\n return\n }\n if (!this.inSubmenu && ev.key === 'Escape') {\n ev.preventDefault()\n this.closeMenu()\n return\n }\n\n // Navegação global por setas (fallback para todos os tipos de menu)\n if (!isFormField && (ev.key === 'ArrowDown' || ev.key === 'ArrowUp')) {\n const deepActive = this.getDeepActiveElement()\n if (deepActive == null || !this.isNodeWithinHost(deepActive)) return\n ev.preventDefault()\n ev.stopPropagation()\n\n // No modo contextual ou quando não há drill-down ativo, navega por todos os itens visíveis\n const useGlobalNavigation = this.contextual || !this.inSubmenu\n const targets = useGlobalNavigation ? this.getAllVisibleTargets() : this.getScopedTargets(deepActive)\n if (targets.length === 0) return\n\n let index = targets.findIndex((t) => t === deepActive || (deepActive instanceof Node && t.contains(deepActive)))\n if (index === -1) index = 0\n const nextIndex =\n ev.key === 'ArrowDown' ? (index + 1) % targets.length : (index - 1 + targets.length) % targets.length\n targets[nextIndex].focus()\n }\n }\n\n @Listen('navigateToSubmenu')\n handleNavigateToSubmenu(ev: CustomEvent<{ element: HTMLElement; label: string }>) {\n const { element, label } = ev.detail\n const itemId = element.getAttribute('data-menu-id') || `menu-${Date.now()}`\n\n // Obter o nível real do menu do elemento\n const menuLevel = parseInt(element.getAttribute('menu-level') || '0', 10)\n\n // Aplicar a regra principal: comportamento por nível\n if (menuLevel === 0) {\n // Camada 1: Comportamento de acordeão\n this.toggleDropMenu(itemId)\n } else {\n // Camada 2+: Comportamento drill-down\n this.navigateToLevel({ element, label, id: itemId })\n }\n }\n\n @Listen('folderToggled')\n handleFolderToggled(ev: CustomEvent<boolean>) {\n const element = ev.target as HTMLElement\n const itemId = element.getAttribute('data-menu-id') || `menu-${Date.now()}`\n\n if (ev.detail) {\n // Se o folder foi expandido, fecha todos os outros no nível 0\n this.collapseOtherFolders(itemId)\n }\n }\n\n @Listen('brMenuHeaderClose')\n handleMenuHeaderClose() {\n this.closeMenu()\n }\n\n /**\n * Alterna o estado expandido de um menu drop-down no modo acordeão.\n *\n * Este método recebe o identificador único (`itemId`) de um menu do tipo drop-down (nível 0)\n * e inverte o seu estado de expansão dentro do objeto `expandedDropMenus`.\n *\n * Se o menu estiver atualmente expandido, ele será recolhido; se estiver recolhido, será expandido.\n * O spread operator (`...this.expandedDropMenus`) garante que os estados dos outros menus sejam preservados.\n *\n * @param itemId - Identificador único do menu drop-down a ser alternado.\n */\n private toggleDropMenu(itemId: string) {\n this.expandedDropMenus = {\n ...this.expandedDropMenus,\n [itemId]: !this.expandedDropMenus[itemId],\n }\n }\n\n /**\n * Recolhe todos os folders do nível 0, exceto o especificado.\n * Garante que apenas um folder possa estar expandido por vez no comportamento acordeão.\n *\n * @param activeItemId - ID do folder que deve permanecer expandido\n */\n private collapseOtherFolders(activeItemId: string) {\n // Encontra todos os menu-list no nível 0\n const level0MenuLists = this.el.querySelectorAll('br-menu-list[menu-level=\"0\"]')\n\n level0MenuLists.forEach((menuList) => {\n const element = menuList as HTMLElement\n const itemId = element.getAttribute('data-menu-id')\n\n // Se é um folder diferente do ativo, força o recolhimento\n if (itemId && itemId !== activeItemId) {\n // Força o estado recolhido no menu-list\n ;(element as HTMLElement & { expanded: boolean }).expanded = false\n // Remove do estado de expandedDropMenus\n if (this.expandedDropMenus[itemId]) {\n this.expandedDropMenus = {\n ...this.expandedDropMenus,\n [itemId]: false,\n }\n }\n }\n })\n }\n\n /**\n * Navega para um nível específico do menu (drill-down).\n *\n * Este método é chamado quando o usuário interage com um item de menu de nível 2 ou superior,\n * ou seja, quando o comportamento esperado é de drill-down (aprofundamento em submenus).\n *\n * Funcionamento:\n * 1. Adiciona o item atual à pilha de navegação (`navigationStack`), permitindo que o usuário volte para níveis anteriores.\n * 2. Obtém o nível do menu a partir do atributo `menu-level` do elemento clicado.\n * 3. Atualiza o estado `currentLevel` para refletir o novo nível de profundidade (sempre um nível abaixo do atual).\n * 4. Define `inSubmenu` como `true`, indicando que o usuário está navegando em um submenu.\n * 5. Oculta todos os itens do menu, exceto o submenu selecionado, para garantir foco e clareza na navegação.\n * 6. Marca o elemento ativo como \"drill active\" para controle visual e de acessibilidade.\n *\n * @param item - Objeto contendo o elemento do menu, seu rótulo e identificador único.\n */\n private navigateToLevel(item: { element: HTMLElement; label: string; id: string }) {\n // Adiciona o item à pilha de navegação para possibilitar o retorno (back)\n this.navigationStack.push(item)\n\n // Obtém o nível do menu a partir do atributo do elemento\n const menuLevel = parseInt(item.element.getAttribute('menu-level') || '0', 10)\n\n // Atualiza o nível atual para o próximo nível após o elemento clicado\n this.currentLevel = menuLevel + 1\n\n // Indica que estamos em um submenu (drill-down ativo)\n this.inSubmenu = true\n\n // Oculta todos os menus, exceto o submenu selecionado\n this.hideAllExcept(item.element)\n\n // Marca o submenu como ativo para controle visual e de acessibilidade\n this.setDrillActive(item.element, true)\n // Após entrar no submenu, foca no primeiro item visível\n const rafId = requestAnimationFrame(() => this.focusFirstChildOfList(item.element))\n this.rafIds.push(rafId)\n }\n\n private focusFirstChildOfList(listEl: HTMLElement) {\n const slotEl = listEl.shadowRoot?.querySelector('ul slot') as HTMLSlotElement | null\n const assigned = slotEl?.assignedElements?.() || []\n for (const el of assigned) {\n if (el.tagName === 'BR-MENU-ITEM') {\n const anchor = (el as HTMLElement).shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(el) && this.isVisibleElement(anchor)) {\n anchor.focus()\n return\n }\n } else if (el.tagName === 'BR-MENU-LIST') {\n const header = (el as HTMLElement).shadowRoot?.querySelector('br-menu-item') as HTMLElement | null\n const anchor = header?.shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(el) && this.isVisibleElement(anchor)) {\n anchor.focus()\n return\n }\n }\n }\n }\n\n private toggleMenu() {\n this.active = !this.active\n if (this.active) {\n // Armazena o elemento que estava com foco antes de abrir o menu\n this.previouslyFocusedElement = this.getDeepActiveElement() as HTMLElement | null\n // Foca no primeiro elemento visível do menu\n const rafId = requestAnimationFrame(() => this.focusFirstVisibleTarget())\n this.rafIds.push(rafId)\n } else {\n // Se está fechando, chama closeMenu para fazer a limpeza completa\n this.closeMenu()\n }\n }\n\n private closeMenu() {\n this.active = false\n this.inSubmenu = false\n this.resetNavigation()\n\n // Restaura o foco para o elemento que estava focado antes do menu abrir\n if (this.previouslyFocusedElement) {\n const rafId = requestAnimationFrame(() => {\n this.previouslyFocusedElement?.focus()\n this.previouslyFocusedElement = null\n })\n this.rafIds.push(rafId)\n } else {\n // Se não há elemento anterior, foca no botão toggle\n const rafId = requestAnimationFrame(() => {\n const toggleButton = this.contextual\n ? this.el.shadowRoot?.querySelector('#contextual-trigger')\n : this.el.shadowRoot?.querySelector('#toggle-menu')\n\n if (toggleButton) {\n const button = (toggleButton as HTMLElement).shadowRoot?.querySelector('button') as HTMLElement | null\n button?.focus()\n }\n })\n this.rafIds.push(rafId)\n }\n }\n\n private resetNavigation() {\n this.navigationStack = []\n this.currentLevel = 0\n this.expandedDropMenus = {}\n this.clearAllDrillMarkers()\n this.showAllMenuItems()\n }\n\n private isVisibleElement(el: Element | null): el is HTMLElement {\n if (el == null) return false\n const htmlEl = el as HTMLElement\n if (!htmlEl.isConnected) return false\n if (htmlEl.hasAttribute('hidden')) return false\n const rects = htmlEl.getClientRects?.()\n return rects != null && rects.length > 0\n }\n\n private getTopLevelTargets(): HTMLElement[] {\n const targets: HTMLElement[] = []\n const bodySlot = this.el.shadowRoot?.querySelector('nav.menu-body slot:not([name])') as HTMLSlotElement | null\n const children = bodySlot?.assignedElements?.() || []\n\n for (const child of children) {\n if (child.tagName === 'BR-MENU-ITEM') {\n if (!this.isVisibleElement(child)) continue\n const anchor = (child as HTMLElement).shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(anchor)) targets.push(anchor)\n } else if (child.tagName === 'BR-MENU-LIST') {\n if (!this.isVisibleElement(child)) continue\n const header = (child as HTMLElement).shadowRoot?.querySelector('br-menu-item') as HTMLElement | null\n const anchor = header?.shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(anchor)) targets.push(anchor)\n }\n }\n\n return targets\n }\n\n /**\n * Obtém todos os elementos navegáveis visíveis no menu, incluindo itens dentro de agrupamentos expandidos.\n * Utilizado para navegação global por setas no modo contextual.\n */\n private getAllVisibleTargets(): HTMLElement[] {\n const targets: HTMLElement[] = []\n const bodySlot = this.el.shadowRoot?.querySelector('nav.menu-body slot:not([name])') as HTMLSlotElement | null\n const children = bodySlot?.assignedElements?.() || []\n\n for (const child of children) {\n this.collectVisibleTargetsFrom(child, targets)\n }\n\n return targets\n }\n\n /**\n * Coleta recursivamente todos os targets visíveis de um elemento e seus descendentes.\n * Respeita o estado expandido/recolhido dos agrupamentos.\n */\n private collectVisibleTargetsFrom(element: Element, targets: HTMLElement[]) {\n if (element.tagName === 'BR-MENU-ITEM') {\n if (!this.isVisibleElement(element)) return\n const anchor = (element as HTMLElement).shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(anchor)) {\n targets.push(anchor)\n }\n } else if (element.tagName === 'BR-MENU-LIST') {\n if (!this.isVisibleElement(element)) return\n\n // Adiciona o header do menu-list\n const header = (element as HTMLElement).shadowRoot?.querySelector('br-menu-item') as HTMLElement | null\n const headerAnchor = header?.shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(headerAnchor)) {\n targets.push(headerAnchor)\n }\n\n // Verifica se o menu-list está expandido antes de processar os filhos\n const menuListEl = element as HTMLElement & { expanded: boolean }\n const isExpanded = menuListEl.expanded || menuListEl.hasAttribute('expanded')\n\n if (isExpanded) {\n // Verifica também se o <ul> está realmente visível (para nível 0 que usa display:none)\n const ulElement = (element as HTMLElement).shadowRoot?.querySelector('ul') as HTMLElement | null\n const isUlVisible = ulElement ? this.isVisibleElement(ulElement) : false\n\n if (isUlVisible) {\n // Coleta os filhos do slot do menu-list\n const slotEl = ulElement.querySelector('slot') as HTMLSlotElement | null\n const assigned = slotEl?.assignedElements?.() || []\n for (const child of assigned) {\n this.collectVisibleTargetsFrom(child, targets)\n }\n }\n }\n }\n }\n\n /**\n * Obtém targets com escopo limitado ao menu-list mais próximo (usado em drill-down).\n */\n private getScopedTargets(deepActive: Element): HTMLElement[] {\n const listScope = this.findClosestMenuListFrom(deepActive)\n return listScope ? this.getTargetsForMenuList(listScope) : this.getTopLevelTargets()\n }\n\n private isNodeWithinHost(node: Element): boolean {\n let current: Element | null | ShadowRoot = node\n while (current != null) {\n if (current === this.el) return true\n if (current instanceof Element && current.parentElement != null) {\n current = current.parentElement\n } else {\n const root = current instanceof Element ? (current.getRootNode() as Document | ShadowRoot) : current\n current = root != null && 'host' in root ? (root as ShadowRoot).host : null\n }\n }\n return false\n }\n\n private findClosestMenuListFrom(node: Element): HTMLElement | null {\n let current: Element | null | ShadowRoot = node\n while (current != null) {\n if (current instanceof Element && current.tagName === 'BR-MENU-LIST') return current as HTMLElement\n if (current instanceof Element && current.parentElement != null) {\n current = current.parentElement\n } else {\n const root = current instanceof Element ? (current.getRootNode() as Document | ShadowRoot) : current\n current = root != null && 'host' in root ? (root as ShadowRoot).host : null\n }\n }\n return null\n }\n\n private getTargetsForMenuList(listEl: HTMLElement): HTMLElement[] {\n const targets: HTMLElement[] = []\n const header = listEl.shadowRoot?.querySelector('br-menu-item') as HTMLElement | null\n const headerAnchor = header?.shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(header) && this.isVisibleElement(headerAnchor)) targets.push(headerAnchor)\n\n const slotEl = listEl.shadowRoot?.querySelector('ul slot') as HTMLSlotElement | null\n const assigned = slotEl?.assignedElements?.() || []\n for (const el of assigned) {\n if (el.tagName === 'BR-MENU-ITEM') {\n const anchor = (el as HTMLElement).shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(el) && this.isVisibleElement(anchor)) targets.push(anchor)\n } else if (el.tagName === 'BR-MENU-LIST') {\n const subHeader = (el as HTMLElement).shadowRoot?.querySelector('br-menu-item') as HTMLElement | null\n const subAnchor = subHeader?.shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(el) && this.isVisibleElement(subAnchor)) targets.push(subAnchor)\n }\n }\n return targets\n }\n\n private focusFirstVisibleTarget() {\n const targets = this.getTopLevelTargets()\n if (targets.length > 0) targets[0].focus()\n }\n\n /**\n * Coleta recursivamente os elementos focáveis no modo drill-down.\n * Respeita a ordem do DOM e a hierarquia dos elementos.\n * Apenas coleta elementos que não têm o atributo 'hidden'.\n */\n private collectDrillDownTargets(element: HTMLElement, targets: HTMLElement[]) {\n const children = Array.from(element.children)\n\n for (const child of children) {\n if (child.hasAttribute('hidden')) continue\n if (!this.isVisibleElement(child)) continue\n\n if (child.tagName === 'BR-MENU-ITEM') {\n const anchor = (child as HTMLElement).shadowRoot?.querySelector('a') as HTMLElement | null\n if (anchor && this.isVisibleElement(anchor)) {\n targets.push(anchor)\n }\n } else if (child.tagName === 'BR-MENU-LIST') {\n // Adiciona o header do menu-list\n const header = (child as HTMLElement).shadowRoot?.querySelector('br-menu-item') as HTMLElement | null\n const headerAnchor = header?.shadowRoot?.querySelector('a') as HTMLElement | null\n if (headerAnchor && this.isVisibleElement(headerAnchor)) {\n targets.push(headerAnchor)\n }\n\n // Coleta recursivamente os filhos do menu-list\n this.collectDrillDownTargets(child as HTMLElement, targets)\n } else {\n // Para outros elementos, continua a busca recursiva\n this.collectDrillDownTargets(child as HTMLElement, targets)\n }\n }\n }\n\n /**\n * Obtém todos os elementos focáveis dentro do menu que estão visíveis.\n * Inclui botões, links e outros elementos interativos.\n * No modo contextual, inclui itens dentro de agrupamentos expandidos.\n */\n private getFocusableElements(): HTMLElement[] {\n const focusable: HTMLElement[] = []\n const menuPanel = this.el.shadowRoot?.querySelector('.menu-panel')\n if (!menuPanel) return focusable\n\n // Adiciona o botão trigger (toggle/contextual) como primeiro elemento com foco\n const triggerButton = this.contextual\n ? this.el.shadowRoot?.querySelector('#contextual-trigger')\n : this.el.shadowRoot?.querySelector('#toggle-menu')\n\n if (triggerButton) {\n const button = (triggerButton as HTMLElement).shadowRoot?.querySelector('button') as HTMLElement | null\n if (button && this.isVisibleElement(button)) {\n focusable.push(button)\n }\n }\n\n // Busca o botão de voltar se estiver em submenu\n const backButton = this.el.shadowRoot?.querySelector('.back-btn') as HTMLElement | null\n if (backButton && this.isVisibleElement(backButton)) {\n focusable.push(backButton)\n }\n\n // No modo contextual ou quando não há drill-down, usa navegação global que respeita estado expandido\n if (this.contextual || !this.inSubmenu) {\n const targets = this.getAllVisibleTargets()\n focusable.push(...targets)\n } else {\n // Em drill-down, coleta elementos na ordem do DOM respeitando a hierarquia\n // O método hideAllExcept() já controla a visibilidade via atributo 'hidden'\n this.collectDrillDownTargets(this.el, focusable)\n }\n\n return focusable\n }\n\n // Navegação por setas é tratada via listener global de teclado\n\n private getDeepActiveElement(root: Document | ShadowRoot = document): Element | null {\n const active = root.activeElement as Element | null\n const shadowRoot = active && 'shadowRoot' in active ? (active.shadowRoot as ShadowRoot | null) : null\n if (shadowRoot && shadowRoot.activeElement) return this.getDeepActiveElement(shadowRoot)\n return active\n }\n\n /**\n * Oculta todos os elementos do menu, exceto o elemento ativo e sua cadeia de ancestrais,\n * garantindo que apenas o submenu relevante esteja visível durante a navegação drill-down.\n *\n * Funcionamento detalhado:\n * 1. Oculta todos os elementos <br-menu-list> e <br-menu-item> do menu, aplicando o atributo 'hidden'.\n * Isso garante que nada além do caminho de navegação atual fique visível.\n * 2. Remove o atributo 'drill-ancestor' de quaisquer listas marcadas anteriormente, limpando o estado visual.\n * 3. Remove o atributo 'hidden' do elemento ativo (o submenu ou item selecionado), tornando-o visível.\n * 4. Percorre a cadeia de ancestrais do elemento ativo:\n * - Para cada ancestral do tipo <br-menu-list> ou <br-menu-item>, remove o 'hidden' para garantir visibilidade.\n * - Para ancestrais <br-menu-list> (exceto o próprio ativo), adiciona o atributo 'drill-ancestor' para permitir\n * estilização diferenciada (por exemplo, ocultar cabeçalhos mas manter o conteúdo visível).\n * - Interrompe o loop ao chegar no elemento host do componente.\n * 5. Exibe todos os filhos diretos do elemento ativo que sejam <br-menu-list> ou <br-menu-item>,\n * removendo o 'hidden' para mostrar as opções do submenu.\n * 6. Exibe também filhos que estejam dentro de um <ul> (estrutura comum em subníveis),\n * garantindo que todos os itens relevantes do submenu estejam visíveis.\n *\n * Este método é fundamental para a experiência de navegação drill-down, pois controla\n * exatamente quais partes do menu são exibidas ao usuário em cada etapa da navegação.\n *\n * @param activeElement O elemento <br-menu-list> ou <br-menu-item> que representa o submenu/item atualmente ativo.\n */\n private hideAllExcept(activeElement: HTMLElement) {\n // 1. Oculta todos os elementos do menu\n const allMenuElements = this.el.querySelectorAll('br-menu-list, br-menu-item')\n allMenuElements.forEach((element: Element) => {\n ;(element as HTMLElement).setAttribute('hidden', '')\n })\n\n // 2. Limpa marcadores de ancestrais anteriores\n this.el.querySelectorAll('br-menu-list[drill-ancestor]').forEach((e) => {\n ;(e as HTMLElement).removeAttribute('drill-ancestor')\n })\n\n // 3. Garante que o elemento ativo esteja visível\n activeElement.removeAttribute('hidden')\n\n // 4. Exibe a cadeia de ancestrais do elemento ativo\n let ancestor: HTMLElement | null = activeElement.parentElement as HTMLElement | null\n while (ancestor !== null) {\n const tag = ancestor.tagName\n if (tag === 'BR-MENU-LIST' || tag === 'BR-MENU-ITEM') {\n ancestor.removeAttribute('hidden')\n }\n if (tag === 'BR-MENU-LIST' && ancestor !== activeElement) {\n ancestor.setAttribute('drill-ancestor', '')\n }\n if (ancestor === this.el) break\n ancestor = ancestor.parentElement as HTMLElement | null\n }\n\n // 5. Exibe filhos diretos do elemento ativo\n const directChildren = activeElement.querySelectorAll(':scope > br-menu-list, :scope > br-menu-item')\n directChildren.forEach((child: Element) => {\n ;(child as HTMLElement).removeAttribute('hidden')\n })\n\n // 6. Exibe filhos dentro de <ul> do elemento ativo\n const listChildren = activeElement.querySelectorAll(':scope > ul br-menu-list, :scope > ul br-menu-item')\n listChildren.forEach((child: Element) => {\n ;(child as HTMLElement).removeAttribute('hidden')\n })\n }\n\n /**\n * Exibe todos os itens e listas do menu, removendo o atributo 'hidden' de cada um.\n *\n * Esta função é utilizada para restaurar a visualização completa do menu,\n * normalmente após uma navegação drill-down ou ao retornar ao nível raiz.\n *\n * O método percorre todos os elementos <br-menu-list> e <br-menu-item> dentro do componente\n * e garante que estejam visíveis, removendo o atributo 'hidden' que pode ter sido\n * adicionado durante a navegação entre submenus.\n */\n private showAllMenuItems() {\n const allMenuLists = this.el.querySelectorAll('br-menu-list')\n const allMenuItems = this.el.querySelectorAll('br-menu-item')\n\n allMenuLists.forEach((menuList: Element) => {\n ;(menuList as HTMLElement).removeAttribute('hidden')\n })\n\n allMenuItems.forEach((menuItem: Element) => {\n ;(menuItem as HTMLElement).removeAttribute('hidden')\n })\n }\n\n /**\n * Marca ou desmarca um elemento <br-menu-list> como ativo no contexto de navegação drill-down.\n *\n * Quando 'active' é true, adiciona o atributo 'drill-active' ao elemento, indicando que\n * ele está no foco da navegação. Quando 'active' é false, remove esse atributo.\n *\n * Esse atributo pode ser utilizado para aplicar estilos visuais ou lógica condicional\n * durante a navegação entre níveis do menu.\n *\n * @param element Elemento <br-menu-list> a ser marcado/desmarcado\n * @param active Boolean indicando se o elemento deve ser marcado como ativo\n */\n private setDrillActive(element: HTMLElement, active: boolean) {\n if (active) {\n element.setAttribute('drill-active', '')\n } else {\n element.removeAttribute('drill-active')\n }\n }\n\n /**\n * Remove todos os marcadores de navegação drill-down do menu.\n *\n * Esta função percorre todos os elementos <br-menu-list> que possuem os atributos\n * 'drill-active' ou 'drill-ancestor' e remove esses atributos. Isso é necessário\n * para garantir que, ao retornar ao nível raiz ou reiniciar a navegação, nenhum\n * marcador visual ou lógico de navegação anterior permaneça ativo.\n */\n private clearAllDrillMarkers() {\n // Remove o atributo 'drill-active' de todos os <br-menu-list>\n this.el.querySelectorAll('br-menu-list[drill-active]').forEach((e) => {\n ;(e as HTMLElement).removeAttribute('drill-active')\n })\n // Remove o atributo 'drill-ancestor' de todos os <br-menu-list>\n this.el.querySelectorAll('br-menu-list[drill-ancestor]').forEach((e) => {\n ;(e as HTMLElement).removeAttribute('drill-ancestor')\n })\n }\n\n /**\n * Realiza a navegação de retorno (voltar) em menus do tipo drill-down.\n *\n * Esta função é chamada quando o usuário deseja voltar um nível na navegação do menu.\n * Ela utiliza uma pilha de navegação (navigationStack) para controlar o histórico de navegação.\n *\n * - Se houver elementos na pilha, remove o elemento do topo (nível atual) e desmarca como ativo.\n * - Se, após a remoção, a pilha estiver vazia, significa que o usuário retornou ao nível raiz:\n * - Restaura o estado inicial do menu, mostrando todos os itens e limpando marcadores de navegação.\n * - Caso contrário, ativa o elemento do nível anterior e oculta os demais, mantendo o contexto do drill-down.\n */\n private goBack() {\n if (this.navigationStack.length > 0) {\n // Remove o elemento do topo da pilha (nível atual)\n const removed = this.navigationStack.pop()\n if (removed !== undefined) this.setDrillActive(removed.element, false)\n\n if (this.navigationStack.length === 0) {\n // Se a pilha está vazia, voltamos ao nível raiz do menu\n this.currentLevel = 0\n this.inSubmenu = false\n this.clearAllDrillMarkers()\n this.showAllMenuItems()\n } else {\n // Caso ainda haja elementos na pilha, voltamos ao nível anterior do drill-down\n const previousElement = this.navigationStack[this.navigationStack.length - 1].element\n const previousLevel = parseInt(previousElement.getAttribute('menu-level') || '0', 10)\n // Atualiza o nível atual para refletir o contexto correto\n this.currentLevel = previousLevel + 1\n // Marca o elemento anterior como ativo\n this.setDrillActive(previousElement, true)\n // Oculta todos os itens, exceto o submenu ativo\n this.hideAllExcept(previousElement)\n }\n }\n }\n\n private handleToggleMenu = () => {\n this.toggleMenu()\n }\n\n private handleGoBack = () => {\n this.goBack()\n }\n\n private handleCloseMenu = () => {\n this.closeMenu()\n }\n\n /**\n * Verifica se um slot específico possui conteúdo.\n */\n private hasSlotContent(slotName: string): boolean {\n return this.el.querySelector(`[slot=\"${slotName}\"]`) !== null\n }\n\n private getEffectiveBreakpoints(): string {\n // Se o usuário definiu explicitamente, respeita o valor\n if (this.breakpoints && this.breakpoints.trim() !== '') return this.breakpoints.trim()\n // Não aplicar breakpoints para o modo contextual para evitar que ele se torne uma barra lateral em telas maiores.\n if (this.contextual) {\n return ''\n }\n // O padrão para menu flutuante é não ter breakpoints, a menos que o usuário especifique.\n return ''\n }\n\n private getCssClassMap(): CssClassMap {\n const effective = this.getEffectiveBreakpoints()\n return {\n 'br-menu': true,\n active: this.active,\n push: this.push,\n contextual: this.contextual,\n large: this.density === 'large',\n small: this.density === 'small',\n ...(effective ? effective.split(' ').reduce((acc, bp) => ({ ...acc, [bp]: true }), {}) : {}),\n }\n }\n\n /**\n * Retorna as classes CSS para o painel do menu.\n * Aplica breakpoints apenas quando o menu NÃO está no modo push ou contextual.\n */\n private getMenuPanelClasses(): string {\n const baseClass = 'menu-panel'\n\n // No modo push ou contextual, não aplica breakpoints\n if (this.push || this.contextual) {\n return baseClass\n }\n\n // Nos outros modos, aplica os breakpoints responsivos\n const breakpoints = this.getEffectiveBreakpoints()\n return breakpoints ? `${baseClass} ${breakpoints}` : baseClass\n }\n\n render() {\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n {!this.contextual && (\n <br-button\n id=\"toggle-menu\"\n shape=\"circle\"\n density=\"small\"\n aria-label=\"Menu\"\n onClick={this.handleToggleMenu}\n >\n <br-icon icon-name={`fa6-solid:bars`} aria-hidden=\"true\"></br-icon>\n </br-button>\n )}\n\n {this.contextual && (\n <div class=\"menu-trigger\">\n <br-button\n id=\"contextual-trigger\"\n emphasis=\"primary\"\n shape=\"block\"\n aria-label={this.contextualLabel}\n aria-expanded={String(this.active)}\n aria-controls=\"contextual-menu-panel\"\n onClick={this.handleToggleMenu}\n >\n <span class=\"trigger-label\">{this.contextualLabel}</span>\n <br-icon\n icon-name={`fa6-solid:chevron-${this.active ? 'down' : 'up'}`}\n class=\"trigger-icon\"\n aria-hidden=\"true\"\n ></br-icon>\n </br-button>\n </div>\n )}\n\n <div class={'menu-container'}>\n <div id={this.contextual ? 'contextual-menu-panel' : undefined} class={this.getMenuPanelClasses()}>\n {!this.contextual && this.hasSlotContent('header') && <slot name=\"header\"></slot>}\n\n <nav class=\"menu-body\">\n {this.inSubmenu && this.currentLevel > 0 && (\n <div class=\"menu-back-button\">\n <button class=\"back-btn\" onClick={this.handleGoBack} aria-label=\"Voltar ao nível anterior\">\n <br-icon class=\"back-icon\" icon-name=\"fa6-solid:angle-left\" aria-hidden=\"true\"></br-icon>\n <span class=\"back-title\">\n {this.navigationStack.length > 0\n ? `${this.navigationStack[this.navigationStack.length - 1].label}`\n : ''}\n </span>\n {this.navigationStack.length > 0 && (\n <span class=\"current-icon\" aria-hidden=\"true\">\n <br-icon\n icon-name={`fa6-solid:${this.navigationStack[this.navigationStack.length - 1].element.getAttribute('icon') || 'bars'}`}\n ></br-icon>\n </span>\n )}\n </button>\n </div>\n )}\n <slot></slot>\n </nav>\n\n {!this.contextual && (\n <div class=\"menu-footer\" part=\"footer\">\n {this.hasSlotContent('logo') && (\n <div class=\"menu-logos\" part=\"logo\">\n <slot name=\"logo\"></slot>\n </div>\n )}\n\n {this.hasSlotContent('link') && (\n <div class=\"menu-links\" part=\"link\">\n <slot name=\"link\"></slot>\n </div>\n )}\n\n {this.hasSlotContent('social') && (\n <div class=\"social-network\" part=\"social\">\n {this.socialTitle && <div class=\"social-network-title\">{this.socialTitle}</div>}\n <div class=\"sharegroup\">\n <slot name=\"social\"></slot>\n </div>\n </div>\n )}\n\n {this.hasSlotContent('info') && (\n <div class=\"menu-info\" part=\"info\">\n <slot name=\"info\"></slot>\n </div>\n )}\n </div>\n )}\n </div>\n\n {this.active && <div class=\"menu-scrim\" onClick={this.handleCloseMenu}></div>}\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"br-menu.entry.esm.js","sources":["../../packages/webcomponents/src/components/menu/menu.scss?tag=br-menu&encapsulation=shadow","../../packages/webcomponents/src/components/menu/menu.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/button/button\";\n@import \"~@govbr-ds/core/src/components/menu/menu\";\n\n:host {\n display: block;\n}\n\n.menu-trigger {\n br-button {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n &::part(button) {\n border-radius: 0 !important;\n }\n }\n\n .trigger-label {\n flex: 1;\n text-align: center;\n font-weight: var(--font-weight-semi-bold);\n }\n\n .trigger-icon {\n flex-shrink: 0;\n margin-left: var(--spacing-scale-2x);\n }\n}\n\n::slotted(.drill-down-hidden),\n::slotted(br-menu-list.drill-down-hidden),\n::slotted(br-menu-item.drill-down-hidden) {\n display: none !important;\n}\n\n::slotted(br-menu-link) {\n margin-bottom: var(--spacing-scale-2x);\n\n &:last-of-type {\n margin-bottom: 0; // Remove margem do último\n }\n}\n\n.menu-back-button {\n border-bottom: 1px solid var(--color-neutral-light-20);\n\n .back-btn {\n display: flex;\n align-items: center;\n gap: var(--spacing-scale-2x);\n box-sizing: border-box;\n padding-block: var(--menu-item-padding, var(--menu-item-medium));\n padding-inline: var(--spacing-scale-2x);\n border: none;\n background: transparent;\n color: var(--color-primary-dark);\n font-size: var(--font-size-scale-base);\n cursor: pointer;\n width: 100%;\n justify-content: flex-start;\n transition:\n background-color 0.2s ease,\n color 0.2s ease,\n transform 0.1s ease;\n\n &:hover {\n background-image: linear-gradient(\n rgb(var(--interactive-rgb) / var(--hover)),\n rgb(var(--interactive-rgb) / var(--hover))\n );\n }\n\n &:focus-visible {\n outline: var(--focus-width) var(--focus-style) var(--focus-color);\n outline-offset: var(--focus-offset);\n border-radius: 0;\n }\n\n &:active {\n background: var(--color-primary-dark);\n transform: translateY(1px);\n }\n\n br-icon {\n font-size: var(--font-size-scale-up-01);\n color: var(--active);\n }\n\n .back-title {\n text-align: center;\n color: var(--active);\n font-weight: var(--font-weight-semi-bold);\n }\n\n .current-icon {\n margin-left: auto;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n --interactive: var(--active);\n\n br-icon {\n font-size: var(--font-size-scale-up-01);\n }\n }\n }\n}\n","import { Component, h, Host, Element as HostElement, Listen, Prop, State } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/menu?tab=designer).\n *\n * @slot default - Slot para o conteúdo principal do menu (menu-list e menu-item).\n * @slot header - Slot para o cabeçalho do menu, exibido apenas em modo não contextual.\n * @slot logo - Slot para logotipos de parceiros no rodapé.\n * @slot link - Slot para links externos no rodapé (use br-menu-link).\n * @slot social - Slot para ícones de redes sociais no rodapé.\n * @slot info - Slot para informações adicionais no rodapé.\n *\n * @part footer - Parte para o contêiner principal do rodapé do menu, agrupando logos, links, redes sociais e informações.\n * @part logo - Parte para a área de logotipos de parceiros no rodapé.\n * @part link - Parte para links úteis ou navegação secundária no rodapé.\n * @part social - Parte para ícones de redes sociais no rodapé.\n * @part info - Parte para informações adicionais, como licença ou direitos autorais.\n */\n@Component({\n tag: 'br-menu',\n styleUrl: 'menu.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Menu {\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 @HostElement() private el: HTMLElement\n\n /**\n * Classes CSS para definir breakpoints responsivos do menu.\n * Utilize esta propriedade para controlar a largura do menu em diferentes tamanhos de tela.\n */\n // Por padrão não aplica colunas; quando contextual e sem valor definido, usa 'col-sm-4 col-lg-3'\n @Prop() breakpoints: string = ''\n\n /**\n * Define se o menu deve usar comportamento push (sempre visível em telas maiores).\n * Quando ativado, o menu permanece fixo na lateral e empurra o conteúdo principal.\n */\n @Prop() push: boolean = false\n\n /**\n * Define se o menu deve usar comportamento contextual (aparece na parte inferior).\n * Quando ativado, o menu é posicionado na parte inferior da tela em dispositivos móveis.\n */\n @Prop() contextual: boolean = false\n\n /**\n * Define a densidade dos itens do menu, alterando o espaçamento interno.\n * - `small` (densidade alta): itens mais compactos\n * - `medium` (padrão): equilíbrio entre economia de espaço e separação\n * - `large` (densidade baixa): maior espaçamento (recomendado em touch)\n */\n @Prop({ reflect: true }) density: 'large' | 'medium' | 'small' = 'medium'\n\n /**\n * Título da seção de redes sociais exibida no rodapé do menu.\n * Utilize esta propriedade para personalizar o texto que aparece acima dos ícones sociais.\n */\n @Prop({ reflect: true }) socialTitle: string = 'Redes Sociais'\n\n /**\n * Rótulo do botão trigger do menu contextual.\n * Exibido apenas em modo contextual e em telas menores (mobile).\n */\n @Prop() contextualLabel: string = 'Menu Contextual'\n\n // Define se o menu está aberto/visível ou fechado\n @State() active: boolean = false\n\n // Indica se o menu está exibindo um submenu (drill-down ativo)\n @State() inSubmenu: boolean = false\n\n // Representa o nível atual de navegação no drill-down (0 para o nível raiz)\n @State() currentLevel: number = 0\n\n // Controla quais menus drop-down estão expandidos no modo acordeão\n @State() expandedDropMenus: { [key: string]: boolean } = {}\n\n // Pilha de navegação para controle do drill-down e navegação de volta\n @State() navigationStack: Array<{ element: HTMLElement; label: string; id: string }> = []\n\n // Armazena o elemento que tinha foco antes do menu abrir (para restaurar o foco ao fechar)\n private previouslyFocusedElement: HTMLElement | null = null\n\n // IDs dos requestAnimationFrame para cancelamento no cleanup\n private rafIds: number[] = []\n\n componentDidLoad() {\n // Garante que apenas um item tenha active no carregamento inicial\n this.ensureSingleActiveItem()\n }\n\n /**\n * Método do ciclo de vida do componente.\n * Este método é chamado quando o componente é desconectado do DOM.\n * Realiza limpeza de recursos para evitar vazamento de memória.\n */\n disconnectedCallback() {\n // Cancela todos os requestAnimationFrame pendentes\n this.rafIds.forEach((id) => cancelAnimationFrame(id))\n this.rafIds = []\n }\n\n private ensureSingleActiveItem() {\n const allMenuItems = this.el.querySelectorAll('br-menu-item')\n let firstActiveItem: HTMLElement | null = null\n\n // Encontra o primeiro item com active e remove dos demais\n for (let i = 0; i < allMenuItems.length; i++) {\n const item = allMenuItems[i] as HTMLElement & { active: boolean; displayMode?: string }\n\n // Verifica se o item tem active\n if (item.active || item.hasAttribute('active')) {\n // Se é um header de menu-list (folder), remove o active\n const displayMode = item.getAttribute('display-mode')\n if (displayMode && displayMode !== 'none') {\n item.active = false\n item.removeAttribute('active')\n continue\n }\n\n // Se já encontramos um item ativo antes, remove deste\n if (firstActiveItem) {\n item.active = false\n item.removeAttribute('active')\n } else {\n // É o primeiro item ativo válido\n firstActiveItem = item\n item.active = true\n }\n }\n }\n }\n\n @Listen('click', { capture: true })\n handleMenuItemClick(ev: Event) {\n // Busca o menu-item mais próximo do alvo do clique\n const path = ev.composedPath()\n let menuItemHost: HTMLElement | null = null\n\n // Percorre o caminho do evento para encontrar o br-menu-item\n for (const element of path) {\n if (element instanceof HTMLElement && element.tagName === 'BR-MENU-ITEM') {\n menuItemHost = element\n break\n }\n // Para quando chegar no host do menu\n if (element === this.el) break\n }\n\n if (!menuItemHost || !this.el.contains(menuItemHost)) return\n\n // Ignora se for um header de menu-list (folder/dropdown que tem filhos)\n // Menus que expandem/têm submenus não devem receber classe active\n const parentMenuList = menuItemHost.parentElement\n if (parentMenuList?.tagName === 'BR-MENU-LIST') {\n // Se é filho direto de br-menu-list, verifica se é o header (primeiro br-menu-item)\n const header = parentMenuList.shadowRoot?.querySelector('br-menu-item')\n if (header === menuItemHost) {\n // É um header de folder, não deve receber active\n return\n }\n }\n\n // Também verifica via atributo display-mode\n const displayMode = menuItemHost.getAttribute('display-mode')\n if (displayMode && displayMode !== 'none') {\n return\n }\n\n // Remove active de todos os menu-items\n const allMenuItems = this.el.querySelectorAll('br-menu-item')\n for (let i = 0; i < allMenuItems.length; i++) {\n const item = allMenuItems[i] as HTMLElement & { active: boolean }\n item.active = false\n }\n\n // Marca o item clicado como ativo\n ;(menuItemHost as HTMLElement & { active: boolean }).active = true\n }\n\n @Listen('keydown', { target: 'window' })\n handleKeyDown(ev: KeyboardEvent) {\n // Permite ativar o botão contextual com Enter ou Espaço quando o menu está fechado\n if (!this.active && this.contextual && (ev.key === 'Enter' || ev.key === ' ')) {\n const target = ev.target as HTMLElement\n const isContextualButton = target?.closest?.('#contextual-trigger') || target?.id === 'contextual-trigger'\n\n if (isContextualButton) {\n ev.preventDefault()\n this.toggleMenu()\n return\n }\n }\n\n if (!this.active) return\n const targetEl = ev.target as HTMLElement | null\n const isFormField =\n targetEl &&\n (targetEl.tagName === 'INPUT' ||\n targetEl.tagName === 'TEXTAREA' ||\n targetEl.tagName === 'SELECT' ||\n targetEl.isContentEditable)\n\n // Focus trap: gerencia Tab/Shift+Tab para manter o foco dentro do menu\n if (ev.key === 'Tab') {\n const focusableElements = this.getFocusableElements()\n if (focusableElements.length === 0) return\n\n const firstElement = focusableElements[0]\n const lastElement = focusableElements[focusableElements.length - 1]\n const deepActive = this.getDeepActiveElement()\n\n // Se Tab sem Shift e está no último elemento, volta para o primeiro\n if (!ev.shiftKey && deepActive === lastElement) {\n ev.preventDefault()\n firstElement.focus()\n return\n }\n\n // Se Shift+Tab e está no primeiro elemento, vai para o último\n if (ev.shiftKey && deepActive === firstElement) {\n ev.preventDefault()\n lastElement.focus()\n return\n }\n }\n\n // Voltar/fechar\n if (this.inSubmenu && (ev.key === 'ArrowLeft' || ev.key === 'Backspace' || ev.key === 'Escape')) {\n ev.preventDefault()\n this.goBack()\n return\n }\n if (!this.inSubmenu && ev.key === 'Escape') {\n ev.preventDefault()\n this.closeMenu()\n return\n }\n\n // Navegação global por setas (fallback para todos os tipos de menu)\n if (!isFormField && (ev.key === 'ArrowDown' || ev.key === 'ArrowUp')) {\n const deepActive = this.getDeepActiveElement()\n if (deepActive == null || !this.isNodeWithinHost(deepActive)) return\n ev.preventDefault()\n ev.stopPropagation()\n\n // No modo contextual ou quando não há drill-down ativo, navega por todos os itens visíveis\n const useGlobalNavigation = this.contextual || !this.inSubmenu\n const targets = useGlobalNavigation ? this.getAllVisibleTargets() : this.getScopedTargets(deepActive)\n if (targets.length === 0) return\n\n let index = targets.findIndex((t) => t === deepActive || (deepActive instanceof Node && t.contains(deepActive)))\n if (index === -1) index = 0\n const nextIndex =\n ev.key === 'ArrowDown' ? (index + 1) % targets.length : (index - 1 + targets.length) % targets.length\n targets[nextIndex].focus()\n }\n }\n\n @Listen('navigateToSubmenu')\n handleNavigateToSubmenu(ev: CustomEvent<{ element: HTMLElement; label: string }>) {\n const { element, label } = ev.detail\n const itemId = element.getAttribute('data-menu-id') || `menu-${Date.now()}`\n\n // Obter o nível real do menu do elemento\n const menuLevel = parseInt(element.getAttribute('menu-level') || '0', 10)\n\n // Aplicar a regra principal: comportamento por nível\n if (menuLevel === 0) {\n // Camada 1: Comportamento de acordeão\n this.toggleDropMenu(itemId)\n } else {\n // Camada 2+: Comportamento drill-down\n this.navigateToLevel({ element, label, id: itemId })\n }\n }\n\n @Listen('folderToggled')\n handleFolderToggled(ev: CustomEvent<boolean>) {\n const element = ev.target as HTMLElement\n const itemId = element.getAttribute('data-menu-id') || `menu-${Date.now()}`\n\n if (ev.detail) {\n // Se o folder foi expandido, fecha todos os outros no nível 0\n this.collapseOtherFolders(itemId)\n }\n }\n\n @Listen('brMenuHeaderClose')\n handleMenuHeaderClose() {\n this.closeMenu()\n }\n\n /**\n * Alterna o estado expandido de um menu drop-down no modo acordeão.\n *\n * Este método recebe o identificador único (`itemId`) de um menu do tipo drop-down (nível 0)\n * e inverte o seu estado de expansão dentro do objeto `expandedDropMenus`.\n *\n * Se o menu estiver atualmente expandido, ele será recolhido; se estiver recolhido, será expandido.\n * O spread operator (`...this.expandedDropMenus`) garante que os estados dos outros menus sejam preservados.\n *\n * @param itemId - Identificador único do menu drop-down a ser alternado.\n */\n private toggleDropMenu(itemId: string) {\n this.expandedDropMenus = {\n ...this.expandedDropMenus,\n [itemId]: !this.expandedDropMenus[itemId],\n }\n }\n\n /**\n * Recolhe todos os folders do nível 0, exceto o especificado.\n * Garante que apenas um folder possa estar expandido por vez no comportamento acordeão.\n *\n * @param activeItemId - ID do folder que deve permanecer expandido\n */\n private collapseOtherFolders(activeItemId: string) {\n // Encontra todos os menu-list no nível 0\n const level0MenuLists = this.el.querySelectorAll('br-menu-list[menu-level=\"0\"]')\n\n level0MenuLists.forEach((menuList) => {\n const element = menuList as HTMLElement\n const itemId = element.getAttribute('data-menu-id')\n\n // Se é um folder diferente do ativo, força o recolhimento\n if (itemId && itemId !== activeItemId) {\n // Força o estado recolhido no menu-list\n ;(element as HTMLElement & { expanded: boolean }).expanded = false\n // Remove do estado de expandedDropMenus\n if (this.expandedDropMenus[itemId]) {\n this.expandedDropMenus = {\n ...this.expandedDropMenus,\n [itemId]: false,\n }\n }\n }\n })\n }\n\n /**\n * Navega para um nível específico do menu (drill-down).\n *\n * Este método é chamado quando o usuário interage com um item de menu de nível 2 ou superior,\n * ou seja, quando o comportamento esperado é de drill-down (aprofundamento em submenus).\n *\n * Funcionamento:\n * 1. Adiciona o item atual à pilha de navegação (`navigationStack`), permitindo que o usuário volte para níveis anteriores.\n * 2. Obtém o nível do menu a partir do atributo `menu-level` do elemento clicado.\n * 3. Atualiza o estado `currentLevel` para refletir o novo nível de profundidade (sempre um nível abaixo do atual).\n * 4. Define `inSubmenu` como `true`, indicando que o usuário está navegando em um submenu.\n * 5. Oculta todos os itens do menu, exceto o submenu selecionado, para garantir foco e clareza na navegação.\n * 6. Marca o elemento ativo como \"drill active\" para controle visual e de acessibilidade.\n *\n * @param item - Objeto contendo o elemento do menu, seu rótulo e identificador único.\n */\n private navigateToLevel(item: { element: HTMLElement; label: string; id: string }) {\n // Adiciona o item à pilha de navegação para possibilitar o retorno (back)\n this.navigationStack.push(item)\n\n // Obtém o nível do menu a partir do atributo do elemento\n const menuLevel = parseInt(item.element.getAttribute('menu-level') || '0', 10)\n\n // Atualiza o nível atual para o próximo nível após o elemento clicado\n this.currentLevel = menuLevel + 1\n\n // Indica que estamos em um submenu (drill-down ativo)\n this.inSubmenu = true\n\n // Oculta todos os menus, exceto o submenu selecionado\n this.hideAllExcept(item.element)\n\n // Marca o submenu como ativo para controle visual e de acessibilidade\n this.setDrillActive(item.element, true)\n // Após entrar no submenu, foca no primeiro item visível\n const rafId = requestAnimationFrame(() => this.focusFirstChildOfList(item.element))\n this.rafIds.push(rafId)\n }\n\n private focusFirstChildOfList(listEl: HTMLElement) {\n const slotEl = listEl.shadowRoot?.querySelector('ul slot') as HTMLSlotElement | null\n const assigned = slotEl?.assignedElements?.() || []\n for (const el of assigned) {\n if (el.tagName === 'BR-MENU-ITEM') {\n const anchor = (el as HTMLElement).shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(el) && this.isVisibleElement(anchor)) {\n anchor.focus()\n return\n }\n } else if (el.tagName === 'BR-MENU-LIST') {\n const header = (el as HTMLElement).shadowRoot?.querySelector('br-menu-item') as HTMLElement | null\n const anchor = header?.shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(el) && this.isVisibleElement(anchor)) {\n anchor.focus()\n return\n }\n }\n }\n }\n\n private toggleMenu() {\n this.active = !this.active\n if (this.active) {\n // Armazena o elemento que estava com foco antes de abrir o menu\n this.previouslyFocusedElement = this.getDeepActiveElement() as HTMLElement | null\n // Foca no primeiro elemento visível do menu\n const rafId = requestAnimationFrame(() => this.focusFirstVisibleTarget())\n this.rafIds.push(rafId)\n } else {\n // Se está fechando, chama closeMenu para fazer a limpeza completa\n this.closeMenu()\n }\n }\n\n private closeMenu() {\n this.active = false\n this.inSubmenu = false\n this.resetNavigation()\n\n // Restaura o foco para o elemento que estava focado antes do menu abrir\n if (this.previouslyFocusedElement) {\n const rafId = requestAnimationFrame(() => {\n this.previouslyFocusedElement?.focus()\n this.previouslyFocusedElement = null\n })\n this.rafIds.push(rafId)\n } else {\n // Se não há elemento anterior, foca no botão toggle\n const rafId = requestAnimationFrame(() => {\n const toggleButton = this.contextual\n ? this.el.shadowRoot?.querySelector('#contextual-trigger')\n : this.el.shadowRoot?.querySelector('#toggle-menu')\n\n if (toggleButton) {\n const button = (toggleButton as HTMLElement).shadowRoot?.querySelector('button') as HTMLElement | null\n button?.focus()\n }\n })\n this.rafIds.push(rafId)\n }\n }\n\n private resetNavigation() {\n this.navigationStack = []\n this.currentLevel = 0\n this.expandedDropMenus = {}\n this.clearAllDrillMarkers()\n this.showAllMenuItems()\n }\n\n private isVisibleElement(el: Element | null): el is HTMLElement {\n if (el == null) return false\n const htmlEl = el as HTMLElement\n if (!htmlEl.isConnected) return false\n if (htmlEl.hasAttribute('hidden')) return false\n const rects = htmlEl.getClientRects?.()\n return rects != null && rects.length > 0\n }\n\n private getTopLevelTargets(): HTMLElement[] {\n const targets: HTMLElement[] = []\n const bodySlot = this.el.shadowRoot?.querySelector('nav.menu-body slot:not([name])') as HTMLSlotElement | null\n const children = bodySlot?.assignedElements?.() || []\n\n for (const child of children) {\n if (child.tagName === 'BR-MENU-ITEM') {\n if (!this.isVisibleElement(child)) continue\n const anchor = (child as HTMLElement).shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(anchor)) targets.push(anchor)\n } else if (child.tagName === 'BR-MENU-LIST') {\n if (!this.isVisibleElement(child)) continue\n const header = (child as HTMLElement).shadowRoot?.querySelector('br-menu-item') as HTMLElement | null\n const anchor = header?.shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(anchor)) targets.push(anchor)\n }\n }\n\n return targets\n }\n\n /**\n * Obtém todos os elementos navegáveis visíveis no menu, incluindo itens dentro de agrupamentos expandidos.\n * Utilizado para navegação global por setas no modo contextual.\n */\n private getAllVisibleTargets(): HTMLElement[] {\n const targets: HTMLElement[] = []\n const bodySlot = this.el.shadowRoot?.querySelector('nav.menu-body slot:not([name])') as HTMLSlotElement | null\n const children = bodySlot?.assignedElements?.() || []\n\n for (const child of children) {\n this.collectVisibleTargetsFrom(child, targets)\n }\n\n return targets\n }\n\n /**\n * Coleta recursivamente todos os targets visíveis de um elemento e seus descendentes.\n * Respeita o estado expandido/recolhido dos agrupamentos.\n */\n private collectVisibleTargetsFrom(element: Element, targets: HTMLElement[]) {\n if (element.tagName === 'BR-MENU-ITEM') {\n if (!this.isVisibleElement(element)) return\n const anchor = (element as HTMLElement).shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(anchor)) {\n targets.push(anchor)\n }\n } else if (element.tagName === 'BR-MENU-LIST') {\n if (!this.isVisibleElement(element)) return\n\n // Adiciona o header do menu-list\n const header = (element as HTMLElement).shadowRoot?.querySelector('br-menu-item') as HTMLElement | null\n const headerAnchor = header?.shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(headerAnchor)) {\n targets.push(headerAnchor)\n }\n\n // Verifica se o menu-list está expandido antes de processar os filhos\n const menuListEl = element as HTMLElement & { expanded: boolean }\n const isExpanded = menuListEl.expanded || menuListEl.hasAttribute('expanded')\n\n if (isExpanded) {\n // Verifica também se o <ul> está realmente visível (para nível 0 que usa display:none)\n const ulElement = (element as HTMLElement).shadowRoot?.querySelector('ul') as HTMLElement | null\n const isUlVisible = ulElement ? this.isVisibleElement(ulElement) : false\n\n if (isUlVisible) {\n // Coleta os filhos do slot do menu-list\n const slotEl = ulElement.querySelector('slot') as HTMLSlotElement | null\n const assigned = slotEl?.assignedElements?.() || []\n for (const child of assigned) {\n this.collectVisibleTargetsFrom(child, targets)\n }\n }\n }\n }\n }\n\n /**\n * Obtém targets com escopo limitado ao menu-list mais próximo (usado em drill-down).\n */\n private getScopedTargets(deepActive: Element): HTMLElement[] {\n const listScope = this.findClosestMenuListFrom(deepActive)\n return listScope ? this.getTargetsForMenuList(listScope) : this.getTopLevelTargets()\n }\n\n private isNodeWithinHost(node: Element): boolean {\n let current: Element | null | ShadowRoot = node\n while (current != null) {\n if (current === this.el) return true\n if (current instanceof Element && current.parentElement != null) {\n current = current.parentElement\n } else {\n const root = current instanceof Element ? (current.getRootNode() as Document | ShadowRoot) : current\n current = root != null && 'host' in root ? (root as ShadowRoot).host : null\n }\n }\n return false\n }\n\n private findClosestMenuListFrom(node: Element): HTMLElement | null {\n let current: Element | null | ShadowRoot = node\n while (current != null) {\n if (current instanceof Element && current.tagName === 'BR-MENU-LIST') return current as HTMLElement\n if (current instanceof Element && current.parentElement != null) {\n current = current.parentElement\n } else {\n const root = current instanceof Element ? (current.getRootNode() as Document | ShadowRoot) : current\n current = root != null && 'host' in root ? (root as ShadowRoot).host : null\n }\n }\n return null\n }\n\n private getTargetsForMenuList(listEl: HTMLElement): HTMLElement[] {\n const targets: HTMLElement[] = []\n const header = listEl.shadowRoot?.querySelector('br-menu-item') as HTMLElement | null\n const headerAnchor = header?.shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(header) && this.isVisibleElement(headerAnchor)) targets.push(headerAnchor)\n\n const slotEl = listEl.shadowRoot?.querySelector('ul slot') as HTMLSlotElement | null\n const assigned = slotEl?.assignedElements?.() || []\n for (const el of assigned) {\n if (el.tagName === 'BR-MENU-ITEM') {\n const anchor = (el as HTMLElement).shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(el) && this.isVisibleElement(anchor)) targets.push(anchor)\n } else if (el.tagName === 'BR-MENU-LIST') {\n const subHeader = (el as HTMLElement).shadowRoot?.querySelector('br-menu-item') as HTMLElement | null\n const subAnchor = subHeader?.shadowRoot?.querySelector('a') as HTMLElement | null\n if (this.isVisibleElement(el) && this.isVisibleElement(subAnchor)) targets.push(subAnchor)\n }\n }\n return targets\n }\n\n private focusFirstVisibleTarget() {\n const targets = this.getTopLevelTargets()\n if (targets.length > 0) targets[0].focus()\n }\n\n /**\n * Coleta recursivamente os elementos focáveis no modo drill-down.\n * Respeita a ordem do DOM e a hierarquia dos elementos.\n * Apenas coleta elementos que não têm o atributo 'hidden'.\n */\n private collectDrillDownTargets(element: HTMLElement, targets: HTMLElement[]) {\n const children = Array.from(element.children)\n\n for (const child of children) {\n if (child.hasAttribute('hidden')) continue\n if (!this.isVisibleElement(child)) continue\n\n if (child.tagName === 'BR-MENU-ITEM') {\n const anchor = (child as HTMLElement).shadowRoot?.querySelector('a') as HTMLElement | null\n if (anchor && this.isVisibleElement(anchor)) {\n targets.push(anchor)\n }\n } else if (child.tagName === 'BR-MENU-LIST') {\n // Adiciona o header do menu-list\n const header = (child as HTMLElement).shadowRoot?.querySelector('br-menu-item') as HTMLElement | null\n const headerAnchor = header?.shadowRoot?.querySelector('a') as HTMLElement | null\n if (headerAnchor && this.isVisibleElement(headerAnchor)) {\n targets.push(headerAnchor)\n }\n\n // Coleta recursivamente os filhos do menu-list\n this.collectDrillDownTargets(child as HTMLElement, targets)\n } else {\n // Para outros elementos, continua a busca recursiva\n this.collectDrillDownTargets(child as HTMLElement, targets)\n }\n }\n }\n\n /**\n * Obtém todos os elementos focáveis dentro do menu que estão visíveis.\n * Inclui botões, links e outros elementos interativos.\n * No modo contextual, inclui itens dentro de agrupamentos expandidos.\n */\n private getFocusableElements(): HTMLElement[] {\n const focusable: HTMLElement[] = []\n const menuPanel = this.el.shadowRoot?.querySelector('.menu-panel')\n if (!menuPanel) return focusable\n\n // Adiciona o botão trigger (toggle/contextual) como primeiro elemento com foco\n const triggerButton = this.contextual\n ? this.el.shadowRoot?.querySelector('#contextual-trigger')\n : this.el.shadowRoot?.querySelector('#toggle-menu')\n\n if (triggerButton) {\n const button = (triggerButton as HTMLElement).shadowRoot?.querySelector('button') as HTMLElement | null\n if (button && this.isVisibleElement(button)) {\n focusable.push(button)\n }\n }\n\n // Busca o botão de voltar se estiver em submenu\n const backButton = this.el.shadowRoot?.querySelector('.back-btn') as HTMLElement | null\n if (backButton && this.isVisibleElement(backButton)) {\n focusable.push(backButton)\n }\n\n // No modo contextual ou quando não há drill-down, usa navegação global que respeita estado expandido\n if (this.contextual || !this.inSubmenu) {\n const targets = this.getAllVisibleTargets()\n focusable.push(...targets)\n } else {\n // Em drill-down, coleta elementos na ordem do DOM respeitando a hierarquia\n // O método hideAllExcept() já controla a visibilidade via atributo 'hidden'\n this.collectDrillDownTargets(this.el, focusable)\n }\n\n return focusable\n }\n\n // Navegação por setas é tratada via listener global de teclado\n\n private getDeepActiveElement(root: Document | ShadowRoot = document): Element | null {\n const active = root.activeElement as Element | null\n const shadowRoot = active && 'shadowRoot' in active ? (active.shadowRoot as ShadowRoot | null) : null\n if (shadowRoot && shadowRoot.activeElement) return this.getDeepActiveElement(shadowRoot)\n return active\n }\n\n /**\n * Oculta todos os elementos do menu, exceto o elemento ativo e sua cadeia de ancestrais,\n * garantindo que apenas o submenu relevante esteja visível durante a navegação drill-down.\n *\n * Funcionamento detalhado:\n * 1. Oculta todos os elementos <br-menu-list> e <br-menu-item> do menu, aplicando o atributo 'hidden'.\n * Isso garante que nada além do caminho de navegação atual fique visível.\n * 2. Remove o atributo 'drill-ancestor' de quaisquer listas marcadas anteriormente, limpando o estado visual.\n * 3. Remove o atributo 'hidden' do elemento ativo (o submenu ou item selecionado), tornando-o visível.\n * 4. Percorre a cadeia de ancestrais do elemento ativo:\n * - Para cada ancestral do tipo <br-menu-list> ou <br-menu-item>, remove o 'hidden' para garantir visibilidade.\n * - Para ancestrais <br-menu-list> (exceto o próprio ativo), adiciona o atributo 'drill-ancestor' para permitir\n * estilização diferenciada (por exemplo, ocultar cabeçalhos mas manter o conteúdo visível).\n * - Interrompe o loop ao chegar no elemento host do componente.\n * 5. Exibe todos os filhos diretos do elemento ativo que sejam <br-menu-list> ou <br-menu-item>,\n * removendo o 'hidden' para mostrar as opções do submenu.\n * 6. Exibe também filhos que estejam dentro de um <ul> (estrutura comum em subníveis),\n * garantindo que todos os itens relevantes do submenu estejam visíveis.\n *\n * Este método é fundamental para a experiência de navegação drill-down, pois controla\n * exatamente quais partes do menu são exibidas ao usuário em cada etapa da navegação.\n *\n * @param activeElement O elemento <br-menu-list> ou <br-menu-item> que representa o submenu/item atualmente ativo.\n */\n private hideAllExcept(activeElement: HTMLElement) {\n // 1. Oculta todos os elementos do menu\n const allMenuElements = this.el.querySelectorAll('br-menu-list, br-menu-item')\n allMenuElements.forEach((element: Element) => {\n ;(element as HTMLElement).setAttribute('hidden', '')\n })\n\n // 2. Limpa marcadores de ancestrais anteriores\n this.el.querySelectorAll('br-menu-list[drill-ancestor]').forEach((e) => {\n ;(e as HTMLElement).removeAttribute('drill-ancestor')\n })\n\n // 3. Garante que o elemento ativo esteja visível\n activeElement.removeAttribute('hidden')\n\n // 4. Exibe a cadeia de ancestrais do elemento ativo\n let ancestor: HTMLElement | null = activeElement.parentElement as HTMLElement | null\n while (ancestor !== null) {\n const tag = ancestor.tagName\n if (tag === 'BR-MENU-LIST' || tag === 'BR-MENU-ITEM') {\n ancestor.removeAttribute('hidden')\n }\n if (tag === 'BR-MENU-LIST' && ancestor !== activeElement) {\n ancestor.setAttribute('drill-ancestor', '')\n }\n if (ancestor === this.el) break\n ancestor = ancestor.parentElement as HTMLElement | null\n }\n\n // 5. Exibe filhos diretos do elemento ativo\n const directChildren = activeElement.querySelectorAll(':scope > br-menu-list, :scope > br-menu-item')\n directChildren.forEach((child: Element) => {\n ;(child as HTMLElement).removeAttribute('hidden')\n })\n\n // 6. Exibe filhos dentro de <ul> do elemento ativo\n const listChildren = activeElement.querySelectorAll(':scope > ul br-menu-list, :scope > ul br-menu-item')\n listChildren.forEach((child: Element) => {\n ;(child as HTMLElement).removeAttribute('hidden')\n })\n }\n\n /**\n * Exibe todos os itens e listas do menu, removendo o atributo 'hidden' de cada um.\n *\n * Esta função é utilizada para restaurar a visualização completa do menu,\n * normalmente após uma navegação drill-down ou ao retornar ao nível raiz.\n *\n * O método percorre todos os elementos <br-menu-list> e <br-menu-item> dentro do componente\n * e garante que estejam visíveis, removendo o atributo 'hidden' que pode ter sido\n * adicionado durante a navegação entre submenus.\n */\n private showAllMenuItems() {\n const allMenuLists = this.el.querySelectorAll('br-menu-list')\n const allMenuItems = this.el.querySelectorAll('br-menu-item')\n\n allMenuLists.forEach((menuList: Element) => {\n ;(menuList as HTMLElement).removeAttribute('hidden')\n })\n\n allMenuItems.forEach((menuItem: Element) => {\n ;(menuItem as HTMLElement).removeAttribute('hidden')\n })\n }\n\n /**\n * Marca ou desmarca um elemento <br-menu-list> como ativo no contexto de navegação drill-down.\n *\n * Quando 'active' é true, adiciona o atributo 'drill-active' ao elemento, indicando que\n * ele está no foco da navegação. Quando 'active' é false, remove esse atributo.\n *\n * Esse atributo pode ser utilizado para aplicar estilos visuais ou lógica condicional\n * durante a navegação entre níveis do menu.\n *\n * @param element Elemento <br-menu-list> a ser marcado/desmarcado\n * @param active Boolean indicando se o elemento deve ser marcado como ativo\n */\n private setDrillActive(element: HTMLElement, active: boolean) {\n if (active) {\n element.setAttribute('drill-active', '')\n } else {\n element.removeAttribute('drill-active')\n }\n }\n\n /**\n * Remove todos os marcadores de navegação drill-down do menu.\n *\n * Esta função percorre todos os elementos <br-menu-list> que possuem os atributos\n * 'drill-active' ou 'drill-ancestor' e remove esses atributos. Isso é necessário\n * para garantir que, ao retornar ao nível raiz ou reiniciar a navegação, nenhum\n * marcador visual ou lógico de navegação anterior permaneça ativo.\n */\n private clearAllDrillMarkers() {\n // Remove o atributo 'drill-active' de todos os <br-menu-list>\n this.el.querySelectorAll('br-menu-list[drill-active]').forEach((e) => {\n ;(e as HTMLElement).removeAttribute('drill-active')\n })\n // Remove o atributo 'drill-ancestor' de todos os <br-menu-list>\n this.el.querySelectorAll('br-menu-list[drill-ancestor]').forEach((e) => {\n ;(e as HTMLElement).removeAttribute('drill-ancestor')\n })\n }\n\n /**\n * Realiza a navegação de retorno (voltar) em menus do tipo drill-down.\n *\n * Esta função é chamada quando o usuário deseja voltar um nível na navegação do menu.\n * Ela utiliza uma pilha de navegação (navigationStack) para controlar o histórico de navegação.\n *\n * - Se houver elementos na pilha, remove o elemento do topo (nível atual) e desmarca como ativo.\n * - Se, após a remoção, a pilha estiver vazia, significa que o usuário retornou ao nível raiz:\n * - Restaura o estado inicial do menu, mostrando todos os itens e limpando marcadores de navegação.\n * - Caso contrário, ativa o elemento do nível anterior e oculta os demais, mantendo o contexto do drill-down.\n */\n private goBack() {\n if (this.navigationStack.length > 0) {\n // Remove o elemento do topo da pilha (nível atual)\n const removed = this.navigationStack.pop()\n if (removed !== undefined) this.setDrillActive(removed.element, false)\n\n if (this.navigationStack.length === 0) {\n // Se a pilha está vazia, voltamos ao nível raiz do menu\n this.currentLevel = 0\n this.inSubmenu = false\n this.clearAllDrillMarkers()\n this.showAllMenuItems()\n } else {\n // Caso ainda haja elementos na pilha, voltamos ao nível anterior do drill-down\n const previousElement = this.navigationStack[this.navigationStack.length - 1].element\n const previousLevel = parseInt(previousElement.getAttribute('menu-level') || '0', 10)\n // Atualiza o nível atual para refletir o contexto correto\n this.currentLevel = previousLevel + 1\n // Marca o elemento anterior como ativo\n this.setDrillActive(previousElement, true)\n // Oculta todos os itens, exceto o submenu ativo\n this.hideAllExcept(previousElement)\n }\n }\n }\n\n private handleToggleMenu = () => {\n this.toggleMenu()\n }\n\n private handleGoBack = () => {\n this.goBack()\n }\n\n private handleCloseMenu = () => {\n this.closeMenu()\n }\n\n /**\n * Verifica se um slot específico possui conteúdo.\n */\n private hasSlotContent(slotName: string): boolean {\n return this.el.querySelector(`[slot=\"${slotName}\"]`) !== null\n }\n\n private getEffectiveBreakpoints(): string {\n // Se o usuário definiu explicitamente, respeita o valor\n if (this.breakpoints && this.breakpoints.trim() !== '') return this.breakpoints.trim()\n // Não aplicar breakpoints para o modo contextual para evitar que ele se torne uma barra lateral em telas maiores.\n if (this.contextual) {\n return ''\n }\n // O padrão para menu flutuante é não ter breakpoints, a menos que o usuário especifique.\n return ''\n }\n\n private getCssClassMap(): CssClassMap {\n const effective = this.getEffectiveBreakpoints()\n return {\n 'br-menu': true,\n active: this.active,\n push: this.push,\n contextual: this.contextual,\n large: this.density === 'large',\n small: this.density === 'small',\n ...(effective ? effective.split(' ').reduce((acc, bp) => ({ ...acc, [bp]: true }), {}) : {}),\n }\n }\n\n /**\n * Retorna as classes CSS para o painel do menu.\n * Aplica breakpoints apenas quando o menu NÃO está no modo push ou contextual.\n */\n private getMenuPanelClasses(): string {\n const baseClass = 'menu-panel'\n\n // No modo push ou contextual, não aplica breakpoints\n if (this.push || this.contextual) {\n return baseClass\n }\n\n // Nos outros modos, aplica os breakpoints responsivos\n const breakpoints = this.getEffectiveBreakpoints()\n return breakpoints ? `${baseClass} ${breakpoints}` : baseClass\n }\n\n render() {\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n {!this.contextual && (\n <br-button\n id=\"toggle-menu\"\n shape=\"circle\"\n density=\"small\"\n aria-label=\"Menu\"\n onClick={this.handleToggleMenu}\n >\n <br-icon icon-name={`fa6-solid:bars`} aria-hidden=\"true\"></br-icon>\n </br-button>\n )}\n\n {this.contextual && (\n <div class=\"menu-trigger\">\n <br-button\n id=\"contextual-trigger\"\n emphasis=\"primary\"\n shape=\"block\"\n aria-label={this.contextualLabel}\n aria-expanded={String(this.active)}\n aria-controls=\"contextual-menu-panel\"\n onClick={this.handleToggleMenu}\n >\n <span class=\"trigger-label\">{this.contextualLabel}</span>\n <br-icon\n icon-name={`fa6-solid:chevron-${this.active ? 'down' : 'up'}`}\n class=\"trigger-icon\"\n aria-hidden=\"true\"\n ></br-icon>\n </br-button>\n </div>\n )}\n\n <div class={'menu-container'}>\n <div id={this.contextual ? 'contextual-menu-panel' : undefined} class={this.getMenuPanelClasses()}>\n {!this.contextual && this.hasSlotContent('header') && <slot name=\"header\"></slot>}\n\n <nav class=\"menu-body\">\n {this.inSubmenu && this.currentLevel > 0 && (\n <div class=\"menu-back-button\">\n <button class=\"back-btn\" onClick={this.handleGoBack} aria-label=\"Voltar ao nível anterior\">\n <br-icon class=\"back-icon\" icon-name=\"fa6-solid:angle-left\" aria-hidden=\"true\"></br-icon>\n <span class=\"back-title\">\n {this.navigationStack.length > 0\n ? `${this.navigationStack[this.navigationStack.length - 1].label}`\n : ''}\n </span>\n {this.navigationStack.length > 0 && (\n <span class=\"current-icon\" aria-hidden=\"true\">\n <br-icon\n icon-name={`fa6-solid:${this.navigationStack[this.navigationStack.length - 1].element.getAttribute('icon') || 'bars'}`}\n ></br-icon>\n </span>\n )}\n </button>\n </div>\n )}\n <slot></slot>\n </nav>\n\n {!this.contextual && (\n <div class=\"menu-footer\" part=\"footer\">\n {this.hasSlotContent('logo') && (\n <div class=\"menu-logos\" part=\"logo\">\n <slot name=\"logo\"></slot>\n </div>\n )}\n\n {this.hasSlotContent('link') && (\n <div class=\"menu-links\" part=\"link\">\n <slot name=\"link\"></slot>\n </div>\n )}\n\n {this.hasSlotContent('social') && (\n <div class=\"social-network\" part=\"social\">\n {this.socialTitle && <div class=\"social-network-title\">{this.socialTitle}</div>}\n <div class=\"sharegroup\">\n <slot name=\"social\"></slot>\n </div>\n </div>\n )}\n\n {this.hasSlotContent('info') && (\n <div class=\"menu-info\" part=\"info\">\n <slot name=\"info\"></slot>\n </div>\n )}\n </div>\n )}\n </div>\n\n {this.active && <div class=\"menu-scrim\" onClick={this.handleCloseMenu}></div>}\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"br-message.entry.esm.js","sources":["../../packages/webcomponents/src/components/message/message.scss?tag=br-message&encapsulation=shadow","../../packages/webcomponents/src/components/message/message.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/message/message\";\n\n:host {\n display: block;\n\n .icon-space {\n margin-right: var(--spacing-scale-half);\n }\n\n $br-message-color-map: (\n success: var(--success-rgb),\n danger: var(--danger-rgb),\n info: var(--info-rgb),\n );\n\n .br-message {\n .content .message-title {\n margin-right: 5px;\n }\n\n .close br-button {\n --interactive: var(--message-color-icon);\n }\n\n &.warning .close br-button {\n --interactive: var(--color);\n --interactive-rgb: var(--color-rgb);\n }\n\n @each $variant, $rgb in $br-message-color-map {\n &.#{$variant} .close br-button {\n --interactive-rgb: #{$rgb};\n }\n }\n }\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Prop } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/message?tab=designer).\n *\n * @slot default - Utilizado para inserir qualquer conteúdo que será exibido no corpo da mensagem.\n *\n * @slot icon - Slot para ícone customizado. Se usado, certifique-se de adicionar aria-label apropriado ou aria-hidden=\"true\" se for decorativo.\n */\n@Component({\n tag: 'br-message',\n styleUrl: 'message.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Message {\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: HTMLBrMessageElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define o título da mensagem, que é exibido no início, acima da mensagem principal.\n * Este título serve para destacar a mensagem textual. Não é aplicável para mensagens do tipo feedback.\n */\n @Prop({ reflect: true }) readonly messageTitle: 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-message-${messageId++}`\n\n /**\n * Define o texto da mensagem que será exibido.\n * Este é o conteúdo principal da mensagem. A propriedade `message` é obrigatória e deve ser fornecida para que a mensagem apareça.\n */\n @Prop({ reflect: true }) readonly message!: string\n\n /**\n * Se definido como verdadeiro, o título da mensagem será exibido na mesma linha que a mensagem principal.\n * Isso pode ser útil para criar um layout onde o título e a mensagem estão alinhados horizontalmente.\n */\n @Prop({ reflect: true }) readonly isInline: boolean = false\n\n /**\n * Se definido como verdadeiro, um botão de fechar será exibido para permitir que o usuário feche a mensagem.\n * O fechamento emitirá o evento `brDidClose`, mas não removerá automaticamente o componente do DOM, a menos que a propriedade `autoRemove` também esteja definida como `true`.\n * Este recurso não está disponível para mensagens do tipo feedback.\n */\n @Prop({ reflect: true }) readonly isClosable: boolean = false\n\n /**\n * Controla o comportamento do fechamento do componente quando `isClosable` é verdadeiro.\n * - Se definido como `true`, o componente será automaticamente removido do DOM ao clicar no botão de fechar.\n * - Se definido como `false`, o componente permanecerá no DOM e apenas emitirá o evento `brDidClose`.\n *\n * Esta propriedade não tem efeito se `isClosable` for `false`.\n * O valor padrão é `false`.\n */\n @Prop({ reflect: true }) autoRemove: boolean = false\n\n /**\n * Se definido como verdadeiro, um ícone associado à mensagem será exibido.\n * Use esta propriedade para mostrar ou ocultar o ícone da mensagem conforme necessário.\n */\n @Prop({ reflect: true }) readonly showIcon: boolean = false\n\n /**\n * Define se a mensagem é do tipo feedback, geralmente usada para fornecer contexto adicional sobre ações do usuário.\n * Exemplos incluem mensagens de validação em campos de formulário. Não disponível para mensagens que não sejam de feedback.\n */\n @Prop({ reflect: true }) readonly isFeedback: boolean = false\n\n /**\n * Define o estado do message.\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' = 'info'\n\n /**\n * Define um rótulo customizado para leitores de tela.\n * Se não fornecido, será gerado automaticamente baseado no estado da mensagem.\n * Exemplo: \"Mensagem de sucesso\", \"Mensagem de erro\", etc.\n */\n @Prop({ reflect: true }) readonly ariaLabel: string = ''\n\n /** Evento emitido quando o usuário fecha a mensagem, se closable for true. */\n @Event() brDidClose: EventEmitter\n\n private previousFocus: HTMLElement | null = null\n\n private readonly dismissHandler = () => {\n this.brDidClose.emit()\n\n if (this.previousFocus && this.isClosable) {\n this.previousFocus.focus()\n }\n\n if (this.autoRemove) {\n this.el.remove()\n }\n }\n\n async componentDidLoad() {\n if (this.isClosable && !this.isFeedback) {\n this.previousFocus = document.activeElement as HTMLElement\n\n await new Promise((resolve) => setTimeout(resolve, 150))\n\n const closeButton = this.el.shadowRoot?.querySelector('br-button')\n if (closeButton != null) {\n const button = closeButton.shadowRoot?.querySelector('button')\n button?.focus()\n }\n }\n\n if (this.isClosable && this.autoRemove) {\n this.el.addEventListener('keydown', this.handleKeyDown as EventListener)\n }\n }\n\n disconnectedCallback() {\n if (this.isClosable && !this.autoRemove) {\n this.el.removeEventListener('keydown', this.handleKeyDown as EventListener)\n }\n }\n\n private readonly handleKeyDown = (event: KeyboardEvent) => {\n if (this.isClosable && this.autoRemove && event.key === 'Escape') {\n event.preventDefault()\n this.dismissHandler()\n }\n }\n\n private checkIconState() {\n const iconMap = {\n success: 'fa-solid:check-circle',\n warning: 'fa-solid:exclamation-triangle',\n danger: 'fa-solid:times-circle',\n info: 'fa-solid:info-circle',\n }\n return iconMap[this.state] || 'check-circle'\n }\n\n private getAriaLive(): 'polite' | 'assertive' {\n return this.state === 'warning' || this.state === 'danger' ? 'assertive' : 'polite'\n }\n\n private getStateLabel(): string {\n const labelMap = {\n success: 'Mensagem de sucesso',\n warning: 'Mensagem de aviso',\n danger: 'Mensagem de erro',\n info: 'Mensagem informativa',\n }\n return labelMap[this.state]\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-message': true,\n [this.state]: true,\n }\n }\n\n render() {\n return (\n <Host>\n {this.isFeedback ? (\n <span\n class={`feedback ${this.state}`}\n role=\"status\"\n aria-live={this.getAriaLive()}\n aria-label={this.ariaLabel || this.getStateLabel()}\n aria-atomic=\"true\"\n id={this.customId}\n >\n {this.showIcon ? <br-icon class=\"icon-space\" icon-name={this.checkIconState()}></br-icon> : null}\n {this.message && this.message.length > 0 ? this.message : <slot></slot>}\n </span>\n ) : (\n <div\n class={this.getCssClassMap()}\n role=\"status\"\n aria-live={this.getAriaLive()}\n aria-label={this.ariaLabel || this.getStateLabel()}\n id={this.customId}\n >\n <div class=\"icon\">\n {this.showIcon ? (\n <br-icon icon-name={this.checkIconState()} height=\"20\" aria-hidden=\"true\"></br-icon>\n ) : (\n <slot name=\"icon\"></slot>\n )}\n </div>\n <div class=\"content\">\n {this.message && this.message.length > 0 ? (\n <div>\n {this.messageTitle && <span class=\"message-title\">{this.messageTitle}</span>}\n {this.messageTitle && !this.isInline && <br />}\n {this.message && <span class=\"message-body\">{this.message}</span>}\n </div>\n ) : (\n <div>\n {this.messageTitle && this.isInline && <strong>{this.messageTitle}</strong>}\n {this.messageTitle && !this.isInline && <br />}\n <slot></slot>\n </div>\n )}\n </div>\n {this.isClosable && !this.isFeedback && (\n <div class=\"close\">\n <br-button shape=\"circle\" type=\"button\" aria-label=\"Fechar a mensagem\" onClick={this.dismissHandler}>\n <br-icon icon-name=\"fa-solid:times\" aria-hidden=\"true\"></br-icon>\n </br-button>\n </div>\n )}\n </div>\n )}\n </Host>\n )\n }\n}\n\nlet messageId = 0\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"br-message.entry.esm.js","sources":["../../packages/webcomponents/src/components/message/message.scss?tag=br-message&encapsulation=shadow","../../packages/webcomponents/src/components/message/message.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/message/message\";\n\n:host {\n display: block;\n\n .icon-space {\n margin-right: var(--spacing-scale-half);\n }\n\n $br-message-color-map: (\n success: var(--success-rgb),\n danger: var(--danger-rgb),\n info: var(--info-rgb),\n );\n\n .br-message {\n .content .message-title {\n margin-right: 5px;\n }\n\n .close br-button {\n --interactive: var(--message-color-icon);\n }\n\n &.warning .close br-button {\n --interactive: var(--color);\n --interactive-rgb: var(--color-rgb);\n }\n\n @each $variant, $rgb in $br-message-color-map {\n &.#{$variant} .close br-button {\n --interactive-rgb: #{$rgb};\n }\n }\n }\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Prop } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/message?tab=designer).\n *\n * @slot default - Utilizado para inserir qualquer conteúdo que será exibido no corpo da mensagem.\n *\n * @slot icon - Slot para ícone customizado. Se usado, certifique-se de adicionar aria-label apropriado ou aria-hidden=\"true\" se for decorativo.\n */\n@Component({\n tag: 'br-message',\n styleUrl: 'message.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Message {\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: HTMLBrMessageElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define o título da mensagem, que é exibido no início, acima da mensagem principal.\n * Este título serve para destacar a mensagem textual. Não é aplicável para mensagens do tipo feedback.\n */\n @Prop({ reflect: true }) readonly messageTitle: 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-message-${messageId++}`\n\n /**\n * Define o texto da mensagem que será exibido.\n * Este é o conteúdo principal da mensagem. A propriedade `message` é obrigatória e deve ser fornecida para que a mensagem apareça.\n */\n @Prop({ reflect: true }) readonly message!: string\n\n /**\n * Se definido como verdadeiro, o título da mensagem será exibido na mesma linha que a mensagem principal.\n * Isso pode ser útil para criar um layout onde o título e a mensagem estão alinhados horizontalmente.\n */\n @Prop({ reflect: true }) readonly isInline: boolean = false\n\n /**\n * Se definido como verdadeiro, um botão de fechar será exibido para permitir que o usuário feche a mensagem.\n * O fechamento emitirá o evento `brDidClose`, mas não removerá automaticamente o componente do DOM, a menos que a propriedade `autoRemove` também esteja definida como `true`.\n * Este recurso não está disponível para mensagens do tipo feedback.\n */\n @Prop({ reflect: true }) readonly isClosable: boolean = false\n\n /**\n * Controla o comportamento do fechamento do componente quando `isClosable` é verdadeiro.\n * - Se definido como `true`, o componente será automaticamente removido do DOM ao clicar no botão de fechar.\n * - Se definido como `false`, o componente permanecerá no DOM e apenas emitirá o evento `brDidClose`.\n *\n * Esta propriedade não tem efeito se `isClosable` for `false`.\n * O valor padrão é `false`.\n */\n @Prop({ reflect: true }) autoRemove: boolean = false\n\n /**\n * Se definido como verdadeiro, um ícone associado à mensagem será exibido.\n * Use esta propriedade para mostrar ou ocultar o ícone da mensagem conforme necessário.\n */\n @Prop({ reflect: true }) readonly showIcon: boolean = false\n\n /**\n * Define se a mensagem é do tipo feedback, geralmente usada para fornecer contexto adicional sobre ações do usuário.\n * Exemplos incluem mensagens de validação em campos de formulário. Não disponível para mensagens que não sejam de feedback.\n */\n @Prop({ reflect: true }) readonly isFeedback: boolean = false\n\n /**\n * Define o estado do message.\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' = 'info'\n\n /**\n * Define um rótulo customizado para leitores de tela.\n * Se não fornecido, será gerado automaticamente baseado no estado da mensagem.\n * Exemplo: \"Mensagem de sucesso\", \"Mensagem de erro\", etc.\n */\n @Prop({ reflect: true }) readonly ariaLabel: string = ''\n\n /** Evento emitido quando o usuário fecha a mensagem, se closable for true. */\n @Event() brDidClose: EventEmitter\n\n private previousFocus: HTMLElement | null = null\n\n private readonly dismissHandler = () => {\n this.brDidClose.emit()\n\n if (this.previousFocus && this.isClosable) {\n this.previousFocus.focus()\n }\n\n if (this.autoRemove) {\n this.el.remove()\n }\n }\n\n async componentDidLoad() {\n if (this.isClosable && !this.isFeedback) {\n this.previousFocus = document.activeElement as HTMLElement\n\n await new Promise((resolve) => setTimeout(resolve, 150))\n\n const closeButton = this.el.shadowRoot?.querySelector('br-button')\n if (closeButton != null) {\n const button = closeButton.shadowRoot?.querySelector('button')\n button?.focus()\n }\n }\n\n if (this.isClosable && this.autoRemove) {\n this.el.addEventListener('keydown', this.handleKeyDown as EventListener)\n }\n }\n\n disconnectedCallback() {\n if (this.isClosable && !this.autoRemove) {\n this.el.removeEventListener('keydown', this.handleKeyDown as EventListener)\n }\n }\n\n private readonly handleKeyDown = (event: KeyboardEvent) => {\n if (this.isClosable && this.autoRemove && event.key === 'Escape') {\n event.preventDefault()\n this.dismissHandler()\n }\n }\n\n private checkIconState() {\n const iconMap = {\n success: 'fa-solid:check-circle',\n warning: 'fa-solid:exclamation-triangle',\n danger: 'fa-solid:times-circle',\n info: 'fa-solid:info-circle',\n }\n return iconMap[this.state] || 'check-circle'\n }\n\n private getAriaLive(): 'polite' | 'assertive' {\n return this.state === 'warning' || this.state === 'danger' ? 'assertive' : 'polite'\n }\n\n private getStateLabel(): string {\n const labelMap = {\n success: 'Mensagem de sucesso',\n warning: 'Mensagem de aviso',\n danger: 'Mensagem de erro',\n info: 'Mensagem informativa',\n }\n return labelMap[this.state]\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-message': true,\n [this.state]: true,\n }\n }\n\n render() {\n return (\n <Host>\n {this.isFeedback ? (\n <span\n class={`feedback ${this.state}`}\n role=\"status\"\n aria-live={this.getAriaLive()}\n aria-label={this.ariaLabel || this.getStateLabel()}\n aria-atomic=\"true\"\n id={this.customId}\n >\n {this.showIcon ? <br-icon class=\"icon-space\" icon-name={this.checkIconState()}></br-icon> : null}\n {this.message && this.message.length > 0 ? this.message : <slot></slot>}\n </span>\n ) : (\n <div\n class={this.getCssClassMap()}\n role=\"status\"\n aria-live={this.getAriaLive()}\n aria-label={this.ariaLabel || this.getStateLabel()}\n id={this.customId}\n >\n <div class=\"icon\">\n {this.showIcon ? (\n <br-icon icon-name={this.checkIconState()} height=\"20\" aria-hidden=\"true\"></br-icon>\n ) : (\n <slot name=\"icon\"></slot>\n )}\n </div>\n <div class=\"content\">\n {this.message && this.message.length > 0 ? (\n <div>\n {this.messageTitle && <span class=\"message-title\">{this.messageTitle}</span>}\n {this.messageTitle && !this.isInline && <br />}\n {this.message && <span class=\"message-body\">{this.message}</span>}\n </div>\n ) : (\n <div>\n {this.messageTitle && this.isInline && <strong>{this.messageTitle}</strong>}\n {this.messageTitle && !this.isInline && <br />}\n <slot></slot>\n </div>\n )}\n </div>\n {this.isClosable && !this.isFeedback && (\n <div class=\"close\">\n <br-button shape=\"circle\" type=\"button\" aria-label=\"Fechar a mensagem\" onClick={this.dismissHandler}>\n <br-icon icon-name=\"fa-solid:times\" aria-hidden=\"true\"></br-icon>\n </br-button>\n </div>\n )}\n </div>\n )}\n </Host>\n )\n }\n}\n\nlet messageId = 0\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"br-modal.entry.esm.js","sources":["../../packages/webcomponents/src/components/modal/modal.scss?tag=br-modal&encapsulation=shadow","../../packages/webcomponents/src/components/modal/modal.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/modal/modal\";\n\n.br-modal.scrollable {\n max-height: 400px;\n}\n\n.br-modal-footer.justify-content-end {\n justify-content: flex-end;\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Method, Prop, Watch } from '@stencil/core'\n\nimport Helpers from '../../utils/helpers'\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/modal?tab=designer).\n *\n * @slot header - Cabeçalho do modal. Se não for usado, o `title-text` será exibido.\n * @slot default - Corpo do modal.\n * @slot footer - Rodapé do modal.\n * @slot close-button - Botão de fechar customizado. Se não for usado, o botão padrão será exibido.\n *\n */\n@Component({\n tag: 'br-modal',\n styleUrl: 'modal.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Modal {\n /** Referência ao elemento host do componente. */\n @Element() el: HTMLBrModalElement\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 }) readonly customId: string = Helpers.generateUniqueId('modal')\n\n /** O texto do título a ser exibido no cabeçalho do modal. Usado quando o slot `header` não é fornecido. */\n @Prop() readonly titleText: string\n\n /** Controla a visibilidade do modal. */\n @Prop({ reflect: true, mutable: true }) show = false\n\n /**\n * Define o comportamento de fechamento do modal.\n *\n * - `true`: O modal fecha automaticamente ao clicar no botão fechar.\n * - `false`: O modal emite `brModalBeforeClose` mas não fecha, permitindo a implementação de lógica customizada (validação, confirmação, etc.) antes do fechamento. O desenvolvedor deve\n * controlar manualmente o fechamento.\n */\n @Prop({ reflect: true }) autoClose = false\n\n /** Seletor CSS para o elemento que deve receber foco quando o modal é aberto. */\n @Prop() readonly initialFocusSelector: string\n\n /**\n * Define o tamanho (largura) do modal.\n */\n @Prop({ reflect: true }) readonly size: 'xsmall' | 'small' | 'medium' | 'large' | 'auto' = 'medium'\n\n /** Se `true`, habilita a rolagem interna do conteúdo do modal. */\n @Prop({ reflect: true }) readonly scrollable = false\n\n /**\n * Define o alinhamento do conteúdo do rodapé (slot=\"footer\").\n */\n @Prop({ reflect: true }) readonly alignFooter: 'start' | 'end' | 'center' = 'center'\n\n private isOpeningParentScrim = false\n\n /**\n * Evento emitido quando o modal é aberto (quando `show` muda de `false` para `true`).\n */\n @Event() brModalOpen: EventEmitter<void>\n\n /**\n * Evento emitido após o modal ser fechado (quando `show` muda de `true` para `false`).\n */\n @Event() brModalClose: EventEmitter<void>\n\n /**\n * Evento emitido antes do fechamento do modal (quando o botão X é clicado).\n * Se autoClose está desativado, o desenvolvedor deve fechar manualmente o modal após este evento.\n * Se autoClose está ativado, o modal fecha automaticamente após este evento.\n */\n @Event() brModalBeforeClose: EventEmitter<void>\n\n @Watch('show')\n handleShowChange(newValue: boolean, oldValue: boolean) {\n if (newValue) {\n this.brModalOpen.emit()\n this.openParentScrim()\n } else if (oldValue === true) {\n this.brModalClose.emit()\n this.closeParentScrim()\n }\n }\n\n private closeParentScrim() {\n const parentScrim = this.el.closest('br-scrim')\n if (parentScrim && typeof parentScrim.close === 'function') {\n parentScrim.close()\n }\n }\n\n componentWillLoad() {\n if (!this.show) {\n const parentScrim = this.el.closest('br-scrim')\n if (parentScrim !== null && parentScrim.isOpen) {\n this.show = true\n }\n }\n }\n\n componentDidLoad() {\n this.listenToParentScrimEvents()\n\n if (this.show) {\n this.openParentScrim()\n }\n }\n\n disconnectedCallback() {\n this.isOpeningParentScrim = false\n this.removeParentScrimEventListeners()\n }\n\n /**\n * Adiciona listeners para eventos do parent scrim\n */\n private listenToParentScrimEvents() {\n const parentScrim = this.el.closest('br-scrim')\n if (parentScrim !== null) {\n parentScrim.addEventListener('brScrimOpen', this.handleParentScrimOpen)\n parentScrim.addEventListener('brScrimClose', this.handleParentScrimClose)\n }\n }\n\n /**\n * Remove listeners de eventos do parent scrim\n */\n private removeParentScrimEventListeners() {\n const parentScrim = this.el.closest('br-scrim')\n if (parentScrim !== null) {\n parentScrim.removeEventListener('brScrimOpen', this.handleParentScrimOpen)\n parentScrim.removeEventListener('brScrimClose', this.handleParentScrimClose)\n }\n }\n\n /**\n * Handler para evento brScrimOpen do parent scrim\n * Quando scrim abre programaticamente, a modal deve abrir também\n */\n private handleParentScrimOpen = () => {\n const parentScrim = this.el.closest('br-scrim')\n if (parentScrim === null) return\n\n if (!this.show) {\n this.show = true\n }\n }\n\n /**\n * Handler para evento brScrimClose do parent scrim\n * Se autoClose=true, fecha a modal junto com o scrim\n * Se autoClose=false, não faz nada (modal permanece aberta)\n */\n private handleParentScrimClose = () => {\n const parentScrim = this.el.closest('br-scrim')\n if (parentScrim === null) return\n\n if (this.autoClose && this.show) {\n this.show = false\n }\n }\n\n private openParentScrim() {\n if (this.isOpeningParentScrim) return\n\n const parentScrim = this.el.closest('br-scrim')\n if (parentScrim && !parentScrim.isOpen) {\n this.isOpeningParentScrim = true\n\n Promise.resolve()\n .then(() => {\n try {\n return parentScrim.open()\n } catch (error) {\n console.warn('br-modal: Erro ao abrir scrim pai:', error)\n throw error\n }\n })\n .finally(() => {\n this.isOpeningParentScrim = false\n })\n }\n }\n\n private get titleId() {\n return `${this.customId}-title`\n }\n\n private get contentId() {\n return `${this.customId}-content`\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-modal': true,\n [this.size]: true,\n scrollable: this.scrollable,\n }\n }\n\n private handleClose = () => {\n this.brModalBeforeClose.emit()\n\n if (this.autoClose) {\n this.show = false\n }\n }\n\n /**\n * Método público para abrir o modal\n */\n @Method()\n async open() {\n this.show = true\n\n this.openParentScrim()\n }\n\n /**\n * Método público para fechar o modal\n */\n @Method()\n async close() {\n if (!this.autoClose) {\n return\n }\n\n this.show = false\n }\n\n render() {\n if (!this.show) {\n return null\n }\n\n return (\n <Host>\n <div\n class={this.getCssClassMap()}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={this.titleId}\n aria-describedby={this.contentId}\n >\n <div class=\"br-modal-header\">\n <div class=\"modal-title\" id={this.titleId}>\n <slot name=\"header\">{this.titleText}</slot>\n </div>\n <slot name=\"close-button\">\n <br-button class=\"close\" shape=\"circle\" density=\"small\" aria-label=\"Fechar\" onClick={this.handleClose}>\n <br-icon icon-name=\"fa-solid:times\"></br-icon>\n </br-button>\n </slot>\n </div>\n <div id={this.contentId} class=\"br-modal-body\">\n <slot></slot>\n </div>\n <div class={`br-modal-footer ${this.alignFooter !== undefined ? `justify-content-${this.alignFooter}` : ''}`}>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"br-modal.entry.esm.js","sources":["../../packages/webcomponents/src/components/modal/modal.scss?tag=br-modal&encapsulation=shadow","../../packages/webcomponents/src/components/modal/modal.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/modal/modal\";\n\n.br-modal:focus {\n outline: none;\n}\n\n.br-modal.scrollable {\n max-height: 400px;\n}\n\n.br-modal-footer.justify-content-end {\n justify-content: flex-end;\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Method, Prop, Watch } from '@stencil/core'\n\nimport Helpers from '../../utils/helpers'\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/modal?tab=designer).\n *\n * @slot header - Cabeçalho do modal. Se não for usado, o `title-text` será exibido.\n * @slot default - Corpo do modal.\n * @slot footer - Rodapé do modal.\n * @slot close-button - Botão de fechar customizado. Se não for usado, o botão padrão será exibido.\n *\n */\n@Component({\n tag: 'br-modal',\n styleUrl: 'modal.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Modal {\n /** Referência ao elemento host do componente. */\n @Element() el: HTMLBrModalElement\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 }) readonly customId: string = Helpers.generateUniqueId('modal')\n\n /** O texto do título a ser exibido no cabeçalho do modal. Usado quando o slot `header` não é fornecido. */\n @Prop() readonly titleText: string\n\n /** Controla a visibilidade do modal. */\n @Prop({ reflect: true, mutable: true }) show = false\n\n /**\n * Define o comportamento de fechamento do modal.\n *\n * - `true`: O modal fecha automaticamente ao clicar no botão fechar.\n * - `false`: O modal emite `brModalBeforeClose` mas não fecha, permitindo a implementação de lógica customizada (validação, confirmação, etc.) antes do fechamento. O desenvolvedor deve\n * controlar manualmente o fechamento.\n */\n @Prop({ reflect: true }) autoClose = false\n\n /**\n * Seletor CSS do elemento que deve receber foco quando o modal é aberto (ex: `\"#meu-elemento\"`).\n */\n @Prop() readonly initialFocusSelector: string\n\n /**\n * Define o tamanho (largura) do modal.\n */\n @Prop({ reflect: true }) readonly size: 'xsmall' | 'small' | 'medium' | 'large' | 'auto' = 'medium'\n\n /**\n * Se `true`, habilita a rolagem interna do conteúdo do modal.\n */\n @Prop({ reflect: true }) readonly scrollable = false\n\n /**\n * Define o alinhamento do conteúdo do rodapé (slot=\"footer\").\n */\n @Prop({ reflect: true }) readonly alignFooter: 'start' | 'end' | 'center' = 'center'\n\n private isOpeningParentScrim = false\n private triggerElement: HTMLElement | null = null\n private pendingFocus = false\n\n private static readonly FOCUSABLE_SELECTORS = [\n 'a[href]:not([disabled])',\n 'button:not([disabled])',\n 'br-button:not([disabled]):not([tabindex=\"-1\"])',\n 'input:not([disabled])',\n 'br-input:not([disabled]):not([tabindex=\"-1\"])',\n 'select:not([disabled])',\n 'br-select:not([disabled]):not([tabindex=\"-1\"])',\n 'textarea:not([disabled])',\n 'br-textarea:not([disabled]):not([tabindex=\"-1\"])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(',')\n\n /**\n * Evento emitido quando o modal é aberto (quando `show` muda de `false` para `true`).\n */\n @Event() brModalOpen: EventEmitter<void>\n\n /**\n * Evento emitido após o modal ser fechado (quando `show` muda de `true` para `false`).\n */\n @Event() brModalClose: EventEmitter<void>\n\n /**\n * Evento emitido antes do fechamento do modal (quando o botão X é clicado).\n * Se autoClose está desativado, o desenvolvedor deve fechar manualmente o modal após este evento.\n * Se autoClose está ativado, o modal fecha automaticamente após este evento.\n */\n @Event() brModalBeforeClose: EventEmitter<void>\n\n /**\n * Evento emitido após o modal estar completamente aberto e com o foco estabilizado\n * dentro dele. Complementa `brModalOpen` (que dispara imediatamente ao abrir):\n * use `brModalOpened` quando precisar interagir com o modal já pronto.\n */\n @Event({ bubbles: true, composed: true }) brModalOpened: EventEmitter<void>\n\n @Watch('show')\n handleShowChange(newValue: boolean, oldValue: boolean) {\n if (newValue) {\n this.triggerElement = document.activeElement as HTMLElement\n this.brModalOpen.emit()\n this.openParentScrim()\n requestAnimationFrame(() => this.moveFocusIntoModal())\n } else if (oldValue === true) {\n this.brModalClose.emit()\n this.closeParentScrim()\n this.triggerElement?.focus()\n this.triggerElement = null\n }\n }\n\n componentWillLoad() {\n if (!this.show) {\n const parentScrim = this.el.closest('br-scrim')\n if (parentScrim !== null && parentScrim.isOpen) {\n this.show = true\n }\n }\n }\n\n componentDidLoad() {\n this.listenToParentScrimEvents()\n\n if (this.show) {\n this.openParentScrim()\n requestAnimationFrame(() => this.moveFocusIntoModal())\n }\n document.addEventListener('keydown', this.handleKeyDown, true)\n }\n\n disconnectedCallback() {\n this.isOpeningParentScrim = false\n this.removeParentScrimEventListeners()\n document.removeEventListener('keydown', this.handleKeyDown, true)\n }\n\n componentDidRender() {\n if (this.pendingFocus && this.show) {\n this.pendingFocus = false\n this.moveFocusIntoModal()\n }\n }\n\n /**\n * GERENCIAMENTO DE FOCO\n *\n * Métodos responsáveis por mover o foco para dentro do modal, estabilizar o\n * foco em elementos iniciais e localizar elementos nativos focáveis dentro\n * de web components que utilizam Shadow DOM.\n */\n\n private async moveFocusIntoModal() {\n await new Promise<void>((resolve) => requestAnimationFrame(() => resolve()))\n\n if (!this.show) return\n\n const root = this.el.shadowRoot\n if (root === null) return\n\n const modal = root.querySelector<HTMLElement>('.br-modal')\n if (modal !== null) {\n modal.focus()\n modal.scrollIntoView({ behavior: 'smooth', block: 'start' })\n }\n\n if (typeof this.initialFocusSelector === 'string' && this.initialFocusSelector !== '') {\n const target = await this.waitForElement(this.initialFocusSelector)\n\n if (target !== null) {\n const focusTarget = this.findDeepNativeFocusable(target) ?? target\n focusTarget.focus()\n target.scrollIntoView({ behavior: 'smooth', block: 'start' })\n }\n }\n\n this.brModalOpened.emit()\n }\n\n /**\n * Encontra recursivamente o primeiro elemento nativo focusável dentro de um elemento,\n * perfurando shadow roots aninhados em qualquer profundidade (ex: br-select → br-input → <input>).\n *\n * @returns O elemento nativo encontrado, ou null se nenhum for encontrado.\n */\n private findDeepNativeFocusable(el: HTMLElement): HTMLElement | null {\n const root = el.shadowRoot\n if (root === null) return null\n\n // Busca direta no shadow imediato, por ordem de prioridade\n const prioritySelectors = [\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n ]\n for (const sel of prioritySelectors) {\n const found = root.querySelector<HTMLElement>(sel)\n if (found !== null) return found\n }\n\n // Nenhum nativo direto — procurar em custom elements filhos que também tenham shadow\n // (ex: br-select.shadow → br-input → br-input.shadow → <input>)\n const customChildren = Array.from(root.querySelectorAll<HTMLElement>('*')).filter(\n (child) => child.tagName.includes('-') && child.shadowRoot !== null\n )\n for (const child of customChildren) {\n const inner = this.findDeepNativeFocusable(child)\n if (inner !== null) return inner\n }\n\n return null\n }\n\n /**\n * Aguarda o elemento aparecer no DOM e estar pronto para receber foco.\n * Tenta por até 10 vezes com intervalos de 50ms (500ms total).\n */\n private waitForElement(selector: string, retries = 10, interval = 50): Promise<HTMLElement | null> {\n return new Promise((resolve) => {\n const attempt = (remaining: number) => {\n const el = document.querySelector<HTMLElement>(selector)\n\n if (el !== null) {\n // Se for custom element, aguarda upgrade antes de resolver\n const tag = el.tagName.toLowerCase()\n if (tag.includes('-')) {\n customElements.whenDefined(tag).then(() => resolve(el))\n } else {\n resolve(el)\n }\n return\n }\n\n if (remaining <= 0) {\n resolve(null)\n return\n }\n\n setTimeout(() => attempt(remaining - 1), interval)\n }\n\n attempt(retries)\n })\n }\n\n /**\n * TECLADO\n *\n * Manipuladores e utilitários relacionados à interação por teclado,\n * incluindo tratamento de `Escape` para fechar o modal e navegação por\n * `Tab`/`Shift+Tab` para manter o foco preso (focus trap) dentro do modal.\n */\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (!this.show) return\n\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n this.brModalBeforeClose.emit()\n this.show = false\n return\n }\n\n if (event.key === 'Tab') {\n this.handleTabNavigation(event)\n }\n }\n\n /**\n * Implementa o focus trap circular dentro da modal.\n * Quando Tab é pressionado no último elemento focalizável, o foco vai para o primeiro.\n * Quando Shift+Tab é pressionado no primeiro, o foco vai para o último.\n *\n * Usa `composedPath()[0]` para obter o elemento real com foco, pois web components\n * com shadow DOM retornam o host via `document.activeElement`, não o elemento nativo interno.\n *\n * Usa `findDeepNativeFocusable` no wrap porque `host.focus()` é no-op em web components\n * sem `delegatesFocus` — focar o elemento nativo mais profundo garante que o wrap aconteça.\n */\n private handleTabNavigation(event: KeyboardEvent) {\n const focusable = this.getFocusableElements()\n if (focusable.length === 0) {\n event.preventDefault()\n return\n }\n\n const first = focusable[0]\n const last = focusable[focusable.length - 1]\n const activeEl = (event.composedPath?.()[0] ?? document.activeElement) as HTMLElement\n\n const firstTarget = this.findDeepNativeFocusable(first) ?? first\n const lastTarget = this.findDeepNativeFocusable(last) ?? last\n\n if (!event.shiftKey && this.isOrInsideElement(activeEl, last)) {\n event.preventDefault()\n firstTarget.focus()\n } else if (event.shiftKey && this.isOrInsideElement(activeEl, first)) {\n event.preventDefault()\n lastTarget.focus()\n }\n }\n\n /**\n * Verifica se `target` é igual a `container` ou está dentro dele,\n * perfurando shadow roots na subida (getRootNode().host).\n */\n private isOrInsideElement(target: HTMLElement, container: HTMLElement): boolean {\n if (target === container) return true\n let node: Node = target\n while (node !== null && node !== document) {\n if (node === container) return true\n const root = node.getRootNode()\n if (root instanceof ShadowRoot) {\n node = root.host\n } else {\n node = (node as HTMLElement).parentElement\n if (node === null) break\n }\n }\n return false\n }\n\n /**\n * Coleta todos os elementos focalizáveis dentro da modal,\n * perfurando o shadow DOM: inclui elementos do shadow root (ex: botão fechar)\n * e dos slots (conteúdo fornecido pelo usuário nos slots header, default, footer e close-button).\n */\n private getFocusableElements(): HTMLElement[] {\n const root = this.el.shadowRoot\n if (root === null) return []\n\n const selector = Modal.FOCUSABLE_SELECTORS\n const elements: HTMLElement[] = []\n\n // Elementos focalizáveis diretamente no shadow root (ex: br-button.close)\n root.querySelectorAll<HTMLElement>(selector).forEach((el) => elements.push(el))\n\n // Elementos dos slots (conteúdo do usuário)\n root.querySelectorAll<HTMLSlotElement>('slot').forEach((slot) => {\n slot.assignedElements({ flatten: true }).forEach((assigned) => {\n if (!(assigned instanceof HTMLElement)) return\n if (assigned.matches(selector)) elements.push(assigned)\n assigned.querySelectorAll<HTMLElement>(selector).forEach((el) => elements.push(el))\n })\n })\n\n // Remove referências duplicadas e filtra elementos não visíveis.\n // Retorna apenas elementos realmente focáveis e perceptíveis ao usuário.\n return Array.from(new Set(elements)).filter(\n (el) => el.offsetWidth > 0 && el.offsetHeight > 0 && getComputedStyle(el).visibility !== 'hidden'\n )\n }\n\n /**\n * INTEGRAÇÃO COM BR-SCRIM\n *\n * Métodos para integrar o comportamento do modal com um `br-scrim` pai,\n * incluindo abertura/fechamento sincronizados e listeners para eventos do\n * scrim.\n */\n\n private closeParentScrim() {\n const parentScrim = this.el.closest('br-scrim')\n if (parentScrim && typeof parentScrim.close === 'function') {\n parentScrim.close()\n }\n }\n\n /**\n * Adiciona listeners para eventos do parent scrim\n */\n private listenToParentScrimEvents() {\n const parentScrim = this.el.closest('br-scrim')\n if (parentScrim !== null) {\n parentScrim.addEventListener('brScrimOpen', this.handleParentScrimOpen)\n parentScrim.addEventListener('brScrimClose', this.handleParentScrimClose)\n }\n }\n\n /**\n * Remove listeners de eventos do parent scrim\n */\n private removeParentScrimEventListeners() {\n const parentScrim = this.el.closest('br-scrim')\n if (parentScrim !== null) {\n parentScrim.removeEventListener('brScrimOpen', this.handleParentScrimOpen)\n parentScrim.removeEventListener('brScrimClose', this.handleParentScrimClose)\n }\n }\n\n /**\n * Handler para evento brScrimOpen do parent scrim\n * Quando scrim abre programaticamente, a modal deve abrir também\n */\n private handleParentScrimOpen = () => {\n const parentScrim = this.el.closest('br-scrim')\n if (parentScrim === null) return\n\n if (!this.show) {\n this.show = true\n }\n }\n\n /**\n * Handler para evento brScrimClose do parent scrim\n * Se autoClose=true, fecha a modal junto com o scrim\n * Se autoClose=false, não faz nada (modal permanece aberta)\n */\n private handleParentScrimClose = () => {\n const parentScrim = this.el.closest('br-scrim')\n if (parentScrim === null) return\n\n if (this.autoClose && this.show) {\n this.show = false\n }\n }\n\n private openParentScrim() {\n if (this.isOpeningParentScrim) return\n\n const parentScrim = this.el.closest('br-scrim')\n if (parentScrim && !parentScrim.isOpen) {\n this.isOpeningParentScrim = true\n\n Promise.resolve()\n .then(() => {\n try {\n return parentScrim.open()\n } catch (error) {\n console.warn('br-modal: Erro ao abrir scrim pai:', error)\n throw error\n }\n })\n .finally(() => {\n this.isOpeningParentScrim = false\n })\n }\n }\n\n /**\n * UTILITÁRIOS\n *\n * Getters e helpers utilitários usados internamente pelo componente,\n * como geração de IDs e mapeamento de classes CSS.\n */\n\n private get titleId() {\n return `${this.customId}-title`\n }\n\n private get contentId() {\n return `${this.customId}-content`\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-modal': true,\n [this.size]: true,\n scrollable: this.scrollable,\n }\n }\n\n private handleClose = () => {\n this.brModalBeforeClose.emit()\n\n if (this.autoClose) {\n this.show = false\n }\n }\n\n /**\n * MÉTODOS PÚBLICOS (API)\n *\n * Métodos públicos expostos pela API do componente (`open`, `close`, etc.).\n */\n\n /**\n * Método público para abrir o modal\n */\n @Method()\n async open() {\n this.show = true\n\n this.openParentScrim()\n }\n\n /**\n * Método público para fechar o modal\n */\n @Method()\n async close() {\n this.show = false\n }\n\n render() {\n if (!this.show) {\n return null\n }\n\n return (\n <Host>\n <div\n class={this.getCssClassMap()}\n role=\"dialog\"\n tabIndex={-1}\n aria-modal=\"true\"\n aria-labelledby={this.titleId}\n aria-describedby={this.contentId}\n >\n <div class=\"br-modal-header\">\n <div class=\"modal-title\" id={this.titleId}>\n <slot name=\"header\">{this.titleText}</slot>\n </div>\n <slot name=\"close-button\">\n <br-button class=\"close\" shape=\"circle\" density=\"small\" aria-label=\"Fechar\" onClick={this.handleClose}>\n <br-icon icon-name=\"fa-solid:times\"></br-icon>\n </br-button>\n </slot>\n </div>\n <div id={this.contentId} class=\"br-modal-body\">\n <slot></slot>\n </div>\n <div class={`br-modal-footer ${this.alignFooter !== undefined ? `justify-content-${this.alignFooter}` : ''}`}>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"names":[],"mappings":"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"}