@govbr-ds/webcomponents 2.0.0-next.44 → 2.0.0-next.46

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 (457) hide show
  1. package/dist/cjs/br-avatar.cjs.entry.js +104 -31
  2. package/dist/cjs/br-avatar.cjs.entry.js.map +1 -1
  3. package/dist/cjs/br-avatar.entry.cjs.js.map +1 -1
  4. package/dist/cjs/br-breadcrumb.cjs.entry.js +6 -9
  5. package/dist/cjs/br-breadcrumb.cjs.entry.js.map +1 -1
  6. package/dist/cjs/br-breadcrumb.entry.cjs.js.map +1 -1
  7. package/dist/cjs/br-button.br-icon.entry.cjs.js.map +1 -1
  8. package/dist/cjs/br-button_2.cjs.entry.js +16 -3
  9. package/dist/cjs/br-button_2.cjs.entry.js.map +1 -1
  10. package/dist/cjs/br-card.cjs.entry.js +97 -0
  11. package/dist/cjs/br-card.cjs.entry.js.map +1 -0
  12. package/dist/cjs/br-card.entry.cjs.js.map +1 -0
  13. package/dist/cjs/br-checkbox.cjs.entry.js +8 -13
  14. package/dist/cjs/br-checkbox.cjs.entry.js.map +1 -1
  15. package/dist/cjs/br-checkbox.entry.cjs.js.map +1 -1
  16. package/dist/cjs/br-checkgroup.cjs.entry.js +3 -5
  17. package/dist/cjs/br-checkgroup.cjs.entry.js.map +1 -1
  18. package/dist/cjs/br-checkgroup.entry.cjs.js.map +1 -1
  19. package/dist/cjs/br-collapse.br-list.entry.cjs.js.map +1 -1
  20. package/dist/cjs/br-collapse_2.cjs.entry.js +14 -22
  21. package/dist/cjs/br-collapse_2.cjs.entry.js.map +1 -1
  22. package/dist/cjs/br-divider.cjs.entry.js +2 -3
  23. package/dist/cjs/br-divider.cjs.entry.js.map +1 -1
  24. package/dist/cjs/br-divider.entry.cjs.js.map +1 -1
  25. package/dist/cjs/br-dropdown.cjs.entry.js +14 -21
  26. package/dist/cjs/br-dropdown.cjs.entry.js.map +1 -1
  27. package/dist/cjs/br-dropdown.entry.cjs.js.map +1 -1
  28. package/dist/cjs/br-footer-category.cjs.entry.js +2 -2
  29. package/dist/cjs/br-footer-item.cjs.entry.js +1 -1
  30. package/dist/cjs/br-footer-legal.cjs.entry.js +1 -1
  31. package/dist/cjs/br-footer-logo.cjs.entry.js +1 -1
  32. package/dist/cjs/br-footer-logo.cjs.entry.js.map +1 -1
  33. package/dist/cjs/br-footer-logo.entry.cjs.js.map +1 -1
  34. package/dist/cjs/br-footer-social.cjs.entry.js +1 -1
  35. package/dist/cjs/br-footer.cjs.entry.js +1 -1
  36. package/dist/cjs/br-input.br-radio.entry.cjs.js.map +1 -1
  37. package/dist/cjs/br-input_2.cjs.entry.js +10 -17
  38. package/dist/cjs/br-input_2.cjs.entry.js.map +1 -1
  39. package/dist/cjs/br-item.cjs.entry.js +11 -10
  40. package/dist/cjs/br-item.cjs.entry.js.map +1 -1
  41. package/dist/cjs/br-item.entry.cjs.js.map +1 -1
  42. package/dist/cjs/br-loading.cjs.entry.js +4 -5
  43. package/dist/cjs/br-loading.cjs.entry.js.map +1 -1
  44. package/dist/cjs/br-loading.entry.cjs.js.map +1 -1
  45. package/dist/cjs/br-magic-button.cjs.entry.js +2 -2
  46. package/dist/cjs/br-magic-button.cjs.entry.js.map +1 -1
  47. package/dist/cjs/br-magic-button.entry.cjs.js.map +1 -1
  48. package/dist/cjs/br-message.cjs.entry.js +2 -2
  49. package/dist/cjs/br-message.cjs.entry.js.map +1 -1
  50. package/dist/cjs/br-message.entry.cjs.js.map +1 -1
  51. package/dist/cjs/br-scrim.cjs.entry.js +17 -29
  52. package/dist/cjs/br-scrim.cjs.entry.js.map +1 -1
  53. package/dist/cjs/br-scrim.entry.cjs.js.map +1 -1
  54. package/dist/cjs/br-select.cjs.entry.js +16 -20
  55. package/dist/cjs/br-select.cjs.entry.js.map +1 -1
  56. package/dist/cjs/br-select.entry.cjs.js.map +1 -1
  57. package/dist/cjs/br-step-item.cjs.entry.js +14 -27
  58. package/dist/cjs/br-step-item.cjs.entry.js.map +1 -1
  59. package/dist/cjs/br-step-item.entry.cjs.js.map +1 -1
  60. package/dist/cjs/br-step.cjs.entry.js +21 -32
  61. package/dist/cjs/br-step.cjs.entry.js.map +1 -1
  62. package/dist/cjs/br-step.entry.cjs.js.map +1 -1
  63. package/dist/cjs/br-switch.cjs.entry.js +4 -7
  64. package/dist/cjs/br-switch.cjs.entry.js.map +1 -1
  65. package/dist/cjs/br-switch.entry.cjs.js.map +1 -1
  66. package/dist/cjs/br-tab-item.cjs.entry.js +2 -2
  67. package/dist/cjs/br-tab-item.cjs.entry.js.map +1 -1
  68. package/dist/cjs/br-tab-item.entry.cjs.js.map +1 -1
  69. package/dist/cjs/br-tab.cjs.entry.js +4 -5
  70. package/dist/cjs/br-tab.cjs.entry.js.map +1 -1
  71. package/dist/cjs/br-tab.entry.cjs.js.map +1 -1
  72. package/dist/cjs/br-table-cell.cjs.entry.js +1 -1
  73. package/dist/cjs/br-table-header-cell.cjs.entry.js +1 -1
  74. package/dist/cjs/br-table-header-row.cjs.entry.js +1 -1
  75. package/dist/cjs/br-table-row.cjs.entry.js +1 -1
  76. package/dist/cjs/br-table.cjs.entry.js +1 -1
  77. package/dist/cjs/br-tag.cjs.entry.js +2 -2
  78. package/dist/cjs/br-textarea.cjs.entry.js +8 -15
  79. package/dist/cjs/br-textarea.cjs.entry.js.map +1 -1
  80. package/dist/cjs/br-textarea.entry.cjs.js.map +1 -1
  81. package/dist/cjs/br-tooltip.cjs.entry.js +18 -28
  82. package/dist/cjs/br-tooltip.cjs.entry.js.map +1 -1
  83. package/dist/cjs/br-tooltip.entry.cjs.js.map +1 -1
  84. package/dist/cjs/br-upload.cjs.entry.js +2 -3
  85. package/dist/cjs/br-upload.cjs.entry.js.map +1 -1
  86. package/dist/cjs/br-upload.entry.cjs.js.map +1 -1
  87. package/dist/cjs/index-DNnn1o_9.js +4 -0
  88. package/dist/cjs/loader.cjs.js +1 -1
  89. package/dist/cjs/webcomponents.cjs.js +1 -1
  90. package/dist/collection/collection-manifest.json +1 -0
  91. package/dist/collection/components/avatar/avatar.css +1 -1
  92. package/dist/collection/components/avatar/avatar.js +120 -85
  93. package/dist/collection/components/avatar/avatar.js.map +1 -1
  94. package/dist/collection/components/breadcrumb/breadcrumb.css +1 -1
  95. package/dist/collection/components/breadcrumb/breadcrumb.js +5 -8
  96. package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -1
  97. package/dist/collection/components/button/button.css +1 -1
  98. package/dist/collection/components/button/button.js +1 -1
  99. package/dist/collection/components/card/card.css +1 -0
  100. package/dist/collection/components/card/card.js +166 -0
  101. package/dist/collection/components/card/card.js.map +1 -0
  102. package/dist/collection/components/checkbox/checkbox.js +8 -13
  103. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  104. package/dist/collection/components/checkgroup/checkgroup.js +3 -5
  105. package/dist/collection/components/checkgroup/checkgroup.js.map +1 -1
  106. package/dist/collection/components/collapse/collapse.js +11 -18
  107. package/dist/collection/components/collapse/collapse.js.map +1 -1
  108. package/dist/collection/components/divider/divider.js +2 -3
  109. package/dist/collection/components/divider/divider.js.map +1 -1
  110. package/dist/collection/components/dropdown/dropdown.js +14 -21
  111. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  112. package/dist/collection/components/footer/footer.js +1 -1
  113. package/dist/collection/components/footer-category/footer-category.js +2 -2
  114. package/dist/collection/components/footer-item/footer-item.js +1 -1
  115. package/dist/collection/components/footer-legal/footer-legal.js +1 -1
  116. package/dist/collection/components/footer-logo/footer-logo.js +1 -1
  117. package/dist/collection/components/footer-logo/footer-logo.js.map +1 -1
  118. package/dist/collection/components/footer-social/footer-social.js +1 -1
  119. package/dist/collection/components/icon/icon.js +42 -1
  120. package/dist/collection/components/icon/icon.js.map +1 -1
  121. package/dist/collection/components/input/input.js +4 -7
  122. package/dist/collection/components/input/input.js.map +1 -1
  123. package/dist/collection/components/item/item.js +11 -10
  124. package/dist/collection/components/item/item.js.map +1 -1
  125. package/dist/collection/components/list/list.js +3 -4
  126. package/dist/collection/components/list/list.js.map +1 -1
  127. package/dist/collection/components/loading/loading.css +1 -1
  128. package/dist/collection/components/loading/loading.js +3 -4
  129. package/dist/collection/components/loading/loading.js.map +1 -1
  130. package/dist/collection/components/magic-button/magic-button.css +1 -1
  131. package/dist/collection/components/magic-button/magic-button.js +1 -1
  132. package/dist/collection/components/magic-button/magic-button.js.map +1 -1
  133. package/dist/collection/components/message/message.css +1 -1
  134. package/dist/collection/components/message/message.js +1 -1
  135. package/dist/collection/components/message/message.js.map +1 -1
  136. package/dist/collection/components/radio/radio.js +6 -10
  137. package/dist/collection/components/radio/radio.js.map +1 -1
  138. package/dist/collection/components/scrim/scrim.js +17 -29
  139. package/dist/collection/components/scrim/scrim.js.map +1 -1
  140. package/dist/collection/components/select/select.js +16 -20
  141. package/dist/collection/components/select/select.js.map +1 -1
  142. package/dist/collection/components/step/step.js +21 -32
  143. package/dist/collection/components/step/step.js.map +1 -1
  144. package/dist/collection/components/step-item/step-item.js +14 -27
  145. package/dist/collection/components/step-item/step-item.js.map +1 -1
  146. package/dist/collection/components/switch/switch.js +4 -7
  147. package/dist/collection/components/switch/switch.js.map +1 -1
  148. package/dist/collection/components/tab/tab.css +1 -1
  149. package/dist/collection/components/tab/tab.js +3 -4
  150. package/dist/collection/components/tab/tab.js.map +1 -1
  151. package/dist/collection/components/tab-item/tab-item.css +1 -1
  152. package/dist/collection/components/tab-item/tab-item.js +1 -1
  153. package/dist/collection/components/table/table.js +1 -1
  154. package/dist/collection/components/table-cell/table-cell.js +1 -1
  155. package/dist/collection/components/table-header-cell/table-header-cell.js +1 -1
  156. package/dist/collection/components/table-header-row/table-header-row.js +1 -1
  157. package/dist/collection/components/table-row/table-row.js +1 -1
  158. package/dist/collection/components/tag/tag.js +2 -2
  159. package/dist/collection/components/textarea/textarea.js +8 -15
  160. package/dist/collection/components/textarea/textarea.js.map +1 -1
  161. package/dist/collection/components/tooltip/tooltip.js +8 -12
  162. package/dist/collection/components/tooltip/tooltip.js.map +1 -1
  163. package/dist/collection/components/upload/upload.js +2 -3
  164. package/dist/collection/components/upload/upload.js.map +1 -1
  165. package/dist/collection/pages/components/card/index.js +18 -0
  166. package/dist/collection/pages/scripts/menu.js +13 -0
  167. package/dist/collection/utils/floating-ui.js +10 -16
  168. package/dist/collection/utils/floating-ui.js.map +1 -1
  169. package/dist/components/br-avatar.js +117 -69
  170. package/dist/components/br-avatar.js.map +1 -1
  171. package/dist/components/br-breadcrumb.js +22 -25
  172. package/dist/components/br-breadcrumb.js.map +1 -1
  173. package/dist/components/br-button.js +3 -3
  174. package/dist/components/br-card.d.ts +11 -0
  175. package/dist/components/br-card.js +141 -0
  176. package/dist/components/br-card.js.map +1 -0
  177. package/dist/components/br-checkbox.js +1 -1
  178. package/dist/components/br-checkgroup.js +15 -17
  179. package/dist/components/br-checkgroup.js.map +1 -1
  180. package/dist/components/br-collapse.js +1 -1
  181. package/dist/components/br-divider.js +1 -1
  182. package/dist/components/br-dropdown.js +31 -39
  183. package/dist/components/br-dropdown.js.map +1 -1
  184. package/dist/components/br-footer-category.js +9 -9
  185. package/dist/components/br-footer-item.js +4 -4
  186. package/dist/components/br-footer-legal.js +3 -3
  187. package/dist/components/br-footer-logo.js +8 -7
  188. package/dist/components/br-footer-logo.js.map +1 -1
  189. package/dist/components/br-footer-social.js +5 -5
  190. package/dist/components/br-footer.js +15 -15
  191. package/dist/components/br-icon.js +1 -1
  192. package/dist/components/br-input.js +3 -3
  193. package/dist/components/br-item.js +3 -3
  194. package/dist/components/br-list.js +4 -4
  195. package/dist/components/br-loading.js +7 -6
  196. package/dist/components/br-loading.js.map +1 -1
  197. package/dist/components/br-magic-button.js +10 -9
  198. package/dist/components/br-magic-button.js.map +1 -1
  199. package/dist/components/br-message.js +12 -10
  200. package/dist/components/br-message.js.map +1 -1
  201. package/dist/components/br-radio.js +4 -4
  202. package/dist/components/br-scrim.js +44 -57
  203. package/dist/components/br-scrim.js.map +1 -1
  204. package/dist/components/br-select.js +41 -46
  205. package/dist/components/br-select.js.map +1 -1
  206. package/dist/components/br-step-item.js +36 -50
  207. package/dist/components/br-step-item.js.map +1 -1
  208. package/dist/components/br-step.js +30 -42
  209. package/dist/components/br-step.js.map +1 -1
  210. package/dist/components/br-switch.js +17 -21
  211. package/dist/components/br-switch.js.map +1 -1
  212. package/dist/components/br-tab-item.js +10 -10
  213. package/dist/components/br-tab.js +15 -16
  214. package/dist/components/br-tab.js.map +1 -1
  215. package/dist/components/br-table-cell.js +3 -3
  216. package/dist/components/br-table-header-cell.js +3 -3
  217. package/dist/components/br-table-header-row.js +3 -3
  218. package/dist/components/br-table-row.js +3 -3
  219. package/dist/components/br-table.js +6 -6
  220. package/dist/components/br-tag.js +8 -8
  221. package/dist/components/br-textarea.js +30 -37
  222. package/dist/components/br-textarea.js.map +1 -1
  223. package/dist/components/br-tooltip.js +111 -125
  224. package/dist/components/br-tooltip.js.map +1 -1
  225. package/dist/components/br-upload.js +14 -15
  226. package/dist/components/br-upload.js.map +1 -1
  227. package/dist/components/index.d.ts +2 -0
  228. package/dist/components/index.js +2 -0
  229. package/dist/components/{p-CwEkkt16.js → p-BUfNFi9N.js} +39 -47
  230. package/dist/components/p-BUfNFi9N.js.map +1 -0
  231. package/dist/components/{p-BU5QW70m.js → p-BlryBljm.js} +28 -33
  232. package/dist/components/p-BlryBljm.js.map +1 -0
  233. package/dist/components/{p-0V7YvY_S.js → p-CYtPDYp6.js} +22 -6
  234. package/dist/components/p-CYtPDYp6.js.map +1 -0
  235. package/dist/components/{p-1eKV5oxP.js → p-D0wwETCp.js} +8 -9
  236. package/dist/components/p-D0wwETCp.js.map +1 -0
  237. package/dist/components/{p-B3u7t9TB.js → p-DZhiQXGc.js} +13 -18
  238. package/dist/components/p-DZhiQXGc.js.map +1 -0
  239. package/dist/components/{p-DqQ_qkzV.js → p-DhONBlJ-.js} +6 -7
  240. package/dist/components/p-DhONBlJ-.js.map +1 -0
  241. package/dist/components/{p-DtU3ZpAC.js → p-DvuyuK9Y.js} +20 -26
  242. package/dist/components/{p-DtU3ZpAC.js.map → p-DvuyuK9Y.js.map} +1 -1
  243. package/dist/components/{p-DoUCJxLj.js → p-ssSt5UuQ.js} +6 -6
  244. package/dist/components/{p-B-uKqjsz.js → p-y6TZslWo.js} +21 -26
  245. package/dist/components/p-y6TZslWo.js.map +1 -0
  246. package/dist/custom-docs/output-docs.js +3 -5
  247. package/dist/custom-docs/output-docs.js.map +1 -1
  248. package/dist/custom-docs/path.js +1 -2
  249. package/dist/custom-docs/path.js.map +1 -1
  250. package/dist/custom-elements.json +341 -70
  251. package/dist/esm/br-avatar.entry.js +104 -31
  252. package/dist/esm/br-avatar.entry.js.map +1 -1
  253. package/dist/esm/br-breadcrumb.entry.js +6 -9
  254. package/dist/esm/br-breadcrumb.entry.js.map +1 -1
  255. package/dist/esm/br-button.br-icon.entry.js.map +1 -1
  256. package/dist/esm/br-button_2.entry.js +16 -3
  257. package/dist/esm/br-button_2.entry.js.map +1 -1
  258. package/dist/esm/br-card.entry.js +95 -0
  259. package/dist/esm/br-card.entry.js.map +1 -0
  260. package/dist/esm/br-checkbox.entry.js +8 -13
  261. package/dist/esm/br-checkbox.entry.js.map +1 -1
  262. package/dist/esm/br-checkgroup.entry.js +3 -5
  263. package/dist/esm/br-checkgroup.entry.js.map +1 -1
  264. package/dist/esm/br-collapse.br-list.entry.js.map +1 -1
  265. package/dist/esm/br-collapse_2.entry.js +14 -22
  266. package/dist/esm/br-collapse_2.entry.js.map +1 -1
  267. package/dist/esm/br-divider.entry.js +2 -3
  268. package/dist/esm/br-divider.entry.js.map +1 -1
  269. package/dist/esm/br-dropdown.entry.js +14 -21
  270. package/dist/esm/br-dropdown.entry.js.map +1 -1
  271. package/dist/esm/br-footer-category.entry.js +2 -2
  272. package/dist/esm/br-footer-item.entry.js +1 -1
  273. package/dist/esm/br-footer-legal.entry.js +1 -1
  274. package/dist/esm/br-footer-logo.entry.js +1 -1
  275. package/dist/esm/br-footer-logo.entry.js.map +1 -1
  276. package/dist/esm/br-footer-social.entry.js +1 -1
  277. package/dist/esm/br-footer.entry.js +1 -1
  278. package/dist/esm/br-input.br-radio.entry.js.map +1 -1
  279. package/dist/esm/br-input_2.entry.js +10 -17
  280. package/dist/esm/br-input_2.entry.js.map +1 -1
  281. package/dist/esm/br-item.entry.js +11 -10
  282. package/dist/esm/br-item.entry.js.map +1 -1
  283. package/dist/esm/br-loading.entry.js +4 -5
  284. package/dist/esm/br-loading.entry.js.map +1 -1
  285. package/dist/esm/br-magic-button.entry.js +2 -2
  286. package/dist/esm/br-magic-button.entry.js.map +1 -1
  287. package/dist/esm/br-message.entry.js +2 -2
  288. package/dist/esm/br-message.entry.js.map +1 -1
  289. package/dist/esm/br-scrim.entry.js +17 -29
  290. package/dist/esm/br-scrim.entry.js.map +1 -1
  291. package/dist/esm/br-select.entry.js +16 -20
  292. package/dist/esm/br-select.entry.js.map +1 -1
  293. package/dist/esm/br-step-item.entry.js +14 -27
  294. package/dist/esm/br-step-item.entry.js.map +1 -1
  295. package/dist/esm/br-step.entry.js +21 -32
  296. package/dist/esm/br-step.entry.js.map +1 -1
  297. package/dist/esm/br-switch.entry.js +4 -7
  298. package/dist/esm/br-switch.entry.js.map +1 -1
  299. package/dist/esm/br-tab-item.entry.js +2 -2
  300. package/dist/esm/br-tab-item.entry.js.map +1 -1
  301. package/dist/esm/br-tab.entry.js +4 -5
  302. package/dist/esm/br-tab.entry.js.map +1 -1
  303. package/dist/esm/br-table-cell.entry.js +1 -1
  304. package/dist/esm/br-table-header-cell.entry.js +1 -1
  305. package/dist/esm/br-table-header-row.entry.js +1 -1
  306. package/dist/esm/br-table-row.entry.js +1 -1
  307. package/dist/esm/br-table.entry.js +1 -1
  308. package/dist/esm/br-tag.entry.js +2 -2
  309. package/dist/esm/br-textarea.entry.js +8 -15
  310. package/dist/esm/br-textarea.entry.js.map +1 -1
  311. package/dist/esm/br-tooltip.entry.js +18 -28
  312. package/dist/esm/br-tooltip.entry.js.map +1 -1
  313. package/dist/esm/br-upload.entry.js +2 -3
  314. package/dist/esm/br-upload.entry.js.map +1 -1
  315. package/dist/esm/index-DmA0bHaX.js +4 -0
  316. package/dist/esm/loader.js +1 -1
  317. package/dist/esm/webcomponents.js +1 -1
  318. package/dist/hydrate/index.js +428 -350
  319. package/dist/hydrate/index.mjs +428 -350
  320. package/dist/types/components/avatar/avatar.d.ts +63 -27
  321. package/dist/types/components/card/card.d.ts +44 -0
  322. package/dist/types/components/icon/icon.d.ts +35 -0
  323. package/dist/types/components.d.ts +87 -32
  324. package/dist/webcomponents/br-avatar.entry.esm.js.map +1 -1
  325. package/dist/webcomponents/br-breadcrumb.entry.esm.js.map +1 -1
  326. package/dist/webcomponents/br-button.br-icon.entry.esm.js.map +1 -1
  327. package/dist/webcomponents/br-card.entry.esm.js.map +1 -0
  328. package/dist/webcomponents/br-checkbox.entry.esm.js.map +1 -1
  329. package/dist/webcomponents/br-checkgroup.entry.esm.js.map +1 -1
  330. package/dist/webcomponents/br-collapse.br-list.entry.esm.js.map +1 -1
  331. package/dist/webcomponents/br-divider.entry.esm.js.map +1 -1
  332. package/dist/webcomponents/br-dropdown.entry.esm.js.map +1 -1
  333. package/dist/webcomponents/br-footer-logo.entry.esm.js.map +1 -1
  334. package/dist/webcomponents/br-input.br-radio.entry.esm.js.map +1 -1
  335. package/dist/webcomponents/br-item.entry.esm.js.map +1 -1
  336. package/dist/webcomponents/br-loading.entry.esm.js.map +1 -1
  337. package/dist/webcomponents/br-magic-button.entry.esm.js.map +1 -1
  338. package/dist/webcomponents/br-message.entry.esm.js.map +1 -1
  339. package/dist/webcomponents/br-scrim.entry.esm.js.map +1 -1
  340. package/dist/webcomponents/br-select.entry.esm.js.map +1 -1
  341. package/dist/webcomponents/br-step-item.entry.esm.js.map +1 -1
  342. package/dist/webcomponents/br-step.entry.esm.js.map +1 -1
  343. package/dist/webcomponents/br-switch.entry.esm.js.map +1 -1
  344. package/dist/webcomponents/br-tab-item.entry.esm.js.map +1 -1
  345. package/dist/webcomponents/br-tab.entry.esm.js.map +1 -1
  346. package/dist/webcomponents/br-textarea.entry.esm.js.map +1 -1
  347. package/dist/webcomponents/br-tooltip.entry.esm.js.map +1 -1
  348. package/dist/webcomponents/br-upload.entry.esm.js.map +1 -1
  349. package/dist/webcomponents/{p-b16a7896.entry.js → p-096b0875.entry.js} +28 -40
  350. package/dist/webcomponents/{p-b16a7896.entry.js.map → p-096b0875.entry.js.map} +1 -1
  351. package/dist/webcomponents/{p-8b4d5bf1.entry.js → p-0b45efc3.entry.js} +7 -5
  352. package/dist/webcomponents/p-0b45efc3.entry.js.map +1 -0
  353. package/dist/webcomponents/{p-64545afe.entry.js → p-0fe0dcc1.entry.js} +5 -5
  354. package/dist/webcomponents/{p-744eb116.entry.js → p-16f8e426.entry.js} +15 -15
  355. package/dist/webcomponents/{p-67e47dd0.entry.js → p-1d018f30.entry.js} +4 -4
  356. package/dist/webcomponents/{p-d7a4225f.entry.js → p-22682cde.entry.js} +19 -24
  357. package/dist/webcomponents/p-22682cde.entry.js.map +1 -0
  358. package/dist/webcomponents/{p-c966ab17.entry.js → p-24f6adad.entry.js} +28 -35
  359. package/dist/webcomponents/p-24f6adad.entry.js.map +1 -0
  360. package/dist/webcomponents/{p-4f41615a.entry.js → p-2a407917.entry.js} +7 -7
  361. package/dist/webcomponents/{p-d7265a28.entry.js → p-3615200c.entry.js} +11 -10
  362. package/dist/webcomponents/p-3615200c.entry.js.map +1 -0
  363. package/dist/webcomponents/{p-0d46ca85.entry.js → p-46f1f54c.entry.js} +25 -30
  364. package/dist/webcomponents/p-46f1f54c.entry.js.map +1 -0
  365. package/dist/webcomponents/{p-07f5518d.entry.js → p-4b3042fb.entry.js} +44 -53
  366. package/dist/webcomponents/p-4b3042fb.entry.js.map +1 -0
  367. package/dist/webcomponents/{p-db84202e.entry.js → p-502c9692.entry.js} +4 -4
  368. package/dist/webcomponents/{p-6fcaf560.entry.js → p-62ac038c.entry.js} +44 -57
  369. package/dist/webcomponents/p-62ac038c.entry.js.map +1 -0
  370. package/dist/webcomponents/{p-59f07375.entry.js → p-70d4da25.entry.js} +10 -10
  371. package/dist/webcomponents/{p-b7c58efc.entry.js → p-761f7798.entry.js} +7 -7
  372. package/dist/webcomponents/{p-df308ecd.entry.js → p-83df407a.entry.js} +15 -17
  373. package/dist/webcomponents/p-83df407a.entry.js.map +1 -0
  374. package/dist/webcomponents/{p-25addf8c.entry.js → p-88bfa633.entry.js} +4 -4
  375. package/dist/webcomponents/{p-08702123.entry.js → p-8ab5744a.entry.js} +18 -24
  376. package/dist/webcomponents/{p-08702123.entry.js.map → p-8ab5744a.entry.js.map} +1 -1
  377. package/dist/webcomponents/{p-8dba2e0e.entry.js → p-8b15dfc8.entry.js} +114 -128
  378. package/dist/webcomponents/p-8b15dfc8.entry.js.map +1 -0
  379. package/dist/webcomponents/{p-02d3c9c1.entry.js → p-8b24abe6.entry.js} +40 -50
  380. package/dist/webcomponents/p-8b24abe6.entry.js.map +1 -0
  381. package/dist/webcomponents/{p-2190e7a9.entry.js → p-90abf633.entry.js} +5 -6
  382. package/dist/webcomponents/p-90abf633.entry.js.map +1 -0
  383. package/dist/webcomponents/{p-1457ba7e.entry.js → p-94afd91b.entry.js} +10 -9
  384. package/dist/webcomponents/p-94afd91b.entry.js.map +1 -0
  385. package/dist/webcomponents/{p-fb3e3276.entry.js → p-9ed0a45f.entry.js} +9 -8
  386. package/dist/webcomponents/p-9ed0a45f.entry.js.map +1 -0
  387. package/dist/webcomponents/{p-a9af8d3e.entry.js → p-a802ca08.entry.js} +13 -14
  388. package/dist/webcomponents/p-a802ca08.entry.js.map +1 -0
  389. package/dist/webcomponents/{p-e5b33b7e.entry.js → p-abf81334.entry.js} +15 -19
  390. package/dist/webcomponents/{p-e5b33b7e.entry.js.map → p-abf81334.entry.js.map} +1 -1
  391. package/dist/webcomponents/{p-a06b7d9d.entry.js → p-ac4ce40c.entry.js} +30 -44
  392. package/dist/webcomponents/{p-a06b7d9d.entry.js.map → p-ac4ce40c.entry.js.map} +1 -1
  393. package/dist/webcomponents/{p-f7a210a8.entry.js → p-b565e6e5.entry.js} +4 -4
  394. package/dist/webcomponents/{p-33ab56d5.entry.js → p-b600b95e.entry.js} +18 -21
  395. package/dist/webcomponents/p-b600b95e.entry.js.map +1 -0
  396. package/dist/webcomponents/{p-41443414.entry.js → p-bbd38dd7.entry.js} +4 -4
  397. package/dist/webcomponents/{p-cbaac66c.entry.js → p-cac6afba.entry.js} +29 -37
  398. package/dist/webcomponents/{p-cbaac66c.entry.js.map → p-cac6afba.entry.js.map} +1 -1
  399. package/dist/webcomponents/{p-ac0f37e9.entry.js → p-d549a87b.entry.js} +4 -4
  400. package/dist/webcomponents/{p-51cc97aa.entry.js → p-deb094fb.entry.js} +4 -4
  401. package/dist/webcomponents/{p-3350d161.entry.js → p-df6e707a.entry.js} +116 -66
  402. package/dist/webcomponents/p-df6e707a.entry.js.map +1 -0
  403. package/dist/webcomponents/p-ee9fe4a2.entry.js +119 -0
  404. package/dist/webcomponents/p-ee9fe4a2.entry.js.map +1 -0
  405. package/dist/webcomponents/{p-238a6399.entry.js → p-f1738ae0.entry.js} +16 -17
  406. package/dist/webcomponents/p-f1738ae0.entry.js.map +1 -0
  407. package/dist/webcomponents/{p-9e1743b6.entry.js → p-fa0aeb0f.entry.js} +23 -8
  408. package/dist/webcomponents/p-fa0aeb0f.entry.js.map +1 -0
  409. package/dist/webcomponents/webcomponents.esm.js +15 -15
  410. package/dist/webcomponents.html-custom-data.json +15 -6
  411. package/package.json +1 -1
  412. package/dist/cjs/tslib.es6-CF44W9Bn.js +0 -42
  413. package/dist/cjs/tslib.es6-CF44W9Bn.js.map +0 -1
  414. package/dist/components/p-0V7YvY_S.js.map +0 -1
  415. package/dist/components/p-1eKV5oxP.js.map +0 -1
  416. package/dist/components/p-B-uKqjsz.js.map +0 -1
  417. package/dist/components/p-B3u7t9TB.js.map +0 -1
  418. package/dist/components/p-BU5QW70m.js.map +0 -1
  419. package/dist/components/p-CwEkkt16.js.map +0 -1
  420. package/dist/components/p-DIPMDb5E.js +0 -55
  421. package/dist/components/p-DIPMDb5E.js.map +0 -1
  422. package/dist/components/p-DqQ_qkzV.js.map +0 -1
  423. package/dist/esm/tslib.es6-DIPMDb5E.js +0 -40
  424. package/dist/esm/tslib.es6-DIPMDb5E.js.map +0 -1
  425. package/dist/webcomponents/p-02d3c9c1.entry.js.map +0 -1
  426. package/dist/webcomponents/p-07f5518d.entry.js.map +0 -1
  427. package/dist/webcomponents/p-0d46ca85.entry.js.map +0 -1
  428. package/dist/webcomponents/p-1457ba7e.entry.js.map +0 -1
  429. package/dist/webcomponents/p-2190e7a9.entry.js.map +0 -1
  430. package/dist/webcomponents/p-238a6399.entry.js.map +0 -1
  431. package/dist/webcomponents/p-3350d161.entry.js.map +0 -1
  432. package/dist/webcomponents/p-33ab56d5.entry.js.map +0 -1
  433. package/dist/webcomponents/p-6fcaf560.entry.js.map +0 -1
  434. package/dist/webcomponents/p-8b4d5bf1.entry.js.map +0 -1
  435. package/dist/webcomponents/p-8dba2e0e.entry.js.map +0 -1
  436. package/dist/webcomponents/p-9e1743b6.entry.js.map +0 -1
  437. package/dist/webcomponents/p-DIPMDb5E.js +0 -55
  438. package/dist/webcomponents/p-DIPMDb5E.js.map +0 -1
  439. package/dist/webcomponents/p-a9af8d3e.entry.js.map +0 -1
  440. package/dist/webcomponents/p-c966ab17.entry.js.map +0 -1
  441. package/dist/webcomponents/p-d7265a28.entry.js.map +0 -1
  442. package/dist/webcomponents/p-d7a4225f.entry.js.map +0 -1
  443. package/dist/webcomponents/p-df308ecd.entry.js.map +0 -1
  444. package/dist/webcomponents/p-fb3e3276.entry.js.map +0 -1
  445. /package/dist/components/{p-DoUCJxLj.js.map → p-ssSt5UuQ.js.map} +0 -0
  446. /package/dist/webcomponents/{p-64545afe.entry.js.map → p-0fe0dcc1.entry.js.map} +0 -0
  447. /package/dist/webcomponents/{p-744eb116.entry.js.map → p-16f8e426.entry.js.map} +0 -0
  448. /package/dist/webcomponents/{p-67e47dd0.entry.js.map → p-1d018f30.entry.js.map} +0 -0
  449. /package/dist/webcomponents/{p-4f41615a.entry.js.map → p-2a407917.entry.js.map} +0 -0
  450. /package/dist/webcomponents/{p-db84202e.entry.js.map → p-502c9692.entry.js.map} +0 -0
  451. /package/dist/webcomponents/{p-59f07375.entry.js.map → p-70d4da25.entry.js.map} +0 -0
  452. /package/dist/webcomponents/{p-b7c58efc.entry.js.map → p-761f7798.entry.js.map} +0 -0
  453. /package/dist/webcomponents/{p-25addf8c.entry.js.map → p-88bfa633.entry.js.map} +0 -0
  454. /package/dist/webcomponents/{p-f7a210a8.entry.js.map → p-b565e6e5.entry.js.map} +0 -0
  455. /package/dist/webcomponents/{p-41443414.entry.js.map → p-bbd38dd7.entry.js.map} +0 -0
  456. /package/dist/webcomponents/{p-ac0f37e9.entry.js.map → p-d549a87b.entry.js.map} +0 -0
  457. /package/dist/webcomponents/{p-51cc97aa.entry.js.map → p-deb094fb.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"scrim.js","sourceRoot":"","sources":["../../../../../../packages/webcomponents/src/components/scrim/scrim.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/scrim?tab=designer).\n *\n * @slot default - Elemento que será exibido junto com o Scrim, devendo ser fornecido através do slot. Esse elemento representa o conteúdo principal a ser destacado sobre o fundo escurecido.\n * @slot activator - Elemento que, quando clicado, ativa/desativa o scrim. Tem prioridade sobre a propriedade 'activator'.\n */\n@Component({\n tag: 'br-scrim',\n styleUrl: 'scrim.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Scrim {\n /**\n * Referência ao elemento host do componente.\n */\n @Element() el: HTMLBrScrimElement\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 = `br-scrim-${ScrimId++}`\n\n /**\n * Ativa/desativa o scrim\n */\n @Prop({ reflect: true }) isOpen: boolean = false\n\n /**\n * Posiciona o conteúdo no topo, centro, direita, esquerda, abaixo dentro do scrim\n */\n @Prop() positionContent: 'top' | 'center' | 'right' | 'left' | 'bottom'\n\n /**\n * Desativa o fechamento do scrim ao ser clicado\n */\n @Prop() disableCloseOnClick: boolean = false\n\n /**\n * Define o valor de z-index do scrim\n */\n @Prop() zIndex: number | null = null\n\n /**\n * Define um valor CSS personalizado para o background do scrim\n */\n @Prop() customBackground: string | null = null\n\n /**\n * Define a opacidade personalizada do scrim\n */\n @Prop() customOpacity: number | null = null\n\n /**\n * Define o modo de exibição do scrim:\n * - 'fullscreen': Ocupa toda a tela (position: fixed).\n * - 'parent': Ocupa apenas o elemento pai (position: absolute).\n * O elemento pai deve ter `position: relative` ou outro valor de posicionamento diferente de `static`.\n */\n @Prop() displayMode: 'fullscreen' | 'parent' = 'fullscreen'\n\n /**\n * Define a estratégia de manipulação de rolagem quando scrim está aberto\n * - 'block': Impede a rolagem completamente\n * - 'close': Fecha o scrim quando ocorre rolagem\n */\n @Prop() scrollStrategy: 'block' | 'close'\n\n /**\n * Determina quanto de rolagem (em pixels) é necessário para acionar a ação de fechamento automático do scrim.\n */\n @Prop() scrollThreshold: number = 50\n\n /**\n * Define o seletor para o elemento activator.\n * Pode ser:\n * - Um seletor CSS (ex: '.button-class', '#button-id')\n * - A string 'parent' para usar o elemento pai como activator\n * Nota: O slot 'activator' tem prioridade sobre esta propriedade.\n */\n @Prop() activator: string | null = null\n\n /** Indica que o scrim foi aberto. */\n @Event() brScrimOpen: EventEmitter\n\n /** Indica que o scrim foi fechado */\n @Event() brScrimClose: EventEmitter\n\n @State() isActive: boolean = false\n @State() hasActivatorSlot: boolean = false\n\n // ======================================================================\n // PROPRIEDADES PRIVADAS E VARIÁVEIS INTERNAS\n // ======================================================================\n private contentRef: HTMLDivElement | null = null\n private activatorElement: HTMLElement | null = null\n private scrollOffset: number = 0\n private lastScrollTop: number = 0\n private previouslyFocusedElement: HTMLElement | null | undefined = null\n\n private static readonly FOCUSABLE_SELECTORS = [\n 'a[href]:not([disabled])',\n 'button:not([disabled])',\n 'br-button:not([disabled])',\n 'input:not([disabled])',\n 'br-input:not([disabled])',\n 'select:not([disabled])',\n 'br-select:not([disabled])',\n 'textarea:not([disabled])',\n 'br-textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(',')\n\n // ======================================================================\n // LIFECYCLE HOOKS E WATCHERS\n // ======================================================================\n @Watch('isOpen')\n handleOpenChange(newValue: boolean) {\n this.isActive = newValue\n this.updateStyles()\n\n if (this.isActive) {\n this.previouslyFocusedElement = document.activeElement as HTMLElement\n this.applyScrollStrategy()\n setTimeout(() => {\n this.focusFirstElement()\n }, 100)\n this.brScrimOpen.emit()\n } else {\n this.resetScrolling()\n this.restoreFocus()\n this.brScrimClose.emit()\n }\n }\n\n @Watch('zIndex')\n @Watch('customBackground')\n @Watch('customOpacity')\n updateStyles() {\n if (this.zIndex !== null && this.zIndex !== undefined) {\n this.el.style.zIndex = `${this.zIndex}`\n this.el.style.setProperty('--z-index-layer-4', `${this.zIndex}`)\n }\n if (this.customBackground !== null) {\n this.el.style.setProperty('--surface-overlay-scrim', this.customBackground)\n }\n if (this.customOpacity !== null) {\n this.el.style.setProperty('--br-scrim-opacity', `${this.customOpacity}`)\n }\n }\n\n @Watch('activator')\n handleActivatorChange() {\n this.removeActivatorClickListener()\n this.setupActivator()\n }\n\n componentWillLoad() {\n this.hasActivatorSlot = this.checkActivatorSlot('activator')\n }\n\n componentDidLoad() {\n this.isActive = this.isOpen\n this.updateStyles()\n if (this.isActive) {\n this.applyScrollStrategy()\n this.focusFirstElement()\n }\n this.setupActivator()\n this.setupActivatorSlotClick()\n this.contentRef.addEventListener('keydown', this.handleKeyDown)\n }\n\n connectedCallback() {\n if (this.scrollStrategy === 'close') {\n window.addEventListener('scroll', this.handleScrollClose)\n }\n }\n\n disconnectedCallback() {\n window.removeEventListener('scroll', this.handleScrollClose)\n this.contentRef.removeEventListener('keydown', this.handleKeyDown)\n this.removeActivatorClickListener()\n this.cleanupActivatorSlotClick()\n }\n\n // ======================================================================\n // GERENCIAMENTO DO ACTIVATOR (ELEMENTO ACIONADOR)\n // ======================================================================\n private checkActivatorSlot(slotName: string): boolean {\n return this.el.querySelector(`[slot=\"${slotName}\"]`) !== null\n }\n\n private setupActivatorSlotClick() {\n const slotEl = this.el.shadowRoot?.querySelector('slot[name=\"activator\"]') as HTMLSlotElement\n if (slotEl === null || slotEl === undefined) return\n\n const assignedElements = slotEl.assignedElements?.() ?? []\n\n if (assignedElements.length === 1) {\n const el = assignedElements[0] as HTMLElement\n el.addEventListener('click', this.handleActivatorClick)\n } else if (assignedElements.length > 1) {\n console.warn('br-scrim: Slot \"activator\" deve conter apenas um elemento para aplicar o onClick automaticamente.')\n }\n }\n\n private setupActivator() {\n this.removeActivatorClickListener()\n this.activatorElement = null\n\n if (this.hasActivatorSlot || this.activator == null || this.activator === '') {\n return\n }\n\n if (this.activator === 'parent') {\n const parentElement = this.el.parentElement\n if (parentElement !== null) {\n this.activatorElement = parentElement\n }\n } else {\n try {\n const element = document.querySelector(this.activator)\n if (element instanceof HTMLElement) {\n this.activatorElement = element\n }\n } catch {\n console.warn(`br-scrim: Seletor activator inválido: ${this.activator}`)\n }\n }\n\n this.addActivatorClickListener()\n }\n\n private handleActivatorClick = () => {\n this.toggle()\n }\n\n private addActivatorClickListener() {\n if (this.activatorElement === null || this.activatorElement === undefined) return\n this.activatorElement.addEventListener('click', this.handleActivatorClick)\n }\n\n private removeActivatorClickListener() {\n if (this.activatorElement === null || this.activatorElement === undefined) return\n this.activatorElement.removeEventListener('click', this.handleActivatorClick)\n }\n\n private cleanupActivatorSlotClick() {\n const slotEl = this.el.shadowRoot?.querySelector('slot[name=\"activator\"]') as HTMLSlotElement\n const assignedElements = slotEl?.assignedElements?.() ?? []\n\n if (assignedElements.length === 1) {\n assignedElements[0].removeEventListener('click', this.handleActivatorClick)\n }\n }\n\n // ======================================================================\n // ESTRATÉGIAS DE ROLAGEM (SCROLL)\n // ======================================================================\n private applyScrollStrategy() {\n if (this.scrollStrategy === 'block') {\n this.enableScrollBlock()\n } else if (this.scrollStrategy === 'close') {\n this.enableScrollWatcher()\n }\n }\n\n private enableScrollBlock() {\n this.scrollOffset = window.scrollY\n document.body.style.setProperty('position', 'fixed')\n document.body.style.setProperty('top', `-${this.scrollOffset}px`)\n document.body.style.setProperty('left', '0')\n document.body.style.setProperty('right', '0')\n document.body.style.setProperty('width', '100%')\n document.documentElement.style.setProperty('overflow', 'hidden')\n\n window.addEventListener('scroll', this.handleBlockScroll)\n }\n\n private enableScrollWatcher() {\n window.addEventListener('scroll', this.handleScrollClose)\n }\n\n private handleBlockScroll = (e: Event) => {\n if (this.scrollStrategy === 'block' && this.isActive) {\n window.scrollTo(0, this.scrollOffset)\n e.preventDefault()\n e.stopPropagation()\n }\n }\n\n private resetScrolling() {\n if (this.scrollStrategy === 'block') {\n document.body.style.removeProperty('position')\n document.body.style.removeProperty('top')\n document.body.style.removeProperty('left')\n document.body.style.removeProperty('right')\n document.body.style.removeProperty('width')\n document.documentElement.style.removeProperty('overflow')\n window.removeEventListener('scroll', this.handleBlockScroll)\n window.scrollTo(0, this.scrollOffset)\n }\n window.removeEventListener('scroll', this.handleScrollClose)\n }\n\n private handleScrollClose = () => {\n if (this.scrollStrategy === 'close' && this.isActive) {\n const currentScroll = window.scrollY\n if (Math.abs(currentScroll - this.lastScrollTop) > this.scrollThreshold) {\n this.handleOpenChange(false)\n }\n this.lastScrollTop = currentScroll\n }\n }\n\n // ======================================================================\n // ACESSIBILIDADE E GERENCIAMENTO DE FOCO\n // ======================================================================\n private focusFirstElement() {\n if (this.contentRef == null) return\n\n this.contentRef.setAttribute('tabindex', '-1')\n this.contentRef.focus()\n\n const focusableElements = this.getFocusableElements()\n\n if (focusableElements.length > 0) {\n const firstElement = focusableElements[0]\n if (firstElement !== null && firstElement !== undefined) {\n firstElement.scrollIntoView({ block: 'nearest', inline: 'nearest' })\n firstElement.focus({ preventScroll: true })\n }\n }\n }\n\n private restoreFocus() {\n let targetElement: HTMLElement | null = null\n\n if (this.previouslyFocusedElement instanceof HTMLElement && this.previouslyFocusedElement.isConnected) {\n targetElement = this.previouslyFocusedElement\n } else if (this.activatorElement instanceof HTMLElement) {\n targetElement = this.activatorElement\n } else {\n const slotEl = this.el.shadowRoot?.querySelector('slot[name=\"activator\"]') as HTMLSlotElement\n if (this.hasActivatorSlot) {\n const assignedElements = slotEl.assignedElements?.() ?? []\n if (assignedElements.length > 0 && assignedElements[0] instanceof HTMLElement) {\n targetElement = assignedElements[0] as HTMLElement\n }\n }\n }\n\n if (targetElement !== null && targetElement !== undefined) {\n setTimeout(() => {\n try {\n targetElement?.focus()\n } catch (error) {\n console.warn('br-scrim: Erro ao restaurar foco:', error)\n }\n }, 100)\n }\n }\n\n private getFocusableElements(): HTMLElement[] {\n if (this.contentRef == null) return []\n\n const defaultSlot = this.contentRef.querySelector('slot:not([name])') as HTMLSlotElement\n if (defaultSlot === null || defaultSlot === undefined) return []\n\n const assignedElements = defaultSlot.assignedElements({ flatten: true })\n const focusableElements: HTMLElement[] = []\n\n assignedElements.forEach((el) => {\n if (!(el instanceof HTMLElement)) return\n\n if (el.matches(Scrim.FOCUSABLE_SELECTORS)) {\n focusableElements.push(el)\n }\n\n const nestedFocusables = Array.from(el.querySelectorAll<HTMLElement>(Scrim.FOCUSABLE_SELECTORS))\n focusableElements.push(...nestedFocusables)\n })\n\n return this.filterVisibleElements(focusableElements)\n }\n\n private filterVisibleElements(elements: HTMLElement[]): HTMLElement[] {\n return elements.filter(\n (el) => el.offsetWidth > 0 && el.offsetHeight > 0 && getComputedStyle(el).visibility !== 'hidden'\n )\n }\n\n // ======================================================================\n // NAVEGAÇÃO POR TECLADO\n // ======================================================================\n private handleKeyDown = (event: KeyboardEvent) => {\n if (!this.isActive) return\n\n if (this.shouldHandleEscape(event)) {\n this.handleOpenChange(false)\n return\n }\n\n if (event.key === 'Tab') {\n this.handleTabNavigation(event)\n }\n }\n\n private shouldHandleEscape(event: KeyboardEvent): boolean {\n return (event.key === 'Escape' || event.key === 'Esc') && this.isActive && !this.disableCloseOnClick\n }\n\n private handleTabNavigation(event: KeyboardEvent): void {\n const focusableElements = this.getFocusableElements()\n if (focusableElements.length === 0) {\n event.preventDefault()\n return\n }\n\n const firstElement = focusableElements[0]\n const lastElement = focusableElements[focusableElements.length - 1]\n const isTabForward = !event.shiftKey\n\n if (this.shouldTrapFocus(isTabForward, firstElement, lastElement)) {\n event.preventDefault()\n this.wrapFocus(isTabForward, firstElement, lastElement)\n }\n }\n\n private shouldTrapFocus(isTabForward: boolean, firstElement: HTMLElement, lastElement: HTMLElement): boolean {\n return (\n (isTabForward && document.activeElement === lastElement) ||\n (!isTabForward && document.activeElement === firstElement)\n )\n }\n\n private wrapFocus(isTabForward: boolean, firstElement: HTMLElement, lastElement: HTMLElement): void {\n ;(isTabForward ? firstElement : lastElement).focus()\n }\n\n // ======================================================================\n // MANIPULAÇÃO DE EVENTOS E UTILITÁRIOS\n // ======================================================================\n private handleMaskClick = (_event: MouseEvent) => {\n if (!this.disableCloseOnClick) {\n this.close()\n }\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-scrim': true,\n opened: this.isActive,\n 'scroll-block': this.scrollStrategy === 'block',\n 'position-top': this.positionContent === 'top',\n 'position-bottom': this.positionContent === 'bottom',\n 'position-left': this.positionContent === 'left',\n 'position-right': this.positionContent === 'right',\n 'position-center': this.positionContent === 'center',\n 'mode-fullscreen': this.displayMode === 'fullscreen',\n 'mode-parent': this.displayMode === 'parent',\n }\n }\n\n // ======================================================================\n // MÉTODOS PÚBLICOS (API)\n // ======================================================================\n /**\n * Define o limite de rolagem para o fechamento automático do scrim.\n */\n @Method()\n async setScrollThreshold(threshold: number) {\n this.scrollThreshold = threshold\n }\n\n /**\n * Método público para exibir o scrim\n */\n @Method()\n async open() {\n this.handleOpenChange(true)\n }\n\n /**\n * Método público para esconder o scrim\n */\n @Method()\n async close() {\n this.handleOpenChange(false)\n }\n\n /**\n * Método público para alternar o estado de exibição do scrim\n */\n @Method()\n async toggle() {\n this.handleOpenChange(!this.isActive)\n }\n\n render() {\n return (\n <Host>\n <slot name=\"activator\"></slot>\n <div\n class={this.getCssClassMap()}\n id={this.customId}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-hidden={this.isActive ? 'false' : 'true'}\n data-visible={this.isActive ? 'true' : 'false'}\n >\n <div class=\"mask\" onClick={this.handleMaskClick}></div>\n <div\n ref={(el) => (this.contentRef = el)}\n class=\"content\"\n tabIndex={-1}\n onKeyDown={this.handleKeyDown}\n aria-label=\"Conteúdo do diálogo\"\n >\n <slot></slot>\n </div>\n </div>\n </Host>\n )\n }\n}\n\nlet ScrimId = 0\n"]}
1
+ {"version":3,"file":"scrim.js","sourceRoot":"","sources":["../../../../../../packages/webcomponents/src/components/scrim/scrim.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/scrim?tab=designer).\n *\n * @slot default - Elemento que será exibido junto com o Scrim, devendo ser fornecido através do slot. Esse elemento representa o conteúdo principal a ser destacado sobre o fundo escurecido.\n * @slot activator - Elemento que, quando clicado, ativa/desativa o scrim. Tem prioridade sobre a propriedade 'activator'.\n */\n@Component({\n tag: 'br-scrim',\n styleUrl: 'scrim.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Scrim {\n /**\n * Referência ao elemento host do componente.\n */\n @Element() el: HTMLBrScrimElement\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 = `br-scrim-${ScrimId++}`\n\n /**\n * Ativa/desativa o scrim\n */\n @Prop({ reflect: true }) isOpen: boolean = false\n\n /**\n * Posiciona o conteúdo no topo, centro, direita, esquerda, abaixo dentro do scrim\n */\n @Prop() positionContent: 'top' | 'center' | 'right' | 'left' | 'bottom'\n\n /**\n * Desativa o fechamento do scrim ao ser clicado\n */\n @Prop() disableCloseOnClick: boolean = false\n\n /**\n * Define o valor de z-index do scrim\n */\n @Prop() zIndex: number | null = null\n\n /**\n * Define um valor CSS personalizado para o background do scrim\n */\n @Prop() customBackground: string | null = null\n\n /**\n * Define a opacidade personalizada do scrim\n */\n @Prop() customOpacity: number | null = null\n\n /**\n * Define o modo de exibição do scrim:\n * - 'fullscreen': Ocupa toda a tela (position: fixed).\n * - 'parent': Ocupa apenas o elemento pai (position: absolute).\n * O elemento pai deve ter `position: relative` ou outro valor de posicionamento diferente de `static`.\n */\n @Prop() displayMode: 'fullscreen' | 'parent' = 'fullscreen'\n\n /**\n * Define a estratégia de manipulação de rolagem quando scrim está aberto\n * - 'block': Impede a rolagem completamente\n * - 'close': Fecha o scrim quando ocorre rolagem\n */\n @Prop() scrollStrategy: 'block' | 'close'\n\n /**\n * Determina quanto de rolagem (em pixels) é necessário para acionar a ação de fechamento automático do scrim.\n */\n @Prop() scrollThreshold: number = 50\n\n /**\n * Define o seletor para o elemento activator.\n * Pode ser:\n * - Um seletor CSS (ex: '.button-class', '#button-id')\n * - A string 'parent' para usar o elemento pai como activator\n * Nota: O slot 'activator' tem prioridade sobre esta propriedade.\n */\n @Prop() activator: string | null = null\n\n /** Indica que o scrim foi aberto. */\n @Event() brScrimOpen: EventEmitter\n\n /** Indica que o scrim foi fechado */\n @Event() brScrimClose: EventEmitter\n\n @State() isActive: boolean = false\n @State() hasActivatorSlot: boolean = false\n\n // ======================================================================\n // PROPRIEDADES PRIVADAS E VARIÁVEIS INTERNAS\n // ======================================================================\n private contentRef: HTMLDivElement | null = null\n private activatorElement: HTMLElement | null = null\n private scrollOffset: number = 0\n private lastScrollTop: number = 0\n private previouslyFocusedElement: HTMLElement | null | undefined = null\n\n private static readonly FOCUSABLE_SELECTORS = [\n 'a[href]:not([disabled])',\n 'button:not([disabled])',\n 'br-button:not([disabled])',\n 'input:not([disabled])',\n 'br-input:not([disabled])',\n 'select:not([disabled])',\n 'br-select:not([disabled])',\n 'textarea:not([disabled])',\n 'br-textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(',')\n\n // ======================================================================\n // LIFECYCLE HOOKS E WATCHERS\n // ======================================================================\n @Watch('isOpen')\n handleOpenChange(newValue: boolean) {\n this.isActive = newValue\n this.updateStyles()\n\n if (this.isActive) {\n this.previouslyFocusedElement = document.activeElement as HTMLElement\n this.applyScrollStrategy()\n setTimeout(() => {\n this.focusFirstElement()\n }, 100)\n this.brScrimOpen.emit()\n } else {\n this.resetScrolling()\n this.restoreFocus()\n this.brScrimClose.emit()\n }\n }\n\n @Watch('zIndex')\n @Watch('customBackground')\n @Watch('customOpacity')\n updateStyles() {\n if (this.zIndex !== null && this.zIndex !== undefined) {\n this.el.style.zIndex = `${this.zIndex}`\n this.el.style.setProperty('--z-index-layer-4', `${this.zIndex}`)\n }\n if (this.customBackground !== null) {\n this.el.style.setProperty('--surface-overlay-scrim', this.customBackground)\n }\n if (this.customOpacity !== null) {\n this.el.style.setProperty('--br-scrim-opacity', `${this.customOpacity}`)\n }\n }\n\n @Watch('activator')\n handleActivatorChange() {\n this.removeActivatorClickListener()\n this.setupActivator()\n }\n\n componentWillLoad() {\n this.hasActivatorSlot = this.checkActivatorSlot('activator')\n }\n\n componentDidLoad() {\n this.isActive = this.isOpen\n this.updateStyles()\n if (this.isActive) {\n this.applyScrollStrategy()\n this.focusFirstElement()\n }\n this.setupActivator()\n this.setupActivatorSlotClick()\n this.contentRef.addEventListener('keydown', this.handleKeyDown)\n }\n\n connectedCallback() {\n if (this.scrollStrategy === 'close') {\n window.addEventListener('scroll', this.handleScrollClose)\n }\n }\n\n disconnectedCallback() {\n window.removeEventListener('scroll', this.handleScrollClose)\n this.contentRef.removeEventListener('keydown', this.handleKeyDown)\n this.removeActivatorClickListener()\n this.cleanupActivatorSlotClick()\n }\n\n // ======================================================================\n // GERENCIAMENTO DO ACTIVATOR (ELEMENTO ACIONADOR)\n // ======================================================================\n private checkActivatorSlot(slotName: string): boolean {\n return this.el.querySelector(`[slot=\"${slotName}\"]`) !== null\n }\n\n private setupActivatorSlotClick() {\n const slotEl = this.el.shadowRoot?.querySelector('slot[name=\"activator\"]') as HTMLSlotElement\n if (slotEl === null || slotEl === undefined) return\n\n const assignedElements = slotEl.assignedElements?.() ?? []\n\n if (assignedElements.length === 1) {\n const el = assignedElements[0] as HTMLElement\n el.addEventListener('click', this.handleActivatorClick)\n } else if (assignedElements.length > 1) {\n console.warn('br-scrim: Slot \"activator\" deve conter apenas um elemento para aplicar o onClick automaticamente.')\n }\n }\n\n private setupActivator() {\n this.removeActivatorClickListener()\n this.activatorElement = null\n\n if (this.hasActivatorSlot || this.activator == null || this.activator === '') {\n return\n }\n\n if (this.activator === 'parent') {\n const parentElement = this.el.parentElement\n if (parentElement !== null) {\n this.activatorElement = parentElement\n }\n } else {\n try {\n const element = document.querySelector(this.activator)\n if (element instanceof HTMLElement) {\n this.activatorElement = element\n }\n } catch {\n console.warn(`br-scrim: Seletor activator inválido: ${this.activator}`)\n }\n }\n\n this.addActivatorClickListener()\n }\n\n private handleActivatorClick = () => {\n this.toggle()\n }\n\n private addActivatorClickListener() {\n if (this.activatorElement === null || this.activatorElement === undefined) return\n this.activatorElement.addEventListener('click', this.handleActivatorClick)\n }\n\n private removeActivatorClickListener() {\n if (this.activatorElement === null || this.activatorElement === undefined) return\n this.activatorElement.removeEventListener('click', this.handleActivatorClick)\n }\n\n private cleanupActivatorSlotClick() {\n const slotEl = this.el.shadowRoot?.querySelector('slot[name=\"activator\"]') as HTMLSlotElement\n const assignedElements = slotEl?.assignedElements?.() ?? []\n\n if (assignedElements.length === 1) {\n assignedElements[0].removeEventListener('click', this.handleActivatorClick)\n }\n }\n\n // ======================================================================\n // ESTRATÉGIAS DE ROLAGEM (SCROLL)\n // ======================================================================\n private applyScrollStrategy() {\n if (this.scrollStrategy === 'block') {\n this.enableScrollBlock()\n } else if (this.scrollStrategy === 'close') {\n this.enableScrollWatcher()\n }\n }\n\n private enableScrollBlock() {\n this.scrollOffset = window.scrollY\n document.body.style.setProperty('position', 'fixed')\n document.body.style.setProperty('top', `-${this.scrollOffset}px`)\n document.body.style.setProperty('left', '0')\n document.body.style.setProperty('right', '0')\n document.body.style.setProperty('width', '100%')\n document.documentElement.style.setProperty('overflow', 'hidden')\n\n window.addEventListener('scroll', this.handleBlockScroll)\n }\n\n private enableScrollWatcher() {\n window.addEventListener('scroll', this.handleScrollClose)\n }\n\n private handleBlockScroll = (e: Event) => {\n if (this.scrollStrategy === 'block' && this.isActive) {\n window.scrollTo(0, this.scrollOffset)\n e.preventDefault()\n e.stopPropagation()\n }\n }\n\n private resetScrolling() {\n if (this.scrollStrategy === 'block') {\n document.body.style.removeProperty('position')\n document.body.style.removeProperty('top')\n document.body.style.removeProperty('left')\n document.body.style.removeProperty('right')\n document.body.style.removeProperty('width')\n document.documentElement.style.removeProperty('overflow')\n window.removeEventListener('scroll', this.handleBlockScroll)\n window.scrollTo(0, this.scrollOffset)\n }\n window.removeEventListener('scroll', this.handleScrollClose)\n }\n\n private handleScrollClose = () => {\n if (this.scrollStrategy === 'close' && this.isActive) {\n const currentScroll = window.scrollY\n if (Math.abs(currentScroll - this.lastScrollTop) > this.scrollThreshold) {\n this.handleOpenChange(false)\n }\n this.lastScrollTop = currentScroll\n }\n }\n\n // ======================================================================\n // ACESSIBILIDADE E GERENCIAMENTO DE FOCO\n // ======================================================================\n private focusFirstElement() {\n if (this.contentRef == null) return\n\n this.contentRef.setAttribute('tabindex', '-1')\n this.contentRef.focus()\n\n const focusableElements = this.getFocusableElements()\n\n if (focusableElements.length > 0) {\n const firstElement = focusableElements[0]\n if (firstElement !== null && firstElement !== undefined) {\n firstElement.scrollIntoView({ block: 'nearest', inline: 'nearest' })\n firstElement.focus({ preventScroll: true })\n }\n }\n }\n\n private restoreFocus() {\n let targetElement: HTMLElement | null = null\n\n if (this.previouslyFocusedElement instanceof HTMLElement && this.previouslyFocusedElement.isConnected) {\n targetElement = this.previouslyFocusedElement\n } else if (this.activatorElement instanceof HTMLElement) {\n targetElement = this.activatorElement\n } else {\n const slotEl = this.el.shadowRoot?.querySelector('slot[name=\"activator\"]') as HTMLSlotElement\n if (this.hasActivatorSlot) {\n const assignedElements = slotEl.assignedElements?.() ?? []\n if (assignedElements.length > 0 && assignedElements[0] instanceof HTMLElement) {\n targetElement = assignedElements[0] as HTMLElement\n }\n }\n }\n\n if (targetElement !== null && targetElement !== undefined) {\n setTimeout(() => {\n try {\n targetElement?.focus()\n } catch (error) {\n console.warn('br-scrim: Erro ao restaurar foco:', error)\n }\n }, 100)\n }\n }\n\n private getFocusableElements(): HTMLElement[] {\n if (this.contentRef == null) return []\n\n const defaultSlot = this.contentRef.querySelector('slot:not([name])') as HTMLSlotElement\n if (defaultSlot === null || defaultSlot === undefined) return []\n\n const assignedElements = defaultSlot.assignedElements({ flatten: true })\n const focusableElements: HTMLElement[] = []\n\n assignedElements.forEach((el) => {\n if (!(el instanceof HTMLElement)) return\n\n if (el.matches(Scrim.FOCUSABLE_SELECTORS)) {\n focusableElements.push(el)\n }\n\n const nestedFocusables = Array.from(el.querySelectorAll<HTMLElement>(Scrim.FOCUSABLE_SELECTORS))\n focusableElements.push(...nestedFocusables)\n })\n\n return this.filterVisibleElements(focusableElements)\n }\n\n private filterVisibleElements(elements: HTMLElement[]): HTMLElement[] {\n return elements.filter(\n (el) => el.offsetWidth > 0 && el.offsetHeight > 0 && getComputedStyle(el).visibility !== 'hidden'\n )\n }\n\n // ======================================================================\n // NAVEGAÇÃO POR TECLADO\n // ======================================================================\n private handleKeyDown = (event: KeyboardEvent) => {\n if (!this.isActive) return\n\n if (this.shouldHandleEscape(event)) {\n this.handleOpenChange(false)\n return\n }\n\n if (event.key === 'Tab') {\n this.handleTabNavigation(event)\n }\n }\n\n private shouldHandleEscape(event: KeyboardEvent): boolean {\n return (event.key === 'Escape' || event.key === 'Esc') && this.isActive && !this.disableCloseOnClick\n }\n\n private handleTabNavigation(event: KeyboardEvent): void {\n const focusableElements = this.getFocusableElements()\n if (focusableElements.length === 0) {\n event.preventDefault()\n return\n }\n\n const firstElement = focusableElements[0]\n const lastElement = focusableElements[focusableElements.length - 1]\n const isTabForward = !event.shiftKey\n\n if (this.shouldTrapFocus(isTabForward, firstElement, lastElement)) {\n event.preventDefault()\n this.wrapFocus(isTabForward, firstElement, lastElement)\n }\n }\n\n private shouldTrapFocus(isTabForward: boolean, firstElement: HTMLElement, lastElement: HTMLElement): boolean {\n return (\n (isTabForward && document.activeElement === lastElement) ||\n (!isTabForward && document.activeElement === firstElement)\n )\n }\n\n private wrapFocus(isTabForward: boolean, firstElement: HTMLElement, lastElement: HTMLElement): void {\n ;(isTabForward ? firstElement : lastElement).focus()\n }\n\n // ======================================================================\n // MANIPULAÇÃO DE EVENTOS E UTILITÁRIOS\n // ======================================================================\n private handleMaskClick = (_event: MouseEvent) => {\n if (!this.disableCloseOnClick) {\n this.close()\n }\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-scrim': true,\n opened: this.isActive,\n 'scroll-block': this.scrollStrategy === 'block',\n 'position-top': this.positionContent === 'top',\n 'position-bottom': this.positionContent === 'bottom',\n 'position-left': this.positionContent === 'left',\n 'position-right': this.positionContent === 'right',\n 'position-center': this.positionContent === 'center',\n 'mode-fullscreen': this.displayMode === 'fullscreen',\n 'mode-parent': this.displayMode === 'parent',\n }\n }\n\n // ======================================================================\n // MÉTODOS PÚBLICOS (API)\n // ======================================================================\n /**\n * Define o limite de rolagem para o fechamento automático do scrim.\n */\n @Method()\n async setScrollThreshold(threshold: number) {\n this.scrollThreshold = threshold\n }\n\n /**\n * Método público para exibir o scrim\n */\n @Method()\n async open() {\n this.handleOpenChange(true)\n }\n\n /**\n * Método público para esconder o scrim\n */\n @Method()\n async close() {\n this.handleOpenChange(false)\n }\n\n /**\n * Método público para alternar o estado de exibição do scrim\n */\n @Method()\n async toggle() {\n this.handleOpenChange(!this.isActive)\n }\n\n render() {\n return (\n <Host>\n <slot name=\"activator\"></slot>\n <div\n class={this.getCssClassMap()}\n id={this.customId}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-hidden={this.isActive ? 'false' : 'true'}\n data-visible={this.isActive ? 'true' : 'false'}\n >\n <div class=\"mask\" onClick={this.handleMaskClick}></div>\n <div\n ref={(el) => (this.contentRef = el)}\n class=\"content\"\n tabIndex={-1}\n onKeyDown={this.handleKeyDown}\n aria-label=\"Conteúdo do diálogo\"\n >\n <slot></slot>\n </div>\n </div>\n </Host>\n )\n }\n}\n\nlet ScrimId = 0\n"]}
@@ -2,7 +2,6 @@
2
2
  * Construído por SERPRO
3
3
  * © https://serpro.gov.br/ - MIT License.
4
4
  */
5
- import { __awaiter } from "tslib";
6
5
  import { h } from "@stencil/core";
7
6
  export class Select {
8
7
  constructor() {
@@ -115,9 +114,12 @@ export class Select {
115
114
  }
116
115
  syncValueFromOutside(newVal) {
117
116
  // Atualize parsedOptions a partir de newVal
118
- this.parsedOptions = this.parsedOptions.map(o => (Object.assign(Object.assign({}, o), { selected: this.isMultiple
117
+ this.parsedOptions = this.parsedOptions.map(o => ({
118
+ ...o,
119
+ selected: this.isMultiple
119
120
  ? Array.isArray(newVal) && newVal.includes(o.value)
120
- : newVal === o.value })));
121
+ : newVal === o.value
122
+ }));
121
123
  this.updateSelectedOptions(); // mantém inputValue coeso
122
124
  this.updateSelectedAllState();
123
125
  }
@@ -224,7 +226,6 @@ export class Select {
224
226
  this.focusedIndex = -1;
225
227
  }
226
228
  handleSelection(index) {
227
- var _a, _b;
228
229
  if (index < 0 || index >= this.parsedOptions.length) {
229
230
  return;
230
231
  }
@@ -234,7 +235,7 @@ export class Select {
234
235
  this.parsedOptions = updatedOptions;
235
236
  }
236
237
  else {
237
- const updatedOptions = this.parsedOptions.map((option) => (Object.assign(Object.assign({}, option), { selected: false })));
238
+ const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: false }));
238
239
  updatedOptions[index].selected = true;
239
240
  this.parsedOptions = updatedOptions;
240
241
  this.isExpanded = false;
@@ -242,12 +243,12 @@ export class Select {
242
243
  // Atualiza a prop 'value' interna do componente
243
244
  this.value = this.isMultiple
244
245
  ? this.parsedOptions.filter(o => o.selected).map(o => o.value)
245
- : (_a = this.parsedOptions.find(o => o.selected)) === null || _a === void 0 ? void 0 : _a.value;
246
+ : this.parsedOptions.find(o => o.selected)?.value;
246
247
  // Emite o evento 'valueChange' para que o ngModel possa capturar
247
248
  this.valueChange.emit(this.value);
248
249
  this.updateSelectedOptions();
249
250
  this.updateSelectedAllState();
250
- this.elementInternals.setFormValue(JSON.stringify((_b = this.value) !== null && _b !== void 0 ? _b : []));
251
+ this.elementInternals.setFormValue(JSON.stringify(this.value ?? []));
251
252
  }
252
253
  updateSelectedOptions() {
253
254
  this.inputValue = this.getStringValue(this.parsedOptions.filter((option) => option.selected));
@@ -266,7 +267,6 @@ export class Select {
266
267
  return '';
267
268
  }
268
269
  emitSelectedOptions() {
269
- var _a;
270
270
  // A lógica de emissão do evento já está no handleSelection para o ngModel.
271
271
  // Esta função pode ser simplificada ou removida se a única finalidade era emitir para ngModel.
272
272
  // No entanto, se houver outros consumidores deste evento, você pode mantê-la.
@@ -276,24 +276,23 @@ export class Select {
276
276
  // Já emitimos em handleSelection, mas se quiser ter certeza, pode emitir aqui também.
277
277
  // this.valueChange.emit(this.isMultiple ? selectedValues : selectedValues[0] ?? undefined);
278
278
  // Atualiza o valor do form associado
279
- this.elementInternals.setFormValue(JSON.stringify(this.isMultiple ? selectedValues : (_a = selectedValues[0]) !== null && _a !== void 0 ? _a : null));
279
+ this.elementInternals.setFormValue(JSON.stringify(this.isMultiple ? selectedValues : selectedValues[0] ?? null));
280
280
  }
281
281
  updateSelectedAllState() {
282
282
  const allSelected = this.parsedOptions.every((option) => option.selected);
283
283
  this.isAllSelected = allSelected;
284
284
  }
285
285
  toggleSelectAll() {
286
- var _a, _b;
287
- const updatedOptions = this.parsedOptions.map((option) => (Object.assign(Object.assign({}, option), { selected: !this.isAllSelected })));
286
+ const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: !this.isAllSelected }));
288
287
  this.parsedOptions = updatedOptions;
289
288
  this.isAllSelected = !this.isAllSelected;
290
289
  this.updateSelectedOptions();
291
290
  // Atualiza a prop 'value' e emite o evento para ngModel
292
291
  this.value = this.isMultiple
293
292
  ? this.parsedOptions.filter(o => o.selected).map(o => o.value)
294
- : (_a = this.parsedOptions.find(o => o.selected)) === null || _a === void 0 ? void 0 : _a.value;
293
+ : this.parsedOptions.find(o => o.selected)?.value;
295
294
  this.valueChange.emit(this.value);
296
- this.elementInternals.setFormValue(JSON.stringify((_b = this.value) !== null && _b !== void 0 ? _b : []));
295
+ this.elementInternals.setFormValue(JSON.stringify(this.value ?? []));
297
296
  }
298
297
  renderInput() {
299
298
  return (h("br-input", { value: this.inputValue, label: this.label, placeholder: this.placeholder, readonly: true, onClick: () => this.toggleOpen(), onKeyDown: (event) => this.handleKeydownOnInput(event) }, this.showSearchIcon && h("br-icon", { slot: "icon", "icon-name": "fa-solid:search", "aria-hidden": "true" }), h("br-icon", { slot: "action", "icon-name": this.isExpanded ? 'fa-solid:angle-up' : 'fa-solid:angle-down', height: "16", "aria-hidden": "true" })));
@@ -308,16 +307,13 @@ export class Select {
308
307
  * Determina um id para o radio.
309
308
  */
310
309
  getComputedId() {
311
- var _a;
312
- return ((_a = this.customId) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.customId : `br-select-${this.customId}`;
310
+ return this.customId?.length > 0 ? this.customId : `br-select-${this.customId}`;
313
311
  }
314
312
  /**
315
313
  * Inverte o valor da prop `isOpen`
316
314
  */
317
- toggleOpen() {
318
- return __awaiter(this, void 0, void 0, function* () {
319
- this.isExpanded = !this.isExpanded;
320
- });
315
+ async toggleOpen() {
316
+ this.isExpanded = !this.isExpanded;
321
317
  }
322
318
  getCssClassMap() {
323
319
  return {
@@ -325,7 +321,7 @@ export class Select {
325
321
  };
326
322
  }
327
323
  render() {
328
- return (h("div", { key: '72d788c21017360c2c058acb137b7f537f035114', class: this.getCssClassMap(), id: this.getComputedId() }, this.renderInput(), this.isExpanded && (h("br-list", { key: '24888268b753bb7133b9e4bc31536d5b0f440db8', tabindex: -1, onKeyDown: (event) => this.handleKeydownOnList(event) }, this.isMultiple && this.renderSelectAllCheckbox(), this.renderOptions()))));
324
+ return (h("div", { key: '5760ee86c85b382558b574863e1e27d430292d84', class: this.getCssClassMap(), id: this.getComputedId() }, this.renderInput(), this.isExpanded && (h("br-list", { key: 'f2d35d1bea8a1a1f36061e054e2c4de2fb94e947', tabindex: -1, onKeyDown: (event) => this.handleKeydownOnList(event) }, this.isMultiple && this.renderSelectAllCheckbox(), this.renderOptions()))));
329
325
  }
330
326
  static get is() { return "br-select"; }
331
327
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../../../packages/webcomponents/src/components/select/select.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AttachInternals, Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n@Component({\n tag: 'br-select',\n styleUrl: 'select.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Select {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrSelectElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Rótulo que indica o tipo de informação que deve ser selecionada.\n */\n @Prop({ reflect: true }) label: string\n\n /**\n * Texto auxiliar exibido antes de uma seleção.\n */\n @Prop({ reflect: true }) placeholder: string = ''\n\n /**\n * Habilita o modo múltiplo para selecionar várias opções.\n */\n @Prop({ reflect: true }) isMultiple: boolean = false\n\n /**\n * Define as opções disponíveis no componente de seleção.\n * Pode ser fornecida como:\n * - Uma **string** contendo um JSON válido que será analisado em um array de objetos. Exemplo: `'[{\"label\": \"Opção 1\", \"value\": \"1\"}]'.\n * - Um **array de objetos**, onde cada objeto representa uma opção com as propriedades:\n * - `label`: O texto exibido para o usuário (obrigatório).\n * - `value`: O valor associado à opção (obrigatório).\n * - `selected`: Um boolean opcional que indica se a opção está pré-selecionada (padrão: `false`).\n * Se uma string for fornecida, ela será convertida internamente para um array via `JSON.parse`. Caso o formato seja inválido, um erro será registrado e as opções serão definidas como um array vazio.\n * Exemplo de uso:\n * ```typescript\n * options='[{\"label\": \"Sim\", \"value\": \"1\"}, {\"label\": \"Não\", \"value\": \"0\"}]'\n * // ou\n * options=[{ label: \"Sim\", value: \"1\" }, { label: \"Não\", value: \"0\" }]\n * ```\n */\n @Prop({ reflect: true }) options:\n | string\n | {\n label: string\n value: string\n selected?: boolean\n }[] = []\n\n /**\n * Rótulo para selecionar todas as opções.\n */\n @Prop({ reflect: true }) selectAllLabel: string = 'Selecionar todos'\n\n /**\n * Rótulo para desmarcar todas as opções.\n */\n @Prop({ reflect: true }) unselectAllLabel: string = 'Desselecionar todos'\n\n /**\n * Exibe o ícone de busca no campo de entrada.\n */\n @Prop({ reflect: true }) showSearchIcon: boolean = false\n\n /**\n * Indica se a listagem de itens do select está expandida\n */\n @Prop({ reflect: true }) isOpen: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-select-${selectId++}`\n\n // Representa as opções do select disponíveis para renderização.\n // Cada opção contém `label`, `value` e o estado de seleção (`selected`).\n @State() parsedOptions: { label: string; value: string; selected?: boolean }[] = []\n\n // Valor exibido no input, refletindo as opções selecionadas.\n @State() inputValue: string = ''\n\n /** Valor selecionado (string para single, string[] para multiple) */\n @Prop({ reflect: false }) value?: string | string[];\n\n // Indica se todas as opções estão selecionadas. Comportamento do checkbox \"Selecionar Todos\".\n @State() isAllSelected: boolean = false\n\n // Controla se a lista de opções do select está expandida (aberta) ou colapsada (fechada).\n @State() isExpanded: boolean = false\n\n // Armazena o índice do item atualmente focado, usado para navegação por teclado.\n @State() focusedIndex: number = -1\n\n /**\n * Evento emitido sempre que houver atualização nos itens selecionados.\n * RENOMEADO PARA valueChange para compatibilidade com ngModel.\n */\n @Event({ bubbles: true, composed: true }) valueChange: EventEmitter;\n\n\n @Watch('options')\n synchronizeSelect() {\n try {\n let parsedOptions: { label: string; value: string; selected?: boolean }[] = []\n if (typeof this.options === 'string') {\n try {\n const jsonData = JSON.parse(this.options)\n if (Array.isArray(jsonData)) {\n parsedOptions = jsonData\n } else {\n throw new Error('JSON inválido: deve ser um array')\n }\n } catch (error) {\n console.error('Erro ao converter options para JSON:', error.message)\n parsedOptions = []\n }\n } else if (Array.isArray(this.options)) {\n parsedOptions = this.options\n }\n\n // Sanitiza as opções (remove opções inválidas, etc.)\n this.parsedOptions = parsedOptions\n\n // Atualiza o estado do componente\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n this.emitSelectedOptions()\n } catch (error) {\n console.error('Erro ao processar as opções do select:', error)\n this.parsedOptions = []\n }\n }\n\n @Watch('value')\n syncValueFromOutside(newVal: string | string[]) {\n // Atualize parsedOptions a partir de newVal\n this.parsedOptions = this.parsedOptions.map(o => ({\n ...o,\n selected: this.isMultiple\n ? Array.isArray(newVal) && newVal.includes(o.value)\n : newVal === o.value\n }));\n this.updateSelectedOptions(); // mantém inputValue coeso\n this.updateSelectedAllState();\n }\n\n componentWillLoad() {\n this.isExpanded = this.isOpen\n this.synchronizeSelect()\n }\n\n componentDidLoad() {\n document.addEventListener('click', this.handleClickOutside)\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside)\n }\n\n /**\n * Fecha a lista suspensa (`dropdown`) do `br-select` quando o usuário clica fora do componente.\n * O listener global é adicionado no `componentDidLoad` e removido no `disconnectedCallback` para evitar vazamentos de memória.\n * Se a lista estiver aberta (`this.isExpanded`) e o clique ocorrer fora (`!this.el.contains(target)`), ela é fechada.\n * A reatividade do StencilJS garante a atualização automática da interface.\n * A arrow function (`=>`) mantém o contexto correto de `this` ao ser usada como callback.\n *\n * @param {MouseEvent} event O evento de clique.\n * @returns {void}\n */\n private readonly handleClickOutside = (event: MouseEvent) => {\n const target = event.target as HTMLElement\n if (this.isExpanded && !this.el.contains(target)) {\n this.isExpanded = false\n }\n }\n\n private handleKeydownOnInput(event: KeyboardEvent) {\n switch (event.key) {\n case 'Tab':\n this.closeSelect()\n break\n case 'ArrowDown':\n event.preventDefault()\n if (!this.isExpanded) {\n this.openSelect()\n }\n this.focusItemInDirection('next')\n break\n case 'ArrowUp':\n event.preventDefault()\n if (!this.isExpanded) {\n this.openSelect()\n }\n this.focusItemInDirection('previous')\n break\n case 'Escape':\n this.closeSelect()\n this.resetFocus()\n break\n case 'Enter':\n this.toggleOpen()\n break\n default:\n }\n }\n\n private handleKeydownOnList(event: KeyboardEvent) {\n event.preventDefault()\n switch (event.key) {\n case 'Tab':\n case 'Escape':\n this.resetFocus()\n break\n case 'ArrowUp':\n this.focusItemInDirection('previous')\n break\n case 'ArrowDown':\n this.focusItemInDirection('next')\n break\n default:\n break\n }\n }\n\n private handleKeydownOnItem(event: KeyboardEvent, index: number) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.handleSelection(index)\n } else if (event.key === 'Escape') {\n this.closeSelect()\n }\n }\n\n private handleSelectAllKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.toggleSelectAll()\n } else if (event.key === 'Escape') {\n event.preventDefault()\n this.closeSelect()\n }\n }\n\n private resetFocus() {\n const input = this.el.shadowRoot.querySelector('br-input') as HTMLElement\n input.focus()\n }\n\n private focusItemInDirection(direction: 'next' | 'previous') {\n let itemCount = this.parsedOptions.length\n if (this.isMultiple) itemCount += 1\n\n this.focusedIndex =\n direction === 'next' ? (this.focusedIndex + 1) % itemCount : (this.focusedIndex - 1 + itemCount) % itemCount\n\n this.focusItem(this.focusedIndex)\n }\n\n private focusItem(index: number) {\n const items = this.el.shadowRoot.querySelectorAll('.br-item')\n if (items[index]) {\n const item = items[index] as HTMLElement\n item.focus()\n }\n }\n\n private openSelect() {\n this.isExpanded = true\n }\n\n private closeSelect() {\n this.isExpanded = false\n // Resetar o índice focado ao fechar o select\n this.focusedIndex = -1\n }\n\n private handleSelection(index: number) {\n if (index < 0 || index >= this.parsedOptions.length) {\n return\n }\n\n if (this.isMultiple) {\n const updatedOptions = [...this.parsedOptions]\n updatedOptions[index].selected = !updatedOptions[index].selected\n this.parsedOptions = updatedOptions\n } else {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: false }))\n updatedOptions[index].selected = true\n this.parsedOptions = updatedOptions\n this.isExpanded = false\n }\n\n // Atualiza a prop 'value' interna do componente\n this.value = this.isMultiple\n ? this.parsedOptions.filter(o => o.selected).map(o => o.value)\n : this.parsedOptions.find(o => o.selected)?.value;\n\n // Emite o evento 'valueChange' para que o ngModel possa capturar\n this.valueChange.emit(this.value);\n\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n this.elementInternals.setFormValue(JSON.stringify(this.value ?? []));\n }\n\n private updateSelectedOptions() {\n this.inputValue = this.getStringValue(this.parsedOptions.filter((option) => option.selected))\n }\n\n private getStringValue(options: { label: string; value: string; selected?: boolean }[]) {\n if (options.length > 0) {\n const firstSelected = options[0].label || options[0].value\n if (this.isMultiple) {\n const howManySelected = options.length > 1 ? ` + (${options.length - 1})` : ''\n return `${firstSelected}${howManySelected}`\n } else {\n return firstSelected\n }\n }\n return ''\n }\n\n private emitSelectedOptions() {\n // A lógica de emissão do evento já está no handleSelection para o ngModel.\n // Esta função pode ser simplificada ou removida se a única finalidade era emitir para ngModel.\n // No entanto, se houver outros consumidores deste evento, você pode mantê-la.\n const selectedValues = this.parsedOptions\n .filter((option) => option.selected === true)\n .map((option) => option.value); // É importante emitir o 'value' para o ngModel.\n\n // Já emitimos em handleSelection, mas se quiser ter certeza, pode emitir aqui também.\n // this.valueChange.emit(this.isMultiple ? selectedValues : selectedValues[0] ?? undefined);\n\n // Atualiza o valor do form associado\n this.elementInternals.setFormValue(JSON.stringify(this.isMultiple ? selectedValues : selectedValues[0] ?? null));\n }\n\n private updateSelectedAllState() {\n const allSelected = this.parsedOptions.every((option) => option.selected)\n this.isAllSelected = allSelected\n }\n\n private toggleSelectAll() {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: !this.isAllSelected }))\n this.parsedOptions = updatedOptions\n this.isAllSelected = !this.isAllSelected\n\n this.updateSelectedOptions()\n\n // Atualiza a prop 'value' e emite o evento para ngModel\n this.value = this.isMultiple\n ? this.parsedOptions.filter(o => o.selected).map(o => o.value)\n : this.parsedOptions.find(o => o.selected)?.value;\n this.valueChange.emit(this.value);\n\n this.elementInternals.setFormValue(JSON.stringify(this.value ?? []));\n }\n\n private renderInput() {\n return (\n <br-input\n value={this.inputValue}\n label={this.label}\n placeholder={this.placeholder}\n readonly\n onClick={() => this.toggleOpen()}\n onKeyDown={(event) => this.handleKeydownOnInput(event)}\n >\n {this.showSearchIcon && <br-icon slot=\"icon\" icon-name=\"fa-solid:search\" aria-hidden=\"true\"></br-icon>}\n <br-icon\n slot=\"action\"\n icon-name={this.isExpanded ? 'fa-solid:angle-up' : 'fa-solid:angle-down'}\n height=\"16\"\n aria-hidden=\"true\"\n ></br-icon>\n </br-input>\n )\n }\n\n private renderSelectAllCheckbox() {\n return (\n <div\n class={`br-item highlighted ${this.isAllSelected ? 'selected' : ''}`}\n data-all=\"data-all\"\n tabindex=\"-1\"\n role=\"option\"\n aria-selected={this.isAllSelected}\n onKeyDown={(event) => this.handleSelectAllKeyDown(event)}\n onClick={() => this.toggleSelectAll()}\n >\n <br-checkbox\n name={`checkbox-${this.customId}`}\n label={this.isAllSelected ? this.unselectAllLabel : this.selectAllLabel}\n checked={this.isAllSelected}\n onCheckedChange={() => this.toggleSelectAll()}\n ></br-checkbox>\n </div>\n )\n }\n\n private renderOptions() {\n return this.parsedOptions.map((option, index) => (\n <div\n class={`br-item ${option.selected ? 'selected' : ''}`}\n key={`${option.label}-${this.customId}`}\n role=\"option\"\n tabindex={this.focusedIndex === index ? 0 : -1}\n aria-selected={option.selected}\n onClick={() => this.handleSelection(index)}\n onKeyDown={(event) => this.handleKeydownOnItem(event, index)}\n >\n {this.isMultiple ? (\n <br-checkbox\n name={`checkbox-${index}-${this.customId}`}\n label={option.label || option.value}\n checked={option.selected === true}\n onCheckedChange={() => this.handleSelection(index)}\n />\n ) : (\n <br-radio\n exportparts=\"radio-input, radio-label\"\n name={`radio-${index}-${this.customId}`}\n label={option.label || option.value}\n checked={option.selected === true}\n onCheckedChange={() => this.handleSelection(index)}\n />\n )}\n </div>\n ))\n }\n\n /**\n * Determina um id para o radio.\n */\n private getComputedId() {\n return this.customId?.length > 0 ? this.customId : `br-select-${this.customId}`\n }\n\n /**\n * Inverte o valor da prop `isOpen`\n */\n @Method()\n async toggleOpen() {\n this.isExpanded = !this.isExpanded\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-select': true,\n }\n }\n\n render() {\n return (\n <div class={this.getCssClassMap()} id={this.getComputedId()}>\n {this.renderInput()}\n\n {this.isExpanded && (\n <br-list tabindex={-1} onKeyDown={(event) => this.handleKeydownOnList(event)}>\n {this.isMultiple && this.renderSelectAllCheckbox()}\n {this.renderOptions()}\n </br-list>\n )}\n </div>\n )\n }\n}\n\nlet selectId = 0\n"]}
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../../../packages/webcomponents/src/components/select/select.tsx"],"names":[],"mappings":"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","sourcesContent":["import { AttachInternals, Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n@Component({\n tag: 'br-select',\n styleUrl: 'select.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Select {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrSelectElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Rótulo que indica o tipo de informação que deve ser selecionada.\n */\n @Prop({ reflect: true }) label: string\n\n /**\n * Texto auxiliar exibido antes de uma seleção.\n */\n @Prop({ reflect: true }) placeholder: string = ''\n\n /**\n * Habilita o modo múltiplo para selecionar várias opções.\n */\n @Prop({ reflect: true }) isMultiple: boolean = false\n\n /**\n * Define as opções disponíveis no componente de seleção.\n * Pode ser fornecida como:\n * - Uma **string** contendo um JSON válido que será analisado em um array de objetos. Exemplo: `'[{\"label\": \"Opção 1\", \"value\": \"1\"}]'.\n * - Um **array de objetos**, onde cada objeto representa uma opção com as propriedades:\n * - `label`: O texto exibido para o usuário (obrigatório).\n * - `value`: O valor associado à opção (obrigatório).\n * - `selected`: Um boolean opcional que indica se a opção está pré-selecionada (padrão: `false`).\n * Se uma string for fornecida, ela será convertida internamente para um array via `JSON.parse`. Caso o formato seja inválido, um erro será registrado e as opções serão definidas como um array vazio.\n * Exemplo de uso:\n * ```typescript\n * options='[{\"label\": \"Sim\", \"value\": \"1\"}, {\"label\": \"Não\", \"value\": \"0\"}]'\n * // ou\n * options=[{ label: \"Sim\", value: \"1\" }, { label: \"Não\", value: \"0\" }]\n * ```\n */\n @Prop({ reflect: true }) options:\n | string\n | {\n label: string\n value: string\n selected?: boolean\n }[] = []\n\n /**\n * Rótulo para selecionar todas as opções.\n */\n @Prop({ reflect: true }) selectAllLabel: string = 'Selecionar todos'\n\n /**\n * Rótulo para desmarcar todas as opções.\n */\n @Prop({ reflect: true }) unselectAllLabel: string = 'Desselecionar todos'\n\n /**\n * Exibe o ícone de busca no campo de entrada.\n */\n @Prop({ reflect: true }) showSearchIcon: boolean = false\n\n /**\n * Indica se a listagem de itens do select está expandida\n */\n @Prop({ reflect: true }) isOpen: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-select-${selectId++}`\n\n // Representa as opções do select disponíveis para renderização.\n // Cada opção contém `label`, `value` e o estado de seleção (`selected`).\n @State() parsedOptions: { label: string; value: string; selected?: boolean }[] = []\n\n // Valor exibido no input, refletindo as opções selecionadas.\n @State() inputValue: string = ''\n\n /** Valor selecionado (string para single, string[] para multiple) */\n @Prop({ reflect: false }) value?: string | string[];\n\n // Indica se todas as opções estão selecionadas. Comportamento do checkbox \"Selecionar Todos\".\n @State() isAllSelected: boolean = false\n\n // Controla se a lista de opções do select está expandida (aberta) ou colapsada (fechada).\n @State() isExpanded: boolean = false\n\n // Armazena o índice do item atualmente focado, usado para navegação por teclado.\n @State() focusedIndex: number = -1\n\n /**\n * Evento emitido sempre que houver atualização nos itens selecionados.\n * RENOMEADO PARA valueChange para compatibilidade com ngModel.\n */\n @Event({ bubbles: true, composed: true }) valueChange: EventEmitter;\n\n\n @Watch('options')\n synchronizeSelect() {\n try {\n let parsedOptions: { label: string; value: string; selected?: boolean }[] = []\n if (typeof this.options === 'string') {\n try {\n const jsonData = JSON.parse(this.options)\n if (Array.isArray(jsonData)) {\n parsedOptions = jsonData\n } else {\n throw new Error('JSON inválido: deve ser um array')\n }\n } catch (error) {\n console.error('Erro ao converter options para JSON:', error.message)\n parsedOptions = []\n }\n } else if (Array.isArray(this.options)) {\n parsedOptions = this.options\n }\n\n // Sanitiza as opções (remove opções inválidas, etc.)\n this.parsedOptions = parsedOptions\n\n // Atualiza o estado do componente\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n this.emitSelectedOptions()\n } catch (error) {\n console.error('Erro ao processar as opções do select:', error)\n this.parsedOptions = []\n }\n }\n\n @Watch('value')\n syncValueFromOutside(newVal: string | string[]) {\n // Atualize parsedOptions a partir de newVal\n this.parsedOptions = this.parsedOptions.map(o => ({\n ...o,\n selected: this.isMultiple\n ? Array.isArray(newVal) && newVal.includes(o.value)\n : newVal === o.value\n }));\n this.updateSelectedOptions(); // mantém inputValue coeso\n this.updateSelectedAllState();\n }\n\n componentWillLoad() {\n this.isExpanded = this.isOpen\n this.synchronizeSelect()\n }\n\n componentDidLoad() {\n document.addEventListener('click', this.handleClickOutside)\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside)\n }\n\n /**\n * Fecha a lista suspensa (`dropdown`) do `br-select` quando o usuário clica fora do componente.\n * O listener global é adicionado no `componentDidLoad` e removido no `disconnectedCallback` para evitar vazamentos de memória.\n * Se a lista estiver aberta (`this.isExpanded`) e o clique ocorrer fora (`!this.el.contains(target)`), ela é fechada.\n * A reatividade do StencilJS garante a atualização automática da interface.\n * A arrow function (`=>`) mantém o contexto correto de `this` ao ser usada como callback.\n *\n * @param {MouseEvent} event O evento de clique.\n * @returns {void}\n */\n private readonly handleClickOutside = (event: MouseEvent) => {\n const target = event.target as HTMLElement\n if (this.isExpanded && !this.el.contains(target)) {\n this.isExpanded = false\n }\n }\n\n private handleKeydownOnInput(event: KeyboardEvent) {\n switch (event.key) {\n case 'Tab':\n this.closeSelect()\n break\n case 'ArrowDown':\n event.preventDefault()\n if (!this.isExpanded) {\n this.openSelect()\n }\n this.focusItemInDirection('next')\n break\n case 'ArrowUp':\n event.preventDefault()\n if (!this.isExpanded) {\n this.openSelect()\n }\n this.focusItemInDirection('previous')\n break\n case 'Escape':\n this.closeSelect()\n this.resetFocus()\n break\n case 'Enter':\n this.toggleOpen()\n break\n default:\n }\n }\n\n private handleKeydownOnList(event: KeyboardEvent) {\n event.preventDefault()\n switch (event.key) {\n case 'Tab':\n case 'Escape':\n this.resetFocus()\n break\n case 'ArrowUp':\n this.focusItemInDirection('previous')\n break\n case 'ArrowDown':\n this.focusItemInDirection('next')\n break\n default:\n break\n }\n }\n\n private handleKeydownOnItem(event: KeyboardEvent, index: number) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.handleSelection(index)\n } else if (event.key === 'Escape') {\n this.closeSelect()\n }\n }\n\n private handleSelectAllKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n this.toggleSelectAll()\n } else if (event.key === 'Escape') {\n event.preventDefault()\n this.closeSelect()\n }\n }\n\n private resetFocus() {\n const input = this.el.shadowRoot.querySelector('br-input') as HTMLElement\n input.focus()\n }\n\n private focusItemInDirection(direction: 'next' | 'previous') {\n let itemCount = this.parsedOptions.length\n if (this.isMultiple) itemCount += 1\n\n this.focusedIndex =\n direction === 'next' ? (this.focusedIndex + 1) % itemCount : (this.focusedIndex - 1 + itemCount) % itemCount\n\n this.focusItem(this.focusedIndex)\n }\n\n private focusItem(index: number) {\n const items = this.el.shadowRoot.querySelectorAll('.br-item')\n if (items[index]) {\n const item = items[index] as HTMLElement\n item.focus()\n }\n }\n\n private openSelect() {\n this.isExpanded = true\n }\n\n private closeSelect() {\n this.isExpanded = false\n // Resetar o índice focado ao fechar o select\n this.focusedIndex = -1\n }\n\n private handleSelection(index: number) {\n if (index < 0 || index >= this.parsedOptions.length) {\n return\n }\n\n if (this.isMultiple) {\n const updatedOptions = [...this.parsedOptions]\n updatedOptions[index].selected = !updatedOptions[index].selected\n this.parsedOptions = updatedOptions\n } else {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: false }))\n updatedOptions[index].selected = true\n this.parsedOptions = updatedOptions\n this.isExpanded = false\n }\n\n // Atualiza a prop 'value' interna do componente\n this.value = this.isMultiple\n ? this.parsedOptions.filter(o => o.selected).map(o => o.value)\n : this.parsedOptions.find(o => o.selected)?.value;\n\n // Emite o evento 'valueChange' para que o ngModel possa capturar\n this.valueChange.emit(this.value);\n\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n this.elementInternals.setFormValue(JSON.stringify(this.value ?? []));\n }\n\n private updateSelectedOptions() {\n this.inputValue = this.getStringValue(this.parsedOptions.filter((option) => option.selected))\n }\n\n private getStringValue(options: { label: string; value: string; selected?: boolean }[]) {\n if (options.length > 0) {\n const firstSelected = options[0].label || options[0].value\n if (this.isMultiple) {\n const howManySelected = options.length > 1 ? ` + (${options.length - 1})` : ''\n return `${firstSelected}${howManySelected}`\n } else {\n return firstSelected\n }\n }\n return ''\n }\n\n private emitSelectedOptions() {\n // A lógica de emissão do evento já está no handleSelection para o ngModel.\n // Esta função pode ser simplificada ou removida se a única finalidade era emitir para ngModel.\n // No entanto, se houver outros consumidores deste evento, você pode mantê-la.\n const selectedValues = this.parsedOptions\n .filter((option) => option.selected === true)\n .map((option) => option.value); // É importante emitir o 'value' para o ngModel.\n\n // Já emitimos em handleSelection, mas se quiser ter certeza, pode emitir aqui também.\n // this.valueChange.emit(this.isMultiple ? selectedValues : selectedValues[0] ?? undefined);\n\n // Atualiza o valor do form associado\n this.elementInternals.setFormValue(JSON.stringify(this.isMultiple ? selectedValues : selectedValues[0] ?? null));\n }\n\n private updateSelectedAllState() {\n const allSelected = this.parsedOptions.every((option) => option.selected)\n this.isAllSelected = allSelected\n }\n\n private toggleSelectAll() {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: !this.isAllSelected }))\n this.parsedOptions = updatedOptions\n this.isAllSelected = !this.isAllSelected\n\n this.updateSelectedOptions()\n\n // Atualiza a prop 'value' e emite o evento para ngModel\n this.value = this.isMultiple\n ? this.parsedOptions.filter(o => o.selected).map(o => o.value)\n : this.parsedOptions.find(o => o.selected)?.value;\n this.valueChange.emit(this.value);\n\n this.elementInternals.setFormValue(JSON.stringify(this.value ?? []));\n }\n\n private renderInput() {\n return (\n <br-input\n value={this.inputValue}\n label={this.label}\n placeholder={this.placeholder}\n readonly\n onClick={() => this.toggleOpen()}\n onKeyDown={(event) => this.handleKeydownOnInput(event)}\n >\n {this.showSearchIcon && <br-icon slot=\"icon\" icon-name=\"fa-solid:search\" aria-hidden=\"true\"></br-icon>}\n <br-icon\n slot=\"action\"\n icon-name={this.isExpanded ? 'fa-solid:angle-up' : 'fa-solid:angle-down'}\n height=\"16\"\n aria-hidden=\"true\"\n ></br-icon>\n </br-input>\n )\n }\n\n private renderSelectAllCheckbox() {\n return (\n <div\n class={`br-item highlighted ${this.isAllSelected ? 'selected' : ''}`}\n data-all=\"data-all\"\n tabindex=\"-1\"\n role=\"option\"\n aria-selected={this.isAllSelected}\n onKeyDown={(event) => this.handleSelectAllKeyDown(event)}\n onClick={() => this.toggleSelectAll()}\n >\n <br-checkbox\n name={`checkbox-${this.customId}`}\n label={this.isAllSelected ? this.unselectAllLabel : this.selectAllLabel}\n checked={this.isAllSelected}\n onCheckedChange={() => this.toggleSelectAll()}\n ></br-checkbox>\n </div>\n )\n }\n\n private renderOptions() {\n return this.parsedOptions.map((option, index) => (\n <div\n class={`br-item ${option.selected ? 'selected' : ''}`}\n key={`${option.label}-${this.customId}`}\n role=\"option\"\n tabindex={this.focusedIndex === index ? 0 : -1}\n aria-selected={option.selected}\n onClick={() => this.handleSelection(index)}\n onKeyDown={(event) => this.handleKeydownOnItem(event, index)}\n >\n {this.isMultiple ? (\n <br-checkbox\n name={`checkbox-${index}-${this.customId}`}\n label={option.label || option.value}\n checked={option.selected === true}\n onCheckedChange={() => this.handleSelection(index)}\n />\n ) : (\n <br-radio\n exportparts=\"radio-input, radio-label\"\n name={`radio-${index}-${this.customId}`}\n label={option.label || option.value}\n checked={option.selected === true}\n onCheckedChange={() => this.handleSelection(index)}\n />\n )}\n </div>\n ))\n }\n\n /**\n * Determina um id para o radio.\n */\n private getComputedId() {\n return this.customId?.length > 0 ? this.customId : `br-select-${this.customId}`\n }\n\n /**\n * Inverte o valor da prop `isOpen`\n */\n @Method()\n async toggleOpen() {\n this.isExpanded = !this.isExpanded\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-select': true,\n }\n }\n\n render() {\n return (\n <div class={this.getCssClassMap()} id={this.getComputedId()}>\n {this.renderInput()}\n\n {this.isExpanded && (\n <br-list tabindex={-1} onKeyDown={(event) => this.handleKeydownOnList(event)}>\n {this.isMultiple && this.renderSelectAllCheckbox()}\n {this.renderOptions()}\n </br-list>\n )}\n </div>\n )\n }\n}\n\nlet selectId = 0\n"]}
@@ -2,7 +2,6 @@
2
2
  * Construído por SERPRO
3
3
  * © https://serpro.gov.br/ - MIT License.
4
4
  */
5
- import { __awaiter } from "tslib";
6
5
  import { h, Host, } from "@stencil/core";
7
6
  /**
8
7
  * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/step?tab=designer).
@@ -134,14 +133,12 @@ export class Step {
134
133
  elements.setContent(indicatorContent.toString());
135
134
  });
136
135
  }
137
- setStepItemsContentType() {
138
- return __awaiter(this, void 0, void 0, function* () {
139
- const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'));
140
- yield Promise.all(slotItems.map((element) => element.setContentType(this.contentType)));
141
- slotItems.forEach((elements, index) => {
142
- elements.setAttribute('aria-posinset', `${index + 1}`);
143
- elements.setAttribute('aria-setsize', `${slotItems.length}`);
144
- });
136
+ async setStepItemsContentType() {
137
+ const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'));
138
+ await Promise.all(slotItems.map((element) => element.setContentType(this.contentType)));
139
+ slotItems.forEach((elements, index) => {
140
+ elements.setAttribute('aria-posinset', `${index + 1}`);
141
+ elements.setAttribute('aria-setsize', `${slotItems.length}`);
145
142
  });
146
143
  }
147
144
  setStepItemsMode(mode) {
@@ -187,44 +184,36 @@ export class Step {
187
184
  *
188
185
  * Método disponibilizado via API do elemento que controla o componente Step, responsável por avançar para o próximo passo e atualizar o valor do estado activeStep
189
186
  */
190
- ProceedToNextStep() {
191
- return __awaiter(this, void 0, void 0, function* () {
192
- if (this.activeStep + 1 < this.stepItems.length) {
193
- this.activeStep = this.activeStep + 1;
194
- if (this.progressionType === 'linear') {
195
- this.stepItems[this.activeStep].removeAttribute('disabled');
196
- }
187
+ async ProceedToNextStep() {
188
+ if (this.activeStep + 1 < this.stepItems.length) {
189
+ this.activeStep = this.activeStep + 1;
190
+ if (this.progressionType === 'linear') {
191
+ this.stepItems[this.activeStep].removeAttribute('disabled');
197
192
  }
198
- });
193
+ }
199
194
  }
200
195
  /**
201
196
  *
202
197
  * Método disponibilizado via API do elemento que controla o componente Step, responsável por retornar ao passo anterior e atualizar o valor do estado activeStep
203
198
  */
204
- BackToPreviousStep() {
205
- return __awaiter(this, void 0, void 0, function* () {
206
- if (this.activeStep - 1 >= 0) {
207
- this.activeStep = this.activeStep - 1;
208
- }
209
- });
199
+ async BackToPreviousStep() {
200
+ if (this.activeStep - 1 >= 0) {
201
+ this.activeStep = this.activeStep - 1;
202
+ }
210
203
  }
211
204
  /**
212
205
  *
213
206
  * Método disponibilizado via API do elemento que integra um componente externo ao componente Step, permitindo sinalizar validações ou destacar a etapa com estado ativo.
214
207
  */
215
- StepValidation(validationStatus) {
216
- return __awaiter(this, void 0, void 0, function* () {
217
- this.stepItems[this.activeStep].setAttribute('highlight', validationStatus);
218
- });
208
+ async StepValidation(validationStatus) {
209
+ this.stepItems[this.activeStep].setAttribute('highlight', validationStatus);
219
210
  }
220
211
  /**
221
212
  *
222
213
  * Método disponibilizado via API do elemento que permite a um componente externo obter a etapa com o estado ativo do componente Step.
223
214
  */
224
- GetActiveStep() {
225
- return __awaiter(this, void 0, void 0, function* () {
226
- return this.activeStep;
227
- });
215
+ async GetActiveStep() {
216
+ return this.activeStep;
228
217
  }
229
218
  getCssClassMap() {
230
219
  return {
@@ -251,7 +240,7 @@ export class Step {
251
240
  return ariaLabel;
252
241
  }
253
242
  render() {
254
- return (h(Host, { key: '77ff5808c6a9e6bf42e551052763a822276d5612' }, this.stepItems.length > 0 && (h("div", { key: 'eaf6af5126157abf1aa7c914c6ff54eeb51cd215', role: "listbox", tabIndex: 0, "aria-orientation": this.layout, "aria-label": this.getAreaLabel(), class: this.getCssClassMap() }, h("slot", { key: '66393da23984a2cf4a4b207607194fcf9ed2b43e' })))));
243
+ return (h(Host, { key: 'f8a54bcaa8b2c1162d46a1441e8643af9ff97154' }, this.stepItems.length > 0 && (h("div", { key: 'cba3b84abf8bbc6ba0ef8977bbd076735b819634', role: "listbox", tabIndex: 0, "aria-orientation": this.layout, "aria-label": this.getAreaLabel(), class: this.getCssClassMap() }, h("slot", { key: '657db9727877d4f0c4df5248dc2340e5eef7f805' })))));
255
244
  }
256
245
  static get is() { return "br-step"; }
257
246
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"step.js","sourceRoot":"","sources":["../../../../../../packages/webcomponents/src/components/step/step.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/step?tab=designer).\n *\n * @slot default - Slot que abriga o componente step-item. Este slot tem a particularidade de aceitar somente o componente step-item em sua composição. Caso outro elemento ou componente seja incluído dentro dele, o componente Step não será renderizado, e uma mensagem de erro será exibida no console.\n */\n@Component({\n tag: 'br-step',\n styleUrl: 'step.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Step {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrStepElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * propriedade responsável por definir a orientação do componente Step\n */\n @Prop({ reflect: true }) layout: 'horizontal' | 'vertical' = 'horizontal'\n /**\n *\n * define o passo que começará destacado\n */\n @Prop({ reflect: true }) initialStep: string = '0'\n /**\n *\n * Propriedade que define a posição onde o texto de destaque,label, ficará localizado no stepItem\n */\n @Prop({ reflect: true }) labelPosition?: 'top' | 'right' | 'bottom' | 'left' = 'bottom'\n /**\n *\n * Propriedade que define o tipo de conteúdo a ser exibido dentro do componente step e stepItem\n */\n @Prop({ reflect: true }) contentType: 'default' | 'br-icon' | 'no-content' | 'slotted' = 'default'\n /**\n *\n * Propriedade que define o tipo de comportamento que o componente Step deverá seguir\n */\n @Prop({ reflect: true }) mode: 'controller' | 'step' = 'step'\n\n /**\n *\n * Propriedade que define o tipo de progressão de etapas que o step vai executar\n */\n @Prop({ reflect: true }) progressionType: 'linear' | 'nonlinear' = 'nonlinear'\n\n @State() activeStep: number = 0\n @State() stepItems: Element[] = []\n /**\n * Emite um evento após o componente ter sido carregado pela primeira vez.\n * Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brDidLoad: EventEmitter<void>\n componentDidLoad() {\n this.setStepItemsLabelPosition()\n this.setStepItemsContentType()\n this.setStepItemsDefaultContent()\n this.setStepItemsMode(this.mode)\n if (this.mode === 'step') {\n this.configureTimeLine()\n }\n if (this.progressionType === 'linear') {\n this.configureLinearProgression()\n }\n if (this.activeStep <= this.stepItems.length - 1) {\n this.stepItems[this.activeStep].setAttribute('active', 'true')\n } else {\n console.warn('br-step initial-step attribute has value more than number of step-items provided')\n }\n this.brDidLoad.emit()\n }\n\n /**\n * Emite um evento antes do componente ser renderizado pela primeira vez, permitindo a preparação de dados ou inicializações necessárias.\n * Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdwillLoad) para mais detalhes.\n */\n @Event() brWilLoad: EventEmitter<void>\n componentWillLoad() {\n this.activeStep = Number(this.initialStep)\n this.getStepItemsElements()\n this.brWilLoad.emit()\n }\n\n /**\n * Emite um evento para indicar se o componente deve ser atualizado ou não.\n * Este evento é chamado antes de qualquer atualização do componente para decidir se a atualização deve prosseguir.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentshouldupdate) para mais detalhes.\n */\n @Event() brShouldUpdate: EventEmitter<void>\n componentShouldUpdate(newValue, oldValue, stateName) {\n if (stateName == 'activeStep' && oldValue != newValue) {\n const outOfRange = oldValue > this.stepItems.length - 1\n this.stepItems[this.activeStep].setAttribute('active', 'true')\n if (!outOfRange) {\n this.stepItems[oldValue].removeAttribute('active')\n }\n this.brShouldUpdate.emit()\n }\n }\n\n /**\n * listener para ouvir o evento de click no componente step\n * Através desse listener o componente define qual será o proximo passo do step que terá o estado ativo\n */\n\n @Listen('click', { capture: true })\n handleClick(event) {\n const targetElement = event.target as Element\n if (targetElement.getAttribute('slot') !== null) {\n const slotItem = this.stepItems.findIndex((element) => element.lastElementChild === targetElement)\n this.activeStep = slotItem\n return\n }\n const item = this.stepItems.findIndex((element) => element === targetElement)\n this.activeStep = item\n }\n\n private getStepItemsElements() {\n const slotItems = Array.from(this.el.children)\n const firstChildrenContentTypeValue = slotItems[0].getAttribute('content-type')\n const childrenHaveConsistentContentType = slotItems.every(\n (item) => item.getAttribute('content-type') === firstChildrenContentTypeValue\n )\n const childrenHaveConsistentTagName = slotItems.every((item) => item.tagName.toLowerCase() === 'br-step-item')\n if (childrenHaveConsistentContentType && childrenHaveConsistentTagName) {\n this.stepItems = slotItems\n return\n }\n if (!childrenHaveConsistentTagName) {\n throw new Error('br-step component must have as child elements only br-step-items components')\n }\n if (!childrenHaveConsistentContentType) {\n throw new Error('br-step must have all child elements with same content type attribute value')\n }\n }\n\n private setStepItemsLabelPosition() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements) => {\n if (this.labelPosition !== undefined) {\n elements.setLabelPosition(this.labelPosition)\n }\n })\n }\n\n private setStepItemsDefaultContent() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n const indicatorContent = index + 1\n elements.setContent(indicatorContent.toString())\n })\n }\n\n private async setStepItemsContentType() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n await Promise.all(slotItems.map((element) => element.setContentType(this.contentType)))\n slotItems.forEach((elements, index) => {\n elements.setAttribute('aria-posinset', `${index + 1}`)\n elements.setAttribute('aria-setsize', `${slotItems.length}`)\n })\n }\n\n private setStepItemsMode(mode: 'controller' | 'step') {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements) => {\n if (mode === 'controller') {\n elements.setMode(this.mode)\n elements.setContentType('no-content')\n if (this.layout !== 'horizontal') {\n this.layout = 'horizontal'\n }\n elements.handleShowTimeLine(false, this.layout)\n elements.removeAttribute('label')\n }\n })\n }\n\n private getStepItemPosition(stepItemsElements: HTMLBrStepItemElement[], index) {\n if (index === 0) {\n return 'first'\n }\n if (index > 0 && index < stepItemsElements.length - 1) {\n return 'middle'\n }\n return 'last'\n }\n\n private configureTimeLine() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n const elementPosition = this.getStepItemPosition(slotItems, index)\n elements.setStepItemPositionStatus(elementPosition)\n elements.handleShowTimeLine(true, this.layout)\n })\n }\n\n private configureLinearProgression() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n if (index > 0) {\n elements.setAttribute('disabled', 'true')\n }\n })\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que controla o componente Step, responsável por avançar para o próximo passo e atualizar o valor do estado activeStep\n */\n @Method()\n async ProceedToNextStep() {\n if (this.activeStep + 1 < this.stepItems.length) {\n this.activeStep = this.activeStep + 1\n if (this.progressionType === 'linear') {\n this.stepItems[this.activeStep].removeAttribute('disabled')\n }\n }\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que controla o componente Step, responsável por retornar ao passo anterior e atualizar o valor do estado activeStep\n */\n @Method()\n async BackToPreviousStep() {\n if (this.activeStep - 1 >= 0) {\n this.activeStep = this.activeStep - 1\n }\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que integra um componente externo ao componente Step, permitindo sinalizar validações ou destacar a etapa com estado ativo.\n */\n @Method()\n async StepValidation(validationStatus: 'success' | 'info' | 'danger' | 'warning') {\n this.stepItems[this.activeStep].setAttribute('highlight', validationStatus)\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que permite a um componente externo obter a etapa com o estado ativo do componente Step.\n */\n @Method()\n async GetActiveStep() {\n return this.activeStep\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-step': true,\n 'step-container': true,\n horizontal: this.layout === 'horizontal',\n vertical: this.layout === 'vertical',\n 'label-left': this.labelPosition === 'left',\n 'label-right': this.labelPosition === 'right',\n }\n }\n\n private AriaObjectContent = {\n step: 'Modo etapas ',\n controller: 'Modo controle ',\n default: 'passos com conteúdo numérico ',\n 'br-icon': 'passos com conteúdo que possuem icones ',\n slotted: 'passos com conteúdo customizados ',\n 'no-content': 'passos que apresentam conteúdo por meio de tooltip ',\n linear: 'progressão linear ',\n nonlinear: 'progressão não linear ',\n vertical: 'com layout vertical ',\n horizontal: 'com layout horizontal ',\n }\n\n private getAreaLabel(): string {\n let ariaLabel = ' Lista de Opções '\n if (this.mode !== 'controller') {\n ariaLabel +=\n this.AriaObjectContent[this.mode] +\n this.AriaObjectContent[this.contentType] +\n this.AriaObjectContent[this.progressionType] +\n this.AriaObjectContent[this.layout]\n } else {\n ariaLabel += this.AriaObjectContent[this.mode]\n }\n return ariaLabel\n }\n\n render() {\n return (\n <Host>\n {this.stepItems.length > 0 && (\n <div\n role=\"listbox\"\n tabIndex={0}\n aria-orientation={this.layout}\n aria-label={this.getAreaLabel()}\n class={this.getCssClassMap()}\n >\n <slot></slot>\n </div>\n )}\n </Host>\n )\n }\n}\n"]}
1
+ {"version":3,"file":"step.js","sourceRoot":"","sources":["../../../../../../packages/webcomponents/src/components/step/step.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/step?tab=designer).\n *\n * @slot default - Slot que abriga o componente step-item. Este slot tem a particularidade de aceitar somente o componente step-item em sua composição. Caso outro elemento ou componente seja incluído dentro dele, o componente Step não será renderizado, e uma mensagem de erro será exibida no console.\n */\n@Component({\n tag: 'br-step',\n styleUrl: 'step.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Step {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrStepElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * propriedade responsável por definir a orientação do componente Step\n */\n @Prop({ reflect: true }) layout: 'horizontal' | 'vertical' = 'horizontal'\n /**\n *\n * define o passo que começará destacado\n */\n @Prop({ reflect: true }) initialStep: string = '0'\n /**\n *\n * Propriedade que define a posição onde o texto de destaque,label, ficará localizado no stepItem\n */\n @Prop({ reflect: true }) labelPosition?: 'top' | 'right' | 'bottom' | 'left' = 'bottom'\n /**\n *\n * Propriedade que define o tipo de conteúdo a ser exibido dentro do componente step e stepItem\n */\n @Prop({ reflect: true }) contentType: 'default' | 'br-icon' | 'no-content' | 'slotted' = 'default'\n /**\n *\n * Propriedade que define o tipo de comportamento que o componente Step deverá seguir\n */\n @Prop({ reflect: true }) mode: 'controller' | 'step' = 'step'\n\n /**\n *\n * Propriedade que define o tipo de progressão de etapas que o step vai executar\n */\n @Prop({ reflect: true }) progressionType: 'linear' | 'nonlinear' = 'nonlinear'\n\n @State() activeStep: number = 0\n @State() stepItems: Element[] = []\n /**\n * Emite um evento após o componente ter sido carregado pela primeira vez.\n * Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brDidLoad: EventEmitter<void>\n componentDidLoad() {\n this.setStepItemsLabelPosition()\n this.setStepItemsContentType()\n this.setStepItemsDefaultContent()\n this.setStepItemsMode(this.mode)\n if (this.mode === 'step') {\n this.configureTimeLine()\n }\n if (this.progressionType === 'linear') {\n this.configureLinearProgression()\n }\n if (this.activeStep <= this.stepItems.length - 1) {\n this.stepItems[this.activeStep].setAttribute('active', 'true')\n } else {\n console.warn('br-step initial-step attribute has value more than number of step-items provided')\n }\n this.brDidLoad.emit()\n }\n\n /**\n * Emite um evento antes do componente ser renderizado pela primeira vez, permitindo a preparação de dados ou inicializações necessárias.\n * Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdwillLoad) para mais detalhes.\n */\n @Event() brWilLoad: EventEmitter<void>\n componentWillLoad() {\n this.activeStep = Number(this.initialStep)\n this.getStepItemsElements()\n this.brWilLoad.emit()\n }\n\n /**\n * Emite um evento para indicar se o componente deve ser atualizado ou não.\n * Este evento é chamado antes de qualquer atualização do componente para decidir se a atualização deve prosseguir.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentshouldupdate) para mais detalhes.\n */\n @Event() brShouldUpdate: EventEmitter<void>\n componentShouldUpdate(newValue, oldValue, stateName) {\n if (stateName == 'activeStep' && oldValue != newValue) {\n const outOfRange = oldValue > this.stepItems.length - 1\n this.stepItems[this.activeStep].setAttribute('active', 'true')\n if (!outOfRange) {\n this.stepItems[oldValue].removeAttribute('active')\n }\n this.brShouldUpdate.emit()\n }\n }\n\n /**\n * listener para ouvir o evento de click no componente step\n * Através desse listener o componente define qual será o proximo passo do step que terá o estado ativo\n */\n\n @Listen('click', { capture: true })\n handleClick(event) {\n const targetElement = event.target as Element\n if (targetElement.getAttribute('slot') !== null) {\n const slotItem = this.stepItems.findIndex((element) => element.lastElementChild === targetElement)\n this.activeStep = slotItem\n return\n }\n const item = this.stepItems.findIndex((element) => element === targetElement)\n this.activeStep = item\n }\n\n private getStepItemsElements() {\n const slotItems = Array.from(this.el.children)\n const firstChildrenContentTypeValue = slotItems[0].getAttribute('content-type')\n const childrenHaveConsistentContentType = slotItems.every(\n (item) => item.getAttribute('content-type') === firstChildrenContentTypeValue\n )\n const childrenHaveConsistentTagName = slotItems.every((item) => item.tagName.toLowerCase() === 'br-step-item')\n if (childrenHaveConsistentContentType && childrenHaveConsistentTagName) {\n this.stepItems = slotItems\n return\n }\n if (!childrenHaveConsistentTagName) {\n throw new Error('br-step component must have as child elements only br-step-items components')\n }\n if (!childrenHaveConsistentContentType) {\n throw new Error('br-step must have all child elements with same content type attribute value')\n }\n }\n\n private setStepItemsLabelPosition() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements) => {\n if (this.labelPosition !== undefined) {\n elements.setLabelPosition(this.labelPosition)\n }\n })\n }\n\n private setStepItemsDefaultContent() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n const indicatorContent = index + 1\n elements.setContent(indicatorContent.toString())\n })\n }\n\n private async setStepItemsContentType() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n await Promise.all(slotItems.map((element) => element.setContentType(this.contentType)))\n slotItems.forEach((elements, index) => {\n elements.setAttribute('aria-posinset', `${index + 1}`)\n elements.setAttribute('aria-setsize', `${slotItems.length}`)\n })\n }\n\n private setStepItemsMode(mode: 'controller' | 'step') {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements) => {\n if (mode === 'controller') {\n elements.setMode(this.mode)\n elements.setContentType('no-content')\n if (this.layout !== 'horizontal') {\n this.layout = 'horizontal'\n }\n elements.handleShowTimeLine(false, this.layout)\n elements.removeAttribute('label')\n }\n })\n }\n\n private getStepItemPosition(stepItemsElements: HTMLBrStepItemElement[], index) {\n if (index === 0) {\n return 'first'\n }\n if (index > 0 && index < stepItemsElements.length - 1) {\n return 'middle'\n }\n return 'last'\n }\n\n private configureTimeLine() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n const elementPosition = this.getStepItemPosition(slotItems, index)\n elements.setStepItemPositionStatus(elementPosition)\n elements.handleShowTimeLine(true, this.layout)\n })\n }\n\n private configureLinearProgression() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n if (index > 0) {\n elements.setAttribute('disabled', 'true')\n }\n })\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que controla o componente Step, responsável por avançar para o próximo passo e atualizar o valor do estado activeStep\n */\n @Method()\n async ProceedToNextStep() {\n if (this.activeStep + 1 < this.stepItems.length) {\n this.activeStep = this.activeStep + 1\n if (this.progressionType === 'linear') {\n this.stepItems[this.activeStep].removeAttribute('disabled')\n }\n }\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que controla o componente Step, responsável por retornar ao passo anterior e atualizar o valor do estado activeStep\n */\n @Method()\n async BackToPreviousStep() {\n if (this.activeStep - 1 >= 0) {\n this.activeStep = this.activeStep - 1\n }\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que integra um componente externo ao componente Step, permitindo sinalizar validações ou destacar a etapa com estado ativo.\n */\n @Method()\n async StepValidation(validationStatus: 'success' | 'info' | 'danger' | 'warning') {\n this.stepItems[this.activeStep].setAttribute('highlight', validationStatus)\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que permite a um componente externo obter a etapa com o estado ativo do componente Step.\n */\n @Method()\n async GetActiveStep() {\n return this.activeStep\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-step': true,\n 'step-container': true,\n horizontal: this.layout === 'horizontal',\n vertical: this.layout === 'vertical',\n 'label-left': this.labelPosition === 'left',\n 'label-right': this.labelPosition === 'right',\n }\n }\n\n private AriaObjectContent = {\n step: 'Modo etapas ',\n controller: 'Modo controle ',\n default: 'passos com conteúdo numérico ',\n 'br-icon': 'passos com conteúdo que possuem icones ',\n slotted: 'passos com conteúdo customizados ',\n 'no-content': 'passos que apresentam conteúdo por meio de tooltip ',\n linear: 'progressão linear ',\n nonlinear: 'progressão não linear ',\n vertical: 'com layout vertical ',\n horizontal: 'com layout horizontal ',\n }\n\n private getAreaLabel(): string {\n let ariaLabel = ' Lista de Opções '\n if (this.mode !== 'controller') {\n ariaLabel +=\n this.AriaObjectContent[this.mode] +\n this.AriaObjectContent[this.contentType] +\n this.AriaObjectContent[this.progressionType] +\n this.AriaObjectContent[this.layout]\n } else {\n ariaLabel += this.AriaObjectContent[this.mode]\n }\n return ariaLabel\n }\n\n render() {\n return (\n <Host>\n {this.stepItems.length > 0 && (\n <div\n role=\"listbox\"\n tabIndex={0}\n aria-orientation={this.layout}\n aria-label={this.getAreaLabel()}\n class={this.getCssClassMap()}\n >\n <slot></slot>\n </div>\n )}\n </Host>\n )\n }\n}\n"]}