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

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 (274) hide show
  1. package/dist/cjs/br-checkbox.br-input.br-radio.entry.cjs.js.map +1 -1
  2. package/dist/cjs/br-checkbox_3.cjs.entry.js +17 -28
  3. package/dist/cjs/br-collapse.br-list.entry.cjs.js.map +1 -1
  4. package/dist/cjs/br-collapse_2.cjs.entry.js +10 -15
  5. package/dist/cjs/br-datetime-picker.cjs.entry.js +18 -31
  6. package/dist/cjs/br-datetime-picker.entry.cjs.js.map +1 -1
  7. package/dist/cjs/br-dropdown.br-select.entry.cjs.js.map +1 -1
  8. package/dist/cjs/br-dropdown_2.cjs.entry.js +73 -56
  9. package/dist/cjs/br-header-list.cjs.entry.js +6 -13
  10. package/dist/cjs/br-header-list.entry.cjs.js.map +1 -1
  11. package/dist/cjs/br-header.cjs.entry.js +2 -5
  12. package/dist/cjs/br-header.entry.cjs.js.map +1 -1
  13. package/dist/cjs/br-item.cjs.entry.js +3 -6
  14. package/dist/cjs/br-item.entry.cjs.js.map +1 -1
  15. package/dist/cjs/br-message.cjs.entry.js +13 -16
  16. package/dist/cjs/br-message.entry.cjs.js.map +1 -1
  17. package/dist/cjs/br-modal.cjs.entry.js +8 -13
  18. package/dist/cjs/br-modal.entry.cjs.js.map +1 -1
  19. package/dist/cjs/br-scrim.cjs.entry.js +40 -51
  20. package/dist/cjs/br-scrim.entry.cjs.js.map +1 -1
  21. package/dist/cjs/br-skip-link.cjs.entry.js +25 -30
  22. package/dist/cjs/br-skip-link.entry.cjs.js.map +1 -1
  23. package/dist/cjs/br-skiplink-item.cjs.entry.js +32 -37
  24. package/dist/cjs/br-skiplink-item.entry.cjs.js.map +1 -1
  25. package/dist/cjs/br-step.br-step-item.entry.cjs.js.map +1 -1
  26. package/dist/cjs/br-step_2.cjs.entry.js +33 -56
  27. package/dist/cjs/br-switch.cjs.entry.js +3 -6
  28. package/dist/cjs/br-switch.entry.cjs.js.map +1 -1
  29. package/dist/cjs/br-textarea.cjs.entry.js +5 -8
  30. package/dist/cjs/br-textarea.entry.cjs.js.map +1 -1
  31. package/dist/cjs/br-tooltip.cjs.entry.js +1 -2
  32. package/dist/cjs/br-tooltip.entry.cjs.js.map +1 -1
  33. package/dist/cjs/br-wizard-panel.cjs.entry.js +6 -13
  34. package/dist/cjs/br-wizard-panel.entry.cjs.js.map +1 -1
  35. package/dist/cjs/br-wizard.cjs.entry.js +147 -182
  36. package/dist/cjs/br-wizard.entry.cjs.js.map +1 -1
  37. package/dist/cjs/{floating-ui-D_WzFT9x.js → floating-ui-CkTJEp-y.js} +11 -15
  38. package/dist/{esm/floating-ui-DBIzWbO2.js.map → cjs/floating-ui-CkTJEp-y.js.map} +1 -1
  39. package/dist/cjs/loader.cjs.js +1 -1
  40. package/dist/cjs/webcomponents.cjs.js +1 -1
  41. package/dist/collection/components/checkbox/checkbox.js +9 -16
  42. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  43. package/dist/collection/components/collapse/collapse.js +10 -15
  44. package/dist/collection/components/collapse/collapse.js.map +1 -1
  45. package/dist/collection/components/datetime-picker/datetime-picker.js +18 -31
  46. package/dist/collection/components/datetime-picker/datetime-picker.js.map +1 -1
  47. package/dist/collection/components/dropdown/dropdown.js +13 -20
  48. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  49. package/dist/collection/components/header/header-list/header-list.js +6 -13
  50. package/dist/collection/components/header/header-list/header-list.js.map +1 -1
  51. package/dist/collection/components/header/header.js +2 -5
  52. package/dist/collection/components/header/header.js.map +1 -1
  53. package/dist/collection/components/item/item.js +3 -6
  54. package/dist/collection/components/item/item.js.map +1 -1
  55. package/dist/collection/components/message/message.js +13 -16
  56. package/dist/collection/components/message/message.js.map +1 -1
  57. package/dist/collection/components/modal/modal.js +8 -13
  58. package/dist/collection/components/modal/modal.js.map +1 -1
  59. package/dist/collection/components/radio/radio.js +8 -13
  60. package/dist/collection/components/radio/radio.js.map +1 -1
  61. package/dist/collection/components/scrim/scrim.js +40 -51
  62. package/dist/collection/components/scrim/scrim.js.map +1 -1
  63. package/dist/collection/components/select/select.js +79 -36
  64. package/dist/collection/components/select/select.js.map +1 -1
  65. package/dist/collection/components/skip-link/skip-link-item/skip-link-item.js +32 -37
  66. package/dist/collection/components/skip-link/skip-link-item/skip-link-item.js.map +1 -1
  67. package/dist/collection/components/skip-link/skip-link.js +25 -30
  68. package/dist/collection/components/skip-link/skip-link.js.map +1 -1
  69. package/dist/collection/components/step/step-item/step-item.js +13 -26
  70. package/dist/collection/components/step/step-item/step-item.js.map +1 -1
  71. package/dist/collection/components/step/step.js +20 -31
  72. package/dist/collection/components/step/step.js.map +1 -1
  73. package/dist/collection/components/switch/switch.js +3 -6
  74. package/dist/collection/components/switch/switch.js.map +1 -1
  75. package/dist/collection/components/textarea/textarea.js +5 -8
  76. package/dist/collection/components/textarea/textarea.js.map +1 -1
  77. package/dist/collection/components/wizard/wizard-panel/wizard-panel.js +6 -13
  78. package/dist/collection/components/wizard/wizard-panel/wizard-panel.js.map +1 -1
  79. package/dist/collection/components/wizard/wizard.js +147 -182
  80. package/dist/collection/components/wizard/wizard.js.map +1 -1
  81. package/dist/collection/utils/floating-ui.js +9 -12
  82. package/dist/collection/utils/floating-ui.js.map +1 -1
  83. package/dist/components/br-breadcrumb.js +3 -3
  84. package/dist/components/br-checkbox.js +4 -4
  85. package/dist/components/br-checkgroup.js +1 -1
  86. package/dist/components/br-collapse.js +4 -4
  87. package/dist/components/br-datetime-picker.js +1981 -1995
  88. package/dist/components/br-datetime-picker.js.map +1 -1
  89. package/dist/components/br-dropdown.js +1 -1
  90. package/dist/components/br-footer-category.js +3 -3
  91. package/dist/components/br-footer-item.js +1 -1
  92. package/dist/components/br-header-function.js +1 -1
  93. package/dist/components/br-header-link.js +1 -1
  94. package/dist/components/br-header-list.js +31 -39
  95. package/dist/components/br-header-list.js.map +1 -1
  96. package/dist/components/br-header.js +63 -67
  97. package/dist/components/br-header.js.map +1 -1
  98. package/dist/components/br-item.js +1 -1
  99. package/dist/components/br-list.js +3 -3
  100. package/dist/components/br-message.js +28 -32
  101. package/dist/components/br-message.js.map +1 -1
  102. package/dist/components/br-modal.js +21 -27
  103. package/dist/components/br-modal.js.map +1 -1
  104. package/dist/components/br-pagination.js +7 -7
  105. package/dist/components/br-radio.js +1 -1
  106. package/dist/components/br-scrim.js +49 -61
  107. package/dist/components/br-scrim.js.map +1 -1
  108. package/dist/components/br-select.js +3 -3
  109. package/dist/components/br-skip-link.js +42 -49
  110. package/dist/components/br-skip-link.js.map +1 -1
  111. package/dist/components/br-skiplink-item.js +55 -61
  112. package/dist/components/br-skiplink-item.js.map +1 -1
  113. package/dist/components/br-step-item.js +4 -4
  114. package/dist/components/br-step.js +4 -4
  115. package/dist/components/br-switch.js +12 -16
  116. package/dist/components/br-switch.js.map +1 -1
  117. package/dist/components/br-textarea.js +14 -18
  118. package/dist/components/br-textarea.js.map +1 -1
  119. package/dist/components/br-tooltip.js +1 -1
  120. package/dist/components/br-wizard-panel.js +13 -21
  121. package/dist/components/br-wizard-panel.js.map +1 -1
  122. package/dist/components/br-wizard.js +190 -228
  123. package/dist/components/br-wizard.js.map +1 -1
  124. package/dist/components/{p-Cc75U9ZX.js → p-B_YesJM8.js} +26 -34
  125. package/dist/components/{p-Cc75U9ZX.js.map → p-B_YesJM8.js.map} +1 -1
  126. package/dist/components/{p-xFn46pdm.js → p-Bc03PTAW.js} +27 -39
  127. package/dist/components/{p-xFn46pdm.js.map → p-Bc03PTAW.js.map} +1 -1
  128. package/dist/components/{p-DzKEfDGA.js → p-Bri6ECVa.js} +27 -33
  129. package/dist/components/{p-DzKEfDGA.js.map → p-Bri6ECVa.js.map} +1 -1
  130. package/dist/components/{p-BZ8BetvD.js → p-CJSXIVVe.js} +17 -23
  131. package/dist/components/{p-BZ8BetvD.js.map → p-CJSXIVVe.js.map} +1 -1
  132. package/dist/components/{p-D9c7NikS.js → p-CWRBs6PD.js} +24 -38
  133. package/dist/components/{p-D9c7NikS.js.map → p-CWRBs6PD.js.map} +1 -1
  134. package/dist/components/{p-D0dPo1K5.js → p-CwtLw60M.js} +12 -16
  135. package/dist/components/{p-D0dPo1K5.js.map → p-CwtLw60M.js.map} +1 -1
  136. package/dist/components/{p-z1PVVVFI.js → p-DW63EY0U.js} +27 -35
  137. package/dist/components/{p-z1PVVVFI.js.map → p-DW63EY0U.js.map} +1 -1
  138. package/dist/components/{p-7kxAU6Gr.js → p-DdjKNpU3.js} +92 -72
  139. package/dist/components/p-DdjKNpU3.js.map +1 -0
  140. package/dist/{webcomponents/p-B4au_byv.js → components/p-k0WZfTfL.js} +121 -124
  141. package/dist/components/{p-B4au_byv.js.map → p-k0WZfTfL.js.map} +1 -1
  142. package/dist/components/{p-OKkBxn1z.js → p-lIb35q2K.js} +3 -3
  143. package/dist/custom-elements.json +19459 -0
  144. package/dist/esm/br-checkbox.br-input.br-radio.entry.js.map +1 -1
  145. package/dist/esm/br-checkbox_3.entry.js +17 -28
  146. package/dist/esm/br-collapse.br-list.entry.js.map +1 -1
  147. package/dist/esm/br-collapse_2.entry.js +10 -15
  148. package/dist/esm/br-datetime-picker.entry.js +18 -31
  149. package/dist/esm/br-datetime-picker.entry.js.map +1 -1
  150. package/dist/esm/br-dropdown.br-select.entry.js.map +1 -1
  151. package/dist/esm/br-dropdown_2.entry.js +73 -56
  152. package/dist/esm/br-header-list.entry.js +6 -13
  153. package/dist/esm/br-header-list.entry.js.map +1 -1
  154. package/dist/esm/br-header.entry.js +2 -5
  155. package/dist/esm/br-header.entry.js.map +1 -1
  156. package/dist/esm/br-item.entry.js +3 -6
  157. package/dist/esm/br-item.entry.js.map +1 -1
  158. package/dist/esm/br-message.entry.js +13 -16
  159. package/dist/esm/br-message.entry.js.map +1 -1
  160. package/dist/esm/br-modal.entry.js +8 -13
  161. package/dist/esm/br-modal.entry.js.map +1 -1
  162. package/dist/esm/br-scrim.entry.js +40 -51
  163. package/dist/esm/br-scrim.entry.js.map +1 -1
  164. package/dist/esm/br-skip-link.entry.js +25 -30
  165. package/dist/esm/br-skip-link.entry.js.map +1 -1
  166. package/dist/esm/br-skiplink-item.entry.js +32 -37
  167. package/dist/esm/br-skiplink-item.entry.js.map +1 -1
  168. package/dist/esm/br-step.br-step-item.entry.js.map +1 -1
  169. package/dist/esm/br-step_2.entry.js +33 -56
  170. package/dist/esm/br-switch.entry.js +3 -6
  171. package/dist/esm/br-switch.entry.js.map +1 -1
  172. package/dist/esm/br-textarea.entry.js +5 -8
  173. package/dist/esm/br-textarea.entry.js.map +1 -1
  174. package/dist/esm/br-tooltip.entry.js +1 -2
  175. package/dist/esm/br-tooltip.entry.js.map +1 -1
  176. package/dist/esm/br-wizard-panel.entry.js +6 -13
  177. package/dist/esm/br-wizard-panel.entry.js.map +1 -1
  178. package/dist/esm/br-wizard.entry.js +147 -182
  179. package/dist/esm/br-wizard.entry.js.map +1 -1
  180. package/dist/esm/{floating-ui-DBIzWbO2.js → floating-ui-k0WZfTfL.js} +11 -15
  181. package/dist/{cjs/floating-ui-D_WzFT9x.js.map → esm/floating-ui-k0WZfTfL.js.map} +1 -1
  182. package/dist/esm/loader.js +1 -1
  183. package/dist/esm/webcomponents.js +1 -1
  184. package/dist/hydrate/index.js +451 -592
  185. package/dist/hydrate/index.mjs +451 -592
  186. package/dist/types/components/select/select.d.ts +5 -0
  187. package/dist/types/components.d.ts +10 -0
  188. package/dist/webcomponents/br-checkbox.br-input.br-radio.entry.esm.js.map +1 -1
  189. package/dist/webcomponents/br-collapse.br-list.entry.esm.js.map +1 -1
  190. package/dist/webcomponents/br-datetime-picker.entry.esm.js.map +1 -1
  191. package/dist/webcomponents/br-dropdown.br-select.entry.esm.js.map +1 -1
  192. package/dist/webcomponents/br-header-list.entry.esm.js.map +1 -1
  193. package/dist/webcomponents/br-header.entry.esm.js.map +1 -1
  194. package/dist/webcomponents/br-item.entry.esm.js.map +1 -1
  195. package/dist/webcomponents/br-message.entry.esm.js.map +1 -1
  196. package/dist/webcomponents/br-modal.entry.esm.js.map +1 -1
  197. package/dist/webcomponents/br-scrim.entry.esm.js.map +1 -1
  198. package/dist/webcomponents/br-skip-link.entry.esm.js.map +1 -1
  199. package/dist/webcomponents/br-skiplink-item.entry.esm.js.map +1 -1
  200. package/dist/webcomponents/br-step.br-step-item.entry.esm.js.map +1 -1
  201. package/dist/webcomponents/br-switch.entry.esm.js.map +1 -1
  202. package/dist/webcomponents/br-textarea.entry.esm.js.map +1 -1
  203. package/dist/webcomponents/br-tooltip.entry.esm.js.map +1 -1
  204. package/dist/webcomponents/br-wizard-panel.entry.esm.js.map +1 -1
  205. package/dist/webcomponents/br-wizard.entry.esm.js.map +1 -1
  206. package/dist/webcomponents/{p-2fe329d6.entry.js → p-10e25a32.entry.js} +28 -34
  207. package/dist/webcomponents/p-10e25a32.entry.js.map +1 -0
  208. package/dist/webcomponents/{p-61e5421b.entry.js → p-27eb10f9.entry.js} +57 -61
  209. package/dist/webcomponents/p-27eb10f9.entry.js.map +1 -0
  210. package/dist/webcomponents/{p-097912c2.entry.js → p-2be1c309.entry.js} +34 -41
  211. package/dist/webcomponents/p-2be1c309.entry.js.map +1 -0
  212. package/dist/webcomponents/{p-5070161f.entry.js → p-30af66b3.entry.js} +45 -51
  213. package/dist/webcomponents/p-30af66b3.entry.js.map +1 -0
  214. package/dist/webcomponents/{p-9464b692.entry.js → p-336071a5.entry.js} +2 -4
  215. package/dist/webcomponents/p-336071a5.entry.js.map +1 -0
  216. package/dist/webcomponents/{p-8a034433.entry.js → p-462c5647.entry.js} +20 -24
  217. package/dist/webcomponents/p-462c5647.entry.js.map +1 -0
  218. package/dist/webcomponents/{p-d674cee3.entry.js → p-46dfc3ee.entry.js} +12 -16
  219. package/dist/webcomponents/p-46dfc3ee.entry.js.map +1 -0
  220. package/dist/webcomponents/{p-821b896c.entry.js → p-56aabe89.entry.js} +36 -44
  221. package/dist/webcomponents/p-56aabe89.entry.js.map +1 -0
  222. package/dist/webcomponents/{p-a615baaa.entry.js → p-5710a3e9.entry.js} +41 -65
  223. package/dist/webcomponents/p-5710a3e9.entry.js.map +1 -0
  224. package/dist/webcomponents/{p-1799a082.entry.js → p-6a9d2a0b.entry.js} +1996 -2010
  225. package/dist/webcomponents/p-6a9d2a0b.entry.js.map +1 -0
  226. package/dist/webcomponents/{p-8ad1f003.entry.js → p-83001853.entry.js} +175 -213
  227. package/dist/webcomponents/p-83001853.entry.js.map +1 -0
  228. package/dist/webcomponents/{p-463b06a4.entry.js → p-90401ecd.entry.js} +32 -38
  229. package/dist/webcomponents/p-90401ecd.entry.js.map +1 -0
  230. package/dist/webcomponents/{p-216dc111.entry.js → p-a2eec4fb.entry.js} +49 -61
  231. package/dist/webcomponents/p-a2eec4fb.entry.js.map +1 -0
  232. package/dist/webcomponents/{p-d6475852.entry.js → p-c1b0a116.entry.js} +11 -19
  233. package/dist/webcomponents/p-c1b0a116.entry.js.map +1 -0
  234. package/dist/webcomponents/{p-c90a089a.entry.js → p-ca2d95f7.entry.js} +96 -83
  235. package/dist/webcomponents/p-ca2d95f7.entry.js.map +1 -0
  236. package/dist/webcomponents/{p-7ff6698f.entry.js → p-cfa86a23.entry.js} +10 -14
  237. package/dist/webcomponents/p-cfa86a23.entry.js.map +1 -0
  238. package/dist/webcomponents/{p-abc0ecbe.entry.js → p-e5875d3d.entry.js} +10 -14
  239. package/dist/webcomponents/p-e5875d3d.entry.js.map +1 -0
  240. package/dist/webcomponents/{p-0bfb0edf.entry.js → p-f2ea0d7e.entry.js} +133 -145
  241. package/dist/webcomponents/p-f2ea0d7e.entry.js.map +1 -0
  242. package/dist/{components/p-B4au_byv.js → webcomponents/p-k0WZfTfL.js} +121 -124
  243. package/dist/webcomponents/{p-B4au_byv.js.map → p-k0WZfTfL.js.map} +1 -1
  244. package/dist/webcomponents/webcomponents.esm.js +1 -1
  245. package/dist/webcomponents.html-custom-data.json +2573 -0
  246. package/package.json +1 -1
  247. package/dist/cjs/tslib.es6-CF44W9Bn.js +0 -42
  248. package/dist/cjs/tslib.es6-CF44W9Bn.js.map +0 -1
  249. package/dist/components/p-7kxAU6Gr.js.map +0 -1
  250. package/dist/components/p-DIPMDb5E.js +0 -55
  251. package/dist/components/p-DIPMDb5E.js.map +0 -1
  252. package/dist/esm/tslib.es6-DIPMDb5E.js +0 -40
  253. package/dist/esm/tslib.es6-DIPMDb5E.js.map +0 -1
  254. package/dist/webcomponents/p-097912c2.entry.js.map +0 -1
  255. package/dist/webcomponents/p-0bfb0edf.entry.js.map +0 -1
  256. package/dist/webcomponents/p-1799a082.entry.js.map +0 -1
  257. package/dist/webcomponents/p-216dc111.entry.js.map +0 -1
  258. package/dist/webcomponents/p-2fe329d6.entry.js.map +0 -1
  259. package/dist/webcomponents/p-463b06a4.entry.js.map +0 -1
  260. package/dist/webcomponents/p-5070161f.entry.js.map +0 -1
  261. package/dist/webcomponents/p-61e5421b.entry.js.map +0 -1
  262. package/dist/webcomponents/p-7ff6698f.entry.js.map +0 -1
  263. package/dist/webcomponents/p-821b896c.entry.js.map +0 -1
  264. package/dist/webcomponents/p-8a034433.entry.js.map +0 -1
  265. package/dist/webcomponents/p-8ad1f003.entry.js.map +0 -1
  266. package/dist/webcomponents/p-9464b692.entry.js.map +0 -1
  267. package/dist/webcomponents/p-DIPMDb5E.js +0 -55
  268. package/dist/webcomponents/p-DIPMDb5E.js.map +0 -1
  269. package/dist/webcomponents/p-a615baaa.entry.js.map +0 -1
  270. package/dist/webcomponents/p-abc0ecbe.entry.js.map +0 -1
  271. package/dist/webcomponents/p-c90a089a.entry.js.map +0 -1
  272. package/dist/webcomponents/p-d6475852.entry.js.map +0 -1
  273. package/dist/webcomponents/p-d674cee3.entry.js.map +0 -1
  274. /package/dist/components/{p-OKkBxn1z.js.map → p-lIb35q2K.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["UniversalSwipe","constructor","element","options","this","evtMap","SWIPE_UP","SWIPE_DOWN","SWIPE_LEFT","SWIPE_RIGHT","startPoint","eventType","isActive","pointerId","threshold","swipeDirection","direction","boundHandleStart","handleStart","bind","boundHandleEnd","handleEnd","boundHandleCancel","handleCancel","applyCSSFix","detectAndAttachListeners","style","touchAction","window","PointerEvent","addEventListener","navigator","maxTouchPoints","passive","detachListeners","removeEventListener","removeDocumentMouseListeners","addDocumentMouseListeners","document","getCoordinates","evt","touches","length","x","clientX","y","clientY","changedTouches","setPointerCapture","_a","endPoint","deltaX","deltaY","absDeltaX","Math","abs","absDeltaY","cleanup","trigger","_evt","releasePointerCapture","on","cb","push","off","filter","callback","data","forEach","handler","destroy","wizardCss","Wizard","__stencil_proxyCustomElement","HTMLElement","registerHost","initialStep","orientation","progressionType","customId","Helpers","generateUniqueId","currentStep","isMobile","collapsed","panels","ariaLiveMessage","stepRef","isSyncingWithStep","progressBarSwipe","progressBarRef","formRef","ariaLiveTimeout","ARIA_LIVE_CLEANUP_DELAY","FOCUSABLE_SELECTOR","handleResize","wasMobile","innerWidth","setupSwipeListeners","cleanupSwipeListeners","handleFormTouchStart","collapseSteps","handleNext","__awaiter","eventResult","brWizardBeforeStepChange","emit","defaultPrevented","brWizardComplete","nextStep","handlePrevious","previousStep","brWizardCancel","handleProgressionTypeChange","updatePanels","handleInitialStepChange","setInitialStep","syncWithBrStep","handleCurrentStepChange","newStep","oldStep","announceStepChange","setFocusOnActivePanel","handleSlotChange","event","slot","target","discoverPanelsFromSlot","handleStepChange","requestedStep","detail","activeStep","success","navigateToStep","stopPropagation","componentWillLoad","Array","from","el","querySelectorAll","componentDidLoad","shadowRoot","querySelector","assignedElements","slotPanels","tagName","toLowerCase","setupMobileDetection","disconnectedCallback","cleanupMobileDetection","clearAriaLiveTimeout","goToStep","stepNumber","reset","getCurrentStep","getAllSteps","getStepByIndex","getCurrentStepIndex","getTotalSteps","targetStep_1","targetStep","skipValidation","message","announceToScreenReader","brWizardNavigationBlocked","shouldValidate","brWizardStepChange","GetActiveStep","targetStepIndex","currentActiveStep","diff","i","ProceedToNextStep","BackToPreviousStep","idx","panel","setIndex","setActive","max","min","requestAnimationFrame","setTimeout","totalSteps","clearTimeout","activePanel","panelElement","focusableElements","focus","_b","expandSteps","getHostClassMap","renderProgress","h","class","ref","String","layout","mode","map","label","getAttribute","renderPanelContent","renderPanelButtons","isFirst","isLast","buttonShape","undefined","type","shape","emphasis","onClick","renderAriaLiveRegion","role","render","hostClass","verticalAttr","vertical","collapsedAttr","activePanelAttr","active","currentPanel","stepLabel","Host","Object","assign","key","step"],"sources":["../../packages/webcomponents/src/utils/swipe.ts","../../packages/webcomponents/src/components/wizard/wizard.scss?tag=br-wizard&encapsulation=shadow","../../packages/webcomponents/src/components/wizard/wizard.tsx"],"sourcesContent":["/**\n * Eventos de swipe suportados.\n * @typedef {('SWIPE_UP'|'SWIPE_DOWN'|'SWIPE_LEFT'|'SWIPE_RIGHT')} SwipeEvent\n */\nexport type SwipeEvent = 'SWIPE_UP' | 'SWIPE_DOWN' | 'SWIPE_LEFT' | 'SWIPE_RIGHT'\n\n/**\n * Tipo de callback para eventos de swipe.\n * @typedef {Function} SwipeCallback\n * @param {unknown} [data] - Dados opcionais passados ao callback\n * @returns {void}\n */\nexport type SwipeCallback = (data?: unknown) => void\n\n/**\n * Mapa de eventos e callbacks.\n * @typedef {Object.<SwipeEvent, SwipeCallback[]>} EventMap\n * @private\n */\ntype EventMap = Record<SwipeEvent, SwipeCallback[]>\n\n/**\n * Coordenadas de um ponto.\n * @typedef {Object} Point\n * @property {number} x - Coordenada X\n * @property {number} y - Coordenada Y\n * @private\n */\ninterface Point {\n x: number\n y: number\n}\n\n/**\n * UniversalSwipe - Detecção de gestos de swipe com suporte universal.\n *\n * Estratégia de detecção (prioridade):\n * 1. Pointer Events - API moderna universal (Chrome 55+, Firefox 59+, Safari 13+, Edge 12+)\n * 2. Touch Events - Fallback para dispositivos móveis sem Pointer Events\n * 3. Mouse Events - Fallback para navegadores antigos\n *\n * Compatibilidade:\n * - ✅ Firefox Desktop (mouse events)\n * - ✅ Chrome Desktop/Mobile (pointer/touch events)\n * - ✅ Safari Desktop/Mobile (pointer/touch events)\n * - ✅ Edge (pointer events)\n * - ✅ Navegadores antigos (touch/mouse events)\n *\n */\nexport class UniversalSwipe {\n /**\n * Mapa de eventos e seus callbacks.\n */\n private evtMap: EventMap = {\n SWIPE_UP: [],\n SWIPE_DOWN: [],\n SWIPE_LEFT: [],\n SWIPE_RIGHT: [],\n }\n\n /**\n * Posição inicial do gesto.\n */\n private startPoint: Point | null = null\n\n /**\n * Elemento alvo do swipe.\n */\n private element: HTMLElement\n\n /**\n * Tipo de evento sendo usado (pointer, touch ou mouse).\n */\n private eventType: 'pointer' | 'touch' | 'mouse' = 'touch'\n\n /**\n * Flag indicando se o gesto está ativo.\n */\n private isActive: boolean = false\n\n /**\n * Pointer ID para captura de eventos (usado com Pointer Events).\n */\n private pointerId: number | null = null\n\n /**\n * Limiar mínimo de movimento para detectar swipe (em pixels).\n */\n private readonly threshold: number = 30\n\n /**\n * Direção do swipe esperado ('horizontal' | 'vertical' | 'both').\n */\n private swipeDirection: 'horizontal' | 'vertical' | 'both' = 'both'\n\n /**\n * Bound handlers para remoção de listeners.\n */\n private boundHandleStart: (evt: PointerEvent | TouchEvent | MouseEvent) => void\n private boundHandleEnd: (evt: PointerEvent | TouchEvent | MouseEvent) => void\n private boundHandleCancel: (evt: PointerEvent | TouchEvent | MouseEvent) => void\n\n /**\n * Cria uma nova instância de UniversalSwipe.\n * @constructor\n * @param {HTMLElement} element - Elemento HTML que receberá os gestos de swipe\n * @param {Object} [options] - Opções de configuração\n * @param {'horizontal'|'vertical'|'both'} [options.direction='both'] - Direção do swipe a ser detectado\n */\n constructor(element: HTMLElement, options?: { direction?: 'horizontal' | 'vertical' | 'both' }) {\n this.element = element\n this.swipeDirection = options?.direction || 'both'\n\n this.boundHandleStart = this.handleStart.bind(this)\n this.boundHandleEnd = this.handleEnd.bind(this)\n this.boundHandleCancel = this.handleCancel.bind(this)\n\n this.applyCSSFix()\n\n this.detectAndAttachListeners()\n }\n\n /**\n * Aplica CSS touch-action para prevenir gestos nativos do browser.\n * Usa 'pan-y' para permitir scroll vertical enquanto detecta swipes horizontais.\n * Usa 'pan-x' para permitir scroll horizontal enquanto detecta swipes verticais.\n * @private\n * @returns {void}\n */\n private applyCSSFix(): void {\n // Configura touch-action baseado na direção do swipe\n if (this.swipeDirection === 'horizontal') {\n // Permite scroll vertical, bloqueia horizontal para detectar SWIPE_LEFT/RIGHT\n this.element.style.touchAction = 'pan-y'\n } else if (this.swipeDirection === 'vertical') {\n // Permite scroll horizontal, bloqueia vertical para detectar SWIPE_UP/DOWN\n this.element.style.touchAction = 'pan-x'\n } else {\n // Bloqueia scroll em ambas direções para detectar qualquer swipe\n // Use 'manipulation' se houver elementos clicáveis dentro\n this.element.style.touchAction = 'manipulation'\n }\n }\n\n /**\n * Detecta qual tipo de evento usar e anexa os listeners apropriados.\n * Estratégia: Prioriza Pointer Events (universal), depois Touch, depois Mouse.\n * @private\n * @returns {void}\n */\n private detectAndAttachListeners(): void {\n // 1. Pointer Events: API moderna e universal (Chrome 55+, Firefox 59+, Safari 13+)\n if (window.PointerEvent) {\n this.eventType = 'pointer'\n this.element.addEventListener('pointerdown', this.boundHandleStart)\n this.element.addEventListener('pointerup', this.boundHandleEnd)\n this.element.addEventListener('pointercancel', this.boundHandleCancel)\n }\n // 2. Touch Events: Fallback para navegadores sem Pointer Events\n else if ('ontouchstart' in window && navigator.maxTouchPoints > 0) {\n this.eventType = 'touch'\n // Passive: false permite preventDefault()\n this.element.addEventListener('touchstart', this.boundHandleStart, { passive: false })\n this.element.addEventListener('touchend', this.boundHandleEnd, { passive: false })\n this.element.addEventListener('touchcancel', this.boundHandleCancel, { passive: false })\n }\n // 3. Mouse Events: Fallback final para navegadores antigos\n else {\n this.eventType = 'mouse'\n this.element.addEventListener('mousedown', this.boundHandleStart)\n // mousemove e mouseup são adicionados ao document no handleStart\n }\n }\n\n /**\n * Remove todos os event listeners do elemento.\n * @private\n * @returns {void}\n */\n private detachListeners(): void {\n if (this.eventType === 'pointer') {\n this.element.removeEventListener('pointerdown', this.boundHandleStart)\n this.element.removeEventListener('pointerup', this.boundHandleEnd)\n this.element.removeEventListener('pointercancel', this.boundHandleCancel)\n } else if (this.eventType === 'touch') {\n this.element.removeEventListener('touchstart', this.boundHandleStart)\n this.element.removeEventListener('touchend', this.boundHandleEnd)\n this.element.removeEventListener('touchcancel', this.boundHandleCancel)\n } else {\n this.element.removeEventListener('mousedown', this.boundHandleStart)\n this.removeDocumentMouseListeners()\n }\n }\n\n /**\n * Adiciona listeners de mouse ao document (necessário para rastrear fora do elemento).\n * @private\n * @returns {void}\n */\n private addDocumentMouseListeners(): void {\n document.addEventListener('mouseup', this.boundHandleEnd)\n document.addEventListener('mouseleave', this.boundHandleCancel)\n }\n\n /**\n * Remove listeners de mouse do document.\n * @private\n * @returns {void}\n */\n private removeDocumentMouseListeners(): void {\n document.removeEventListener('mouseup', this.boundHandleEnd)\n document.removeEventListener('mouseleave', this.boundHandleCancel)\n }\n\n /**\n * Extrai coordenadas do evento independente do tipo.\n * @private\n * @param {PointerEvent|TouchEvent|MouseEvent} evt - Evento de pointer, touch ou mouse\n * @returns {Point} Coordenadas {x, y} do evento\n */\n private getCoordinates(evt: PointerEvent | TouchEvent | MouseEvent): Point {\n if ('touches' in evt && evt.touches.length > 0) {\n // Touch Event\n return {\n x: evt.touches[0].clientX,\n y: evt.touches[0].clientY,\n }\n } else if ('changedTouches' in evt && evt.changedTouches.length > 0) {\n // Touch Event (touchend)\n return {\n x: evt.changedTouches[0].clientX,\n y: evt.changedTouches[0].clientY,\n }\n } else if ('clientX' in evt && 'clientY' in evt) {\n // Pointer Event ou Mouse Event\n return {\n x: evt.clientX,\n y: evt.clientY,\n }\n }\n\n return { x: 0, y: 0 }\n }\n\n /**\n * Handler do início do gesto (pointerdown, touchstart, mousedown).\n * @private\n * @param {PointerEvent|TouchEvent|MouseEvent} evt - Evento do browser\n * @returns {void}\n */\n private handleStart(evt: PointerEvent | TouchEvent | MouseEvent): void {\n this.isActive = true\n this.startPoint = this.getCoordinates(evt)\n\n // Para Pointer Events, captura o pointer para rastrear fora do elemento\n if (this.eventType === 'pointer' && 'pointerId' in evt) {\n this.pointerId = evt.pointerId\n try {\n this.element.setPointerCapture(evt.pointerId)\n } catch {\n // Ignora erro se captura não for suportada\n }\n }\n\n // Para Mouse Events, adiciona listeners ao document\n if (this.eventType === 'mouse') {\n this.addDocumentMouseListeners()\n }\n }\n\n /**\n * Handler do fim do gesto (pointerup, touchend, mouseup).\n * @private\n * @param {PointerEvent|TouchEvent|MouseEvent} evt - Evento do browser\n * @returns {void}\n */\n private handleEnd(evt: PointerEvent | TouchEvent | MouseEvent): void {\n if (!this.isActive || this.startPoint === null) {\n return\n }\n\n const endPoint = this.getCoordinates(evt)\n const deltaX = endPoint.x - this.startPoint.x\n const deltaY = endPoint.y - this.startPoint.y\n\n // Threshold para evitar detecção acidental\n const absDeltaX = Math.abs(deltaX)\n const absDeltaY = Math.abs(deltaY)\n\n // Só dispara swipe se movimento for maior que threshold\n if (absDeltaX < this.threshold && absDeltaY < this.threshold) {\n this.cleanup()\n return\n }\n\n // Determina direção do swipe baseado no maior delta\n if (absDeltaX > absDeltaY) {\n // Swipe horizontal\n if (deltaX < 0) {\n this.trigger('SWIPE_LEFT')\n } else {\n this.trigger('SWIPE_RIGHT')\n }\n } else {\n // Swipe vertical\n if (deltaY < 0) {\n this.trigger('SWIPE_UP')\n } else {\n this.trigger('SWIPE_DOWN')\n }\n }\n\n this.cleanup()\n }\n\n /**\n * Handler de cancelamento do gesto (pointercancel, touchcancel, mouseleave).\n * @private\n * @param {PointerEvent|TouchEvent|MouseEvent} _evt - Evento do browser (não utilizado)\n * @returns {void}\n */\n private handleCancel(_evt: PointerEvent | TouchEvent | MouseEvent): void {\n this.cleanup()\n }\n\n /**\n * Limpa o estado do gesto e remove listeners temporários.\n * @private\n * @returns {void}\n */\n private cleanup(): void {\n this.isActive = false\n this.startPoint = null\n\n // Para Pointer Events, libera a captura\n if (this.eventType === 'pointer' && this.pointerId !== null) {\n try {\n this.element.releasePointerCapture(this.pointerId)\n } catch {\n // Ignora erro se pointer já foi liberado\n }\n this.pointerId = null\n }\n\n if (this.eventType === 'mouse') {\n this.removeDocumentMouseListeners()\n }\n }\n\n /**\n * Registra um callback para um evento de swipe.\n * @param evt - Nome do evento ('SWIPE_UP', 'SWIPE_DOWN', 'SWIPE_LEFT', 'SWIPE_RIGHT')\n * @param cb - Função callback a ser executada quando o evento ocorrer\n */\n public on(evt: SwipeEvent, cb: SwipeCallback): void {\n this.evtMap[evt].push(cb)\n }\n\n /**\n * Remove um callback de um evento de swipe.\n * @param evt - Nome do evento\n * @param cb - Função callback a ser removida\n */\n public off(evt: SwipeEvent, cb: SwipeCallback): void {\n this.evtMap[evt] = this.evtMap[evt].filter((callback) => callback !== cb)\n }\n\n /**\n * Dispara um evento de swipe, executando todos os callbacks registrados.\n * @private\n * @param {SwipeEvent} evt - Nome do evento a ser disparado\n * @param {unknown} [data] - Dados opcionais a serem passados aos callbacks\n * @returns {void}\n */\n private trigger(evt: SwipeEvent, data?: unknown): void {\n this.evtMap[evt].forEach((handler) => handler(data))\n }\n\n /**\n * Destrói a instância, removendo todos os event listeners.\n * Deve ser chamado quando o elemento for removido do DOM.\n * Remove o CSS touch-action aplicado no construtor.\n * @public\n * @returns {void}\n * @example\n * ```typescript\n * disconnectedCallback() {\n * this.swipe?.destroy();\n * }\n * ```\n */\n public destroy(): void {\n this.cleanup()\n this.detachListeners()\n this.element.style.touchAction = ''\n this.evtMap = {\n SWIPE_UP: [],\n SWIPE_DOWN: [],\n SWIPE_LEFT: [],\n SWIPE_RIGHT: [],\n }\n }\n}\n\nexport default UniversalSwipe\n","@import \"~@govbr-ds/core/src/components/wizard/mixins\";\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border-width: 0;\n}\n\n:host {\n @include wizard-tokens;\n @include wizard-default;\n @include wizard-progress;\n @include wizard-progress-collapsed;\n @include wizard-vertical;\n @include wizard-form;\n @include wizard-dark-mode;\n\n br-step-item::part(item-container)::after {\n z-index: 0;\n }\n\n br-step-item::part(item-content) {\n background-color: transparent;\n }\n\n br-step-item[active] {\n --step-label-font-weight: var(--font-weight-semi-bold);\n --step-label-color: var(--active);\n }\n\n br-step-item::part(label) {\n display: block;\n font-size: var(--font-size-scale-down-02);\n line-height: 1em;\n text-align: center;\n }\n\n .wizard-progress {\n padding-top: 0;\n }\n\n @include media-breakpoint-down(sm) {\n .wizard-progress {\n max-height: none;\n height: auto;\n }\n }\n}\n\n:host([collapsed]) {\n br-step-item::part(label) {\n display: none;\n }\n\n @include media-breakpoint-down(sm) {\n br-step-item::part(label) {\n display: none;\n }\n\n br-step-item::part(item-container) {\n &::after {\n bottom: 50%;\n left: 50%;\n transform: translateY(50%);\n }\n }\n\n .wizard-progress {\n max-height: 100px;\n min-height: 100px;\n\n &::after {\n margin-top: var(--spacing-scale-4xh);\n }\n }\n }\n}\n\n:host([vertical]) {\n .wizard-progress {\n flex: 1;\n float: none;\n grid-template-columns: 1fr;\n height: auto;\n max-width: 260px;\n overflow: hidden auto;\n }\n\n @include media-breakpoint-down(sm) {\n .wizard-progress {\n max-height: 100%;\n max-width: 110px;\n\n &::after {\n height: 1em;\n left: unset;\n margin-top: -0.5em;\n right: 2px;\n top: 50%;\n transform: rotate(-90deg);\n width: 1em;\n }\n }\n\n .wizard-form {\n max-width: calc(100% - 110px);\n min-width: calc(100% - 110px);\n }\n\n br-step-item::part(item-container) {\n &::before {\n left: calc(100% - 32px);\n line-height: 26px;\n margin-top: calc(var(--spacing-scale-2x) * -1);\n position: absolute;\n text-align: center;\n top: 50%;\n }\n\n &::after {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n width: 1px;\n }\n }\n\n &[collapsed] {\n br-step-item::part(label) {\n visibility: hidden;\n width: 0;\n height: 0;\n overflow: hidden;\n }\n\n .wizard-progress {\n max-width: 60px;\n padding-bottom: 0;\n padding-top: 0;\n }\n }\n }\n}\n\n:host(.dark-mode) {\n @include dark-mode;\n @include button-dark-mode;\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport Helpers from '../../utils/helpers'\nimport { CssClassMap } from '../../utils/interfaces'\nimport { UniversalSwipe } from '../../utils/swipe'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/wizard?tab=designer).\n *\n * @slot default - Slot para os painéis de etapa (br-wizard-panel) do wizard.\n */\n@Component({\n tag: 'br-wizard',\n styleUrl: 'wizard.scss',\n shadow: true,\n})\nexport class Wizard {\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!: HTMLBrWizardElement\n\n /**\n * Internals API para suporte a formulários nativos.\n */\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Índice da etapa inicial do wizard.\n * Define qual etapa será exibida ao carregar o componente.\n * A numeração começa em 1 (primeira etapa = 1, segunda = 2, etc).\n */\n @Prop({ reflect: true }) initialStep: number = 1\n\n /**\n * Orientação visual do wizard.\n * Define se os indicadores de progresso serão exibidos horizontalmente ou verticalmente.\n */\n @Prop({ reflect: true }) orientation: 'horizontal' | 'vertical' = 'horizontal'\n\n /**\n * Tipo de progressão entre etapas.\n * - `linear`: O usuário deve completar cada etapa sequencialmente. Não é possível pular etapas futuras.\n * - `nonlinear`: O usuário pode navegar livremente entre qualquer etapa.\n */\n @Prop({ reflect: true }) progressionType: 'linear' | 'nonlinear' = 'nonlinear'\n\n /**\n * ID customizado para o componente.\n * Se não fornecido, um ID único será gerado automaticamente.\n */\n @Prop({ reflect: true }) customId: string = Helpers.generateUniqueId()\n\n /**\n * Etapa atual sendo exibida.\n * Gerenciado internamente pelo componente.\n */\n @State() currentStep: number = 1\n\n /** Estado mobile para detecção responsiva */\n @State() isMobile: boolean = false\n\n /**\n * Estado collapsed para recolher/expandir barra de progresso (mobile)\n */\n @State() collapsed: boolean = false\n\n /**\n * Lista de painéis filhos (br-wizard-panel).\n * Descobertos automaticamente via slot.\n */\n @State() panels: HTMLElement[] = []\n\n /**\n * Mensagem de status para leitores de tela (aria-live)\n */\n @State() ariaLiveMessage: string = ''\n\n // ========================================\n // EVENTOS\n // ========================================\n\n /**\n * Evento emitido APÓS mudar de etapa com sucesso.\n *\n * Este evento é disparado independente da origem da navegação:\n * - Botões \"Avançar\" ou \"Voltar\"\n * - Click direto em um step do indicador de progresso\n * - Chamadas programáticas via métodos públicos (goToStep, nextStep, etc)\n */\n @Event() brWizardStepChange: EventEmitter<number>\n\n /**\n * Evento emitido ANTES de mudar de etapa (permite validação e cancelamento).\n *\n * Comportamento:\n * - Disparado apenas ao AVANÇAR (targetStep > currentStep)\n * - Não é disparado ao VOLTAR (targetStep < currentStep)\n * - Funciona tanto para cliques nos botões quanto para cliques diretos nos steps\n * - Pode ser cancelado com `event.preventDefault()` para bloquear a navegação\n */\n @Event({ cancelable: true }) brWizardBeforeStepChange: EventEmitter<number>\n\n /**\n * Evento emitido ao concluir o wizard (última etapa).\n */\n @Event() brWizardComplete: EventEmitter<void>\n\n /**\n * Evento emitido ao cancelar o wizard.\n */\n @Event() brWizardCancel: EventEmitter<void>\n\n /**\n * Evento emitido quando uma ação é bloqueada (validação falha, progressão linear impedida).\n * Emite uma string indicando o motivo: 'linear-progression' ou 'validation-failed'.\n * Use getCurrentStepIndex() para obter o contexto da etapa atual.\n */\n @Event() brWizardNavigationBlocked: EventEmitter<string>\n\n // ========================================\n // PROPRIEDADES PRIVADAS\n // ========================================\n\n /**\n * Referência ao componente br-step.\n */\n private stepRef: HTMLBrStepElement | null = null\n\n /**\n * Flag para evitar loop quando sincronizamos programaticamente com br-step.\n */\n private isSyncingWithStep: boolean = false\n\n /**\n * Instância do Swipe para gestos mobile na barra de progresso.\n */\n private progressBarSwipe: UniversalSwipe | null = null\n\n /**\n * Referência ao elemento DOM da barra de progresso.\n */\n private progressBarRef: HTMLElement | null = null\n\n /**\n * Referência ao elemento DOM do formulário/painel ativo.\n */\n private formRef: HTMLElement | null = null\n\n /**\n * Timer para limpar mensagens aria-live.\n */\n private ariaLiveTimeout: number | null = null\n\n // ========================================\n // CONSTANTES\n // ========================================\n\n /**\n * Tempo de espera para limpar mensagens aria-live (em ms).\n */\n private readonly ARIA_LIVE_CLEANUP_DELAY = 5000\n\n /**\n * Seletor de elementos focáveis dentro dos painéis.\n */\n private readonly FOCUSABLE_SELECTOR =\n 'br-button, button, [href], br-item, br-input, input, br-select, select, br-textarea, textarea, [tabindex]:not([tabindex=\"-1\"])'\n\n // ========================================\n // WATCHERS\n // ========================================\n\n /**\n * Observa mudanças no tipo de progressão.\n * Atualiza a navegação dos painéis quando muda entre linear/nonlinear.\n */\n @Watch('progressionType')\n handleProgressionTypeChange() {\n this.updatePanels()\n }\n\n /**\n * Observa mudanças na etapa inicial.\n * Reinicializa o wizard quando a prop initialStep é alterada externamente.\n */\n @Watch('initialStep')\n async handleInitialStepChange() {\n this.setInitialStep()\n await this.syncWithBrStep()\n this.updatePanels()\n }\n\n /**\n * Observa mudanças na etapa atual (fonte única de verdade).\n * Sincroniza com br-step, atualiza painéis, anuncia mudança e move foco.\n * @param newStep - Nova etapa\n * @param oldStep - Etapa anterior\n */\n @Watch('currentStep')\n async handleCurrentStepChange(newStep: number, oldStep: number) {\n if (newStep !== oldStep) {\n await this.syncWithBrStep()\n this.updatePanels()\n\n this.announceStepChange(newStep, oldStep)\n\n this.setFocusOnActivePanel()\n }\n }\n\n // ========================================\n // LISTENERS\n // ========================================\n\n /**\n * Detecta quando o slot muda (painéis adicionados/removidos dinamicamente).\n * Redescobre os painéis e ressincroniza o estado.\n * @param event - Evento slotchange\n */\n @Listen('slotchange')\n async handleSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement\n this.discoverPanelsFromSlot(slot)\n await this.syncWithBrStep()\n this.updatePanels()\n }\n\n /**\n * Detecta quando o br-step muda de etapa ativa.\n * Valida e sincroniza a navegação com o componente interno br-step.\n * @param event - Evento customizado do br-step\n */\n @Listen('brStepChange')\n async handleStepChange(event: CustomEvent<{ activeStep: number }>) {\n if (this.isSyncingWithStep) {\n return\n }\n\n const requestedStep = event.detail.activeStep + 1\n const success = await this.navigateToStep(requestedStep)\n\n if (!success) {\n event.stopPropagation()\n await this.syncWithBrStep()\n }\n }\n\n // ========================================\n // LIFECYCLE HOOKS\n // ========================================\n\n /**\n * Lifecycle: inicializa painéis antes da renderização.\n */\n componentWillLoad() {\n this.panels = Array.from(this.el.querySelectorAll('br-wizard-panel'))\n this.setInitialStep()\n }\n\n /**\n * Lifecycle: carrega painéis e configura estado inicial.\n * Sincroniza com br-step, atualiza painéis e configura detecção mobile.\n */\n async componentDidLoad() {\n const slot = this.el.shadowRoot?.querySelector('slot')\n if (slot !== null && typeof slot !== 'undefined') {\n const assignedElements = slot.assignedElements()\n const slotPanels = assignedElements.filter(\n (el) => el.tagName.toLowerCase() === 'br-wizard-panel'\n ) as HTMLElement[]\n\n if (slotPanels.length !== this.panels.length) {\n this.panels = slotPanels\n }\n }\n\n await this.syncWithBrStep()\n this.updatePanels()\n this.setupMobileDetection()\n\n if (this.isMobile) {\n this.collapsed = true\n }\n }\n\n /**\n * Lifecycle: limpa listeners quando componente é removido.\n */\n disconnectedCallback() {\n this.cleanupMobileDetection()\n this.cleanupSwipeListeners()\n this.clearAriaLiveTimeout()\n }\n\n // ========================================\n // MÉTODOS PÚBLICOS\n // ========================================\n\n /**\n * Avança para a próxima etapa.\n * Executa validação via evento `brWizardBeforeStepChange` antes de navegar.\n * @returns Promise<boolean> - true se navegou com sucesso, false se bloqueado\n */\n @Method()\n async nextStep(): Promise<boolean> {\n return await this.navigateToStep(this.currentStep + 1)\n }\n\n /**\n * Volta para a etapa anterior.\n * Não executa validação ao retornar.\n * @returns Promise<boolean> - true se navegou com sucesso, false se bloqueado\n */\n @Method()\n async previousStep(): Promise<boolean> {\n return await this.navigateToStep(this.currentStep - 1)\n }\n\n /**\n * Navega para uma etapa específica.\n * Executa validação se estiver avançando (etapa alvo > etapa atual).\n * @param stepNumber - Número da etapa de destino (numeração começa em 1)\n * @returns Promise<boolean> - true se navegou com sucesso, false se bloqueado\n */\n @Method()\n async goToStep(stepNumber: number): Promise<boolean> {\n return await this.navigateToStep(stepNumber)\n }\n\n /**\n * Retorna à primeira etapa do wizard.\n * Não executa validação (útil para reiniciar o fluxo).\n * @returns Promise<void>\n */\n @Method()\n async reset(): Promise<void> {\n await this.navigateToStep(1, true)\n }\n\n /**\n * Retorna o elemento HTML do painel ativo no momento.\n * @returns Promise<HTMLElement | null>\n */\n @Method()\n async getCurrentStep(): Promise<HTMLElement | null> {\n return this.panels[this.currentStep - 1] || null\n }\n\n /**\n * Retorna todos os painéis do wizard.\n * @returns Promise<HTMLElement[]>\n */\n @Method()\n async getAllSteps(): Promise<HTMLElement[]> {\n return [...this.panels]\n }\n\n /**\n * Retorna um painel específico pelo índice.\n * @param stepNumber - Número da etapa (numeração começa em 1)\n * @returns Promise<HTMLElement | null>\n */\n @Method()\n async getStepByIndex(stepNumber: number): Promise<HTMLElement | null> {\n return this.panels[stepNumber - 1] || null\n }\n\n /**\n * Retorna o índice (número) da etapa atual.\n * A numeração começa em 1 (primeira etapa = 1, segunda = 2, etc).\n * @returns Promise<number>\n */\n @Method()\n async getCurrentStepIndex(): Promise<number> {\n return this.currentStep\n }\n\n /**\n * Retorna o número total de etapas do wizard.\n * @returns Promise<number>\n */\n @Method()\n async getTotalSteps(): Promise<number> {\n return this.panels.length\n }\n\n // ========================================\n // NAVEGAÇÃO E VALIDAÇÃO\n // ========================================\n\n /**\n * Método privado central que gerencia toda a navegação com validação.\n *\n * Comportamento unificado para linear e nonlinear:\n * - Linear: Valida ao avançar, não permite pular steps\n * - Nonlinear: Valida ao avançar, permite pular steps livremente\n *\n * @param targetStep - Número da etapa de destino (numeração começa em 1)\n * @param skipValidation - Se true, pula validação (útil para reset/programático)\n * @returns Promise<boolean> - true se navegou com sucesso, false se bloqueado\n */\n private async navigateToStep(targetStep: number, skipValidation: boolean = false): Promise<boolean> {\n /**\n * VALIDAÇÕES BÁSICAS\n * 1. Verifica se targetStep está dentro dos limites válidos\n * 2. Se já estamos na etapa alvo, retorna sucesso imediatamente\n */\n if (targetStep < 1 || targetStep > this.panels.length) {\n return false\n }\n\n if (targetStep === this.currentStep) {\n return true\n }\n\n /**\n * MODO LINEAR: RESTRIÇÕES\n * No modo linear, não é permitido pular para etapas futuras não visitadas.\n * É possível voltar, mas não avançar além da próxima etapa sequencial.\n */\n if (this.progressionType === 'linear') {\n if (targetStep > this.currentStep + 1) {\n const message = `Não é possível pular etapas. Complete a etapa ${this.currentStep + 1} antes de avançar.`\n\n this.announceToScreenReader(message)\n\n this.brWizardNavigationBlocked.emit('linear-progression')\n\n return false\n }\n }\n\n /**\n * VALIDAÇÃO CUSTOMIZADA\n * Emite evento brWizardBeforeStepChange APENAS se:\n * 1. Não estamos pulando validação (skipValidation=false)\n * 2. Estamos AVANÇANDO (targetStep > currentStep)\n *\n * Observações:\n * - Voltar não precisa validar\n * - Validação se aplica a ambos os modos (linear e nonlinear)\n */\n const shouldValidate = !skipValidation && targetStep > this.currentStep\n\n if (shouldValidate) {\n const eventResult = this.brWizardBeforeStepChange.emit(targetStep)\n\n /**\n * Se preventDefault() foi chamado no listener do evento,\n * bloqueia a navegação e retorna false\n */\n if (eventResult.defaultPrevented) {\n const message = 'Não é possível avançar. Verifique os campos obrigatórios da etapa atual.'\n\n this.announceToScreenReader(message)\n\n this.brWizardNavigationBlocked.emit('validation-failed')\n\n return false\n }\n }\n\n /**\n * EXECUTA NAVEGAÇÃO\n * Atualiza o estado interno e emite evento de confirmação\n */\n this.currentStep = targetStep\n\n this.brWizardStepChange.emit(this.currentStep)\n\n return true\n }\n\n // ========================================\n // SINCRONIZAÇÃO COM BR-STEP\n // ========================================\n\n /**\n * Sincroniza estado do wizard com o br-step.\n *\n * O br-step já gerencia completamente os atributos 'active' via componentShouldUpdate\n * e requestAnimationFrame, então apenas chamamos os métodos de navegação dele.\n */\n private async syncWithBrStep() {\n if (this.stepRef === null) return\n\n if (typeof this.stepRef.GetActiveStep !== 'function') {\n return\n }\n\n this.isSyncingWithStep = true\n\n try {\n const targetStepIndex = this.currentStep - 1\n const currentActiveStep = await this.stepRef.GetActiveStep()\n\n if (currentActiveStep !== targetStepIndex) {\n const diff = targetStepIndex - currentActiveStep\n\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n await this.stepRef.ProceedToNextStep()\n }\n } else {\n for (let i = 0; i < Math.abs(diff); i++) {\n await this.stepRef.BackToPreviousStep()\n }\n }\n }\n } finally {\n this.isSyncingWithStep = false\n }\n }\n\n // ========================================\n // GERENCIAMENTO DE PAINÉIS\n // ========================================\n\n /**\n * Descobre painéis filhos usando assigned elements do slot.\n * @param slot - Elemento slot do shadow DOM\n */\n private discoverPanelsFromSlot(slot: HTMLSlotElement) {\n const assignedElements = slot.assignedElements()\n this.panels = assignedElements.filter((el) => el.tagName.toLowerCase() === 'br-wizard-panel') as HTMLElement[]\n }\n\n /**\n * Atualiza estados de todos os painéis.\n * Define o índice e o estado ativo de cada painel.\n */\n private async updatePanels() {\n for (let idx = 0; idx < this.panels.length; idx++) {\n const panel = this.panels[idx] as HTMLBrWizardPanelElement\n const stepNumber = idx + 1\n const isActive = stepNumber === this.currentStep\n\n await panel.setIndex(stepNumber)\n await panel.setActive(isActive)\n }\n }\n\n /**\n * Define etapa inicial baseada na prop initialStep.\n * Garante que o valor esteja dentro dos limites válidos.\n */\n private setInitialStep() {\n this.currentStep = Math.max(1, Math.min(this.initialStep, this.panels.length))\n }\n\n // ========================================\n // ACESSIBILIDADE\n // ========================================\n\n /**\n * Anuncia mensagem para leitores de tela via aria-live.\n * Limpa automaticamente após 5 segundos para evitar poluição.\n * @param message - Mensagem a ser anunciada\n */\n private announceToScreenReader(message: string) {\n this.ariaLiveMessage = ''\n\n requestAnimationFrame(() => {\n this.ariaLiveMessage = message\n\n this.clearAriaLiveTimeout()\n this.ariaLiveTimeout = window.setTimeout(() => {\n this.ariaLiveMessage = ''\n }, this.ARIA_LIVE_CLEANUP_DELAY)\n })\n }\n\n /**\n * Anuncia mudança de etapa para leitores de tela.\n * Informa direção da navegação e progresso atual.\n * @param newStep - Nova etapa\n * @param oldStep - Etapa anterior\n */\n private announceStepChange(newStep: number, oldStep: number) {\n const totalSteps = this.panels.length\n\n let direction = ''\n if (newStep > oldStep) {\n direction = 'Avançando para'\n } else if (newStep < oldStep) {\n direction = 'Retornando para'\n }\n\n const message = `${direction}, etapa ${newStep} de ${totalSteps}`\n this.announceToScreenReader(message)\n }\n\n /**\n * Limpa o timeout de mensagens aria-live.\n */\n private clearAriaLiveTimeout() {\n if (this.ariaLiveTimeout !== null) {\n clearTimeout(this.ariaLiveTimeout)\n this.ariaLiveTimeout = null\n }\n }\n\n /**\n * Move foco para o primeiro elemento do painel ativo.\n *\n */\n private setFocusOnActivePanel() {\n requestAnimationFrame(() => {\n const activePanel = this.panels[this.currentStep - 1] as HTMLBrWizardPanelElement | undefined\n if (typeof activePanel === 'undefined') return\n\n const panelElement = activePanel.shadowRoot?.querySelector('.wizard-panel-content')\n if (typeof panelElement === 'undefined' || panelElement === null) return\n\n const focusableElements = panelElement.querySelectorAll(this.FOCUSABLE_SELECTOR)\n\n if (focusableElements.length > 0) {\n ;(focusableElements[0] as HTMLElement).focus()\n }\n })\n }\n\n // ========================================\n // DETECÇÃO MOBILE E RESPONSIVIDADE\n // ========================================\n\n /**\n * Configura detecção de viewport mobile.\n * Ativa listeners de resize e configura gestos swipe.\n */\n private setupMobileDetection() {\n this.isMobile = window.innerWidth <= 992\n window.addEventListener('resize', this.handleResize)\n\n if (this.isMobile) {\n this.setupSwipeListeners()\n }\n }\n\n /**\n * Remove listeners de detecção mobile.\n */\n private cleanupMobileDetection() {\n window.removeEventListener('resize', this.handleResize)\n }\n\n /**\n * Handler de resize da janela.\n * Alterna entre modos mobile/desktop e configura/limpa gestos swipe.\n */\n private handleResize = () => {\n const wasMobile = this.isMobile\n this.isMobile = window.innerWidth <= 992\n\n if (this.isMobile && !wasMobile) {\n this.collapsed = true\n this.setupSwipeListeners()\n } else if (!this.isMobile && wasMobile) {\n this.cleanupSwipeListeners()\n this.collapsed = false\n }\n }\n\n // ========================================\n // GESTOS SWIPE (MOBILE)\n // ========================================\n\n /**\n * Configura gestos swipe para mobile.\n */\n private setupSwipeListeners() {\n if (!this.isMobile) return\n\n requestAnimationFrame(() => {\n this.progressBarRef = this.el.shadowRoot?.querySelector('.wizard-progress') || null\n this.formRef = this.el.shadowRoot?.querySelector('.wizard-form') || null\n\n if (this.progressBarRef !== null) {\n const direction = this.orientation === 'horizontal' ? 'vertical' : 'horizontal'\n this.progressBarSwipe = new UniversalSwipe(this.progressBarRef, { direction })\n\n if (this.orientation === 'horizontal') {\n this.progressBarSwipe.on('SWIPE_DOWN', () => this.expandSteps())\n this.progressBarSwipe.on('SWIPE_UP', () => this.collapseSteps())\n } else {\n this.progressBarSwipe.on('SWIPE_RIGHT', () => this.expandSteps())\n this.progressBarSwipe.on('SWIPE_LEFT', () => this.collapseSteps())\n }\n }\n\n if (this.formRef !== null) {\n this.formRef.addEventListener('touchstart', this.handleFormTouchStart)\n }\n })\n }\n\n /**\n * Remove listeners de gestos swipe.\n */\n private cleanupSwipeListeners() {\n if (this.progressBarSwipe !== null) {\n this.progressBarSwipe.off('SWIPE_DOWN', this.expandSteps)\n this.progressBarSwipe.off('SWIPE_UP', this.collapseSteps)\n this.progressBarSwipe.off('SWIPE_RIGHT', this.expandSteps)\n this.progressBarSwipe.off('SWIPE_LEFT', this.collapseSteps)\n\n this.progressBarSwipe.destroy()\n this.progressBarSwipe = null\n }\n\n if (this.formRef !== null) {\n this.formRef.removeEventListener('touchstart', this.handleFormTouchStart)\n }\n }\n\n /**\n * Handler de toque no formulário.\n * Recolhe automaticamente a barra de progresso.\n */\n private handleFormTouchStart = () => {\n this.collapseSteps()\n }\n\n /**\n * Recolhe a barra de progresso (mobile).\n * Adiciona o atributo 'collapsed' ao host.\n */\n private collapseSteps() {\n if (this.isMobile) {\n this.collapsed = true\n }\n }\n\n /**\n * Expande a barra de progresso (mobile).\n * Remove o atributo 'collapsed' do host.\n */\n private expandSteps() {\n if (this.isMobile) {\n this.collapsed = false\n }\n }\n\n // ========================================\n // HANDLERS DE EVENTOS DE BOTÕES\n // ========================================\n\n /**\n * Handler do botão \"Avançar\" ou \"Concluir\".\n * Se for a última etapa, valida e emite evento de conclusão.\n * Caso contrário, avança para a próxima etapa.\n */\n private handleNext = async () => {\n if (this.currentStep === this.panels.length) {\n // Última etapa: validar antes de completar\n const eventResult = this.brWizardBeforeStepChange.emit(this.currentStep)\n\n // Se preventDefault() foi chamado, bloqueia conclusão\n if (!eventResult.defaultPrevented) {\n this.brWizardComplete.emit()\n }\n } else {\n await this.nextStep()\n }\n }\n\n /**\n * Handler do botão \"Voltar\".\n * Navega para a etapa anterior.\n */\n private handlePrevious = async () => {\n await this.previousStep()\n }\n\n /**\n * Handler do botão \"Cancelar\".\n * Emite evento de cancelamento do wizard.\n */\n private handleCancel = () => {\n this.brWizardCancel.emit()\n }\n\n // ========================================\n // MÉTODOS DE RENDERIZAÇÃO\n // ========================================\n\n /**\n * Retorna classes CSS do container principal.\n * @returns CssClassMap - Mapa de classes CSS\n */\n private getHostClassMap(): CssClassMap {\n return {\n 'br-wizard': true,\n }\n }\n\n /**\n * Renderiza indicadores de progresso usando br-step.\n * @returns JSX.Element | null - Elemento de progresso ou null se não houver painéis\n */\n private renderProgress() {\n if (this.panels.length === 0) {\n return null\n }\n\n return (\n <div class=\"wizard-progress\">\n <br-step\n ref={(el) => (this.stepRef = el)}\n initial-step={String(this.currentStep - 1)}\n layout={this.orientation}\n label-position={this.orientation === 'vertical' ? 'bottom' : 'bottom'}\n progression-type={this.progressionType}\n mode=\"step\"\n >\n {this.panels.map((panel) => {\n const label = panel.getAttribute('label') || ''\n return <br-step-item label={label}></br-step-item>\n })}\n </br-step>\n </div>\n )\n }\n\n /**\n * Renderiza conteúdo dos painéis via slot.\n * @returns JSX.Element - Container com slot dos painéis\n */\n private renderPanelContent() {\n return (\n <div class=\"wizard-panel-content\">\n <slot />\n </div>\n )\n }\n\n /**\n * Renderiza botões de navegação do wizard.\n * Adapta-se ao contexto: primeira etapa, última etapa, mobile/desktop.\n * @returns JSX.Element - Container com botões de navegação\n */\n private renderPanelButtons() {\n const isFirst = this.currentStep === 1\n const isLast = this.currentStep === this.panels.length\n\n const buttonShape = this.isMobile ? 'block' : undefined\n\n return (\n <div class=\"wizard-panel-btn\">\n <br-button\n class=\"wizard-btn-canc\"\n type=\"button\"\n shape={buttonShape}\n emphasis=\"tertiary\"\n onClick={this.handleCancel}\n >\n Cancelar\n </br-button>\n\n <br-button\n class={isLast ? 'wizard-btn' : 'wizard-btn-next'}\n emphasis=\"primary\"\n type=\"button\"\n shape={buttonShape}\n onClick={this.handleNext}\n >\n {isLast ? 'Concluir' : 'Avançar'}\n </br-button>\n\n {!isFirst && (\n <br-button\n class=\"wizard-btn-prev\"\n emphasis=\"secondary\"\n type=\"button\"\n shape={buttonShape}\n onClick={this.handlePrevious}\n >\n Voltar\n </br-button>\n )}\n </div>\n )\n }\n\n /**\n * Renderiza região de anúncios para leitores de tela.\n * Usa aria-live para comunicar mudanças de estado de forma acessível.\n * @returns JSX.Element - Elemento sr-only com aria-live\n */\n private renderAriaLiveRegion() {\n return (\n <div class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {this.ariaLiveMessage}\n </div>\n )\n }\n\n /**\n * Método de renderização principal do componente.\n * Monta a estrutura completa do wizard com acessibilidade integrada.\n * @returns JSX.Element - Estrutura completa do wizard\n */\n render() {\n const hostClass = this.getHostClassMap()\n const verticalAttr = this.orientation === 'vertical' ? { vertical: '' } : {}\n const collapsedAttr = this.collapsed ? { collapsed: '' } : {}\n const activePanelAttr = { active: '' }\n\n // Atributos ARIA para o painel ativo\n const totalSteps = this.panels.length\n const currentPanel = this.panels[this.currentStep - 1]\n const stepLabel = currentPanel?.getAttribute('label') || `Etapa ${this.currentStep}`\n\n return (\n <Host class={hostClass} {...verticalAttr} {...collapsedAttr} step={String(this.currentStep)}>\n {this.renderAriaLiveRegion()}\n\n {this.renderProgress()}\n\n <div class=\"wizard-form\" role=\"region\" aria-label={`Wizard: ${stepLabel}`}>\n <div\n class=\"wizard-panel\"\n {...activePanelAttr}\n role=\"group\"\n aria-label={`${stepLabel}, etapa ${this.currentStep} de ${totalSteps}`}\n >\n {this.renderPanelContent()}\n {this.renderPanelButtons()}\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["UniversalSwipe","constructor","element","options","this","evtMap","SWIPE_UP","SWIPE_DOWN","SWIPE_LEFT","SWIPE_RIGHT","startPoint","eventType","isActive","pointerId","threshold","swipeDirection","direction","boundHandleStart","handleStart","bind","boundHandleEnd","handleEnd","boundHandleCancel","handleCancel","applyCSSFix","detectAndAttachListeners","style","touchAction","window","PointerEvent","addEventListener","navigator","maxTouchPoints","passive","detachListeners","removeEventListener","removeDocumentMouseListeners","addDocumentMouseListeners","document","getCoordinates","evt","touches","length","x","clientX","y","clientY","changedTouches","setPointerCapture","_a","endPoint","deltaX","deltaY","absDeltaX","Math","abs","absDeltaY","cleanup","trigger","_evt","releasePointerCapture","on","cb","push","off","filter","callback","data","forEach","handler","destroy","wizardCss","Wizard","__stencil_proxyCustomElement","HTMLElement","registerHost","initialStep","orientation","progressionType","customId","Helpers","generateUniqueId","currentStep","isMobile","collapsed","panels","ariaLiveMessage","stepRef","isSyncingWithStep","progressBarSwipe","progressBarRef","formRef","ariaLiveTimeout","ARIA_LIVE_CLEANUP_DELAY","FOCUSABLE_SELECTOR","handleResize","wasMobile","innerWidth","setupSwipeListeners","cleanupSwipeListeners","handleFormTouchStart","collapseSteps","handleNext","async","eventResult","brWizardBeforeStepChange","emit","defaultPrevented","brWizardComplete","nextStep","handlePrevious","previousStep","brWizardCancel","handleProgressionTypeChange","updatePanels","handleInitialStepChange","setInitialStep","syncWithBrStep","handleCurrentStepChange","newStep","oldStep","announceStepChange","setFocusOnActivePanel","handleSlotChange","event","slot","target","discoverPanelsFromSlot","handleStepChange","requestedStep","detail","activeStep","success","navigateToStep","stopPropagation","componentWillLoad","Array","from","el","querySelectorAll","componentDidLoad","shadowRoot","querySelector","assignedElements","slotPanels","tagName","toLowerCase","setupMobileDetection","disconnectedCallback","cleanupMobileDetection","clearAriaLiveTimeout","goToStep","stepNumber","reset","getCurrentStep","getAllSteps","getStepByIndex","getCurrentStepIndex","getTotalSteps","targetStep","skipValidation","message","announceToScreenReader","brWizardNavigationBlocked","shouldValidate","brWizardStepChange","GetActiveStep","targetStepIndex","currentActiveStep","diff","i","ProceedToNextStep","BackToPreviousStep","idx","panel","setIndex","setActive","max","min","requestAnimationFrame","setTimeout","totalSteps","clearTimeout","activePanel","panelElement","focusableElements","focus","_b","expandSteps","getHostClassMap","renderProgress","h","class","ref","String","layout","mode","map","label","getAttribute","renderPanelContent","renderPanelButtons","isFirst","isLast","buttonShape","undefined","type","shape","emphasis","onClick","renderAriaLiveRegion","role","render","hostClass","verticalAttr","vertical","collapsedAttr","activePanelAttr","active","currentPanel","stepLabel","Host","Object","assign","key","step"],"sources":["../../packages/webcomponents/src/utils/swipe.ts","../../packages/webcomponents/src/components/wizard/wizard.scss?tag=br-wizard&encapsulation=shadow","../../packages/webcomponents/src/components/wizard/wizard.tsx"],"sourcesContent":["/**\n * Eventos de swipe suportados.\n * @typedef {('SWIPE_UP'|'SWIPE_DOWN'|'SWIPE_LEFT'|'SWIPE_RIGHT')} SwipeEvent\n */\nexport type SwipeEvent = 'SWIPE_UP' | 'SWIPE_DOWN' | 'SWIPE_LEFT' | 'SWIPE_RIGHT'\n\n/**\n * Tipo de callback para eventos de swipe.\n * @typedef {Function} SwipeCallback\n * @param {unknown} [data] - Dados opcionais passados ao callback\n * @returns {void}\n */\nexport type SwipeCallback = (data?: unknown) => void\n\n/**\n * Mapa de eventos e callbacks.\n * @typedef {Object.<SwipeEvent, SwipeCallback[]>} EventMap\n * @private\n */\ntype EventMap = Record<SwipeEvent, SwipeCallback[]>\n\n/**\n * Coordenadas de um ponto.\n * @typedef {Object} Point\n * @property {number} x - Coordenada X\n * @property {number} y - Coordenada Y\n * @private\n */\ninterface Point {\n x: number\n y: number\n}\n\n/**\n * UniversalSwipe - Detecção de gestos de swipe com suporte universal.\n *\n * Estratégia de detecção (prioridade):\n * 1. Pointer Events - API moderna universal (Chrome 55+, Firefox 59+, Safari 13+, Edge 12+)\n * 2. Touch Events - Fallback para dispositivos móveis sem Pointer Events\n * 3. Mouse Events - Fallback para navegadores antigos\n *\n * Compatibilidade:\n * - ✅ Firefox Desktop (mouse events)\n * - ✅ Chrome Desktop/Mobile (pointer/touch events)\n * - ✅ Safari Desktop/Mobile (pointer/touch events)\n * - ✅ Edge (pointer events)\n * - ✅ Navegadores antigos (touch/mouse events)\n *\n */\nexport class UniversalSwipe {\n /**\n * Mapa de eventos e seus callbacks.\n */\n private evtMap: EventMap = {\n SWIPE_UP: [],\n SWIPE_DOWN: [],\n SWIPE_LEFT: [],\n SWIPE_RIGHT: [],\n }\n\n /**\n * Posição inicial do gesto.\n */\n private startPoint: Point | null = null\n\n /**\n * Elemento alvo do swipe.\n */\n private element: HTMLElement\n\n /**\n * Tipo de evento sendo usado (pointer, touch ou mouse).\n */\n private eventType: 'pointer' | 'touch' | 'mouse' = 'touch'\n\n /**\n * Flag indicando se o gesto está ativo.\n */\n private isActive: boolean = false\n\n /**\n * Pointer ID para captura de eventos (usado com Pointer Events).\n */\n private pointerId: number | null = null\n\n /**\n * Limiar mínimo de movimento para detectar swipe (em pixels).\n */\n private readonly threshold: number = 30\n\n /**\n * Direção do swipe esperado ('horizontal' | 'vertical' | 'both').\n */\n private swipeDirection: 'horizontal' | 'vertical' | 'both' = 'both'\n\n /**\n * Bound handlers para remoção de listeners.\n */\n private boundHandleStart: (evt: PointerEvent | TouchEvent | MouseEvent) => void\n private boundHandleEnd: (evt: PointerEvent | TouchEvent | MouseEvent) => void\n private boundHandleCancel: (evt: PointerEvent | TouchEvent | MouseEvent) => void\n\n /**\n * Cria uma nova instância de UniversalSwipe.\n * @constructor\n * @param {HTMLElement} element - Elemento HTML que receberá os gestos de swipe\n * @param {Object} [options] - Opções de configuração\n * @param {'horizontal'|'vertical'|'both'} [options.direction='both'] - Direção do swipe a ser detectado\n */\n constructor(element: HTMLElement, options?: { direction?: 'horizontal' | 'vertical' | 'both' }) {\n this.element = element\n this.swipeDirection = options?.direction || 'both'\n\n this.boundHandleStart = this.handleStart.bind(this)\n this.boundHandleEnd = this.handleEnd.bind(this)\n this.boundHandleCancel = this.handleCancel.bind(this)\n\n this.applyCSSFix()\n\n this.detectAndAttachListeners()\n }\n\n /**\n * Aplica CSS touch-action para prevenir gestos nativos do browser.\n * Usa 'pan-y' para permitir scroll vertical enquanto detecta swipes horizontais.\n * Usa 'pan-x' para permitir scroll horizontal enquanto detecta swipes verticais.\n * @private\n * @returns {void}\n */\n private applyCSSFix(): void {\n // Configura touch-action baseado na direção do swipe\n if (this.swipeDirection === 'horizontal') {\n // Permite scroll vertical, bloqueia horizontal para detectar SWIPE_LEFT/RIGHT\n this.element.style.touchAction = 'pan-y'\n } else if (this.swipeDirection === 'vertical') {\n // Permite scroll horizontal, bloqueia vertical para detectar SWIPE_UP/DOWN\n this.element.style.touchAction = 'pan-x'\n } else {\n // Bloqueia scroll em ambas direções para detectar qualquer swipe\n // Use 'manipulation' se houver elementos clicáveis dentro\n this.element.style.touchAction = 'manipulation'\n }\n }\n\n /**\n * Detecta qual tipo de evento usar e anexa os listeners apropriados.\n * Estratégia: Prioriza Pointer Events (universal), depois Touch, depois Mouse.\n * @private\n * @returns {void}\n */\n private detectAndAttachListeners(): void {\n // 1. Pointer Events: API moderna e universal (Chrome 55+, Firefox 59+, Safari 13+)\n if (window.PointerEvent) {\n this.eventType = 'pointer'\n this.element.addEventListener('pointerdown', this.boundHandleStart)\n this.element.addEventListener('pointerup', this.boundHandleEnd)\n this.element.addEventListener('pointercancel', this.boundHandleCancel)\n }\n // 2. Touch Events: Fallback para navegadores sem Pointer Events\n else if ('ontouchstart' in window && navigator.maxTouchPoints > 0) {\n this.eventType = 'touch'\n // Passive: false permite preventDefault()\n this.element.addEventListener('touchstart', this.boundHandleStart, { passive: false })\n this.element.addEventListener('touchend', this.boundHandleEnd, { passive: false })\n this.element.addEventListener('touchcancel', this.boundHandleCancel, { passive: false })\n }\n // 3. Mouse Events: Fallback final para navegadores antigos\n else {\n this.eventType = 'mouse'\n this.element.addEventListener('mousedown', this.boundHandleStart)\n // mousemove e mouseup são adicionados ao document no handleStart\n }\n }\n\n /**\n * Remove todos os event listeners do elemento.\n * @private\n * @returns {void}\n */\n private detachListeners(): void {\n if (this.eventType === 'pointer') {\n this.element.removeEventListener('pointerdown', this.boundHandleStart)\n this.element.removeEventListener('pointerup', this.boundHandleEnd)\n this.element.removeEventListener('pointercancel', this.boundHandleCancel)\n } else if (this.eventType === 'touch') {\n this.element.removeEventListener('touchstart', this.boundHandleStart)\n this.element.removeEventListener('touchend', this.boundHandleEnd)\n this.element.removeEventListener('touchcancel', this.boundHandleCancel)\n } else {\n this.element.removeEventListener('mousedown', this.boundHandleStart)\n this.removeDocumentMouseListeners()\n }\n }\n\n /**\n * Adiciona listeners de mouse ao document (necessário para rastrear fora do elemento).\n * @private\n * @returns {void}\n */\n private addDocumentMouseListeners(): void {\n document.addEventListener('mouseup', this.boundHandleEnd)\n document.addEventListener('mouseleave', this.boundHandleCancel)\n }\n\n /**\n * Remove listeners de mouse do document.\n * @private\n * @returns {void}\n */\n private removeDocumentMouseListeners(): void {\n document.removeEventListener('mouseup', this.boundHandleEnd)\n document.removeEventListener('mouseleave', this.boundHandleCancel)\n }\n\n /**\n * Extrai coordenadas do evento independente do tipo.\n * @private\n * @param {PointerEvent|TouchEvent|MouseEvent} evt - Evento de pointer, touch ou mouse\n * @returns {Point} Coordenadas {x, y} do evento\n */\n private getCoordinates(evt: PointerEvent | TouchEvent | MouseEvent): Point {\n if ('touches' in evt && evt.touches.length > 0) {\n // Touch Event\n return {\n x: evt.touches[0].clientX,\n y: evt.touches[0].clientY,\n }\n } else if ('changedTouches' in evt && evt.changedTouches.length > 0) {\n // Touch Event (touchend)\n return {\n x: evt.changedTouches[0].clientX,\n y: evt.changedTouches[0].clientY,\n }\n } else if ('clientX' in evt && 'clientY' in evt) {\n // Pointer Event ou Mouse Event\n return {\n x: evt.clientX,\n y: evt.clientY,\n }\n }\n\n return { x: 0, y: 0 }\n }\n\n /**\n * Handler do início do gesto (pointerdown, touchstart, mousedown).\n * @private\n * @param {PointerEvent|TouchEvent|MouseEvent} evt - Evento do browser\n * @returns {void}\n */\n private handleStart(evt: PointerEvent | TouchEvent | MouseEvent): void {\n this.isActive = true\n this.startPoint = this.getCoordinates(evt)\n\n // Para Pointer Events, captura o pointer para rastrear fora do elemento\n if (this.eventType === 'pointer' && 'pointerId' in evt) {\n this.pointerId = evt.pointerId\n try {\n this.element.setPointerCapture(evt.pointerId)\n } catch {\n // Ignora erro se captura não for suportada\n }\n }\n\n // Para Mouse Events, adiciona listeners ao document\n if (this.eventType === 'mouse') {\n this.addDocumentMouseListeners()\n }\n }\n\n /**\n * Handler do fim do gesto (pointerup, touchend, mouseup).\n * @private\n * @param {PointerEvent|TouchEvent|MouseEvent} evt - Evento do browser\n * @returns {void}\n */\n private handleEnd(evt: PointerEvent | TouchEvent | MouseEvent): void {\n if (!this.isActive || this.startPoint === null) {\n return\n }\n\n const endPoint = this.getCoordinates(evt)\n const deltaX = endPoint.x - this.startPoint.x\n const deltaY = endPoint.y - this.startPoint.y\n\n // Threshold para evitar detecção acidental\n const absDeltaX = Math.abs(deltaX)\n const absDeltaY = Math.abs(deltaY)\n\n // Só dispara swipe se movimento for maior que threshold\n if (absDeltaX < this.threshold && absDeltaY < this.threshold) {\n this.cleanup()\n return\n }\n\n // Determina direção do swipe baseado no maior delta\n if (absDeltaX > absDeltaY) {\n // Swipe horizontal\n if (deltaX < 0) {\n this.trigger('SWIPE_LEFT')\n } else {\n this.trigger('SWIPE_RIGHT')\n }\n } else {\n // Swipe vertical\n if (deltaY < 0) {\n this.trigger('SWIPE_UP')\n } else {\n this.trigger('SWIPE_DOWN')\n }\n }\n\n this.cleanup()\n }\n\n /**\n * Handler de cancelamento do gesto (pointercancel, touchcancel, mouseleave).\n * @private\n * @param {PointerEvent|TouchEvent|MouseEvent} _evt - Evento do browser (não utilizado)\n * @returns {void}\n */\n private handleCancel(_evt: PointerEvent | TouchEvent | MouseEvent): void {\n this.cleanup()\n }\n\n /**\n * Limpa o estado do gesto e remove listeners temporários.\n * @private\n * @returns {void}\n */\n private cleanup(): void {\n this.isActive = false\n this.startPoint = null\n\n // Para Pointer Events, libera a captura\n if (this.eventType === 'pointer' && this.pointerId !== null) {\n try {\n this.element.releasePointerCapture(this.pointerId)\n } catch {\n // Ignora erro se pointer já foi liberado\n }\n this.pointerId = null\n }\n\n if (this.eventType === 'mouse') {\n this.removeDocumentMouseListeners()\n }\n }\n\n /**\n * Registra um callback para um evento de swipe.\n * @param evt - Nome do evento ('SWIPE_UP', 'SWIPE_DOWN', 'SWIPE_LEFT', 'SWIPE_RIGHT')\n * @param cb - Função callback a ser executada quando o evento ocorrer\n */\n public on(evt: SwipeEvent, cb: SwipeCallback): void {\n this.evtMap[evt].push(cb)\n }\n\n /**\n * Remove um callback de um evento de swipe.\n * @param evt - Nome do evento\n * @param cb - Função callback a ser removida\n */\n public off(evt: SwipeEvent, cb: SwipeCallback): void {\n this.evtMap[evt] = this.evtMap[evt].filter((callback) => callback !== cb)\n }\n\n /**\n * Dispara um evento de swipe, executando todos os callbacks registrados.\n * @private\n * @param {SwipeEvent} evt - Nome do evento a ser disparado\n * @param {unknown} [data] - Dados opcionais a serem passados aos callbacks\n * @returns {void}\n */\n private trigger(evt: SwipeEvent, data?: unknown): void {\n this.evtMap[evt].forEach((handler) => handler(data))\n }\n\n /**\n * Destrói a instância, removendo todos os event listeners.\n * Deve ser chamado quando o elemento for removido do DOM.\n * Remove o CSS touch-action aplicado no construtor.\n * @public\n * @returns {void}\n * @example\n * ```typescript\n * disconnectedCallback() {\n * this.swipe?.destroy();\n * }\n * ```\n */\n public destroy(): void {\n this.cleanup()\n this.detachListeners()\n this.element.style.touchAction = ''\n this.evtMap = {\n SWIPE_UP: [],\n SWIPE_DOWN: [],\n SWIPE_LEFT: [],\n SWIPE_RIGHT: [],\n }\n }\n}\n\nexport default UniversalSwipe\n","@import \"~@govbr-ds/core/src/components/wizard/mixins\";\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n border-width: 0;\n}\n\n:host {\n @include wizard-tokens;\n @include wizard-default;\n @include wizard-progress;\n @include wizard-progress-collapsed;\n @include wizard-vertical;\n @include wizard-form;\n @include wizard-dark-mode;\n\n br-step-item::part(item-container)::after {\n z-index: 0;\n }\n\n br-step-item::part(item-content) {\n background-color: transparent;\n }\n\n br-step-item[active] {\n --step-label-font-weight: var(--font-weight-semi-bold);\n --step-label-color: var(--active);\n }\n\n br-step-item::part(label) {\n display: block;\n font-size: var(--font-size-scale-down-02);\n line-height: 1em;\n text-align: center;\n }\n\n .wizard-progress {\n padding-top: 0;\n }\n\n @include media-breakpoint-down(sm) {\n .wizard-progress {\n max-height: none;\n height: auto;\n }\n }\n}\n\n:host([collapsed]) {\n br-step-item::part(label) {\n display: none;\n }\n\n @include media-breakpoint-down(sm) {\n br-step-item::part(label) {\n display: none;\n }\n\n br-step-item::part(item-container) {\n &::after {\n bottom: 50%;\n left: 50%;\n transform: translateY(50%);\n }\n }\n\n .wizard-progress {\n max-height: 100px;\n min-height: 100px;\n\n &::after {\n margin-top: var(--spacing-scale-4xh);\n }\n }\n }\n}\n\n:host([vertical]) {\n .wizard-progress {\n flex: 1;\n float: none;\n grid-template-columns: 1fr;\n height: auto;\n max-width: 260px;\n overflow: hidden auto;\n }\n\n @include media-breakpoint-down(sm) {\n .wizard-progress {\n max-height: 100%;\n max-width: 110px;\n\n &::after {\n height: 1em;\n left: unset;\n margin-top: -0.5em;\n right: 2px;\n top: 50%;\n transform: rotate(-90deg);\n width: 1em;\n }\n }\n\n .wizard-form {\n max-width: calc(100% - 110px);\n min-width: calc(100% - 110px);\n }\n\n br-step-item::part(item-container) {\n &::before {\n left: calc(100% - 32px);\n line-height: 26px;\n margin-top: calc(var(--spacing-scale-2x) * -1);\n position: absolute;\n text-align: center;\n top: 50%;\n }\n\n &::after {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n width: 1px;\n }\n }\n\n &[collapsed] {\n br-step-item::part(label) {\n visibility: hidden;\n width: 0;\n height: 0;\n overflow: hidden;\n }\n\n .wizard-progress {\n max-width: 60px;\n padding-bottom: 0;\n padding-top: 0;\n }\n }\n }\n}\n\n:host(.dark-mode) {\n @include dark-mode;\n @include button-dark-mode;\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport Helpers from '../../utils/helpers'\nimport { CssClassMap } from '../../utils/interfaces'\nimport { UniversalSwipe } from '../../utils/swipe'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/wizard?tab=designer).\n *\n * @slot default - Slot para os painéis de etapa (br-wizard-panel) do wizard.\n */\n@Component({\n tag: 'br-wizard',\n styleUrl: 'wizard.scss',\n shadow: true,\n})\nexport class Wizard {\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!: HTMLBrWizardElement\n\n /**\n * Internals API para suporte a formulários nativos.\n */\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Índice da etapa inicial do wizard.\n * Define qual etapa será exibida ao carregar o componente.\n * A numeração começa em 1 (primeira etapa = 1, segunda = 2, etc).\n */\n @Prop({ reflect: true }) initialStep: number = 1\n\n /**\n * Orientação visual do wizard.\n * Define se os indicadores de progresso serão exibidos horizontalmente ou verticalmente.\n */\n @Prop({ reflect: true }) orientation: 'horizontal' | 'vertical' = 'horizontal'\n\n /**\n * Tipo de progressão entre etapas.\n * - `linear`: O usuário deve completar cada etapa sequencialmente. Não é possível pular etapas futuras.\n * - `nonlinear`: O usuário pode navegar livremente entre qualquer etapa.\n */\n @Prop({ reflect: true }) progressionType: 'linear' | 'nonlinear' = 'nonlinear'\n\n /**\n * ID customizado para o componente.\n * Se não fornecido, um ID único será gerado automaticamente.\n */\n @Prop({ reflect: true }) customId: string = Helpers.generateUniqueId()\n\n /**\n * Etapa atual sendo exibida.\n * Gerenciado internamente pelo componente.\n */\n @State() currentStep: number = 1\n\n /** Estado mobile para detecção responsiva */\n @State() isMobile: boolean = false\n\n /**\n * Estado collapsed para recolher/expandir barra de progresso (mobile)\n */\n @State() collapsed: boolean = false\n\n /**\n * Lista de painéis filhos (br-wizard-panel).\n * Descobertos automaticamente via slot.\n */\n @State() panels: HTMLElement[] = []\n\n /**\n * Mensagem de status para leitores de tela (aria-live)\n */\n @State() ariaLiveMessage: string = ''\n\n // ========================================\n // EVENTOS\n // ========================================\n\n /**\n * Evento emitido APÓS mudar de etapa com sucesso.\n *\n * Este evento é disparado independente da origem da navegação:\n * - Botões \"Avançar\" ou \"Voltar\"\n * - Click direto em um step do indicador de progresso\n * - Chamadas programáticas via métodos públicos (goToStep, nextStep, etc)\n */\n @Event() brWizardStepChange: EventEmitter<number>\n\n /**\n * Evento emitido ANTES de mudar de etapa (permite validação e cancelamento).\n *\n * Comportamento:\n * - Disparado apenas ao AVANÇAR (targetStep > currentStep)\n * - Não é disparado ao VOLTAR (targetStep < currentStep)\n * - Funciona tanto para cliques nos botões quanto para cliques diretos nos steps\n * - Pode ser cancelado com `event.preventDefault()` para bloquear a navegação\n */\n @Event({ cancelable: true }) brWizardBeforeStepChange: EventEmitter<number>\n\n /**\n * Evento emitido ao concluir o wizard (última etapa).\n */\n @Event() brWizardComplete: EventEmitter<void>\n\n /**\n * Evento emitido ao cancelar o wizard.\n */\n @Event() brWizardCancel: EventEmitter<void>\n\n /**\n * Evento emitido quando uma ação é bloqueada (validação falha, progressão linear impedida).\n * Emite uma string indicando o motivo: 'linear-progression' ou 'validation-failed'.\n * Use getCurrentStepIndex() para obter o contexto da etapa atual.\n */\n @Event() brWizardNavigationBlocked: EventEmitter<string>\n\n // ========================================\n // PROPRIEDADES PRIVADAS\n // ========================================\n\n /**\n * Referência ao componente br-step.\n */\n private stepRef: HTMLBrStepElement | null = null\n\n /**\n * Flag para evitar loop quando sincronizamos programaticamente com br-step.\n */\n private isSyncingWithStep: boolean = false\n\n /**\n * Instância do Swipe para gestos mobile na barra de progresso.\n */\n private progressBarSwipe: UniversalSwipe | null = null\n\n /**\n * Referência ao elemento DOM da barra de progresso.\n */\n private progressBarRef: HTMLElement | null = null\n\n /**\n * Referência ao elemento DOM do formulário/painel ativo.\n */\n private formRef: HTMLElement | null = null\n\n /**\n * Timer para limpar mensagens aria-live.\n */\n private ariaLiveTimeout: number | null = null\n\n // ========================================\n // CONSTANTES\n // ========================================\n\n /**\n * Tempo de espera para limpar mensagens aria-live (em ms).\n */\n private readonly ARIA_LIVE_CLEANUP_DELAY = 5000\n\n /**\n * Seletor de elementos focáveis dentro dos painéis.\n */\n private readonly FOCUSABLE_SELECTOR =\n 'br-button, button, [href], br-item, br-input, input, br-select, select, br-textarea, textarea, [tabindex]:not([tabindex=\"-1\"])'\n\n // ========================================\n // WATCHERS\n // ========================================\n\n /**\n * Observa mudanças no tipo de progressão.\n * Atualiza a navegação dos painéis quando muda entre linear/nonlinear.\n */\n @Watch('progressionType')\n handleProgressionTypeChange() {\n this.updatePanels()\n }\n\n /**\n * Observa mudanças na etapa inicial.\n * Reinicializa o wizard quando a prop initialStep é alterada externamente.\n */\n @Watch('initialStep')\n async handleInitialStepChange() {\n this.setInitialStep()\n await this.syncWithBrStep()\n this.updatePanels()\n }\n\n /**\n * Observa mudanças na etapa atual (fonte única de verdade).\n * Sincroniza com br-step, atualiza painéis, anuncia mudança e move foco.\n * @param newStep - Nova etapa\n * @param oldStep - Etapa anterior\n */\n @Watch('currentStep')\n async handleCurrentStepChange(newStep: number, oldStep: number) {\n if (newStep !== oldStep) {\n await this.syncWithBrStep()\n this.updatePanels()\n\n this.announceStepChange(newStep, oldStep)\n\n this.setFocusOnActivePanel()\n }\n }\n\n // ========================================\n // LISTENERS\n // ========================================\n\n /**\n * Detecta quando o slot muda (painéis adicionados/removidos dinamicamente).\n * Redescobre os painéis e ressincroniza o estado.\n * @param event - Evento slotchange\n */\n @Listen('slotchange')\n async handleSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement\n this.discoverPanelsFromSlot(slot)\n await this.syncWithBrStep()\n this.updatePanels()\n }\n\n /**\n * Detecta quando o br-step muda de etapa ativa.\n * Valida e sincroniza a navegação com o componente interno br-step.\n * @param event - Evento customizado do br-step\n */\n @Listen('brStepChange')\n async handleStepChange(event: CustomEvent<{ activeStep: number }>) {\n if (this.isSyncingWithStep) {\n return\n }\n\n const requestedStep = event.detail.activeStep + 1\n const success = await this.navigateToStep(requestedStep)\n\n if (!success) {\n event.stopPropagation()\n await this.syncWithBrStep()\n }\n }\n\n // ========================================\n // LIFECYCLE HOOKS\n // ========================================\n\n /**\n * Lifecycle: inicializa painéis antes da renderização.\n */\n componentWillLoad() {\n this.panels = Array.from(this.el.querySelectorAll('br-wizard-panel'))\n this.setInitialStep()\n }\n\n /**\n * Lifecycle: carrega painéis e configura estado inicial.\n * Sincroniza com br-step, atualiza painéis e configura detecção mobile.\n */\n async componentDidLoad() {\n const slot = this.el.shadowRoot?.querySelector('slot')\n if (slot !== null && typeof slot !== 'undefined') {\n const assignedElements = slot.assignedElements()\n const slotPanels = assignedElements.filter(\n (el) => el.tagName.toLowerCase() === 'br-wizard-panel'\n ) as HTMLElement[]\n\n if (slotPanels.length !== this.panels.length) {\n this.panels = slotPanels\n }\n }\n\n await this.syncWithBrStep()\n this.updatePanels()\n this.setupMobileDetection()\n\n if (this.isMobile) {\n this.collapsed = true\n }\n }\n\n /**\n * Lifecycle: limpa listeners quando componente é removido.\n */\n disconnectedCallback() {\n this.cleanupMobileDetection()\n this.cleanupSwipeListeners()\n this.clearAriaLiveTimeout()\n }\n\n // ========================================\n // MÉTODOS PÚBLICOS\n // ========================================\n\n /**\n * Avança para a próxima etapa.\n * Executa validação via evento `brWizardBeforeStepChange` antes de navegar.\n * @returns Promise<boolean> - true se navegou com sucesso, false se bloqueado\n */\n @Method()\n async nextStep(): Promise<boolean> {\n return await this.navigateToStep(this.currentStep + 1)\n }\n\n /**\n * Volta para a etapa anterior.\n * Não executa validação ao retornar.\n * @returns Promise<boolean> - true se navegou com sucesso, false se bloqueado\n */\n @Method()\n async previousStep(): Promise<boolean> {\n return await this.navigateToStep(this.currentStep - 1)\n }\n\n /**\n * Navega para uma etapa específica.\n * Executa validação se estiver avançando (etapa alvo > etapa atual).\n * @param stepNumber - Número da etapa de destino (numeração começa em 1)\n * @returns Promise<boolean> - true se navegou com sucesso, false se bloqueado\n */\n @Method()\n async goToStep(stepNumber: number): Promise<boolean> {\n return await this.navigateToStep(stepNumber)\n }\n\n /**\n * Retorna à primeira etapa do wizard.\n * Não executa validação (útil para reiniciar o fluxo).\n * @returns Promise<void>\n */\n @Method()\n async reset(): Promise<void> {\n await this.navigateToStep(1, true)\n }\n\n /**\n * Retorna o elemento HTML do painel ativo no momento.\n * @returns Promise<HTMLElement | null>\n */\n @Method()\n async getCurrentStep(): Promise<HTMLElement | null> {\n return this.panels[this.currentStep - 1] || null\n }\n\n /**\n * Retorna todos os painéis do wizard.\n * @returns Promise<HTMLElement[]>\n */\n @Method()\n async getAllSteps(): Promise<HTMLElement[]> {\n return [...this.panels]\n }\n\n /**\n * Retorna um painel específico pelo índice.\n * @param stepNumber - Número da etapa (numeração começa em 1)\n * @returns Promise<HTMLElement | null>\n */\n @Method()\n async getStepByIndex(stepNumber: number): Promise<HTMLElement | null> {\n return this.panels[stepNumber - 1] || null\n }\n\n /**\n * Retorna o índice (número) da etapa atual.\n * A numeração começa em 1 (primeira etapa = 1, segunda = 2, etc).\n * @returns Promise<number>\n */\n @Method()\n async getCurrentStepIndex(): Promise<number> {\n return this.currentStep\n }\n\n /**\n * Retorna o número total de etapas do wizard.\n * @returns Promise<number>\n */\n @Method()\n async getTotalSteps(): Promise<number> {\n return this.panels.length\n }\n\n // ========================================\n // NAVEGAÇÃO E VALIDAÇÃO\n // ========================================\n\n /**\n * Método privado central que gerencia toda a navegação com validação.\n *\n * Comportamento unificado para linear e nonlinear:\n * - Linear: Valida ao avançar, não permite pular steps\n * - Nonlinear: Valida ao avançar, permite pular steps livremente\n *\n * @param targetStep - Número da etapa de destino (numeração começa em 1)\n * @param skipValidation - Se true, pula validação (útil para reset/programático)\n * @returns Promise<boolean> - true se navegou com sucesso, false se bloqueado\n */\n private async navigateToStep(targetStep: number, skipValidation: boolean = false): Promise<boolean> {\n /**\n * VALIDAÇÕES BÁSICAS\n * 1. Verifica se targetStep está dentro dos limites válidos\n * 2. Se já estamos na etapa alvo, retorna sucesso imediatamente\n */\n if (targetStep < 1 || targetStep > this.panels.length) {\n return false\n }\n\n if (targetStep === this.currentStep) {\n return true\n }\n\n /**\n * MODO LINEAR: RESTRIÇÕES\n * No modo linear, não é permitido pular para etapas futuras não visitadas.\n * É possível voltar, mas não avançar além da próxima etapa sequencial.\n */\n if (this.progressionType === 'linear') {\n if (targetStep > this.currentStep + 1) {\n const message = `Não é possível pular etapas. Complete a etapa ${this.currentStep + 1} antes de avançar.`\n\n this.announceToScreenReader(message)\n\n this.brWizardNavigationBlocked.emit('linear-progression')\n\n return false\n }\n }\n\n /**\n * VALIDAÇÃO CUSTOMIZADA\n * Emite evento brWizardBeforeStepChange APENAS se:\n * 1. Não estamos pulando validação (skipValidation=false)\n * 2. Estamos AVANÇANDO (targetStep > currentStep)\n *\n * Observações:\n * - Voltar não precisa validar\n * - Validação se aplica a ambos os modos (linear e nonlinear)\n */\n const shouldValidate = !skipValidation && targetStep > this.currentStep\n\n if (shouldValidate) {\n const eventResult = this.brWizardBeforeStepChange.emit(targetStep)\n\n /**\n * Se preventDefault() foi chamado no listener do evento,\n * bloqueia a navegação e retorna false\n */\n if (eventResult.defaultPrevented) {\n const message = 'Não é possível avançar. Verifique os campos obrigatórios da etapa atual.'\n\n this.announceToScreenReader(message)\n\n this.brWizardNavigationBlocked.emit('validation-failed')\n\n return false\n }\n }\n\n /**\n * EXECUTA NAVEGAÇÃO\n * Atualiza o estado interno e emite evento de confirmação\n */\n this.currentStep = targetStep\n\n this.brWizardStepChange.emit(this.currentStep)\n\n return true\n }\n\n // ========================================\n // SINCRONIZAÇÃO COM BR-STEP\n // ========================================\n\n /**\n * Sincroniza estado do wizard com o br-step.\n *\n * O br-step já gerencia completamente os atributos 'active' via componentShouldUpdate\n * e requestAnimationFrame, então apenas chamamos os métodos de navegação dele.\n */\n private async syncWithBrStep() {\n if (this.stepRef === null) return\n\n if (typeof this.stepRef.GetActiveStep !== 'function') {\n return\n }\n\n this.isSyncingWithStep = true\n\n try {\n const targetStepIndex = this.currentStep - 1\n const currentActiveStep = await this.stepRef.GetActiveStep()\n\n if (currentActiveStep !== targetStepIndex) {\n const diff = targetStepIndex - currentActiveStep\n\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n await this.stepRef.ProceedToNextStep()\n }\n } else {\n for (let i = 0; i < Math.abs(diff); i++) {\n await this.stepRef.BackToPreviousStep()\n }\n }\n }\n } finally {\n this.isSyncingWithStep = false\n }\n }\n\n // ========================================\n // GERENCIAMENTO DE PAINÉIS\n // ========================================\n\n /**\n * Descobre painéis filhos usando assigned elements do slot.\n * @param slot - Elemento slot do shadow DOM\n */\n private discoverPanelsFromSlot(slot: HTMLSlotElement) {\n const assignedElements = slot.assignedElements()\n this.panels = assignedElements.filter((el) => el.tagName.toLowerCase() === 'br-wizard-panel') as HTMLElement[]\n }\n\n /**\n * Atualiza estados de todos os painéis.\n * Define o índice e o estado ativo de cada painel.\n */\n private async updatePanels() {\n for (let idx = 0; idx < this.panels.length; idx++) {\n const panel = this.panels[idx] as HTMLBrWizardPanelElement\n const stepNumber = idx + 1\n const isActive = stepNumber === this.currentStep\n\n await panel.setIndex(stepNumber)\n await panel.setActive(isActive)\n }\n }\n\n /**\n * Define etapa inicial baseada na prop initialStep.\n * Garante que o valor esteja dentro dos limites válidos.\n */\n private setInitialStep() {\n this.currentStep = Math.max(1, Math.min(this.initialStep, this.panels.length))\n }\n\n // ========================================\n // ACESSIBILIDADE\n // ========================================\n\n /**\n * Anuncia mensagem para leitores de tela via aria-live.\n * Limpa automaticamente após 5 segundos para evitar poluição.\n * @param message - Mensagem a ser anunciada\n */\n private announceToScreenReader(message: string) {\n this.ariaLiveMessage = ''\n\n requestAnimationFrame(() => {\n this.ariaLiveMessage = message\n\n this.clearAriaLiveTimeout()\n this.ariaLiveTimeout = window.setTimeout(() => {\n this.ariaLiveMessage = ''\n }, this.ARIA_LIVE_CLEANUP_DELAY)\n })\n }\n\n /**\n * Anuncia mudança de etapa para leitores de tela.\n * Informa direção da navegação e progresso atual.\n * @param newStep - Nova etapa\n * @param oldStep - Etapa anterior\n */\n private announceStepChange(newStep: number, oldStep: number) {\n const totalSteps = this.panels.length\n\n let direction = ''\n if (newStep > oldStep) {\n direction = 'Avançando para'\n } else if (newStep < oldStep) {\n direction = 'Retornando para'\n }\n\n const message = `${direction}, etapa ${newStep} de ${totalSteps}`\n this.announceToScreenReader(message)\n }\n\n /**\n * Limpa o timeout de mensagens aria-live.\n */\n private clearAriaLiveTimeout() {\n if (this.ariaLiveTimeout !== null) {\n clearTimeout(this.ariaLiveTimeout)\n this.ariaLiveTimeout = null\n }\n }\n\n /**\n * Move foco para o primeiro elemento do painel ativo.\n *\n */\n private setFocusOnActivePanel() {\n requestAnimationFrame(() => {\n const activePanel = this.panels[this.currentStep - 1] as HTMLBrWizardPanelElement | undefined\n if (typeof activePanel === 'undefined') return\n\n const panelElement = activePanel.shadowRoot?.querySelector('.wizard-panel-content')\n if (typeof panelElement === 'undefined' || panelElement === null) return\n\n const focusableElements = panelElement.querySelectorAll(this.FOCUSABLE_SELECTOR)\n\n if (focusableElements.length > 0) {\n ;(focusableElements[0] as HTMLElement).focus()\n }\n })\n }\n\n // ========================================\n // DETECÇÃO MOBILE E RESPONSIVIDADE\n // ========================================\n\n /**\n * Configura detecção de viewport mobile.\n * Ativa listeners de resize e configura gestos swipe.\n */\n private setupMobileDetection() {\n this.isMobile = window.innerWidth <= 992\n window.addEventListener('resize', this.handleResize)\n\n if (this.isMobile) {\n this.setupSwipeListeners()\n }\n }\n\n /**\n * Remove listeners de detecção mobile.\n */\n private cleanupMobileDetection() {\n window.removeEventListener('resize', this.handleResize)\n }\n\n /**\n * Handler de resize da janela.\n * Alterna entre modos mobile/desktop e configura/limpa gestos swipe.\n */\n private handleResize = () => {\n const wasMobile = this.isMobile\n this.isMobile = window.innerWidth <= 992\n\n if (this.isMobile && !wasMobile) {\n this.collapsed = true\n this.setupSwipeListeners()\n } else if (!this.isMobile && wasMobile) {\n this.cleanupSwipeListeners()\n this.collapsed = false\n }\n }\n\n // ========================================\n // GESTOS SWIPE (MOBILE)\n // ========================================\n\n /**\n * Configura gestos swipe para mobile.\n */\n private setupSwipeListeners() {\n if (!this.isMobile) return\n\n requestAnimationFrame(() => {\n this.progressBarRef = this.el.shadowRoot?.querySelector('.wizard-progress') || null\n this.formRef = this.el.shadowRoot?.querySelector('.wizard-form') || null\n\n if (this.progressBarRef !== null) {\n const direction = this.orientation === 'horizontal' ? 'vertical' : 'horizontal'\n this.progressBarSwipe = new UniversalSwipe(this.progressBarRef, { direction })\n\n if (this.orientation === 'horizontal') {\n this.progressBarSwipe.on('SWIPE_DOWN', () => this.expandSteps())\n this.progressBarSwipe.on('SWIPE_UP', () => this.collapseSteps())\n } else {\n this.progressBarSwipe.on('SWIPE_RIGHT', () => this.expandSteps())\n this.progressBarSwipe.on('SWIPE_LEFT', () => this.collapseSteps())\n }\n }\n\n if (this.formRef !== null) {\n this.formRef.addEventListener('touchstart', this.handleFormTouchStart)\n }\n })\n }\n\n /**\n * Remove listeners de gestos swipe.\n */\n private cleanupSwipeListeners() {\n if (this.progressBarSwipe !== null) {\n this.progressBarSwipe.off('SWIPE_DOWN', this.expandSteps)\n this.progressBarSwipe.off('SWIPE_UP', this.collapseSteps)\n this.progressBarSwipe.off('SWIPE_RIGHT', this.expandSteps)\n this.progressBarSwipe.off('SWIPE_LEFT', this.collapseSteps)\n\n this.progressBarSwipe.destroy()\n this.progressBarSwipe = null\n }\n\n if (this.formRef !== null) {\n this.formRef.removeEventListener('touchstart', this.handleFormTouchStart)\n }\n }\n\n /**\n * Handler de toque no formulário.\n * Recolhe automaticamente a barra de progresso.\n */\n private handleFormTouchStart = () => {\n this.collapseSteps()\n }\n\n /**\n * Recolhe a barra de progresso (mobile).\n * Adiciona o atributo 'collapsed' ao host.\n */\n private collapseSteps() {\n if (this.isMobile) {\n this.collapsed = true\n }\n }\n\n /**\n * Expande a barra de progresso (mobile).\n * Remove o atributo 'collapsed' do host.\n */\n private expandSteps() {\n if (this.isMobile) {\n this.collapsed = false\n }\n }\n\n // ========================================\n // HANDLERS DE EVENTOS DE BOTÕES\n // ========================================\n\n /**\n * Handler do botão \"Avançar\" ou \"Concluir\".\n * Se for a última etapa, valida e emite evento de conclusão.\n * Caso contrário, avança para a próxima etapa.\n */\n private handleNext = async () => {\n if (this.currentStep === this.panels.length) {\n // Última etapa: validar antes de completar\n const eventResult = this.brWizardBeforeStepChange.emit(this.currentStep)\n\n // Se preventDefault() foi chamado, bloqueia conclusão\n if (!eventResult.defaultPrevented) {\n this.brWizardComplete.emit()\n }\n } else {\n await this.nextStep()\n }\n }\n\n /**\n * Handler do botão \"Voltar\".\n * Navega para a etapa anterior.\n */\n private handlePrevious = async () => {\n await this.previousStep()\n }\n\n /**\n * Handler do botão \"Cancelar\".\n * Emite evento de cancelamento do wizard.\n */\n private handleCancel = () => {\n this.brWizardCancel.emit()\n }\n\n // ========================================\n // MÉTODOS DE RENDERIZAÇÃO\n // ========================================\n\n /**\n * Retorna classes CSS do container principal.\n * @returns CssClassMap - Mapa de classes CSS\n */\n private getHostClassMap(): CssClassMap {\n return {\n 'br-wizard': true,\n }\n }\n\n /**\n * Renderiza indicadores de progresso usando br-step.\n * @returns JSX.Element | null - Elemento de progresso ou null se não houver painéis\n */\n private renderProgress() {\n if (this.panels.length === 0) {\n return null\n }\n\n return (\n <div class=\"wizard-progress\">\n <br-step\n ref={(el) => (this.stepRef = el)}\n initial-step={String(this.currentStep - 1)}\n layout={this.orientation}\n label-position={this.orientation === 'vertical' ? 'bottom' : 'bottom'}\n progression-type={this.progressionType}\n mode=\"step\"\n >\n {this.panels.map((panel) => {\n const label = panel.getAttribute('label') || ''\n return <br-step-item label={label}></br-step-item>\n })}\n </br-step>\n </div>\n )\n }\n\n /**\n * Renderiza conteúdo dos painéis via slot.\n * @returns JSX.Element - Container com slot dos painéis\n */\n private renderPanelContent() {\n return (\n <div class=\"wizard-panel-content\">\n <slot />\n </div>\n )\n }\n\n /**\n * Renderiza botões de navegação do wizard.\n * Adapta-se ao contexto: primeira etapa, última etapa, mobile/desktop.\n * @returns JSX.Element - Container com botões de navegação\n */\n private renderPanelButtons() {\n const isFirst = this.currentStep === 1\n const isLast = this.currentStep === this.panels.length\n\n const buttonShape = this.isMobile ? 'block' : undefined\n\n return (\n <div class=\"wizard-panel-btn\">\n <br-button\n class=\"wizard-btn-canc\"\n type=\"button\"\n shape={buttonShape}\n emphasis=\"tertiary\"\n onClick={this.handleCancel}\n >\n Cancelar\n </br-button>\n\n <br-button\n class={isLast ? 'wizard-btn' : 'wizard-btn-next'}\n emphasis=\"primary\"\n type=\"button\"\n shape={buttonShape}\n onClick={this.handleNext}\n >\n {isLast ? 'Concluir' : 'Avançar'}\n </br-button>\n\n {!isFirst && (\n <br-button\n class=\"wizard-btn-prev\"\n emphasis=\"secondary\"\n type=\"button\"\n shape={buttonShape}\n onClick={this.handlePrevious}\n >\n Voltar\n </br-button>\n )}\n </div>\n )\n }\n\n /**\n * Renderiza região de anúncios para leitores de tela.\n * Usa aria-live para comunicar mudanças de estado de forma acessível.\n * @returns JSX.Element - Elemento sr-only com aria-live\n */\n private renderAriaLiveRegion() {\n return (\n <div class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {this.ariaLiveMessage}\n </div>\n )\n }\n\n /**\n * Método de renderização principal do componente.\n * Monta a estrutura completa do wizard com acessibilidade integrada.\n * @returns JSX.Element - Estrutura completa do wizard\n */\n render() {\n const hostClass = this.getHostClassMap()\n const verticalAttr = this.orientation === 'vertical' ? { vertical: '' } : {}\n const collapsedAttr = this.collapsed ? { collapsed: '' } : {}\n const activePanelAttr = { active: '' }\n\n // Atributos ARIA para o painel ativo\n const totalSteps = this.panels.length\n const currentPanel = this.panels[this.currentStep - 1]\n const stepLabel = currentPanel?.getAttribute('label') || `Etapa ${this.currentStep}`\n\n return (\n <Host class={hostClass} {...verticalAttr} {...collapsedAttr} step={String(this.currentStep)}>\n {this.renderAriaLiveRegion()}\n\n {this.renderProgress()}\n\n <div class=\"wizard-form\" role=\"region\" aria-label={`Wizard: ${stepLabel}`}>\n <div\n class=\"wizard-panel\"\n {...activePanelAttr}\n role=\"group\"\n aria-label={`${stepLabel}, etapa ${this.currentStep} de ${totalSteps}`}\n >\n {this.renderPanelContent()}\n {this.renderPanelButtons()}\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -2,21 +2,19 @@
2
2
  * Construído por SERPRO
3
3
  * © https://serpro.gov.br/ - MIT License.
4
4
  */
5
- import { p as e, H as t, d as i, h as a, c as r } from "./p-DSkSDmzD.js";
5
+ import { p as e, H as t, d as a, h as i, c as r } from "./p-DSkSDmzD.js";
6
6
 
7
- import { _ as o } from "./p-DIPMDb5E.js";
7
+ const o = '*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}main{display:block}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}a{background-color:rgba(0,0,0,0)}b,strong{font-weight:bolder}small{font-size:80%}img{border-style:none}button,input,select,textarea{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;-moz-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.d-none{display:none !important}.d-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}@media (min-width: 576px){.d-sm-block{display:block !important}.d-sm-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}.justify-content-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.align-items-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter)*.5);padding-right:calc(var(--grid-gutter)*.5);width:100%}.col{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;min-width:8.3333333333%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-2{-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.container,.container-lg{--grid-margin:var(--grid-portrait-margin);--grid-maxwidth:var(--grid-portrait-maxwidth);margin-left:auto;margin-right:auto;max-width:var(--grid-maxwidth);padding-left:var(--grid-margin);padding-right:var(--grid-margin);width:100%}.row{--grid-gutter:var(--grid-portrait-gutter);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:calc(var(--grid-gutter)*-0.5);margin-right:calc(var(--grid-gutter)*-0.5)}@media (min-width: 576px){.container,.container-lg{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-sm) - var(--grid-tablet-margin))}.col-sm-4{-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}}@media (min-width: 992px){.container,.container-lg{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-md) - var(--grid-tablet-margin))}}@media (min-width: 1280px){.container,.container-lg{--grid-margin:var(--grid-desktop-margin)}.row{--grid-gutter:var(--grid-desktop-gutter)}.container,.container-lg{--grid-maxwidth:calc(var(--grid-breakpoint-lg) - var(--grid-desktop-margin))}.col-lg-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}}@media (min-width: 1600px){.container,.container-lg{--grid-margin:var(--grid-tv-margin)}.row{--grid-gutter:var(--grid-tv-gutter)}.container,.container-lg{--grid-maxwidth:calc(var(--grid-breakpoint-xl) - var(--grid-tv-margin))}}.mr-1{margin-right:var(--spacing-scale-half) !important}.mb-1{margin-bottom:var(--spacing-scale-half) !important}.ml-1{margin-left:var(--spacing-scale-half) !important}.mr-n2{margin-right:calc(var(--spacing-scale-base)*-1) !important}.ml-2{margin-left:var(--spacing-scale-base) !important}.mx-3{margin-left:var(--spacing-scale-2x) !important;margin-right:var(--spacing-scale-2x) !important}.mr-auto{margin-right:auto !important}.ml-auto{margin-left:auto !important}.pt-half{padding-top:var(--spacing-scale-half) !important}.py-3{padding-bottom:var(--spacing-scale-2x) !important;padding-top:var(--spacing-scale-2x) !important}.py-4{padding-bottom:var(--spacing-scale-3x) !important;padding-top:var(--spacing-scale-3x) !important}@media (min-width: 576px){.ml-sm-0{margin-left:var(--spacing-scale-default) !important}}body{--bg-color:var(--background);--bg-color-rgb:var(--background-rgb);--bg-color-hsl:var(--background-hsl);--font-size:var(--font-size-scale-base);--font-weight:var(--font-weight-regular);--link-color:var(--interactive);--link-color-rgb:var(--interactive-rgb);--link-color-hsl:var(--interactive-hsl);--line-height:var(--font-line-height-medium);--text-color:var(--color);--text-color-rgb:var(--color-rgb);--text-color-hsl:var(--color-hsl);background:var(--bg-color);color:var(--text-color);font-family:var(--font-family-base);font-size:var(--font-size);font-weight:var(--font-weight);line-height:var(--line-height)}p{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-2x);margin-top:0}p a{text-decoration:underline}@media (min-width: 576px){p{font-size:var(--font-size-scale-up-01)}}a{--focus-offset:var(--spacing-scale-half)}a:focus{outline:none}a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a:not(:disabled):active{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--pressed))), to(rgba(var(--interactive-rgb), var(--pressed))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}a{color:var(--interactive);text-decoration:none}button{cursor:pointer}img{max-width:100%;vertical-align:middle}h2,.h2{color:var(--color);font-size:var(--font-size-scale-up-03);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2xh);margin-top:var(--spacing-scale-3xh);padding-bottom:var(--spacing-scale-2xh)}@media (min-width: 576px){.h2,h2{font-size:var(--font-size-scale-up-05);font-weight:var(--font-weight-regular)}}ul,ol{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}table{--table-background:var(--background);--table-color:var(--color);--table-border-color:var(--gray-20);--table-border-style:solid;--table-border-width:1px;--table-hover:var(--color-rgb);--table-padding:var(--spacing-scale-3x);--table-font-weight:var(--font-weight-medium);--table-th-background:var(--background-alternative);--table-th-font-weight:var(--font-weight-semi-bold);--table-row-size:var(--spacing-scale-2x);border-collapse:collapse;width:100%}label,.label{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half)}::-webkit-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-moz-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-ms-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::placeholder,.placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}input,textarea,.input{color:var(--color-light);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-half)}.text-pure-0{color:var(--pure-0) !important}.bg-interactive{--background:var(--interactive);background:var(--interactive) !important}.text-primary-default{color:var(--color-primary-default) !important}.text-center{text-align:center !important}.text-right{text-align:right !important}.text-nowrap{white-space:nowrap !important}.text-uppercase{text-transform:uppercase !important}.text-medium{font-weight:500 !important}.text-bold{font-weight:700 !important}.text-down-01{font-size:var(--font-size-scale-down-01) !important}@media (min-width: 576px){.text-sm-center{text-align:center !important}.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}}.ease{-webkit-animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1);animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1)}.ease-in-out{-webkit-animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1);animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1)}.fab{--icon-size:var(--icon-size-base);display:inline-block;font-size:var(--icon-size);text-align:center;width:calc(var(--icon-size) + 8px)}.highlight{background:var(--status-highlight-background) -webkit-gradient(linear, left top, left bottom, from(var(--status-highlight-overlay)), to(var(--status-highlight-overlay)));background:var(--status-highlight-background) linear-gradient(var(--status-highlight-overlay), var(--status-highlight-overlay));color:var(--status-highlight-text);padding:0 var(--spacing-scale-half)}[disabled],.disabled{cursor:not-allowed;opacity:var(--disabled)}[disabled] *,.disabled *{pointer-events:none}[data-toggle=dropdown]+*{position:absolute}.dropdown{position:relative}.dropdown [data-toggle=dropdown]+*{-webkit-box-shadow:var(--surface-shadow-sm);box-shadow:var(--surface-shadow-sm);left:0;position:absolute;top:100%}.dropdown .br-item{--color:var(--color-light);--color-rgb:var(--color-light-rgb);--text-color:var(--color-light);--interactive:var(--interactive-light);--interactive-rgb:var(--color-rgb);--visited:var(--visited-light);--hover:var(--hover-light);--pressed:var(--pressed-light);--focus-color:var(--focus-color-light);--focus:var(--focus-color-light);--item-padding-y:var(--spacing-scale-2x);background-color:var(--background-light);color:var(--color)}.dropdown .br-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown .br-item.selected{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark)}*[data-toggle=collapse]:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}*[data-toggle=collapse]:focus{outline:none}*[data-toggle=collapse]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}.br-checkbox{--checkbox-padding:var(--spacing-scale-base);--checkbox-size:24px;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.br-checkbox+.br-checkbox{margin-top:var(--spacing-scale-base)}.br-checkbox input{margin:0;opacity:0;position:absolute}.br-checkbox input+label{cursor:pointer;display:inline-block;margin-bottom:0;min-height:var(--checkbox-size);min-width:var(--checkbox-size);padding-left:calc(var(--spacing-scale-base) + var(--checkbox-size));position:relative}.br-checkbox input+label::before{background:var(--background-light);border:1px solid var(--border-color);border-radius:4px;content:"";height:var(--checkbox-size);left:0;position:absolute;width:var(--checkbox-size)}.br-checkbox input+label:empty{padding:0}.br-checkbox label{font-weight:var(--font-weight-medium)}.br-checkbox.hidden-label label{padding-left:calc(var(--checkbox-size) + var(--surface-width-md)*2);text-indent:-10000px;white-space:nowrap;width:0}.br-checkbox input:checked+label::after,.br-checkbox input:indeterminate+label::after{border:solid var(--selected);border-width:0 3px 3px 0;content:"";height:var(--icon-size-sm);left:8px;position:absolute;top:4px;-webkit-transform:rotate(45deg);transform:rotate(45deg);width:8px}.br-checkbox input[indeterminate]+label::before,.br-checkbox input:indeterminate+label::before{--interactive-rgb:var(--color-rgb);background:var(--selected);border-color:var(--selected)}.br-checkbox input[indeterminate]:hover:not(:disabled)+label::before,.br-checkbox input:indeterminate:hover:not(:disabled)+label::before{--interactive-rgb:var(--color-dark-rgb)}.br-checkbox input[indeterminate]:checked+label::after,.br-checkbox input[indeterminate]+label::after,.br-checkbox input:indeterminate:checked+label::after,.br-checkbox input:indeterminate+label::after{border-color:var(--background-light);border-width:0 0 3px;top:2px;-webkit-transform:none;transform:none}.br-checkbox.invalid input+label::before,.br-checkbox[invalid] input+label::before{--border-color:var(--danger)}.br-checkbox.invalid input:focus-visible:checked+label::before,.br-checkbox.invalid input:focus-visible+label::before,.br-checkbox[invalid] input:focus-visible:checked+label::before,.br-checkbox[invalid] input:focus-visible+label::before{--border-color:var(--focus-color)}.br-checkbox.invalid input:checked+label::before,.br-checkbox[invalid] input:checked+label::before{--border-color:var(--danger)}.br-checkbox.valid input+label::before,.br-checkbox[valid] input+label::before{--border-color:var(--success)}.br-checkbox.valid input:focus-visible:checked+label::before,.br-checkbox.valid input:focus-visible+label::before,.br-checkbox[valid] input:focus-visible:checked+label::before,.br-checkbox[valid] input:focus-visible+label::before{--border-color:var(--focus-color)}.br-checkbox.valid input:checked+label::before,.br-checkbox[valid] input:checked+label::before{--border-color:var(--success)}.br-checkbox.small input+label,.br-checkbox[small] input+label{line-height:var(--spacing-scale-2xh);min-height:var(--spacing-scale-2xh)}.br-checkbox.small input+label::before,.br-checkbox[small] input+label::before{height:var(--spacing-scale-2xh);width:var(--spacing-scale-2xh)}.br-checkbox.small input:checked+label::after,.br-checkbox[small] input:checked+label::after{border-width:0 2px 2px 0;height:var(--icon-size-sm);left:7px;top:4px;width:6px}.br-checkbox.small input[indeterminate]+label::after,.br-checkbox.small input:indeterminate+label::after,.br-checkbox[small] input[indeterminate]+label::after,.br-checkbox[small] input:indeterminate+label::after{border-color:var(--background-light);border-width:0 0 3px;left:7px;top:1px;-webkit-transform:none;transform:none;width:6px}.br-checkbox input:invalid+label::before{--border-color:var(--danger)}.br-checkbox input:focus-visible:checked+label::before,.br-checkbox input:focus-visible+label::before{border-color:var(--focus) !important;-webkit-box-shadow:0 0 0 var(--surface-width-md) var(--focus);box-shadow:0 0 0 var(--surface-width-md) var(--focus);outline:none}.br-checkbox input:hover:not(:disabled)+label::before{--interactive-rgb:var(--interactive-light-rgb);background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}.br-checkbox:not(.disabled) input:disabled+label{cursor:not-allowed;opacity:var(--disabled)}.br-checkbox:not(.disabled) input:disabled+label *{pointer-events:none}.br-checkbox.inverted,.br-checkbox.inverted label,.br-checkbox.dark-mode,.br-checkbox.dark-mode label{color:var(--color-dark)}:host{display:inline-block}:host .br-checkbox{--checkbox-padding:var(--spacing-scale-half);--checkbox-size:24px;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}:host .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;white-space:nowrap;border:0}';
8
8
 
9
- const n = '*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}main{display:block}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}a{background-color:rgba(0,0,0,0)}b,strong{font-weight:bolder}small{font-size:80%}img{border-style:none}button,input,select,textarea{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;-moz-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.d-none{display:none !important}.d-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}@media (min-width: 576px){.d-sm-block{display:block !important}.d-sm-flex{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}.justify-content-start{-webkit-box-pack:start !important;-ms-flex-pack:start !important;justify-content:flex-start !important}.justify-content-end{-webkit-box-pack:end !important;-ms-flex-pack:end !important;justify-content:flex-end !important}.justify-content-center{-webkit-box-pack:center !important;-ms-flex-pack:center !important;justify-content:center !important}.align-items-center{-webkit-box-align:center !important;-ms-flex-align:center !important;align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter)*.5);padding-right:calc(var(--grid-gutter)*.5);width:100%}.col{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;min-width:8.3333333333%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-2{-ms-flex-preferred-size:16.6666666667%;flex-basis:16.6666666667%;max-width:16.6666666667%}.container,.container-lg{--grid-margin:var(--grid-portrait-margin);--grid-maxwidth:var(--grid-portrait-maxwidth);margin-left:auto;margin-right:auto;max-width:var(--grid-maxwidth);padding-left:var(--grid-margin);padding-right:var(--grid-margin);width:100%}.row{--grid-gutter:var(--grid-portrait-gutter);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:calc(var(--grid-gutter)*-0.5);margin-right:calc(var(--grid-gutter)*-0.5)}@media (min-width: 576px){.container,.container-lg{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-sm) - var(--grid-tablet-margin))}.col-sm-4{-ms-flex-preferred-size:33.3333333333%;flex-basis:33.3333333333%;max-width:33.3333333333%}}@media (min-width: 992px){.container,.container-lg{--grid-margin:var(--grid-tablet-margin)}.row{--grid-gutter:var(--grid-tablet-gutter)}.container{--grid-maxwidth:calc(var(--grid-breakpoint-md) - var(--grid-tablet-margin))}}@media (min-width: 1280px){.container,.container-lg{--grid-margin:var(--grid-desktop-margin)}.row{--grid-gutter:var(--grid-desktop-gutter)}.container,.container-lg{--grid-maxwidth:calc(var(--grid-breakpoint-lg) - var(--grid-desktop-margin))}.col-lg-3{-ms-flex-preferred-size:25%;flex-basis:25%;max-width:25%}}@media (min-width: 1600px){.container,.container-lg{--grid-margin:var(--grid-tv-margin)}.row{--grid-gutter:var(--grid-tv-gutter)}.container,.container-lg{--grid-maxwidth:calc(var(--grid-breakpoint-xl) - var(--grid-tv-margin))}}.mr-1{margin-right:var(--spacing-scale-half) !important}.mb-1{margin-bottom:var(--spacing-scale-half) !important}.ml-1{margin-left:var(--spacing-scale-half) !important}.mr-n2{margin-right:calc(var(--spacing-scale-base)*-1) !important}.ml-2{margin-left:var(--spacing-scale-base) !important}.mx-3{margin-left:var(--spacing-scale-2x) !important;margin-right:var(--spacing-scale-2x) !important}.mr-auto{margin-right:auto !important}.ml-auto{margin-left:auto !important}.pt-half{padding-top:var(--spacing-scale-half) !important}.py-3{padding-bottom:var(--spacing-scale-2x) !important;padding-top:var(--spacing-scale-2x) !important}.py-4{padding-bottom:var(--spacing-scale-3x) !important;padding-top:var(--spacing-scale-3x) !important}@media (min-width: 576px){.ml-sm-0{margin-left:var(--spacing-scale-default) !important}}body{--bg-color:var(--background);--bg-color-rgb:var(--background-rgb);--bg-color-hsl:var(--background-hsl);--font-size:var(--font-size-scale-base);--font-weight:var(--font-weight-regular);--link-color:var(--interactive);--link-color-rgb:var(--interactive-rgb);--link-color-hsl:var(--interactive-hsl);--line-height:var(--font-line-height-medium);--text-color:var(--color);--text-color-rgb:var(--color-rgb);--text-color-hsl:var(--color-hsl);background:var(--bg-color);color:var(--text-color);font-family:var(--font-family-base);font-size:var(--font-size);font-weight:var(--font-weight);line-height:var(--line-height)}p{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-2x);margin-top:0}p a{text-decoration:underline}@media (min-width: 576px){p{font-size:var(--font-size-scale-up-01)}}a{--focus-offset:var(--spacing-scale-half)}a:focus{outline:none}a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a:not(:disabled):active{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--pressed))), to(rgba(var(--interactive-rgb), var(--pressed))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}a{color:var(--interactive);text-decoration:none}button{cursor:pointer}img{max-width:100%;vertical-align:middle}h2,.h2{color:var(--color);font-size:var(--font-size-scale-up-03);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2xh);margin-top:var(--spacing-scale-3xh);padding-bottom:var(--spacing-scale-2xh)}@media (min-width: 576px){.h2,h2{font-size:var(--font-size-scale-up-05);font-weight:var(--font-weight-regular)}}ul,ol{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}table{--table-background:var(--background);--table-color:var(--color);--table-border-color:var(--gray-20);--table-border-style:solid;--table-border-width:1px;--table-hover:var(--color-rgb);--table-padding:var(--spacing-scale-3x);--table-font-weight:var(--font-weight-medium);--table-th-background:var(--background-alternative);--table-th-font-weight:var(--font-weight-semi-bold);--table-row-size:var(--spacing-scale-2x);border-collapse:collapse;width:100%}label,.label{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half)}::-webkit-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-moz-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::-ms-input-placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}::placeholder,.placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}input,textarea,.input{color:var(--color-light);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-half)}.text-pure-0{color:var(--pure-0) !important}.bg-interactive{--background:var(--interactive);background:var(--interactive) !important}.text-primary-default{color:var(--color-primary-default) !important}.text-center{text-align:center !important}.text-right{text-align:right !important}.text-nowrap{white-space:nowrap !important}.text-uppercase{text-transform:uppercase !important}.text-medium{font-weight:500 !important}.text-bold{font-weight:700 !important}.text-down-01{font-size:var(--font-size-scale-down-01) !important}@media (min-width: 576px){.text-sm-center{text-align:center !important}.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}}.ease{-webkit-animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1);animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1)}.ease-in-out{-webkit-animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1);animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1)}.fab{--icon-size:var(--icon-size-base);display:inline-block;font-size:var(--icon-size);text-align:center;width:calc(var(--icon-size) + 8px)}.highlight{background:var(--status-highlight-background) -webkit-gradient(linear, left top, left bottom, from(var(--status-highlight-overlay)), to(var(--status-highlight-overlay)));background:var(--status-highlight-background) linear-gradient(var(--status-highlight-overlay), var(--status-highlight-overlay));color:var(--status-highlight-text);padding:0 var(--spacing-scale-half)}[disabled],.disabled{cursor:not-allowed;opacity:var(--disabled)}[disabled] *,.disabled *{pointer-events:none}[data-toggle=dropdown]+*{position:absolute}.dropdown{position:relative}.dropdown [data-toggle=dropdown]+*{-webkit-box-shadow:var(--surface-shadow-sm);box-shadow:var(--surface-shadow-sm);left:0;position:absolute;top:100%}.dropdown .br-item{--color:var(--color-light);--color-rgb:var(--color-light-rgb);--text-color:var(--color-light);--interactive:var(--interactive-light);--interactive-rgb:var(--color-rgb);--visited:var(--visited-light);--hover:var(--hover-light);--pressed:var(--pressed-light);--focus-color:var(--focus-color-light);--focus:var(--focus-color-light);--item-padding-y:var(--spacing-scale-2x);background-color:var(--background-light);color:var(--color)}.dropdown .br-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown .br-item.selected{--color:var(--color-dark);--color-rgb:var(--color-dark-rgb);--text-color:var(--color-dark);--interactive:var(--interactive-dark);--interactive-rgb:var(--interactive-dark-rgb);--visited:var(--visited-dark);--hover:var(--hover-dark);--pressed:var(--pressed-dark);--focus-color:var(--focus-color-dark);--focus:var(--focus-color-dark)}*[data-toggle=collapse]:not(:disabled):hover{background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}*[data-toggle=collapse]:focus{outline:none}*[data-toggle=collapse]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}.br-checkbox{--checkbox-padding:var(--spacing-scale-base);--checkbox-size:24px;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.br-checkbox+.br-checkbox{margin-top:var(--spacing-scale-base)}.br-checkbox input{margin:0;opacity:0;position:absolute}.br-checkbox input+label{cursor:pointer;display:inline-block;margin-bottom:0;min-height:var(--checkbox-size);min-width:var(--checkbox-size);padding-left:calc(var(--spacing-scale-base) + var(--checkbox-size));position:relative}.br-checkbox input+label::before{background:var(--background-light);border:1px solid var(--border-color);border-radius:4px;content:"";height:var(--checkbox-size);left:0;position:absolute;width:var(--checkbox-size)}.br-checkbox input+label:empty{padding:0}.br-checkbox label{font-weight:var(--font-weight-medium)}.br-checkbox.hidden-label label{padding-left:calc(var(--checkbox-size) + var(--surface-width-md)*2);text-indent:-10000px;white-space:nowrap;width:0}.br-checkbox input:checked+label::after,.br-checkbox input:indeterminate+label::after{border:solid var(--selected);border-width:0 3px 3px 0;content:"";height:var(--icon-size-sm);left:8px;position:absolute;top:4px;-webkit-transform:rotate(45deg);transform:rotate(45deg);width:8px}.br-checkbox input[indeterminate]+label::before,.br-checkbox input:indeterminate+label::before{--interactive-rgb:var(--color-rgb);background:var(--selected);border-color:var(--selected)}.br-checkbox input[indeterminate]:hover:not(:disabled)+label::before,.br-checkbox input:indeterminate:hover:not(:disabled)+label::before{--interactive-rgb:var(--color-dark-rgb)}.br-checkbox input[indeterminate]:checked+label::after,.br-checkbox input[indeterminate]+label::after,.br-checkbox input:indeterminate:checked+label::after,.br-checkbox input:indeterminate+label::after{border-color:var(--background-light);border-width:0 0 3px;top:2px;-webkit-transform:none;transform:none}.br-checkbox.invalid input+label::before,.br-checkbox[invalid] input+label::before{--border-color:var(--danger)}.br-checkbox.invalid input:focus-visible:checked+label::before,.br-checkbox.invalid input:focus-visible+label::before,.br-checkbox[invalid] input:focus-visible:checked+label::before,.br-checkbox[invalid] input:focus-visible+label::before{--border-color:var(--focus-color)}.br-checkbox.invalid input:checked+label::before,.br-checkbox[invalid] input:checked+label::before{--border-color:var(--danger)}.br-checkbox.valid input+label::before,.br-checkbox[valid] input+label::before{--border-color:var(--success)}.br-checkbox.valid input:focus-visible:checked+label::before,.br-checkbox.valid input:focus-visible+label::before,.br-checkbox[valid] input:focus-visible:checked+label::before,.br-checkbox[valid] input:focus-visible+label::before{--border-color:var(--focus-color)}.br-checkbox.valid input:checked+label::before,.br-checkbox[valid] input:checked+label::before{--border-color:var(--success)}.br-checkbox.small input+label,.br-checkbox[small] input+label{line-height:var(--spacing-scale-2xh);min-height:var(--spacing-scale-2xh)}.br-checkbox.small input+label::before,.br-checkbox[small] input+label::before{height:var(--spacing-scale-2xh);width:var(--spacing-scale-2xh)}.br-checkbox.small input:checked+label::after,.br-checkbox[small] input:checked+label::after{border-width:0 2px 2px 0;height:var(--icon-size-sm);left:7px;top:4px;width:6px}.br-checkbox.small input[indeterminate]+label::after,.br-checkbox.small input:indeterminate+label::after,.br-checkbox[small] input[indeterminate]+label::after,.br-checkbox[small] input:indeterminate+label::after{border-color:var(--background-light);border-width:0 0 3px;left:7px;top:1px;-webkit-transform:none;transform:none;width:6px}.br-checkbox input:invalid+label::before{--border-color:var(--danger)}.br-checkbox input:focus-visible:checked+label::before,.br-checkbox input:focus-visible+label::before{border-color:var(--focus) !important;-webkit-box-shadow:0 0 0 var(--surface-width-md) var(--focus);box-shadow:0 0 0 var(--surface-width-md) var(--focus);outline:none}.br-checkbox input:hover:not(:disabled)+label::before{--interactive-rgb:var(--interactive-light-rgb);background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(var(--interactive-rgb), var(--hover))), to(rgba(var(--interactive-rgb), var(--hover))));background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}.br-checkbox:not(.disabled) input:disabled+label{cursor:not-allowed;opacity:var(--disabled)}.br-checkbox:not(.disabled) input:disabled+label *{pointer-events:none}.br-checkbox.inverted,.br-checkbox.inverted label,.br-checkbox.dark-mode,.br-checkbox.dark-mode label{color:var(--color-dark)}:host{display:inline-block}:host .br-checkbox{--checkbox-padding:var(--spacing-scale-half);--checkbox-size:24px;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}:host .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;white-space:nowrap;border:0}';
10
-
11
- const l = e(class e extends t {
9
+ const n = e(class e extends t {
12
10
  constructor(e) {
13
11
  super();
14
12
  if (e !== false) {
15
13
  this.__registerHost();
16
14
  }
17
15
  this.__attachShadow();
18
- this.checkedChange = i(this, "checkedChange", 7);
19
- this.indeterminateChange = i(this, "indeterminateChange", 7);
16
+ this.checkedChange = a(this, "checkedChange", 7);
17
+ this.indeterminateChange = a(this, "indeterminateChange", 7);
20
18
  this.elementInternals = this.attachInternals();
21
19
  /**
22
20
  * Define o estado intermediário do checkbox.
@@ -31,7 +29,7 @@ const l = e(class e extends t {
31
29
  /**
32
30
  * Identificador único.
33
31
  * Caso não seja fornecido, um ID gerado automaticamente será usado.
34
- */ this.customId = `br-checkbox-${c++}`
32
+ */ this.customId = `br-checkbox-${l++}`
35
33
  /**
36
34
  * Desativa o checkbox, tornando-o não interativo.
37
35
  */;
@@ -93,36 +91,30 @@ const l = e(class e extends t {
93
91
  /**
94
92
  * Define o estado indeterminado do checkbox.
95
93
  * @param value Novo valor para o estado indeterminado.
96
- */ setIndeterminate(e) {
97
- return o(this, void 0, void 0, (function*() {
98
- this.indeterminate = e;
99
- this.updateIndeterminate(e);
100
- this.indeterminateChange.emit(this.indeterminate);
101
- }));
94
+ */ async setIndeterminate(e) {
95
+ this.indeterminate = e;
96
+ this.updateIndeterminate(e);
97
+ this.indeterminateChange.emit(this.indeterminate);
102
98
  }
103
99
  /**
104
100
  * Inverte o valor da prop `checked`
105
- */ toggleChecked() {
106
- return o(this, void 0, void 0, (function*() {
107
- this.checked = !this.checked;
108
- this.checkedChange.emit(this.checked);
109
- }));
101
+ */ async toggleChecked() {
102
+ this.checked = !this.checked;
103
+ this.checkedChange.emit(this.checked);
110
104
  }
111
105
  /**
112
106
  * Define o número de checkboxes filhos em um grupo de checkboxes.
113
107
  * @param value Número de checkboxes filhos.
114
- */ setNumberOfChildren(e) {
115
- return o(this, void 0, void 0, (function*() {
116
- this.numberOfChildren = e;
117
- }));
108
+ */ async setNumberOfChildren(e) {
109
+ this.numberOfChildren = e;
118
110
  }
119
111
  render() {
120
- return a(r, {
112
+ return i(r, {
121
113
  key: "9b59d349f3bc58cf43e668035d8c9d4778e74cdc"
122
- }, a("div", {
114
+ }, i("div", {
123
115
  key: "58cd8b77fc77dcad639a79e8284d521d2f0bd940",
124
116
  class: this.getCssClassMap()
125
- }, a("input", {
117
+ }, i("input", {
126
118
  key: "155fa67ad05467008162c1fe1fd429afe8291a1d",
127
119
  type: "checkbox",
128
120
  id: this.customId,
@@ -134,11 +126,11 @@ const l = e(class e extends t {
134
126
  ref: e => e && (e.indeterminate = this.indeterminate),
135
127
  "aria-checked": this.getAriaCheckedValue(),
136
128
  "aria-describedby": this.numberOfChildren > 0 ? "children-number" : null
137
- }), a("label", {
129
+ }), i("label", {
138
130
  key: "ca122a41698c6123d2726400f6e521f0053821d0",
139
131
  htmlFor: this.customId,
140
132
  class: this.hasHiddenLabel ? "visually-hidden" : undefined
141
- }, this.slotDefault ? a("slot", null) : this.label)), this.isFather ? a("span", {
133
+ }, this.slotDefault ? i("slot", null) : this.label)), this.isFather ? i("span", {
142
134
  id: "children-number",
143
135
  class: "sr-only"
144
136
  }, "Número de opções: ", this.numberOfChildren) : null);
@@ -155,7 +147,7 @@ const l = e(class e extends t {
155
147
  };
156
148
  }
157
149
  static get style() {
158
- return n;
150
+ return o;
159
151
  }
160
152
  }, [ 321, "br-checkbox", {
161
153
  indeterminate: [ 1540 ],
@@ -177,7 +169,7 @@ const l = e(class e extends t {
177
169
  indeterminate: [ "updateIndeterminate" ]
178
170
  } ]);
179
171
 
180
- let c = 0;
172
+ let l = 0;
181
173
 
182
174
  function defineCustomElement() {
183
175
  if (typeof customElements === "undefined") {
@@ -188,13 +180,13 @@ function defineCustomElement() {
188
180
  switch (e) {
189
181
  case "br-checkbox":
190
182
  if (!customElements.get(e)) {
191
- customElements.define(e, l);
183
+ customElements.define(e, n);
192
184
  }
193
185
  break;
194
186
  }
195
187
  }));
196
188
  }
197
189
 
198
- export { l as C, defineCustomElement as d };
199
- //# sourceMappingURL=p-Cc75U9ZX.js.map
200
- //# sourceMappingURL=p-Cc75U9ZX.js.map
190
+ export { n as C, defineCustomElement as d };
191
+ //# sourceMappingURL=p-B_YesJM8.js.map
192
+ //# sourceMappingURL=p-B_YesJM8.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["checkboxCss","Checkbox","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","indeterminate","checked","customId","checkboxId","disabled","hasHiddenLabel","isFather","slotDefault","numberOfChildren","handleCheckedChange","indeterminateChange","emit","checkedChange","updateIndeterminate","newValue","input","el","shadowRoot","querySelector","componentWillLoad","hasSlotContentDefault","innerHTML","getCssClassMap","valid","state","invalid","getAriaCheckedValue","setIndeterminate","value","toggleChecked","setNumberOfChildren","render","h","Host","key","class","type","id","name","onChange","ref","htmlFor","undefined","label"],"sources":["../../packages/webcomponents/src/components/checkbox/checkbox.scss?tag=br-checkbox&encapsulation=shadow","../../packages/webcomponents/src/components/checkbox/checkbox.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/checkbox/checkbox\";\n\n:host {\n display: inline-block;\n\n .br-checkbox {\n --checkbox-padding: var(--spacing-scale-half);\n --checkbox-size: 24px;\n\n display: flex;\n position: relative;\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n white-space: nowrap;\n border: 0;\n }\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/checkbox?tab=designer).\n *\n * @slot default - Slot para o rótulo do checkbox, como alternativa à propriedade label.\n */\n@Component({\n tag: 'br-checkbox',\n styleUrl: 'checkbox.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Checkbox {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrCheckboxElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define o estado intermediário do checkbox.\n * Quando verdadeiro, exibe uma marcação parcial visual que indica seleção parcial.\n * Útil para representar grupos onde alguns itens estão selecionados, mas não todos.\n * Ao clicar no checkbox neste estado, ele será automaticamente alterado para marcado.\n */\n @Prop({ reflect: true, mutable: true }) indeterminate: boolean = false\n\n /**\n * Define o estado de seleção do checkbox.\n * Se definido como verdadeiro, o checkbox estará marcado. Caso contrário, estará desmarcado.\n */\n @Prop({ reflect: true, mutable: true }) checked: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-checkbox-${checkboxId++}`\n\n /**\n * Desativa o checkbox, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Define se o label associado ao checkbox deve ser oculto.\n * Se definido como verdadeiro, o texto do label será oculto, mas o checkbox ainda estará visível e funcional.\n */\n @Prop({ reflect: true }) readonly hasHiddenLabel: boolean = false\n\n /**\n * Texto descritivo exibido à direita do checkbox.\n * Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.\n */\n @Prop({ reflect: true }) readonly label: string\n\n /**\n * Define o nome do checkbox, que é utilizado para agrupar checkboxes em formulários e identificar o campo.\n * O valor é obrigatório e deve ser fornecido para garantir o correto funcionamento em formulários.\n */\n @Prop({ reflect: true }) readonly name!: string\n\n /**\n * Indica a validade do checkbox.\n * Se não for especificado, o valor padrão é `null`, indicando que a validade não foi definida.\n */\n @Prop({ reflect: true }) readonly state: 'valid' | 'invalid'\n\n /**\n * Define o valor associado ao checkbox quando ele faz parte de um formulário nativo (`<form>`).\n * Esse valor é enviado com o formulário quando o checkbox está selecionado.\n * **Nota:** Esta propriedade não deve ser utilizada para determinar se o checkbox está selecionado; para verificar o estado de seleção, use a propriedade `checked`.\n */\n @Prop({ reflect: true }) readonly value: string\n\n /**\n * Indica se o checkbox é pai de um grupo de checkboxes.\n */\n @Prop({ reflect: false }) readonly isFather: boolean = false\n\n /**\n * Indica se o slot default possui conteúdo.\n */\n @State() slotDefault: boolean = false\n\n /**\n * Define o número de checkboxes filhos em um grupo de checkboxes.\n */\n @State() numberOfChildren: number = 0\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n @Event() checkedChange: EventEmitter<boolean>\n\n /**\n * Disparado depois que o valor do `indeterminate` foi alterado.\n */\n @Event() indeterminateChange: EventEmitter<boolean>\n\n @Watch('indeterminate')\n updateIndeterminate(newValue: boolean) {\n const input = this.el.shadowRoot.querySelector('input')\n if (input !== null) {\n input.indeterminate = newValue\n }\n }\n\n componentWillLoad() {\n this.hasSlotContentDefault()\n }\n\n private hasSlotContentDefault(): void {\n this.slotDefault = this.el.innerHTML !== ''\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-checkbox': true,\n valid: this.state === 'valid',\n invalid: this.state === 'invalid',\n disabled: this.disabled,\n 'hidden-label': this.hasHiddenLabel,\n }\n }\n\n private getAriaCheckedValue(): string {\n if (this.indeterminate) {\n return 'mixed'\n }\n return this.checked ? 'true' : 'false'\n }\n\n private readonly handleCheckedChange = () => {\n if (this.indeterminate) {\n // Sai do estado indeterminado ao clicar e define como marcado\n this.indeterminate = false\n this.checked = true\n this.indeterminateChange.emit(this.indeterminate)\n } else {\n // Alterna entre marcado e desmarcado\n this.checked = !this.checked\n this.indeterminate = false\n }\n this.checkedChange.emit(this.checked)\n }\n\n /**\n * Define o estado indeterminado do checkbox.\n * @param value Novo valor para o estado indeterminado.\n */\n @Method()\n async setIndeterminate(value: boolean) {\n this.indeterminate = value\n this.updateIndeterminate(value)\n this.indeterminateChange.emit(this.indeterminate)\n }\n\n /**\n * Inverte o valor da prop `checked`\n */\n @Method()\n async toggleChecked() {\n this.checked = !this.checked\n this.checkedChange.emit(this.checked)\n }\n\n /**\n * Define o número de checkboxes filhos em um grupo de checkboxes.\n * @param value Número de checkboxes filhos.\n */\n @Method()\n async setNumberOfChildren(value: number) {\n this.numberOfChildren = value\n }\n\n render() {\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n <input\n type=\"checkbox\"\n id={this.customId}\n name={this.name}\n checked={this.checked}\n disabled={this.disabled}\n value={this.value}\n onChange={this.handleCheckedChange}\n ref={(el) => el && (el.indeterminate = this.indeterminate)}\n aria-checked={this.getAriaCheckedValue()}\n aria-describedby={this.numberOfChildren > 0 ? 'children-number' : null}\n />\n <label htmlFor={this.customId} class={this.hasHiddenLabel ? 'visually-hidden' : undefined}>\n {this.slotDefault ? <slot></slot> : this.label}\n </label>\n </div>\n {this.isFather ? (\n <span id=\"children-number\" class=\"sr-only\">\n Número de opções: {this.numberOfChildren}\n </span>\n ) : null}\n </Host>\n )\n }\n}\n\nlet checkboxId = 0\n"],"mappings":";;;;;;;;AAAA,MAAMA,IAAc;;MC6BPC,KAAQC,EAAA,MAAAD,UAAAE;EANrB,WAAAC,CAAAC;;;;;;;;;;;;;;eAqB0CC,KAAaC,gBAAY;;;;eAMzBD,KAAOE,UAAY;;;;eAMzBF,KAAAG,WAAmB,eAAeC;;;;IAKlCJ,KAAQK,WAAY;;;;eAMpBL,KAAcM,iBAAY;;;eA8BzBN,KAAQO,WAAY;;;eAK9CP,KAAWQ,cAAY;;;eAKvBR,KAAgBS,mBAAW;IA6CnBT,KAAmBU,sBAAG;MACrC,IAAIV,KAAKC,eAAe;;QAEtBD,KAAKC,gBAAgB;QACrBD,KAAKE,UAAU;QACfF,KAAKW,oBAAoBC,KAAKZ,KAAKC;aAC9B;;QAELD,KAAKE,WAAWF,KAAKE;QACrBF,KAAKC,gBAAgB;;MAEvBD,KAAKa,cAAcD,KAAKZ,KAAKE;AAAQ;AA4DxC;EAvGC,mBAAAY,CAAoBC;IAClB,MAAMC,IAAQhB,KAAKiB,GAAGC,WAAWC,cAAc;IAC/C,IAAIH,MAAU,MAAM;MAClBA,EAAMf,gBAAgBc;;;EAI1B,iBAAAK;IACEpB,KAAKqB;;EAGC,qBAAAA;IACNrB,KAAKQ,cAAcR,KAAKiB,GAAGK,cAAc;;EAGnC,cAAAC;IACN,OAAO;MACL,eAAe;MACfC,OAAOxB,KAAKyB,UAAU;MACtBC,SAAS1B,KAAKyB,UAAU;MACxBpB,UAAUL,KAAKK;MACf,gBAAgBL,KAAKM;;;EAIjB,mBAAAqB;IACN,IAAI3B,KAAKC,eAAe;MACtB,OAAO;;IAET,OAAOD,KAAKE,UAAU,SAAS;;;;;SAsB3B,gBAAA0B,CAAiBC;;MACrB7B,KAAKC,gBAAgB4B;MACrB7B,KAAKc,oBAAoBe;MACzB7B,KAAKW,oBAAoBC,KAAKZ,KAAKC;AACrC;;;;SAMM,aAAA6B;;MACJ9B,KAAKE,WAAWF,KAAKE;MACrBF,KAAKa,cAAcD,KAAKZ,KAAKE;AAC/B;;;;;SAOM,mBAAA6B,CAAoBF;;MACxB7B,KAAKS,mBAAmBoB;AAC1B;;EAEA,MAAAG;IACE,OACEC,EAACC,GAAI;MAAAC,KAAA;OACHF,EAAA;MAAAE,KAAA;MAAKC,OAAOpC,KAAKuB;OACfU,EAAA;MAAAE,KAAA;MACEE,MAAK;MACLC,IAAItC,KAAKG;MACToC,MAAMvC,KAAKuC;MACXrC,SAASF,KAAKE;MACdG,UAAUL,KAAKK;MACfwB,OAAO7B,KAAK6B;MACZW,UAAUxC,KAAKU;MACf+B,KAAMxB,KAAOA,MAAOA,EAAGhB,gBAAgBD,KAAKC;MAC9B,gBAAAD,KAAK2B;MACD,oBAAA3B,KAAKS,mBAAmB,IAAI,oBAAoB;QAEpEwB,EAAA;MAAAE,KAAA;MAAOO,SAAS1C,KAAKG;MAAUiC,OAAOpC,KAAKM,iBAAiB,oBAAoBqC;OAC7E3C,KAAKQ,cAAcyB,EAAa,gBAAGjC,KAAK4C,SAG5C5C,KAAKO,WACJ0B,EAAM;MAAAK,IAAG;MAAkBF,OAAM;OAAS,sBACrBpC,KAAKS,oBAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMZ,IAAIL,IAAa","ignoreList":[]}
1
+ {"version":3,"names":["checkboxCss","Checkbox","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","indeterminate","checked","customId","checkboxId","disabled","hasHiddenLabel","isFather","slotDefault","numberOfChildren","handleCheckedChange","indeterminateChange","emit","checkedChange","updateIndeterminate","newValue","input","el","shadowRoot","querySelector","componentWillLoad","hasSlotContentDefault","innerHTML","getCssClassMap","valid","state","invalid","getAriaCheckedValue","setIndeterminate","value","toggleChecked","setNumberOfChildren","render","h","Host","key","class","type","id","name","onChange","ref","htmlFor","undefined","label"],"sources":["../../packages/webcomponents/src/components/checkbox/checkbox.scss?tag=br-checkbox&encapsulation=shadow","../../packages/webcomponents/src/components/checkbox/checkbox.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/checkbox/checkbox\";\n\n:host {\n display: inline-block;\n\n .br-checkbox {\n --checkbox-padding: var(--spacing-scale-half);\n --checkbox-size: 24px;\n\n display: flex;\n position: relative;\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n white-space: nowrap;\n border: 0;\n }\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/checkbox?tab=designer).\n *\n * @slot default - Slot para o rótulo do checkbox, como alternativa à propriedade label.\n */\n@Component({\n tag: 'br-checkbox',\n styleUrl: 'checkbox.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Checkbox {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrCheckboxElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define o estado intermediário do checkbox.\n * Quando verdadeiro, exibe uma marcação parcial visual que indica seleção parcial.\n * Útil para representar grupos onde alguns itens estão selecionados, mas não todos.\n * Ao clicar no checkbox neste estado, ele será automaticamente alterado para marcado.\n */\n @Prop({ reflect: true, mutable: true }) indeterminate: boolean = false\n\n /**\n * Define o estado de seleção do checkbox.\n * Se definido como verdadeiro, o checkbox estará marcado. Caso contrário, estará desmarcado.\n */\n @Prop({ reflect: true, mutable: true }) checked: boolean = false\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = `br-checkbox-${checkboxId++}`\n\n /**\n * Desativa o checkbox, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Define se o label associado ao checkbox deve ser oculto.\n * Se definido como verdadeiro, o texto do label será oculto, mas o checkbox ainda estará visível e funcional.\n */\n @Prop({ reflect: true }) readonly hasHiddenLabel: boolean = false\n\n /**\n * Texto descritivo exibido à direita do checkbox.\n * Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.\n */\n @Prop({ reflect: true }) readonly label: string\n\n /**\n * Define o nome do checkbox, que é utilizado para agrupar checkboxes em formulários e identificar o campo.\n * O valor é obrigatório e deve ser fornecido para garantir o correto funcionamento em formulários.\n */\n @Prop({ reflect: true }) readonly name!: string\n\n /**\n * Indica a validade do checkbox.\n * Se não for especificado, o valor padrão é `null`, indicando que a validade não foi definida.\n */\n @Prop({ reflect: true }) readonly state: 'valid' | 'invalid'\n\n /**\n * Define o valor associado ao checkbox quando ele faz parte de um formulário nativo (`<form>`).\n * Esse valor é enviado com o formulário quando o checkbox está selecionado.\n * **Nota:** Esta propriedade não deve ser utilizada para determinar se o checkbox está selecionado; para verificar o estado de seleção, use a propriedade `checked`.\n */\n @Prop({ reflect: true }) readonly value: string\n\n /**\n * Indica se o checkbox é pai de um grupo de checkboxes.\n */\n @Prop({ reflect: false }) readonly isFather: boolean = false\n\n /**\n * Indica se o slot default possui conteúdo.\n */\n @State() slotDefault: boolean = false\n\n /**\n * Define o número de checkboxes filhos em um grupo de checkboxes.\n */\n @State() numberOfChildren: number = 0\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n @Event() checkedChange: EventEmitter<boolean>\n\n /**\n * Disparado depois que o valor do `indeterminate` foi alterado.\n */\n @Event() indeterminateChange: EventEmitter<boolean>\n\n @Watch('indeterminate')\n updateIndeterminate(newValue: boolean) {\n const input = this.el.shadowRoot.querySelector('input')\n if (input !== null) {\n input.indeterminate = newValue\n }\n }\n\n componentWillLoad() {\n this.hasSlotContentDefault()\n }\n\n private hasSlotContentDefault(): void {\n this.slotDefault = this.el.innerHTML !== ''\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-checkbox': true,\n valid: this.state === 'valid',\n invalid: this.state === 'invalid',\n disabled: this.disabled,\n 'hidden-label': this.hasHiddenLabel,\n }\n }\n\n private getAriaCheckedValue(): string {\n if (this.indeterminate) {\n return 'mixed'\n }\n return this.checked ? 'true' : 'false'\n }\n\n private readonly handleCheckedChange = () => {\n if (this.indeterminate) {\n // Sai do estado indeterminado ao clicar e define como marcado\n this.indeterminate = false\n this.checked = true\n this.indeterminateChange.emit(this.indeterminate)\n } else {\n // Alterna entre marcado e desmarcado\n this.checked = !this.checked\n this.indeterminate = false\n }\n this.checkedChange.emit(this.checked)\n }\n\n /**\n * Define o estado indeterminado do checkbox.\n * @param value Novo valor para o estado indeterminado.\n */\n @Method()\n async setIndeterminate(value: boolean) {\n this.indeterminate = value\n this.updateIndeterminate(value)\n this.indeterminateChange.emit(this.indeterminate)\n }\n\n /**\n * Inverte o valor da prop `checked`\n */\n @Method()\n async toggleChecked() {\n this.checked = !this.checked\n this.checkedChange.emit(this.checked)\n }\n\n /**\n * Define o número de checkboxes filhos em um grupo de checkboxes.\n * @param value Número de checkboxes filhos.\n */\n @Method()\n async setNumberOfChildren(value: number) {\n this.numberOfChildren = value\n }\n\n render() {\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n <input\n type=\"checkbox\"\n id={this.customId}\n name={this.name}\n checked={this.checked}\n disabled={this.disabled}\n value={this.value}\n onChange={this.handleCheckedChange}\n ref={(el) => el && (el.indeterminate = this.indeterminate)}\n aria-checked={this.getAriaCheckedValue()}\n aria-describedby={this.numberOfChildren > 0 ? 'children-number' : null}\n />\n <label htmlFor={this.customId} class={this.hasHiddenLabel ? 'visually-hidden' : undefined}>\n {this.slotDefault ? <slot></slot> : this.label}\n </label>\n </div>\n {this.isFather ? (\n <span id=\"children-number\" class=\"sr-only\">\n Número de opções: {this.numberOfChildren}\n </span>\n ) : null}\n </Host>\n )\n }\n}\n\nlet checkboxId = 0\n"],"mappings":";;;;;;AAAA,MAAMA,IAAc;;MC6BPC,KAAQC,EAAA,MAAAD,UAAAE;EANrB,WAAAC,CAAAC;;;;;;;;;;;;;;eAqB0CC,KAAaC,gBAAY;;;;eAMzBD,KAAOE,UAAY;;;;eAMzBF,KAAAG,WAAmB,eAAeC;;;;IAKlCJ,KAAQK,WAAY;;;;eAMpBL,KAAcM,iBAAY;;;eA8BzBN,KAAQO,WAAY;;;eAK9CP,KAAWQ,cAAY;;;eAKvBR,KAAgBS,mBAAW;IA6CnBT,KAAmBU,sBAAG;MACrC,IAAIV,KAAKC,eAAe;;QAEtBD,KAAKC,gBAAgB;QACrBD,KAAKE,UAAU;QACfF,KAAKW,oBAAoBC,KAAKZ,KAAKC;aAC9B;;QAELD,KAAKE,WAAWF,KAAKE;QACrBF,KAAKC,gBAAgB;;MAEvBD,KAAKa,cAAcD,KAAKZ,KAAKE;AAAQ;AA4DxC;EAvGC,mBAAAY,CAAoBC;IAClB,MAAMC,IAAQhB,KAAKiB,GAAGC,WAAWC,cAAc;IAC/C,IAAIH,MAAU,MAAM;MAClBA,EAAMf,gBAAgBc;;;EAI1B,iBAAAK;IACEpB,KAAKqB;;EAGC,qBAAAA;IACNrB,KAAKQ,cAAcR,KAAKiB,GAAGK,cAAc;;EAGnC,cAAAC;IACN,OAAO;MACL,eAAe;MACfC,OAAOxB,KAAKyB,UAAU;MACtBC,SAAS1B,KAAKyB,UAAU;MACxBpB,UAAUL,KAAKK;MACf,gBAAgBL,KAAKM;;;EAIjB,mBAAAqB;IACN,IAAI3B,KAAKC,eAAe;MACtB,OAAO;;IAET,OAAOD,KAAKE,UAAU,SAAS;;;;;SAsBjC,sBAAM0B,CAAiBC;IACrB7B,KAAKC,gBAAgB4B;IACrB7B,KAAKc,oBAAoBe;IACzB7B,KAAKW,oBAAoBC,KAAKZ,KAAKC;;;;SAOrC,mBAAM6B;IACJ9B,KAAKE,WAAWF,KAAKE;IACrBF,KAAKa,cAAcD,KAAKZ,KAAKE;;;;;SAQ/B,yBAAM6B,CAAoBF;IACxB7B,KAAKS,mBAAmBoB;;EAG1B,MAAAG;IACE,OACEC,EAACC,GAAI;MAAAC,KAAA;OACHF,EAAA;MAAAE,KAAA;MAAKC,OAAOpC,KAAKuB;OACfU,EAAA;MAAAE,KAAA;MACEE,MAAK;MACLC,IAAItC,KAAKG;MACToC,MAAMvC,KAAKuC;MACXrC,SAASF,KAAKE;MACdG,UAAUL,KAAKK;MACfwB,OAAO7B,KAAK6B;MACZW,UAAUxC,KAAKU;MACf+B,KAAMxB,KAAOA,MAAOA,EAAGhB,gBAAgBD,KAAKC;MAC9B,gBAAAD,KAAK2B;MACD,oBAAA3B,KAAKS,mBAAmB,IAAI,oBAAoB;QAEpEwB,EAAA;MAAAE,KAAA;MAAOO,SAAS1C,KAAKG;MAAUiC,OAAOpC,KAAKM,iBAAiB,oBAAoBqC;OAC7E3C,KAAKQ,cAAcyB,EAAa,gBAAGjC,KAAK4C,SAG5C5C,KAAKO,WACJ0B,EAAM;MAAAK,IAAG;MAAkBF,OAAM;OAAS,sBACrBpC,KAAKS,oBAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMZ,IAAIL,IAAa","ignoreList":[]}