@govbr-ds/webcomponents 2.0.0-next.62 → 2.0.0-next.63
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.
- package/dist/cjs/br-checkbox.br-input.br-radio.entry.cjs.js.map +1 -1
- package/dist/cjs/br-checkbox_3.cjs.entry.js +17 -28
- package/dist/cjs/br-collapse.br-list.entry.cjs.js.map +1 -1
- package/dist/cjs/br-collapse_2.cjs.entry.js +10 -15
- package/dist/cjs/br-datetime-picker.cjs.entry.js +18 -31
- package/dist/cjs/br-datetime-picker.entry.cjs.js.map +1 -1
- package/dist/cjs/br-dropdown.br-select.entry.cjs.js.map +1 -1
- package/dist/cjs/br-dropdown_2.cjs.entry.js +73 -56
- package/dist/cjs/br-header-list.cjs.entry.js +6 -13
- package/dist/cjs/br-header-list.entry.cjs.js.map +1 -1
- package/dist/cjs/br-header.cjs.entry.js +2 -5
- package/dist/cjs/br-header.entry.cjs.js.map +1 -1
- package/dist/cjs/br-item.cjs.entry.js +3 -6
- package/dist/cjs/br-item.entry.cjs.js.map +1 -1
- package/dist/cjs/br-message.cjs.entry.js +13 -16
- package/dist/cjs/br-message.entry.cjs.js.map +1 -1
- package/dist/cjs/br-modal.cjs.entry.js +8 -13
- package/dist/cjs/br-modal.entry.cjs.js.map +1 -1
- package/dist/cjs/br-scrim.cjs.entry.js +40 -51
- package/dist/cjs/br-scrim.entry.cjs.js.map +1 -1
- package/dist/cjs/br-skip-link.cjs.entry.js +24 -29
- package/dist/cjs/br-skip-link.entry.cjs.js.map +1 -1
- package/dist/cjs/br-skiplink-item.cjs.entry.js +32 -37
- package/dist/cjs/br-skiplink-item.entry.cjs.js.map +1 -1
- package/dist/cjs/br-step.br-step-item.entry.cjs.js.map +1 -1
- package/dist/cjs/br-step_2.cjs.entry.js +33 -56
- package/dist/cjs/br-switch.cjs.entry.js +3 -6
- package/dist/cjs/br-switch.entry.cjs.js.map +1 -1
- package/dist/cjs/br-textarea.cjs.entry.js +5 -8
- package/dist/cjs/br-textarea.entry.cjs.js.map +1 -1
- package/dist/cjs/br-tooltip.cjs.entry.js +1 -2
- package/dist/cjs/br-tooltip.entry.cjs.js.map +1 -1
- package/dist/cjs/br-wizard-panel.cjs.entry.js +6 -13
- package/dist/cjs/br-wizard-panel.entry.cjs.js.map +1 -1
- package/dist/cjs/br-wizard.cjs.entry.js +147 -182
- package/dist/cjs/br-wizard.entry.cjs.js.map +1 -1
- package/dist/cjs/{floating-ui-D_WzFT9x.js → floating-ui-CkTJEp-y.js} +11 -15
- package/dist/{esm/floating-ui-DBIzWbO2.js.map → cjs/floating-ui-CkTJEp-y.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/webcomponents.cjs.js +1 -1
- package/dist/collection/components/checkbox/checkbox.js +9 -16
- package/dist/collection/components/checkbox/checkbox.js.map +1 -1
- package/dist/collection/components/collapse/collapse.js +10 -15
- package/dist/collection/components/collapse/collapse.js.map +1 -1
- package/dist/collection/components/datetime-picker/datetime-picker.js +18 -31
- package/dist/collection/components/datetime-picker/datetime-picker.js.map +1 -1
- package/dist/collection/components/dropdown/dropdown.js +13 -20
- package/dist/collection/components/dropdown/dropdown.js.map +1 -1
- package/dist/collection/components/header/header-list/header-list.js +6 -13
- package/dist/collection/components/header/header-list/header-list.js.map +1 -1
- package/dist/collection/components/header/header.js +2 -5
- package/dist/collection/components/header/header.js.map +1 -1
- package/dist/collection/components/item/item.js +3 -6
- package/dist/collection/components/item/item.js.map +1 -1
- package/dist/collection/components/message/message.js +13 -16
- package/dist/collection/components/message/message.js.map +1 -1
- package/dist/collection/components/modal/modal.js +8 -13
- package/dist/collection/components/modal/modal.js.map +1 -1
- package/dist/collection/components/radio/radio.js +8 -13
- package/dist/collection/components/radio/radio.js.map +1 -1
- package/dist/collection/components/scrim/scrim.js +40 -51
- package/dist/collection/components/scrim/scrim.js.map +1 -1
- package/dist/collection/components/select/select.js +79 -36
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/skip-link/skip-link-item/skip-link-item.js +32 -37
- package/dist/collection/components/skip-link/skip-link-item/skip-link-item.js.map +1 -1
- package/dist/collection/components/skip-link/skip-link.js +24 -29
- package/dist/collection/components/skip-link/skip-link.js.map +1 -1
- package/dist/collection/components/step/step-item/step-item.js +13 -26
- package/dist/collection/components/step/step-item/step-item.js.map +1 -1
- package/dist/collection/components/step/step.js +20 -31
- package/dist/collection/components/step/step.js.map +1 -1
- package/dist/collection/components/switch/switch.js +3 -6
- package/dist/collection/components/switch/switch.js.map +1 -1
- package/dist/collection/components/textarea/textarea.js +5 -8
- package/dist/collection/components/textarea/textarea.js.map +1 -1
- package/dist/collection/components/wizard/wizard-panel/wizard-panel.js +6 -13
- package/dist/collection/components/wizard/wizard-panel/wizard-panel.js.map +1 -1
- package/dist/collection/components/wizard/wizard.js +147 -182
- package/dist/collection/components/wizard/wizard.js.map +1 -1
- package/dist/collection/utils/floating-ui.js +9 -12
- package/dist/collection/utils/floating-ui.js.map +1 -1
- package/dist/components/br-breadcrumb.js +3 -3
- package/dist/components/br-checkbox.js +4 -4
- package/dist/components/br-checkgroup.js +1 -1
- package/dist/components/br-collapse.js +4 -4
- package/dist/components/br-datetime-picker.js +1981 -1995
- package/dist/components/br-datetime-picker.js.map +1 -1
- package/dist/components/br-dropdown.js +1 -1
- package/dist/components/br-footer-category.js +3 -3
- package/dist/components/br-footer-item.js +1 -1
- package/dist/components/br-header-function.js +1 -1
- package/dist/components/br-header-link.js +1 -1
- package/dist/components/br-header-list.js +31 -39
- package/dist/components/br-header-list.js.map +1 -1
- package/dist/components/br-header.js +63 -67
- package/dist/components/br-header.js.map +1 -1
- package/dist/components/br-item.js +1 -1
- package/dist/components/br-list.js +3 -3
- package/dist/components/br-message.js +28 -32
- package/dist/components/br-message.js.map +1 -1
- package/dist/components/br-modal.js +21 -27
- package/dist/components/br-modal.js.map +1 -1
- package/dist/components/br-pagination.js +7 -7
- package/dist/components/br-radio.js +1 -1
- package/dist/components/br-scrim.js +49 -61
- package/dist/components/br-scrim.js.map +1 -1
- package/dist/components/br-select.js +3 -3
- package/dist/components/br-skip-link.js +38 -44
- package/dist/components/br-skip-link.js.map +1 -1
- package/dist/components/br-skiplink-item.js +55 -61
- package/dist/components/br-skiplink-item.js.map +1 -1
- package/dist/components/br-step-item.js +4 -4
- package/dist/components/br-step.js +4 -4
- package/dist/components/br-switch.js +12 -16
- package/dist/components/br-switch.js.map +1 -1
- package/dist/components/br-textarea.js +14 -18
- package/dist/components/br-textarea.js.map +1 -1
- package/dist/components/br-tooltip.js +1 -1
- package/dist/components/br-wizard-panel.js +13 -21
- package/dist/components/br-wizard-panel.js.map +1 -1
- package/dist/components/br-wizard.js +190 -228
- package/dist/components/br-wizard.js.map +1 -1
- package/dist/components/{p-Cc75U9ZX.js → p-B_YesJM8.js} +26 -34
- package/dist/components/{p-Cc75U9ZX.js.map → p-B_YesJM8.js.map} +1 -1
- package/dist/components/{p-xFn46pdm.js → p-Bc03PTAW.js} +27 -39
- package/dist/components/{p-xFn46pdm.js.map → p-Bc03PTAW.js.map} +1 -1
- package/dist/components/{p-DzKEfDGA.js → p-Bri6ECVa.js} +27 -33
- package/dist/components/{p-DzKEfDGA.js.map → p-Bri6ECVa.js.map} +1 -1
- package/dist/components/{p-BZ8BetvD.js → p-CJSXIVVe.js} +17 -23
- package/dist/components/{p-BZ8BetvD.js.map → p-CJSXIVVe.js.map} +1 -1
- package/dist/components/{p-D9c7NikS.js → p-CWRBs6PD.js} +24 -38
- package/dist/components/{p-D9c7NikS.js.map → p-CWRBs6PD.js.map} +1 -1
- package/dist/components/{p-D0dPo1K5.js → p-CwtLw60M.js} +12 -16
- package/dist/components/{p-D0dPo1K5.js.map → p-CwtLw60M.js.map} +1 -1
- package/dist/components/{p-z1PVVVFI.js → p-DW63EY0U.js} +27 -35
- package/dist/components/{p-z1PVVVFI.js.map → p-DW63EY0U.js.map} +1 -1
- package/dist/components/{p-7kxAU6Gr.js → p-DdjKNpU3.js} +92 -72
- package/dist/components/p-DdjKNpU3.js.map +1 -0
- package/dist/{webcomponents/p-B4au_byv.js → components/p-k0WZfTfL.js} +121 -124
- package/dist/components/{p-B4au_byv.js.map → p-k0WZfTfL.js.map} +1 -1
- package/dist/components/{p-OKkBxn1z.js → p-lIb35q2K.js} +3 -3
- package/dist/custom-elements.json +19459 -0
- package/dist/esm/br-checkbox.br-input.br-radio.entry.js.map +1 -1
- package/dist/esm/br-checkbox_3.entry.js +17 -28
- package/dist/esm/br-collapse.br-list.entry.js.map +1 -1
- package/dist/esm/br-collapse_2.entry.js +10 -15
- package/dist/esm/br-datetime-picker.entry.js +18 -31
- package/dist/esm/br-datetime-picker.entry.js.map +1 -1
- package/dist/esm/br-dropdown.br-select.entry.js.map +1 -1
- package/dist/esm/br-dropdown_2.entry.js +73 -56
- package/dist/esm/br-header-list.entry.js +6 -13
- package/dist/esm/br-header-list.entry.js.map +1 -1
- package/dist/esm/br-header.entry.js +2 -5
- package/dist/esm/br-header.entry.js.map +1 -1
- package/dist/esm/br-item.entry.js +3 -6
- package/dist/esm/br-item.entry.js.map +1 -1
- package/dist/esm/br-message.entry.js +13 -16
- package/dist/esm/br-message.entry.js.map +1 -1
- package/dist/esm/br-modal.entry.js +8 -13
- package/dist/esm/br-modal.entry.js.map +1 -1
- package/dist/esm/br-scrim.entry.js +40 -51
- package/dist/esm/br-scrim.entry.js.map +1 -1
- package/dist/esm/br-skip-link.entry.js +24 -29
- package/dist/esm/br-skip-link.entry.js.map +1 -1
- package/dist/esm/br-skiplink-item.entry.js +32 -37
- package/dist/esm/br-skiplink-item.entry.js.map +1 -1
- package/dist/esm/br-step.br-step-item.entry.js.map +1 -1
- package/dist/esm/br-step_2.entry.js +33 -56
- package/dist/esm/br-switch.entry.js +3 -6
- package/dist/esm/br-switch.entry.js.map +1 -1
- package/dist/esm/br-textarea.entry.js +5 -8
- package/dist/esm/br-textarea.entry.js.map +1 -1
- package/dist/esm/br-tooltip.entry.js +1 -2
- package/dist/esm/br-tooltip.entry.js.map +1 -1
- package/dist/esm/br-wizard-panel.entry.js +6 -13
- package/dist/esm/br-wizard-panel.entry.js.map +1 -1
- package/dist/esm/br-wizard.entry.js +147 -182
- package/dist/esm/br-wizard.entry.js.map +1 -1
- package/dist/esm/{floating-ui-DBIzWbO2.js → floating-ui-k0WZfTfL.js} +11 -15
- package/dist/{cjs/floating-ui-D_WzFT9x.js.map → esm/floating-ui-k0WZfTfL.js.map} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/webcomponents.js +1 -1
- package/dist/hydrate/index.js +450 -591
- package/dist/hydrate/index.mjs +450 -591
- package/dist/types/components/select/select.d.ts +5 -0
- package/dist/types/components.d.ts +10 -0
- package/dist/webcomponents/br-checkbox.br-input.br-radio.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-collapse.br-list.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-datetime-picker.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-dropdown.br-select.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-header-list.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-header.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-item.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-message.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-modal.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-scrim.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-skip-link.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-skiplink-item.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-step.br-step-item.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-switch.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-textarea.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-tooltip.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-wizard-panel.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-wizard.entry.esm.js.map +1 -1
- package/dist/webcomponents/{p-2fe329d6.entry.js → p-10e25a32.entry.js} +28 -34
- package/dist/webcomponents/p-10e25a32.entry.js.map +1 -0
- package/dist/webcomponents/{p-097912c2.entry.js → p-1991135d.entry.js} +30 -36
- package/dist/webcomponents/p-1991135d.entry.js.map +1 -0
- package/dist/webcomponents/{p-61e5421b.entry.js → p-27eb10f9.entry.js} +57 -61
- package/dist/webcomponents/p-27eb10f9.entry.js.map +1 -0
- package/dist/webcomponents/{p-5070161f.entry.js → p-30af66b3.entry.js} +45 -51
- package/dist/webcomponents/p-30af66b3.entry.js.map +1 -0
- package/dist/webcomponents/{p-9464b692.entry.js → p-336071a5.entry.js} +2 -4
- package/dist/webcomponents/p-336071a5.entry.js.map +1 -0
- package/dist/webcomponents/{p-8a034433.entry.js → p-462c5647.entry.js} +20 -24
- package/dist/webcomponents/p-462c5647.entry.js.map +1 -0
- package/dist/webcomponents/{p-d674cee3.entry.js → p-46dfc3ee.entry.js} +12 -16
- package/dist/webcomponents/p-46dfc3ee.entry.js.map +1 -0
- package/dist/webcomponents/{p-821b896c.entry.js → p-56aabe89.entry.js} +36 -44
- package/dist/webcomponents/p-56aabe89.entry.js.map +1 -0
- package/dist/webcomponents/{p-a615baaa.entry.js → p-5710a3e9.entry.js} +41 -65
- package/dist/webcomponents/p-5710a3e9.entry.js.map +1 -0
- package/dist/webcomponents/{p-1799a082.entry.js → p-6a9d2a0b.entry.js} +1996 -2010
- package/dist/webcomponents/p-6a9d2a0b.entry.js.map +1 -0
- package/dist/webcomponents/{p-8ad1f003.entry.js → p-83001853.entry.js} +175 -213
- package/dist/webcomponents/p-83001853.entry.js.map +1 -0
- package/dist/webcomponents/{p-463b06a4.entry.js → p-90401ecd.entry.js} +32 -38
- package/dist/webcomponents/p-90401ecd.entry.js.map +1 -0
- package/dist/webcomponents/{p-216dc111.entry.js → p-a2eec4fb.entry.js} +49 -61
- package/dist/webcomponents/p-a2eec4fb.entry.js.map +1 -0
- package/dist/webcomponents/{p-d6475852.entry.js → p-c1b0a116.entry.js} +11 -19
- package/dist/webcomponents/p-c1b0a116.entry.js.map +1 -0
- package/dist/webcomponents/{p-c90a089a.entry.js → p-ca2d95f7.entry.js} +96 -83
- package/dist/webcomponents/p-ca2d95f7.entry.js.map +1 -0
- package/dist/webcomponents/{p-7ff6698f.entry.js → p-cfa86a23.entry.js} +10 -14
- package/dist/webcomponents/p-cfa86a23.entry.js.map +1 -0
- package/dist/webcomponents/{p-abc0ecbe.entry.js → p-e5875d3d.entry.js} +10 -14
- package/dist/webcomponents/p-e5875d3d.entry.js.map +1 -0
- package/dist/webcomponents/{p-0bfb0edf.entry.js → p-f2ea0d7e.entry.js} +133 -145
- package/dist/webcomponents/p-f2ea0d7e.entry.js.map +1 -0
- package/dist/{components/p-B4au_byv.js → webcomponents/p-k0WZfTfL.js} +121 -124
- package/dist/webcomponents/{p-B4au_byv.js.map → p-k0WZfTfL.js.map} +1 -1
- package/dist/webcomponents/webcomponents.esm.js +1 -1
- package/dist/webcomponents.html-custom-data.json +2573 -0
- package/package.json +1 -1
- package/dist/cjs/tslib.es6-CF44W9Bn.js +0 -42
- package/dist/cjs/tslib.es6-CF44W9Bn.js.map +0 -1
- package/dist/components/p-7kxAU6Gr.js.map +0 -1
- package/dist/components/p-DIPMDb5E.js +0 -55
- package/dist/components/p-DIPMDb5E.js.map +0 -1
- package/dist/esm/tslib.es6-DIPMDb5E.js +0 -40
- package/dist/esm/tslib.es6-DIPMDb5E.js.map +0 -1
- package/dist/webcomponents/p-097912c2.entry.js.map +0 -1
- package/dist/webcomponents/p-0bfb0edf.entry.js.map +0 -1
- package/dist/webcomponents/p-1799a082.entry.js.map +0 -1
- package/dist/webcomponents/p-216dc111.entry.js.map +0 -1
- package/dist/webcomponents/p-2fe329d6.entry.js.map +0 -1
- package/dist/webcomponents/p-463b06a4.entry.js.map +0 -1
- package/dist/webcomponents/p-5070161f.entry.js.map +0 -1
- package/dist/webcomponents/p-61e5421b.entry.js.map +0 -1
- package/dist/webcomponents/p-7ff6698f.entry.js.map +0 -1
- package/dist/webcomponents/p-821b896c.entry.js.map +0 -1
- package/dist/webcomponents/p-8a034433.entry.js.map +0 -1
- package/dist/webcomponents/p-8ad1f003.entry.js.map +0 -1
- package/dist/webcomponents/p-9464b692.entry.js.map +0 -1
- package/dist/webcomponents/p-DIPMDb5E.js +0 -55
- package/dist/webcomponents/p-DIPMDb5E.js.map +0 -1
- package/dist/webcomponents/p-a615baaa.entry.js.map +0 -1
- package/dist/webcomponents/p-abc0ecbe.entry.js.map +0 -1
- package/dist/webcomponents/p-c90a089a.entry.js.map +0 -1
- package/dist/webcomponents/p-d6475852.entry.js.map +0 -1
- package/dist/webcomponents/p-d674cee3.entry.js.map +0 -1
- /package/dist/components/{p-OKkBxn1z.js.map → p-lIb35q2K.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../../../../packages/webcomponents/src/components/textarea/textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,eAAe,EACf,SAAS,EACT,OAAO,EACP,KAAK,EAEL,CAAC,EACD,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,KAAK,GACN,MAAM,eAAe,CAAA;AAEtB,OAAO,OAAO,MAAM,qBAAqB,CAAA;AAGzC;;;;;;GAMG;AAOH,MAAM,OAAO,QAAQ;IANrB;QAiCE;;;WAGG;QAC+B,aAAQ,GAAW,OAAO,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA;QAE5F;;WAEG;QAC+B,aAAQ,GAAY,KAAK,CAAA;QAE3D;;WAEG;QAC+B,cAAS,GAAW,CAAC,CAAA;QAEvD;;WAEG;QAC+B,gBAAW,GAAY,KAAK,CAAA;QAM9D;;WAEG;QAC+B,YAAO,GAAiC,QAAQ,CAAA;QAElF;;WAEG;QAC+B,aAAQ,GAAY,KAAK,CAAA;QAmB3D;;WAEG;QACM,mBAAc,GAAY,KAAK,CAAA;QA8BvB,gBAAW,GAAG,CAAC,KAAY,EAAE,EAAE;;YAC9C,IAAI,CAAC,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAA;YACrD,IAAI,CAAC,aAAa,GAAG,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,KAAI,CAAC,CAAA;YAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnC,CAAC,CAAA;KA6IF;IA7KC,iBAAiB;;QACf,IAAI,CAAC,aAAa,GAAG,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,KAAI,CAAC,CAAA;QAC5C,IAAI,CAAC,gBAAgB,EAAE,CAAA;IACzB,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACjE,8DAA8D;YAC9D,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,IAAK,IAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClF,OAAO,KAAK,CAAA;YACd,CAAC;YACD,4CAA4C;YAC5C,OAAO,CACL,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAC5G,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAQD,YAAY;;QACV,IAAI,CAAC,aAAa,GAAG,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,KAAI,CAAC,CAAA;IAC9C,CAAC;IAQD;;;OAGG;IAEG,QAAQ,CAAC,QAAgB;;;YAC7B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;YACrB,IAAI,CAAC,aAAa,GAAG,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,KAAI,CAAC,CAAA;YAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnC,CAAC;KAAA;IAED;;OAEG;IACK,cAAc;QACpB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,WAAW,CAAC;aACxF,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IAED;;;;;;;OAOG;IACK,qBAAqB;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;QAExD,OAAO,aAAa,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE;YACjD,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;gBAC9C,CAAC,CAAC,IAAI,CAAC,SAAS;gBAChB,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;oBAClD,CAAC,CAAC,IAAI,CAAC,WAAW;oBAClB,CAAC,CAAC,gBAAgB,CAAA;IAC1B,CAAC;IAEO,cAAc;QACpB,OAAO;YACL,aAAa,EAAE,IAAI;YACnB,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,OAAO;YAC/B,MAAM,EAAE,IAAI,CAAC,OAAO,KAAK,QAAQ;YACjC,KAAK,EAAE,IAAI,CAAC,OAAO,KAAK,OAAO;YAC/B,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS;YACjC,MAAM,EAAE,IAAI,CAAC,KAAK,KAAK,QAAQ;YAC/B,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS;SAClC,CAAA;IACH,CAAC;IAED,MAAM;QACJ,MAAM,mBAAmB,GAAW,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAA;QACvE,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QAC5C,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAA;QAE7B,OAAO,CACL,EAAC,IAAI;YACH,4DAAK,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,IAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CACf,WAAK,KAAK,EAAC,KAAK;gBACb,QAAQ,IAAI,CACX,WAAK,KAAK,EAAC,kBAAkB;oBAC3B,aAAO,OAAO,EAAE,IAAI,CAAC,QAAQ,IAAG,IAAI,CAAC,KAAK,CAAS,CAC/C,CACP;gBACD,WAAK,KAAK,EAAC,KAAK;oBACd,8BACE,EAAE,EAAE,IAAI,CAAC,QAAQ,EACjB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,WAAW,IACrB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1C,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1C,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,wBAC3C,IAAI,CAAC,cAAc,EAAE,IACnC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC3D;oBACX,IAAI,CAAC,WAAW,IAAI,CACnB,eACG,aAAa,CAAC,CAAC,CAAC,CACf,YAAM,KAAK,EAAC,WAAW,eAAW,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,WAAW;;wBAC/E,kBAAS,mBAAmB,CAAU;sCACxC,CACR,CAAC,CAAC,CAAC,CACF,YAAM,KAAK,EAAC,OAAO,eAAW,QAAQ,EAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,WAAW;;wBACnD,kBAAS,IAAI,CAAC,SAAS,CAAU;sCAC7C,CACR,CACG,CACP;oBACA,IAAI,CAAC,cAAc,IAAI,CACtB,WAAK,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,WAAW,eAAY,QAAQ;wBACtD,eAAa,CACT,CACP,CACG,CACF,CACP,CAAC,CAAC,CAAC,CACF;gBACE,QAAQ,CAAC,CAAC,CAAC,aAAO,OAAO,EAAE,IAAI,CAAC,QAAQ,IAAG,IAAI,CAAC,KAAK,CAAS,CAAC,CAAC,CAAC,IAAI;gBACrE,8BACE,EAAE,EAAE,IAAI,CAAC,QAAQ,EACjB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,WAAW,IACrB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1C,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1C,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,wBAC3C,IAAI,CAAC,cAAc,EAAE,IACnC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC3D;gBACZ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CACjB,eACG,aAAa,CAAC,CAAC,CAAC,CACf,YAAM,KAAK,EAAC,WAAW,eAAW,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,WAAW;;oBAC/E,kBAAS,mBAAmB,CAAU;kCACxC,CACR,CAAC,CAAC,CAAC,CACF,YAAM,KAAK,EAAC,OAAO,eAAW,QAAQ,EAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,WAAW;;oBACnD,kBAAS,IAAI,CAAC,SAAS,CAAU;kCAC7C,CACR,CACG,CACP,CAAC,CAAC,CAAC,IAAI;gBACR,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CACpB,WAAK,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,WAAW,eAAY,QAAQ;oBACtD,eAAa,CACT,CACP,CAAC,CAAC,CAAC,IAAI;aACT,CACF,CACG,CACD,CACR,CAAA;IACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport Helpers from '../../utils/helpers'\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/textarea?tab=designer).\n *\n * @slot default - Slot para texto adicional ou instruções a serem exibidos junto ao textarea.\n */\n@Component({\n tag: 'br-textarea',\n styleUrl: 'textarea.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Textarea {\n @Element() el: HTMLBrTextareaElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Valor exibido no textarea.\n * Pode ser alterado pelo usuário se a propriedade `readonly` não estiver ativa.\n */\n @Prop({ mutable: true, reflect: true }) value: string\n\n /**\n * Texto exibido como rótulo do input.\n */\n @Prop({ reflect: true }) readonly label: string\n\n /**\n * Texto exibido dentro do input quando está vazio, fornecendo uma dica ou sugestão ao usuário.\n */\n @Prop({ reflect: true }) readonly placeholder: string\n\n /**\n * Texto alternativo para acessibilidade quando não há label visível.\n * Fornece um rótulo para tecnologias assistivas sem exibir visualmente.\n */\n @Prop({ reflect: true }) readonly ariaLabel: string\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = Helpers.generateUniqueId('br-textarea')\n\n /**\n * Indica se o textarea está desabilitado. Quando verdadeiro, o usuário não pode interagir com o campo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Número máximo de caracteres permitidos no textarea. Se definido como 0, não há limite.\n */\n @Prop({ reflect: true }) readonly maxlength: number = 0\n\n /**\n * Mostra o contador com a quantidade máxima de caracteres.\n */\n @Prop({ reflect: true }) readonly showCounter: boolean = false\n\n /**\n * Define o estado visual do componente, podendo ser 'danger', 'success' ou 'warning'.\n */\n @Prop({ reflect: true }) readonly state: 'danger' | 'success' | 'warning'\n /**\n * Ajusta a densidade do componente, podendo ser 'small', 'medium' ou 'large'.\n */\n @Prop({ reflect: true }) readonly density: 'small' | 'medium' | 'large' = 'medium'\n\n /**\n * Se verdadeiro, o rótulo e o input estarão na mesma linha (layout inline).\n */\n @Prop({ reflect: true }) readonly isInline: boolean = false\n\n /**\n * Número de linhas visíveis no textarea.\n * Define a altura do componente em relação ao número de linhas de texto exibidas.\n */\n @Prop({ reflect: true }) readonly rows: number\n\n /**\n * Número de colunas (caracteres) visíveis no textarea.\n * Define a largura do componente em relação ao número de caracteres por linha.\n */\n @Prop({ reflect: true }) readonly cols: number\n\n /**\n * Comprimento atual do texto no textarea. É atualizado sempre que o valor do textarea muda.\n */\n @State() currentLength: number\n\n /**\n * Indica se o slot padrão possui conteúdo.\n */\n @State() hasDefaultSlot: boolean = false\n\n componentWillLoad() {\n this.currentLength = this.value?.length || 0\n this.checkSlotContent()\n }\n\n private checkSlotContent() {\n this.hasDefaultSlot = Array.from(this.el.childNodes).some((node) => {\n // Ignora nós que têm atributo slot (pertencem a outros slots)\n if (node.nodeType === Node.ELEMENT_NODE && (node as Element).hasAttribute('slot')) {\n return false\n }\n // Verifica se é elemento ou texto não vazio\n return (\n node.nodeType === Node.ELEMENT_NODE || (node.nodeType === Node.TEXT_NODE && node.textContent.trim() !== '')\n )\n })\n }\n\n /**\n * Valor atualizado do textarea\n */\n @Event() valueChange: EventEmitter<string>\n\n @Watch('value')\n valueChanged() {\n this.currentLength = this.value?.length || 0\n }\n\n private readonly handleInput = (event: Event) => {\n this.value = (event.target as HTMLInputElement).value\n this.currentLength = this.value?.length || 0\n this.valueChange.emit(this.value)\n }\n\n /**\n * Define um novo valor para o textarea.\n * @param newValue - O novo valor a ser definido.\n */\n @Method()\n async setValue(newValue: string) {\n this.value = newValue\n this.currentLength = this.value?.length || 0\n this.valueChange.emit(this.value)\n }\n\n /**\n * Retorna os ids para o atributo aria-describedby do textarea\n */\n private getDescribedBy(): string {\n return [this.showCounter ? `${this.customId}-limitMax` : null, `${this.customId}-slotInfo`]\n .filter(Boolean)\n .join(' ')\n }\n\n /**\n * Determina o texto a ser usado para acessibilidade quando não há label\n * Ordem de prioridade:\n * - aria-label do elemento host\n * - propriedade ariaLabel do componente\n * - placeholder\n * - texto padrão (\"Campo de texto\")\n */\n private getAccessibilityLabel(): string {\n const hostAriaLabel = this.el.getAttribute('aria-label')\n\n return hostAriaLabel && hostAriaLabel.trim() !== ''\n ? hostAriaLabel\n : this.ariaLabel && this.ariaLabel.trim() !== ''\n ? this.ariaLabel\n : this.placeholder && this.placeholder.trim() !== ''\n ? this.placeholder\n : 'Campo de texto'\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-textarea': true,\n small: this.density === 'small',\n medium: this.density === 'medium',\n large: this.density === 'large',\n success: this.state === 'success',\n danger: this.state === 'danger',\n warning: this.state === 'warning',\n }\n }\n\n render() {\n const caracteresRestantes: number = this.maxlength - this.currentLength\n const mostrarLimite = this.currentLength > 0\n const hasLabel = !!this.label\n\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n {this.isInline ? (\n <div class=\"row\">\n {hasLabel && (\n <div class=\"col-auto pt-half\">\n <label htmlFor={this.customId}>{this.label}</label>\n </div>\n )}\n <div class=\"col\">\n <textarea\n id={this.customId}\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n onInput={this.handleInput}\n {...(this.rows > 0 ? { rows: this.rows } : {})}\n {...(this.cols > 0 ? { cols: this.cols } : {})}\n {...(this.maxlength > 0 ? { maxLength: this.maxlength } : {})}\n aria-describedby={this.getDescribedBy()}\n {...(!hasLabel ? { 'aria-label': this.getAccessibilityLabel() } : {})}\n ></textarea>\n {this.showCounter && (\n <div>\n {mostrarLimite ? (\n <span class=\"restantes\" aria-live=\"polite\" role=\"status\" id={`${this.customId}-limitMax`}>\n Restam <strong>{caracteresRestantes}</strong> caracteres\n </span>\n ) : (\n <span class=\"limit\" aria-live=\"polite\" id={`${this.customId}-limitMax`}>\n Limite máximo de <strong>{this.maxlength}</strong> caracteres\n </span>\n )}\n </div>\n )}\n {this.hasDefaultSlot && (\n <div id={`${this.customId}-slotInfo`} aria-live=\"polite\">\n <slot></slot>\n </div>\n )}\n </div>\n </div>\n ) : (\n [\n hasLabel ? <label htmlFor={this.customId}>{this.label}</label> : null,\n <textarea\n id={this.customId}\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n onInput={this.handleInput}\n {...(this.rows > 0 ? { rows: this.rows } : {})}\n {...(this.cols > 0 ? { cols: this.cols } : {})}\n {...(this.maxlength > 0 ? { maxLength: this.maxlength } : {})}\n aria-describedby={this.getDescribedBy()}\n {...(!hasLabel ? { 'aria-label': this.getAccessibilityLabel() } : {})}\n ></textarea>,\n this.showCounter ? (\n <div>\n {mostrarLimite ? (\n <span class=\"restantes\" aria-live=\"polite\" role=\"status\" id={`${this.customId}-limitMax`}>\n Restam <strong>{caracteresRestantes}</strong> caracteres\n </span>\n ) : (\n <span class=\"limit\" aria-live=\"polite\" id={`${this.customId}-limitMax`}>\n Limite máximo de <strong>{this.maxlength}</strong> caracteres\n </span>\n )}\n </div>\n ) : null,\n this.hasDefaultSlot ? (\n <div id={`${this.customId}-slotInfo`} aria-live=\"polite\">\n <slot></slot>\n </div>\n ) : null,\n ]\n )}\n </div>\n </Host>\n )\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../../../../packages/webcomponents/src/components/textarea/textarea.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport Helpers from '../../utils/helpers'\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/textarea?tab=designer).\n *\n * @slot default - Slot para texto adicional ou instruções a serem exibidos junto ao textarea.\n */\n@Component({\n tag: 'br-textarea',\n styleUrl: 'textarea.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Textarea {\n @Element() el: HTMLBrTextareaElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Valor exibido no textarea.\n * Pode ser alterado pelo usuário se a propriedade `readonly` não estiver ativa.\n */\n @Prop({ mutable: true, reflect: true }) value: string\n\n /**\n * Texto exibido como rótulo do input.\n */\n @Prop({ reflect: true }) readonly label: string\n\n /**\n * Texto exibido dentro do input quando está vazio, fornecendo uma dica ou sugestão ao usuário.\n */\n @Prop({ reflect: true }) readonly placeholder: string\n\n /**\n * Texto alternativo para acessibilidade quando não há label visível.\n * Fornece um rótulo para tecnologias assistivas sem exibir visualmente.\n */\n @Prop({ reflect: true }) readonly ariaLabel: string\n\n /**\n * Identificador único.\n * Caso não seja fornecido, um ID gerado automaticamente será usado.\n */\n @Prop({ reflect: true }) readonly customId: string = Helpers.generateUniqueId('br-textarea')\n\n /**\n * Indica se o textarea está desabilitado. Quando verdadeiro, o usuário não pode interagir com o campo.\n */\n @Prop({ reflect: true }) readonly disabled: boolean = false\n\n /**\n * Número máximo de caracteres permitidos no textarea. Se definido como 0, não há limite.\n */\n @Prop({ reflect: true }) readonly maxlength: number = 0\n\n /**\n * Mostra o contador com a quantidade máxima de caracteres.\n */\n @Prop({ reflect: true }) readonly showCounter: boolean = false\n\n /**\n * Define o estado visual do componente, podendo ser 'danger', 'success' ou 'warning'.\n */\n @Prop({ reflect: true }) readonly state: 'danger' | 'success' | 'warning'\n /**\n * Ajusta a densidade do componente, podendo ser 'small', 'medium' ou 'large'.\n */\n @Prop({ reflect: true }) readonly density: 'small' | 'medium' | 'large' = 'medium'\n\n /**\n * Se verdadeiro, o rótulo e o input estarão na mesma linha (layout inline).\n */\n @Prop({ reflect: true }) readonly isInline: boolean = false\n\n /**\n * Número de linhas visíveis no textarea.\n * Define a altura do componente em relação ao número de linhas de texto exibidas.\n */\n @Prop({ reflect: true }) readonly rows: number\n\n /**\n * Número de colunas (caracteres) visíveis no textarea.\n * Define a largura do componente em relação ao número de caracteres por linha.\n */\n @Prop({ reflect: true }) readonly cols: number\n\n /**\n * Comprimento atual do texto no textarea. É atualizado sempre que o valor do textarea muda.\n */\n @State() currentLength: number\n\n /**\n * Indica se o slot padrão possui conteúdo.\n */\n @State() hasDefaultSlot: boolean = false\n\n componentWillLoad() {\n this.currentLength = this.value?.length || 0\n this.checkSlotContent()\n }\n\n private checkSlotContent() {\n this.hasDefaultSlot = Array.from(this.el.childNodes).some((node) => {\n // Ignora nós que têm atributo slot (pertencem a outros slots)\n if (node.nodeType === Node.ELEMENT_NODE && (node as Element).hasAttribute('slot')) {\n return false\n }\n // Verifica se é elemento ou texto não vazio\n return (\n node.nodeType === Node.ELEMENT_NODE || (node.nodeType === Node.TEXT_NODE && node.textContent.trim() !== '')\n )\n })\n }\n\n /**\n * Valor atualizado do textarea\n */\n @Event() valueChange: EventEmitter<string>\n\n @Watch('value')\n valueChanged() {\n this.currentLength = this.value?.length || 0\n }\n\n private readonly handleInput = (event: Event) => {\n this.value = (event.target as HTMLInputElement).value\n this.currentLength = this.value?.length || 0\n this.valueChange.emit(this.value)\n }\n\n /**\n * Define um novo valor para o textarea.\n * @param newValue - O novo valor a ser definido.\n */\n @Method()\n async setValue(newValue: string) {\n this.value = newValue\n this.currentLength = this.value?.length || 0\n this.valueChange.emit(this.value)\n }\n\n /**\n * Retorna os ids para o atributo aria-describedby do textarea\n */\n private getDescribedBy(): string {\n return [this.showCounter ? `${this.customId}-limitMax` : null, `${this.customId}-slotInfo`]\n .filter(Boolean)\n .join(' ')\n }\n\n /**\n * Determina o texto a ser usado para acessibilidade quando não há label\n * Ordem de prioridade:\n * - aria-label do elemento host\n * - propriedade ariaLabel do componente\n * - placeholder\n * - texto padrão (\"Campo de texto\")\n */\n private getAccessibilityLabel(): string {\n const hostAriaLabel = this.el.getAttribute('aria-label')\n\n return hostAriaLabel && hostAriaLabel.trim() !== ''\n ? hostAriaLabel\n : this.ariaLabel && this.ariaLabel.trim() !== ''\n ? this.ariaLabel\n : this.placeholder && this.placeholder.trim() !== ''\n ? this.placeholder\n : 'Campo de texto'\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-textarea': true,\n small: this.density === 'small',\n medium: this.density === 'medium',\n large: this.density === 'large',\n success: this.state === 'success',\n danger: this.state === 'danger',\n warning: this.state === 'warning',\n }\n }\n\n render() {\n const caracteresRestantes: number = this.maxlength - this.currentLength\n const mostrarLimite = this.currentLength > 0\n const hasLabel = !!this.label\n\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n {this.isInline ? (\n <div class=\"row\">\n {hasLabel && (\n <div class=\"col-auto pt-half\">\n <label htmlFor={this.customId}>{this.label}</label>\n </div>\n )}\n <div class=\"col\">\n <textarea\n id={this.customId}\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n onInput={this.handleInput}\n {...(this.rows > 0 ? { rows: this.rows } : {})}\n {...(this.cols > 0 ? { cols: this.cols } : {})}\n {...(this.maxlength > 0 ? { maxLength: this.maxlength } : {})}\n aria-describedby={this.getDescribedBy()}\n {...(!hasLabel ? { 'aria-label': this.getAccessibilityLabel() } : {})}\n ></textarea>\n {this.showCounter && (\n <div>\n {mostrarLimite ? (\n <span class=\"restantes\" aria-live=\"polite\" role=\"status\" id={`${this.customId}-limitMax`}>\n Restam <strong>{caracteresRestantes}</strong> caracteres\n </span>\n ) : (\n <span class=\"limit\" aria-live=\"polite\" id={`${this.customId}-limitMax`}>\n Limite máximo de <strong>{this.maxlength}</strong> caracteres\n </span>\n )}\n </div>\n )}\n {this.hasDefaultSlot && (\n <div id={`${this.customId}-slotInfo`} aria-live=\"polite\">\n <slot></slot>\n </div>\n )}\n </div>\n </div>\n ) : (\n [\n hasLabel ? <label htmlFor={this.customId}>{this.label}</label> : null,\n <textarea\n id={this.customId}\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n onInput={this.handleInput}\n {...(this.rows > 0 ? { rows: this.rows } : {})}\n {...(this.cols > 0 ? { cols: this.cols } : {})}\n {...(this.maxlength > 0 ? { maxLength: this.maxlength } : {})}\n aria-describedby={this.getDescribedBy()}\n {...(!hasLabel ? { 'aria-label': this.getAccessibilityLabel() } : {})}\n ></textarea>,\n this.showCounter ? (\n <div>\n {mostrarLimite ? (\n <span class=\"restantes\" aria-live=\"polite\" role=\"status\" id={`${this.customId}-limitMax`}>\n Restam <strong>{caracteresRestantes}</strong> caracteres\n </span>\n ) : (\n <span class=\"limit\" aria-live=\"polite\" id={`${this.customId}-limitMax`}>\n Limite máximo de <strong>{this.maxlength}</strong> caracteres\n </span>\n )}\n </div>\n ) : null,\n this.hasDefaultSlot ? (\n <div id={`${this.customId}-slotInfo`} aria-live=\"polite\">\n <slot></slot>\n </div>\n ) : null,\n ]\n )}\n </div>\n </Host>\n )\n }\n}\n"]}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Construído por SERPRO
|
|
3
3
|
* © https://serpro.gov.br/ - MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { __awaiter } from "tslib";
|
|
6
5
|
import { h, Host } from "@stencil/core";
|
|
7
6
|
/**
|
|
8
7
|
* Wizard Panel (Painel de etapa do Wizard)
|
|
@@ -22,28 +21,22 @@ export class WizardPanel {
|
|
|
22
21
|
* Define se o painel está ativo
|
|
23
22
|
* @internal Método interno chamado apenas pelo wizard pai
|
|
24
23
|
*/
|
|
25
|
-
setActive(value) {
|
|
26
|
-
|
|
27
|
-
this.active = value;
|
|
28
|
-
});
|
|
24
|
+
async setActive(value) {
|
|
25
|
+
this.active = value;
|
|
29
26
|
}
|
|
30
27
|
/**
|
|
31
28
|
* Define o índice do painel
|
|
32
29
|
* @internal Método interno chamado apenas pelo wizard pai
|
|
33
30
|
*/
|
|
34
|
-
setIndex(value) {
|
|
35
|
-
|
|
36
|
-
this.index = value;
|
|
37
|
-
});
|
|
31
|
+
async setIndex(value) {
|
|
32
|
+
this.index = value;
|
|
38
33
|
}
|
|
39
34
|
/**
|
|
40
35
|
* Retorna se o painel está ativo
|
|
41
36
|
* @internal Método interno para o wizard pai consultar o estado
|
|
42
37
|
*/
|
|
43
|
-
isActive() {
|
|
44
|
-
return
|
|
45
|
-
return this.active;
|
|
46
|
-
});
|
|
38
|
+
async isActive() {
|
|
39
|
+
return this.active;
|
|
47
40
|
}
|
|
48
41
|
render() {
|
|
49
42
|
const hostAttrs = Object.assign({}, (this.active && { active: 'true' }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard-panel.js","sourceRoot":"","sources":["../../../../../../../packages/webcomponents/src/components/wizard/wizard-panel/wizard-panel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wizard-panel.js","sourceRoot":"","sources":["../../../../../../../packages/webcomponents/src/components/wizard/wizard-panel/wizard-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhF;;;;;GAKG;AAMH,MAAM,OAAO,WAAW;IALxB;QAaE;;WAEG;QACc,WAAM,GAAY,KAAK,CAAA;QACvB,UAAK,GAAW,CAAC,CAAA;KA4CnC;IA1CC;;;OAGG;IAEH,KAAK,CAAC,SAAS,CAAC,KAAc;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;IACrB,CAAC;IAED;;;OAGG;IAEH,KAAK,CAAC,QAAQ,CAAC,KAAa;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED;;;OAGG;IAEH,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,MAAM;QACJ,MAAM,SAAS,qBACV,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CACvC,CAAA;QAED,OAAO,CACL,EAAC,IAAI,qEAAK,SAAS;YACjB,4DAAK,KAAK,EAAC,cAAc,EAAC,IAAI,EAAC,UAAU,EAAC,EAAE,EAAE,gBAAgB,IAAI,CAAC,KAAK,EAAE;gBACxE,4DAAK,KAAK,EAAC,sBAAsB;oBAC/B,8DAAa,CACT,CACF,CACD,CACR,CAAA;IACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, h, Host, Method, Prop, State } from '@stencil/core'\n\n/**\n * Wizard Panel (Painel de etapa do Wizard)\n * Representa uma etapa individual dentro do br-wizard.\n *\n * @slot default - Slot para o conteúdo da etapa (formulários, campos ou informações da fase atual).\n */\n@Component({\n tag: 'br-wizard-panel',\n styleUrl: 'wizard-panel.scss',\n shadow: true,\n})\nexport class WizardPanel {\n @Element() el: HTMLBrWizardPanelElement\n\n /**\n * Label do painel (aparece no indicador de progresso)\n */\n @Prop({ reflect: true }) label!: string\n\n /**\n * Estados internos controlados pelo wizard pai via métodos públicos\n */\n @State() private active: boolean = false\n @State() private index: number = 1\n\n /**\n * Define se o painel está ativo\n * @internal Método interno chamado apenas pelo wizard pai\n */\n @Method()\n async setActive(value: boolean) {\n this.active = value\n }\n\n /**\n * Define o índice do painel\n * @internal Método interno chamado apenas pelo wizard pai\n */\n @Method()\n async setIndex(value: number) {\n this.index = value\n }\n\n /**\n * Retorna se o painel está ativo\n * @internal Método interno para o wizard pai consultar o estado\n */\n @Method()\n async isActive(): Promise<boolean> {\n return this.active\n }\n\n render() {\n const hostAttrs = {\n ...(this.active && { active: 'true' }),\n }\n\n return (\n <Host {...hostAttrs}>\n <div class=\"wizard-panel\" role=\"tabpanel\" id={`wizard-panel-${this.index}`}>\n <div class=\"wizard-panel-content\">\n <slot></slot>\n </div>\n </div>\n </Host>\n )\n }\n}\n"]}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Construído por SERPRO
|
|
3
3
|
* © https://serpro.gov.br/ - MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { __awaiter } from "tslib";
|
|
6
5
|
import { h, Host, } from "@stencil/core";
|
|
7
6
|
import Helpers from "../../utils/helpers";
|
|
8
7
|
import { UniversalSwipe } from "../../utils/swipe";
|
|
@@ -126,7 +125,7 @@ export class Wizard {
|
|
|
126
125
|
* Se for a última etapa, valida e emite evento de conclusão.
|
|
127
126
|
* Caso contrário, avança para a próxima etapa.
|
|
128
127
|
*/
|
|
129
|
-
this.handleNext = () =>
|
|
128
|
+
this.handleNext = async () => {
|
|
130
129
|
if (this.currentStep === this.panels.length) {
|
|
131
130
|
// Última etapa: validar antes de completar
|
|
132
131
|
const eventResult = this.brWizardBeforeStepChange.emit(this.currentStep);
|
|
@@ -136,16 +135,16 @@ export class Wizard {
|
|
|
136
135
|
}
|
|
137
136
|
}
|
|
138
137
|
else {
|
|
139
|
-
|
|
138
|
+
await this.nextStep();
|
|
140
139
|
}
|
|
141
|
-
}
|
|
140
|
+
};
|
|
142
141
|
/**
|
|
143
142
|
* Handler do botão "Voltar".
|
|
144
143
|
* Navega para a etapa anterior.
|
|
145
144
|
*/
|
|
146
|
-
this.handlePrevious = () =>
|
|
147
|
-
|
|
148
|
-
}
|
|
145
|
+
this.handlePrevious = async () => {
|
|
146
|
+
await this.previousStep();
|
|
147
|
+
};
|
|
149
148
|
/**
|
|
150
149
|
* Handler do botão "Cancelar".
|
|
151
150
|
* Emite evento de cancelamento do wizard.
|
|
@@ -168,12 +167,10 @@ export class Wizard {
|
|
|
168
167
|
* Observa mudanças na etapa inicial.
|
|
169
168
|
* Reinicializa o wizard quando a prop initialStep é alterada externamente.
|
|
170
169
|
*/
|
|
171
|
-
handleInitialStepChange() {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
this.updatePanels();
|
|
176
|
-
});
|
|
170
|
+
async handleInitialStepChange() {
|
|
171
|
+
this.setInitialStep();
|
|
172
|
+
await this.syncWithBrStep();
|
|
173
|
+
this.updatePanels();
|
|
177
174
|
}
|
|
178
175
|
/**
|
|
179
176
|
* Observa mudanças na etapa atual (fonte única de verdade).
|
|
@@ -181,15 +178,13 @@ export class Wizard {
|
|
|
181
178
|
* @param newStep - Nova etapa
|
|
182
179
|
* @param oldStep - Etapa anterior
|
|
183
180
|
*/
|
|
184
|
-
handleCurrentStepChange(newStep, oldStep) {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
});
|
|
181
|
+
async handleCurrentStepChange(newStep, oldStep) {
|
|
182
|
+
if (newStep !== oldStep) {
|
|
183
|
+
await this.syncWithBrStep();
|
|
184
|
+
this.updatePanels();
|
|
185
|
+
this.announceStepChange(newStep, oldStep);
|
|
186
|
+
this.setFocusOnActivePanel();
|
|
187
|
+
}
|
|
193
188
|
}
|
|
194
189
|
// ========================================
|
|
195
190
|
// LISTENERS
|
|
@@ -199,31 +194,27 @@ export class Wizard {
|
|
|
199
194
|
* Redescobre os painéis e ressincroniza o estado.
|
|
200
195
|
* @param event - Evento slotchange
|
|
201
196
|
*/
|
|
202
|
-
handleSlotChange(event) {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
this.updatePanels();
|
|
208
|
-
});
|
|
197
|
+
async handleSlotChange(event) {
|
|
198
|
+
const slot = event.target;
|
|
199
|
+
this.discoverPanelsFromSlot(slot);
|
|
200
|
+
await this.syncWithBrStep();
|
|
201
|
+
this.updatePanels();
|
|
209
202
|
}
|
|
210
203
|
/**
|
|
211
204
|
* Detecta quando o br-step muda de etapa ativa.
|
|
212
205
|
* Valida e sincroniza a navegação com o componente interno br-step.
|
|
213
206
|
* @param event - Evento customizado do br-step
|
|
214
207
|
*/
|
|
215
|
-
handleStepChange(event) {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
}
|
|
226
|
-
});
|
|
208
|
+
async handleStepChange(event) {
|
|
209
|
+
if (this.isSyncingWithStep) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
const requestedStep = event.detail.activeStep + 1;
|
|
213
|
+
const success = await this.navigateToStep(requestedStep);
|
|
214
|
+
if (!success) {
|
|
215
|
+
event.stopPropagation();
|
|
216
|
+
await this.syncWithBrStep();
|
|
217
|
+
}
|
|
227
218
|
}
|
|
228
219
|
// ========================================
|
|
229
220
|
// LIFECYCLE HOOKS
|
|
@@ -239,24 +230,22 @@ export class Wizard {
|
|
|
239
230
|
* Lifecycle: carrega painéis e configura estado inicial.
|
|
240
231
|
* Sincroniza com br-step, atualiza painéis e configura detecção mobile.
|
|
241
232
|
*/
|
|
242
|
-
componentDidLoad() {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
this.panels = slotPanels;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
yield this.syncWithBrStep();
|
|
254
|
-
this.updatePanels();
|
|
255
|
-
this.setupMobileDetection();
|
|
256
|
-
if (this.isMobile) {
|
|
257
|
-
this.collapsed = true;
|
|
233
|
+
async componentDidLoad() {
|
|
234
|
+
var _a;
|
|
235
|
+
const slot = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot');
|
|
236
|
+
if (slot !== null && typeof slot !== 'undefined') {
|
|
237
|
+
const assignedElements = slot.assignedElements();
|
|
238
|
+
const slotPanels = assignedElements.filter((el) => el.tagName.toLowerCase() === 'br-wizard-panel');
|
|
239
|
+
if (slotPanels.length !== this.panels.length) {
|
|
240
|
+
this.panels = slotPanels;
|
|
258
241
|
}
|
|
259
|
-
}
|
|
242
|
+
}
|
|
243
|
+
await this.syncWithBrStep();
|
|
244
|
+
this.updatePanels();
|
|
245
|
+
this.setupMobileDetection();
|
|
246
|
+
if (this.isMobile) {
|
|
247
|
+
this.collapsed = true;
|
|
248
|
+
}
|
|
260
249
|
}
|
|
261
250
|
/**
|
|
262
251
|
* Lifecycle: limpa listeners quando componente é removido.
|
|
@@ -274,20 +263,16 @@ export class Wizard {
|
|
|
274
263
|
* Executa validação via evento `brWizardBeforeStepChange` antes de navegar.
|
|
275
264
|
* @returns Promise<boolean> - true se navegou com sucesso, false se bloqueado
|
|
276
265
|
*/
|
|
277
|
-
nextStep() {
|
|
278
|
-
return
|
|
279
|
-
return yield this.navigateToStep(this.currentStep + 1);
|
|
280
|
-
});
|
|
266
|
+
async nextStep() {
|
|
267
|
+
return await this.navigateToStep(this.currentStep + 1);
|
|
281
268
|
}
|
|
282
269
|
/**
|
|
283
270
|
* Volta para a etapa anterior.
|
|
284
271
|
* Não executa validação ao retornar.
|
|
285
272
|
* @returns Promise<boolean> - true se navegou com sucesso, false se bloqueado
|
|
286
273
|
*/
|
|
287
|
-
previousStep() {
|
|
288
|
-
return
|
|
289
|
-
return yield this.navigateToStep(this.currentStep - 1);
|
|
290
|
-
});
|
|
274
|
+
async previousStep() {
|
|
275
|
+
return await this.navigateToStep(this.currentStep - 1);
|
|
291
276
|
}
|
|
292
277
|
/**
|
|
293
278
|
* Navega para uma etapa específica.
|
|
@@ -295,67 +280,53 @@ export class Wizard {
|
|
|
295
280
|
* @param stepNumber - Número da etapa de destino (numeração começa em 1)
|
|
296
281
|
* @returns Promise<boolean> - true se navegou com sucesso, false se bloqueado
|
|
297
282
|
*/
|
|
298
|
-
goToStep(stepNumber) {
|
|
299
|
-
return
|
|
300
|
-
return yield this.navigateToStep(stepNumber);
|
|
301
|
-
});
|
|
283
|
+
async goToStep(stepNumber) {
|
|
284
|
+
return await this.navigateToStep(stepNumber);
|
|
302
285
|
}
|
|
303
286
|
/**
|
|
304
287
|
* Retorna à primeira etapa do wizard.
|
|
305
288
|
* Não executa validação (útil para reiniciar o fluxo).
|
|
306
289
|
* @returns Promise<void>
|
|
307
290
|
*/
|
|
308
|
-
reset() {
|
|
309
|
-
|
|
310
|
-
yield this.navigateToStep(1, true);
|
|
311
|
-
});
|
|
291
|
+
async reset() {
|
|
292
|
+
await this.navigateToStep(1, true);
|
|
312
293
|
}
|
|
313
294
|
/**
|
|
314
295
|
* Retorna o elemento HTML do painel ativo no momento.
|
|
315
296
|
* @returns Promise<HTMLElement | null>
|
|
316
297
|
*/
|
|
317
|
-
getCurrentStep() {
|
|
318
|
-
return
|
|
319
|
-
return this.panels[this.currentStep - 1] || null;
|
|
320
|
-
});
|
|
298
|
+
async getCurrentStep() {
|
|
299
|
+
return this.panels[this.currentStep - 1] || null;
|
|
321
300
|
}
|
|
322
301
|
/**
|
|
323
302
|
* Retorna todos os painéis do wizard.
|
|
324
303
|
* @returns Promise<HTMLElement[]>
|
|
325
304
|
*/
|
|
326
|
-
getAllSteps() {
|
|
327
|
-
return
|
|
328
|
-
return [...this.panels];
|
|
329
|
-
});
|
|
305
|
+
async getAllSteps() {
|
|
306
|
+
return [...this.panels];
|
|
330
307
|
}
|
|
331
308
|
/**
|
|
332
309
|
* Retorna um painel específico pelo índice.
|
|
333
310
|
* @param stepNumber - Número da etapa (numeração começa em 1)
|
|
334
311
|
* @returns Promise<HTMLElement | null>
|
|
335
312
|
*/
|
|
336
|
-
getStepByIndex(stepNumber) {
|
|
337
|
-
return
|
|
338
|
-
return this.panels[stepNumber - 1] || null;
|
|
339
|
-
});
|
|
313
|
+
async getStepByIndex(stepNumber) {
|
|
314
|
+
return this.panels[stepNumber - 1] || null;
|
|
340
315
|
}
|
|
341
316
|
/**
|
|
342
317
|
* Retorna o índice (número) da etapa atual.
|
|
343
318
|
* A numeração começa em 1 (primeira etapa = 1, segunda = 2, etc).
|
|
344
319
|
* @returns Promise<number>
|
|
345
320
|
*/
|
|
346
|
-
getCurrentStepIndex() {
|
|
347
|
-
return
|
|
348
|
-
return this.currentStep;
|
|
349
|
-
});
|
|
321
|
+
async getCurrentStepIndex() {
|
|
322
|
+
return this.currentStep;
|
|
350
323
|
}
|
|
351
324
|
/**
|
|
352
325
|
* Retorna o número total de etapas do wizard.
|
|
353
326
|
* @returns Promise<number>
|
|
354
327
|
*/
|
|
355
|
-
getTotalSteps() {
|
|
356
|
-
return
|
|
357
|
-
return this.panels.length;
|
|
358
|
-
});
|
|
328
|
+
async getTotalSteps() {
|
|
329
|
+
return this.panels.length;
|
|
359
330
|
}
|
|
360
331
|
// ========================================
|
|
361
332
|
// NAVEGAÇÃO E VALIDAÇÃO
|
|
@@ -371,64 +342,62 @@ export class Wizard {
|
|
|
371
342
|
* @param skipValidation - Se true, pula validação (útil para reset/programático)
|
|
372
343
|
* @returns Promise<boolean> - true se navegou com sucesso, false se bloqueado
|
|
373
344
|
*/
|
|
374
|
-
navigateToStep(
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
345
|
+
async navigateToStep(targetStep, skipValidation = false) {
|
|
346
|
+
/**
|
|
347
|
+
* VALIDAÇÕES BÁSICAS
|
|
348
|
+
* 1. Verifica se targetStep está dentro dos limites válidos
|
|
349
|
+
* 2. Se já estamos na etapa alvo, retorna sucesso imediatamente
|
|
350
|
+
*/
|
|
351
|
+
if (targetStep < 1 || targetStep > this.panels.length) {
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
if (targetStep === this.currentStep) {
|
|
355
|
+
return true;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* MODO LINEAR: RESTRIÇÕES
|
|
359
|
+
* No modo linear, não é permitido pular para etapas futuras não visitadas.
|
|
360
|
+
* É possível voltar, mas não avançar além da próxima etapa sequencial.
|
|
361
|
+
*/
|
|
362
|
+
if (this.progressionType === 'linear') {
|
|
363
|
+
if (targetStep > this.currentStep + 1) {
|
|
364
|
+
const message = `Não é possível pular etapas. Complete a etapa ${this.currentStep + 1} antes de avançar.`;
|
|
365
|
+
this.announceToScreenReader(message);
|
|
366
|
+
this.brWizardNavigationBlocked.emit('linear-progression');
|
|
382
367
|
return false;
|
|
383
368
|
}
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
}
|
|
399
|
-
}
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* VALIDAÇÃO CUSTOMIZADA
|
|
372
|
+
* Emite evento brWizardBeforeStepChange APENAS se:
|
|
373
|
+
* 1. Não estamos pulando validação (skipValidation=false)
|
|
374
|
+
* 2. Estamos AVANÇANDO (targetStep > currentStep)
|
|
375
|
+
*
|
|
376
|
+
* Observações:
|
|
377
|
+
* - Voltar não precisa validar
|
|
378
|
+
* - Validação se aplica a ambos os modos (linear e nonlinear)
|
|
379
|
+
*/
|
|
380
|
+
const shouldValidate = !skipValidation && targetStep > this.currentStep;
|
|
381
|
+
if (shouldValidate) {
|
|
382
|
+
const eventResult = this.brWizardBeforeStepChange.emit(targetStep);
|
|
400
383
|
/**
|
|
401
|
-
*
|
|
402
|
-
*
|
|
403
|
-
* 1. Não estamos pulando validação (skipValidation=false)
|
|
404
|
-
* 2. Estamos AVANÇANDO (targetStep > currentStep)
|
|
405
|
-
*
|
|
406
|
-
* Observações:
|
|
407
|
-
* - Voltar não precisa validar
|
|
408
|
-
* - Validação se aplica a ambos os modos (linear e nonlinear)
|
|
384
|
+
* Se preventDefault() foi chamado no listener do evento,
|
|
385
|
+
* bloqueia a navegação e retorna false
|
|
409
386
|
*/
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
* bloqueia a navegação e retorna false
|
|
416
|
-
*/
|
|
417
|
-
if (eventResult.defaultPrevented) {
|
|
418
|
-
const message = 'Não é possível avançar. Verifique os campos obrigatórios da etapa atual.';
|
|
419
|
-
this.announceToScreenReader(message);
|
|
420
|
-
this.brWizardNavigationBlocked.emit('validation-failed');
|
|
421
|
-
return false;
|
|
422
|
-
}
|
|
387
|
+
if (eventResult.defaultPrevented) {
|
|
388
|
+
const message = 'Não é possível avançar. Verifique os campos obrigatórios da etapa atual.';
|
|
389
|
+
this.announceToScreenReader(message);
|
|
390
|
+
this.brWizardNavigationBlocked.emit('validation-failed');
|
|
391
|
+
return false;
|
|
423
392
|
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* EXECUTA NAVEGAÇÃO
|
|
396
|
+
* Atualiza o estado interno e emite evento de confirmação
|
|
397
|
+
*/
|
|
398
|
+
this.currentStep = targetStep;
|
|
399
|
+
this.brWizardStepChange.emit(this.currentStep);
|
|
400
|
+
return true;
|
|
432
401
|
}
|
|
433
402
|
// ========================================
|
|
434
403
|
// SINCRONIZAÇÃO COM BR-STEP
|
|
@@ -439,35 +408,33 @@ export class Wizard {
|
|
|
439
408
|
* O br-step já gerencia completamente os atributos 'active' via componentShouldUpdate
|
|
440
409
|
* e requestAnimationFrame, então apenas chamamos os métodos de navegação dele.
|
|
441
410
|
*/
|
|
442
|
-
syncWithBrStep() {
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
yield this.stepRef.ProceedToNextStep();
|
|
458
|
-
}
|
|
411
|
+
async syncWithBrStep() {
|
|
412
|
+
if (this.stepRef === null)
|
|
413
|
+
return;
|
|
414
|
+
if (typeof this.stepRef.GetActiveStep !== 'function') {
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
this.isSyncingWithStep = true;
|
|
418
|
+
try {
|
|
419
|
+
const targetStepIndex = this.currentStep - 1;
|
|
420
|
+
const currentActiveStep = await this.stepRef.GetActiveStep();
|
|
421
|
+
if (currentActiveStep !== targetStepIndex) {
|
|
422
|
+
const diff = targetStepIndex - currentActiveStep;
|
|
423
|
+
if (diff > 0) {
|
|
424
|
+
for (let i = 0; i < diff; i++) {
|
|
425
|
+
await this.stepRef.ProceedToNextStep();
|
|
459
426
|
}
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
427
|
+
}
|
|
428
|
+
else {
|
|
429
|
+
for (let i = 0; i < Math.abs(diff); i++) {
|
|
430
|
+
await this.stepRef.BackToPreviousStep();
|
|
464
431
|
}
|
|
465
432
|
}
|
|
466
433
|
}
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
}
|
|
434
|
+
}
|
|
435
|
+
finally {
|
|
436
|
+
this.isSyncingWithStep = false;
|
|
437
|
+
}
|
|
471
438
|
}
|
|
472
439
|
// ========================================
|
|
473
440
|
// GERENCIAMENTO DE PAINÉIS
|
|
@@ -484,16 +451,14 @@ export class Wizard {
|
|
|
484
451
|
* Atualiza estados de todos os painéis.
|
|
485
452
|
* Define o índice e o estado ativo de cada painel.
|
|
486
453
|
*/
|
|
487
|
-
updatePanels() {
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
}
|
|
496
|
-
});
|
|
454
|
+
async updatePanels() {
|
|
455
|
+
for (let idx = 0; idx < this.panels.length; idx++) {
|
|
456
|
+
const panel = this.panels[idx];
|
|
457
|
+
const stepNumber = idx + 1;
|
|
458
|
+
const isActive = stepNumber === this.currentStep;
|
|
459
|
+
await panel.setIndex(stepNumber);
|
|
460
|
+
await panel.setActive(isActive);
|
|
461
|
+
}
|
|
497
462
|
}
|
|
498
463
|
/**
|
|
499
464
|
* Define etapa inicial baseada na prop initialStep.
|