@govbr-ds/webcomponents 2.0.0-next.61 → 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 +123 -24
- package/dist/cjs/br-modal.entry.cjs.js.map +1 -1
- package/dist/cjs/br-scrim.cjs.entry.js +108 -25
- 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 +156 -46
- 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 +108 -25
- 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/pages/components/modal/index.js +1 -53
- 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 +140 -49
- 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 +112 -43
- 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 +1613 -430
- 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 +123 -24
- package/dist/esm/br-modal.entry.js.map +1 -1
- package/dist/esm/br-scrim.entry.js +108 -25
- 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 +634 -578
- package/dist/hydrate/index.mjs +634 -578
- package/dist/types/components/modal/modal.d.ts +46 -4
- package/dist/types/components/scrim/scrim.d.ts +39 -1
- package/dist/types/components/select/select.d.ts +5 -0
- package/dist/types/components.d.ts +21 -11
- 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-28dba962.entry.js → p-90401ecd.entry.js} +124 -34
- package/dist/webcomponents/p-90401ecd.entry.js.map +1 -0
- package/dist/webcomponents/{p-e7b38c63.entry.js → p-a2eec4fb.entry.js} +112 -43
- 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 +1708 -349
- 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-28dba962.entry.js.map +0 -1
- package/dist/webcomponents/p-2fe329d6.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/webcomponents/p-e7b38c63.entry.js.map +0 -1
- /package/dist/components/{p-OKkBxn1z.js.map → p-lIb35q2K.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"br-step.br-step-item.entry.esm.js","sources":["../../packages/webcomponents/src/components/step/step.scss?tag=br-step&encapsulation=shadow","../../packages/webcomponents/src/components/step/step.tsx","../../packages/webcomponents/src/components/step/step-item/step-item.scss?tag=br-step-item&encapsulation=shadow","../../packages/webcomponents/src/components/step/step-item/step-item.tsx"],"sourcesContent":["@import \"../../../../../node_modules/@govbr-ds/core/src/components/step/step\";\n\n:host {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n\n .step-container {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n overflow: auto;\n flex-grow: 1;\n\n &:focus-visible {\n outline: var(--focus-width) var(--focus-style) var(--focus) var(--focus-offset);\n }\n }\n\n .horizontal {\n flex-direction: row;\n }\n\n .vertical {\n flex-direction: column;\n justify-content: center;\n\n &.label-right {\n align-items: start;\n padding-left: 20px;\n }\n\n &.label-left {\n align-items: start;\n padding-right: 20px;\n }\n }\n}\n\n::slotted([disabled]) {\n opacity: 1 !important;\n}\n\n::slotted(.linha) {\n width: 100px;\n height: 2px;\n display: flex;\n align-items: center;\n background-color: var(--interactive);\n}\n\n::slotted(*) {\n flex: 1;\n min-width: 0;\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} 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/step?tab=designer).\n *\n * @slot default - Slot para os itens do step (br-step-item), aceitando apenas esse componente.\n *\n * @part container - Parte para o contêiner principal envolvendo todos os step-items, usada para estilizar layout geral via ::part().\n *\n */\n@Component({\n tag: 'br-step',\n styleUrl: 'step.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Step {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrStepElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * propriedade responsável por definir a orientação do componente Step\n */\n @Prop({ reflect: true }) layout: 'horizontal' | 'vertical' = 'horizontal'\n /**\n *\n * define o passo que começará destacado\n */\n @Prop({ reflect: true }) initialStep: string = '0'\n /**\n *\n * Propriedade que define a posição onde o texto de destaque,label, ficará localizado no stepItem\n */\n @Prop({ reflect: true }) labelPosition?: 'top' | 'right' | 'bottom' | 'left' = 'bottom'\n /**\n *\n * Propriedade que define o tipo de conteúdo a ser exibido dentro do componente step e stepItem\n */\n @Prop({ reflect: true }) contentType: 'default' | 'br-icon' | 'no-content' | 'slotted' = 'default'\n /**\n *\n * Propriedade que define o tipo de comportamento que o componente Step deverá seguir\n */\n @Prop({ reflect: true }) mode: 'controller' | 'step' = 'step'\n\n /**\n *\n * Propriedade que define o tipo de progressão de etapas que o step vai executar\n */\n @Prop({ reflect: true }) progressionType: 'linear' | 'nonlinear' = 'nonlinear'\n\n @State() activeStep: number = 0\n @State() stepItems: Element[] = []\n /**\n * Emite um evento após o componente ter sido carregado pela primeira vez.\n * Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brDidLoad: EventEmitter<void>\n componentDidLoad() {\n this.setStepItemsLabelPosition()\n this.setStepItemsContentType()\n this.setStepItemsDefaultContent()\n this.setStepItemsMode(this.mode)\n if (this.mode === 'step') {\n this.configureTimeLine()\n }\n if (this.progressionType === 'linear') {\n this.configureLinearProgression()\n }\n if (this.activeStep <= this.stepItems.length - 1) {\n this.stepItems[this.activeStep].setAttribute('active', 'true')\n } else {\n console.warn('br-step initial-step attribute has value more than number of step-items provided')\n }\n this.brDidLoad.emit()\n }\n\n /**\n * Emite um evento antes do componente ser renderizado pela primeira vez, permitindo a preparação de dados ou inicializações necessárias.\n * Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdwillLoad) para mais detalhes.\n */\n @Event() brWillLoad: EventEmitter<void>\n componentWillLoad() {\n this.activeStep = Number(this.initialStep)\n this.getStepItemsElements()\n this.brWillLoad.emit()\n }\n\n /**\n * Emite um evento para indicar se o componente deve ser atualizado ou não.\n * Este evento é chamado antes de qualquer atualização do componente para decidir se a atualização deve prosseguir.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentshouldupdate) para mais detalhes.\n */\n @Event() brShouldUpdate: EventEmitter<void>\n\n /**\n * Emite um evento quando o step ativo muda.\n * O evento carrega o índice do novo step ativo (0-based).\n */\n @Event() brStepChange: EventEmitter<{ activeStep: number }>\n\n /** Controla atualizações pendentes para evitar race conditions */\n private updateScheduled = false\n\n componentShouldUpdate(newValue: number, oldValue: number, stateName: string) {\n if (stateName === 'activeStep' && oldValue !== newValue) {\n if (!this.updateScheduled) {\n this.updateScheduled = true\n requestAnimationFrame(() => {\n this.updateScheduled = false\n this.updateStepItemsActiveState(oldValue)\n })\n }\n this.brShouldUpdate.emit()\n this.brStepChange.emit({ activeStep: this.activeStep })\n }\n }\n\n /**\n * Atualiza os atributos 'active' dos step-items de forma segura\n * Chamado via requestAnimationFrame para garantir que o DOM é atualizado após batched state changes\n */\n private updateStepItemsActiveState(previousActiveStep: number) {\n const outOfRange = previousActiveStep > this.stepItems.length - 1\n\n if (!outOfRange) {\n this.stepItems[previousActiveStep].removeAttribute('active')\n }\n\n this.stepItems[this.activeStep].setAttribute('active', 'true')\n }\n\n /**\n * listener para ouvir o evento de click no componente step\n * Através desse listener o componente define qual será o proximo passo do step que terá o estado ativo\n */\n\n @Listen('click', { capture: true })\n handleClick(event) {\n const targetElement = event.target as Element\n if (targetElement.getAttribute('slot') !== null) {\n const slotItem = this.stepItems.findIndex((element) => element.lastElementChild === targetElement)\n this.activeStep = slotItem\n return\n }\n const item = this.stepItems.findIndex((element) => element === targetElement)\n this.activeStep = item\n }\n\n private getStepItemsElements() {\n const slotItems = Array.from(this.el.children)\n const firstChildrenContentTypeValue = slotItems[0].getAttribute('content-type')\n const childrenHaveConsistentContentType = slotItems.every(\n (item) => item.getAttribute('content-type') === firstChildrenContentTypeValue\n )\n const childrenHaveConsistentTagName = slotItems.every((item) => item.tagName.toLowerCase() === 'br-step-item')\n if (childrenHaveConsistentContentType && childrenHaveConsistentTagName) {\n this.stepItems = slotItems\n return\n }\n if (!childrenHaveConsistentTagName) {\n throw new Error('br-step component must have as child elements only br-step-items components')\n }\n if (!childrenHaveConsistentContentType) {\n throw new Error('br-step must have all child elements with same content type attribute value')\n }\n }\n\n private setStepItemsLabelPosition() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements) => {\n if (this.labelPosition !== undefined) {\n elements.setLabelPosition(this.labelPosition)\n }\n })\n }\n\n private setStepItemsDefaultContent() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n const indicatorContent = index + 1\n elements.setContent(indicatorContent.toString())\n })\n }\n\n private async setStepItemsContentType() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n await Promise.all(slotItems.map((element) => element.setContentType(this.contentType)))\n slotItems.forEach((elements, index) => {\n elements.setAttribute('aria-posinset', `${index + 1}`)\n elements.setAttribute('aria-setsize', `${slotItems.length}`)\n })\n }\n\n private setStepItemsMode(mode: 'controller' | 'step') {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements) => {\n if (mode === 'controller') {\n elements.setMode(this.mode)\n elements.setContentType('no-content')\n if (this.layout !== 'horizontal') {\n this.layout = 'horizontal'\n }\n elements.handleShowTimeLine(false, this.layout)\n elements.removeAttribute('label')\n }\n })\n }\n\n private getStepItemPosition(stepItemsElements: HTMLBrStepItemElement[], index) {\n if (index === 0) {\n return 'first'\n }\n if (index > 0 && index < stepItemsElements.length - 1) {\n return 'middle'\n }\n return 'last'\n }\n\n private configureTimeLine() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n const elementPosition = this.getStepItemPosition(slotItems, index)\n elements.setStepItemPositionStatus(elementPosition)\n elements.handleShowTimeLine(true, this.layout)\n })\n }\n\n private configureLinearProgression() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n if (index > 0) {\n elements.setAttribute('disabled', 'true')\n }\n })\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que controla o componente Step, responsável por avançar para o próximo passo e atualizar o valor do estado activeStep\n */\n @Method()\n async ProceedToNextStep() {\n if (this.activeStep + 1 < this.stepItems.length) {\n this.activeStep = this.activeStep + 1\n if (this.progressionType === 'linear') {\n this.stepItems[this.activeStep].removeAttribute('disabled')\n }\n }\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que controla o componente Step, responsável por retornar ao passo anterior e atualizar o valor do estado activeStep\n */\n @Method()\n async BackToPreviousStep() {\n if (this.activeStep - 1 >= 0) {\n this.activeStep = this.activeStep - 1\n }\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que integra um componente externo ao componente Step, permitindo sinalizar validações ou destacar a etapa com estado ativo.\n */\n @Method()\n async StepValidation(validationStatus: 'success' | 'info' | 'danger' | 'warning') {\n this.stepItems[this.activeStep].setAttribute('highlight', validationStatus)\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que permite a um componente externo obter a etapa com o estado ativo do componente Step.\n */\n @Method()\n async GetActiveStep() {\n return this.activeStep\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-step': true,\n 'step-container': true,\n horizontal: this.layout === 'horizontal',\n vertical: this.layout === 'vertical',\n 'label-left': this.labelPosition === 'left',\n 'label-right': this.labelPosition === 'right',\n }\n }\n\n private AriaObjectContent = {\n step: 'Modo etapas ',\n controller: 'Modo controle ',\n default: 'passos com conteúdo numérico ',\n 'br-icon': 'passos com conteúdo que possuem icones ',\n slotted: 'passos com conteúdo customizados ',\n 'no-content': 'passos que apresentam conteúdo por meio de tooltip ',\n linear: 'progressão linear ',\n nonlinear: 'progressão não linear ',\n vertical: 'com layout vertical ',\n horizontal: 'com layout horizontal ',\n }\n\n private getAreaLabel(): string {\n let ariaLabel = ' Lista de Opções '\n if (this.mode !== 'controller') {\n ariaLabel +=\n this.AriaObjectContent[this.mode] +\n this.AriaObjectContent[this.contentType] +\n this.AriaObjectContent[this.progressionType] +\n this.AriaObjectContent[this.layout]\n } else {\n ariaLabel += this.AriaObjectContent[this.mode]\n }\n return ariaLabel\n }\n\n render() {\n return (\n <Host>\n {this.stepItems.length > 0 && (\n <div\n part=\"container\"\n role=\"listbox\"\n tabIndex={0}\n aria-orientation={this.layout}\n aria-label={this.getAreaLabel()}\n class={this.getCssClassMap()}\n >\n <slot></slot>\n </div>\n )}\n </Host>\n )\n }\n}\n",":host {\n display: flex;\n}\n\n.disabled-host {\n pointer-events: none;\n}\n\n.step-button {\n position: relative;\n z-index: 2;\n}\n\n.mode-controller {\n border: 1px solid var(--gray-20);\n width: 14px;\n height: 14px;\n cursor: pointer;\n border-radius: 50%;\n background-color: var(--gray-20);\n\n &:focus-visible {\n outline: var(--focus-width) var(--focus-style) var(--focus) var(--focus-offset);\n }\n\n &:hover {\n background-image: linear-gradient(\n rgb(var(--interactive-rgb), var(--hover)),\n rgb(var(--interactive-rgb), var(--hover))\n );\n }\n}\n\n[data-active].mode-controller {\n border: 1px solid var(--gray-20);\n background-color: var(--active);\n}\n\n.step-item-container-horizontal {\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n\n &.label-top::after {\n content: \"\";\n left: 0;\n bottom: 50%;\n }\n\n &.label-bottom::after {\n content: \"\";\n left: 0;\n bottom: 86%;\n }\n\n &.label-left::after {\n bottom: 68%;\n width: 70%;\n left: 26%;\n }\n\n &.label-right::after {\n bottom: 68%;\n width: 58%;\n left: 42%;\n }\n}\n\n.step-item-container-vertical {\n display: flex;\n flex-direction: row;\n max-width: max-content;\n\n &::after {\n content: \"\";\n position: relative;\n height: 100%;\n background-color: var(--interactive);\n display: block;\n transform: translate(50%, 20px);\n z-index: -1;\n width: 2px;\n right: 50%;\n }\n\n &.label-bottom::after {\n top: 50%;\n height: 70%;\n }\n\n &.label-top::after {\n top: 50%;\n height: 70%;\n }\n\n &.label-left::after {\n right: 16%;\n top: 12%;\n }\n\n &.label-right::after {\n top: 12%;\n right: 86%;\n }\n}\n\n.step-item-content {\n display: flex;\n position: relative;\n flex-grow: 1;\n margin: auto;\n min-height: 100px;\n min-width: 80px;\n justify-content: center;\n\n &.label-top {\n flex-direction: column-reverse;\n align-items: center;\n }\n\n &.label-bottom {\n flex-direction: column;\n align-items: center;\n }\n\n &.label-left {\n flex-direction: row-reverse;\n align-items: center;\n background-color: #fff;\n }\n\n &.label-right {\n flex-direction: row;\n align-items: center;\n background-color: #fff;\n }\n}\n\n.controller {\n display: flex;\n position: relative;\n flex-grow: 1;\n margin: 0 5px;\n min-height: unset;\n min-width: unset;\n}\n\n.step-item-container-vertical .step-item-content.label-right,\n.step-item-container-vertical .step-item-content.label-left {\n background-color: transparent;\n}\n\n.step-item-indicator-area {\n display: inline-block;\n position: relative;\n z-index: 1;\n\n .icon {\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n z-index: 4;\n border-radius: 50%;\n transform: translate(25px, -5px);\n color: white;\n font-size: 16px;\n font-weight: 900;\n width: 29px;\n height: 29px;\n }\n\n .icon.no-content {\n transform: translate(0, 0);\n width: 41px;\n height: 41px;\n }\n}\n\n[data-active].step-item-indicator-area .icon.no-content {\n transform: translate(5px, 5px);\n width: 30px;\n height: 30px;\n}\n\n.success {\n background-color: var(--success);\n}\n\n.info {\n background-color: var(--info);\n}\n\n.danger {\n background-color: var(--danger);\n}\n\n.warning {\n background-color: var(--warning);\n}\n\n.step-item-label-area {\n padding: 0;\n display: flex;\n\n &.label-left {\n padding: 0 14px;\n }\n\n &.label-right {\n padding: 0 14px;\n }\n}\n\n.step-item-label-area > span {\n font-size: var(--font-size-scale-up-01);\n // Permite que o wizard customize font-weight e color via CSS Custom Properties\n font-weight: var(--step-label-font-weight, var(--font-weight-medium));\n color: var(--step-label-color, var(--interactive));\n}\n\n.vertical.step-item-label-area {\n &.label-top {\n padding-top: 14px;\n }\n\n &.label-bottom {\n padding-bottom: 14px;\n }\n}\n\n.horizontal.step-item-label-area {\n &.label-top {\n padding-bottom: 14px;\n }\n\n &.label-bottom {\n padding-top: 14px;\n }\n}\n\n.step-item-container-vertical .step-item-content.label-right.last .step-item-indicator-area::after,\n.step-item-container-vertical .step-item-content.label-left.last .step-item-indicator-area::after,\n.step-item-container-horizontal .step-item-content.label-bottom.last .step-item-indicator-area::after {\n display: none;\n}\n\n.step-item-container-vertical .step-item-content.label-top .step-item-label-area,\n.step-item-container-vertical .step-item-content.label-bottom .step-item-label-area {\n flex-direction: column;\n align-items: center;\n}\n\n.step-item-container-horizontal::after {\n content: \"\";\n position: relative;\n height: 2px;\n background-color: var(--interactive);\n display: block;\n transform: translate(50%, 20px);\n z-index: -1;\n width: 100%;\n left: 0;\n bottom: 75%;\n}\n\n.step-item-container-horizontal.last::after,\n.step-item-container-horizontal.controller::after,\n.step-item-container-vertical.last::after {\n content: \"\";\n height: 0;\n display: none;\n}\n\n.step-item-container-horizontal .step-item-content.label-left.timeline.last::after {\n content: \"\";\n position: absolute;\n width: 160px;\n height: 2px;\n background-color: var(--interactive);\n display: inline-block;\n right: calc(100% - 80px);\n bottom: 50%;\n z-index: -1;\n}\n\n.content-type-br-icon {\n color: var(--interactive);\n font-size: 16px;\n font-weight: 900;\n}\n\n[data-active] .content-type-br-icon {\n color: var(--interactive);\n color: #fff;\n}\n\n.button-controller {\n width: 15px;\n height: 15px;\n}\n\n/* Desktops grandes (até 1440px) */\n@media (width <= 1440px) {\n .step-item-container-horizontal.label-left::after {\n width: 50%;\n left: 48%;\n bottom: 68%;\n }\n\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 58%;\n left: 48%;\n }\n}\n\n/* Laptops (até 1024px) */\n@media (width <= 1024px) {\n .step-item-container-horizontal.label-left::after {\n width: 34%;\n left: 58%;\n bottom: 68%;\n }\n\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\n }\n}\n\n/* Tablets (até 768px) */\n@media (width <= 768px) {\n .step-item-container-horizontal.label-left::after {\n width: 22%;\n left: 76%;\n bottom: 68%;\n }\n\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\n }\n}\n\n/* Celulares grandes (até 425px) */\n@media (width <= 425px) {\n .step-item-container-horizontal.label-left::after {\n width: 20%;\n left: 80%;\n bottom: 68%;\n }\n\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\n }\n}\n\n/* Celulares médios (até 375px) */\n@media (width <= 375px) {\n .step-item-container-horizontal.label-left::after {\n width: 18%;\n left: 82%;\n bottom: 68%;\n }\n\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\n }\n}\n\n/* Celulares pequenos (até 320px) */\n@media (width <= 320px) {\n .step-item-container-horizontal.label-left::after {\n width: 16%;\n left: 85%;\n bottom: 68%;\n }\n\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\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/step?tab=designer).\n *\n * @slot label-area - Slot para conteúdo customizado dentro do botão do item do step.\n *\n * @part item-container - Parte para o contêiner externo do item do step, usada para estilizar posicionamento e espaçamento via ::part().\n * @part item-content - Parte para o contêiner interno com indicador visual e label, usada para estilizar conteúdo via ::part().\n * @part label - Parte para o contêiner do texto da etapa, usada para estilizar tipografia e cor via ::part().\n *\n */\n@Component({\n tag: 'br-step-item',\n styleUrl: 'step-item.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class StepItem {\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: HTMLBrStepItemElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Propriedade que define o conteúdo do texto auxiliar de realce do item de Step.\n */\n @Prop({ reflect: true }) label: string = ''\n\n /**\n * Propriedade que define o tipo de ícone de destaque exibido pelo item Step, com quatro opções disponíveis: \"success\", \"info\", \"danger\" e \"warning\".\n */\n @Prop({ reflect: true }) highlight?: 'success' | 'info' | 'danger' | 'warning'\n\n /**\n * Propriedade que define se o item Step está com estado ativo.\n */\n @Prop({ reflect: true }) active: boolean = false\n\n /**\n * Propriedade que define se o item Step está com estado desativado..\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Propriedade Define o nome do ícone do componente BRIcon que será exibido como conteúdo do step item, propriedade funciona apenas quando o state contentType assume o valor br-icon.\n */\n @Prop({ reflect: true }) brIconName?: string = ''\n /**\n * Propriedade Define o nome do ícone o texto de acessibilidade apresentando quando o tipo de conteúdo for o br-icon\n */\n\n @Prop({ reflect: true }) brIconAria: string = ''\n\n @State() showTimeLine: boolean = false\n @State() stepItemPositionStatus: 'first' | 'middle' | 'last' = 'first'\n @State() stepLayout: 'horizontal' | 'vertical' = 'horizontal'\n @State() labelPosition: 'top' | 'right' | 'bottom' | 'left' = 'bottom'\n @State() contentType: 'default' | 'br-icon' | 'no-content' | 'slotted' = 'default'\n @State() mode: 'controller' | 'step' = 'step'\n @State() content: string = ''\n @State() ariaLabelContent: string = ''\n\n /**\n * Emite um evento após o componente ter sido carregado pela primeira vez.\n * Utilize este evento para realizar ações que devem ocorrer antes que o componente seja renderizado ou atualizado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brWillRender: EventEmitter<void>\n componentWillRender() {\n let accessibilityContent = ''\n let activeItem = ''\n if (this.contentType === 'slotted') {\n const slotedContent = this.el.lastElementChild\n accessibilityContent =\n this.label !== ''\n ? `passo ${this.content} ${slotedContent.textContent} ${this.label} ${this.highLightAriaLabel[this.highlight]}`\n : `passo ${this.content} ${slotedContent.textContent} ${this.highLightAriaLabel[this.highlight]}`\n this.ariaLabelContent = accessibilityContent\n return\n }\n if (this.contentType === 'br-icon') {\n accessibilityContent =\n `passo ${this.content} ` + this.brIconAria + this.label + this.highLightAriaLabel[this.highlight]\n activeItem = this.active === true ? accessibilityContent + ' selecionado' : accessibilityContent\n this.ariaLabelContent = activeItem\n return\n } else {\n accessibilityContent =\n this.label !== ''\n ? `passo ${this.content} ${this.label} ${this.highLightAriaLabel[this.highlight]}`\n : `passo ${this.content} ${this.highLightAriaLabel[this.highlight]}`\n activeItem = this.active === true ? accessibilityContent + ' selecionado' : accessibilityContent\n this.ariaLabelContent = activeItem\n }\n }\n\n /**\n * Emite um evento após o componente ter sido carregado pela primeira vez.\n * Utilize este evento para realizar ações que devem ocorrer antes que o componente seja renderizado ou atualizado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brDidRender: EventEmitter<void>\n componentDidRender() {\n const button = this.el.shadowRoot.getElementById('indicator-area').lastElementChild.shadowRoot\n if (button !== null) {\n button.lastElementChild.setAttribute('role', 'option')\n button.lastElementChild.setAttribute('aria-selected', `${this.active}`)\n button.lastElementChild.setAttribute('aria-label', this.ariaLabelContent)\n }\n }\n\n /**\n * Watch que observa o valor da propriedade active, e ao alterar seu valor este método altera o valor do campo de acessibilidade aria-selected\n */\n @Watch('active')\n watchItemIsActive(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue) {\n const button = this.el.shadowRoot.getElementById('indicator-area').lastElementChild.shadowRoot\n if (button !== null) {\n button.lastElementChild.setAttribute('aria-selected', `${this.active}`)\n }\n }\n }\n\n /**\n *\n * Método disponibilizado via api do elemento que indica a posição do step item, ele serve para setar o state stepItemPositionStatus do componente\n */\n @Method()\n async setStepItemPositionStatus(value: 'first' | 'middle' | 'last') {\n this.stepItemPositionStatus = value\n }\n\n /**\n * Método que define a orientação do stepItem e controla a exibição da linha do tempo após o componente.\n */\n @Method()\n async handleShowTimeLine(value: boolean, layout) {\n this.showTimeLine = value\n this.stepLayout = layout\n }\n\n /**\n *\n * Método disponibilizado via api do elemento que atribui o valor ao estado que define onde o label, o texto de destaque, irá ficar localizado\n */\n @Method()\n async setLabelPosition(value: 'top' | 'right' | 'bottom' | 'left') {\n this.labelPosition = value\n }\n\n /**\n *\n * Método disponibilizado via api do elemento que atribui o valor que irá definir o tipo de conteúdo apresentado dentro do componente stepItem\n */\n @Method()\n async setContentType(value: 'default' | 'br-icon' | 'no-content' | 'slotted') {\n this.contentType = value\n }\n\n /**\n *\n * Método disponibilizado via api do elemento que atribui o valor que irá definir o modo como o componente irá se comportar e exibir seu estilo.\n */\n @Method()\n async setMode(value: 'controller' | 'step') {\n this.mode = value\n }\n /**\n *\n * Método disponibilizado via api do elemento que atribui o valor que irá ser exibido dentro do componente stepItem\n */\n @Method()\n async setContent(value: string) {\n this.content = value\n }\n\n private getStepContainerClassMap(): CssClassMap {\n return {\n 'step-item-container-horizontal': this.stepLayout === 'horizontal',\n 'step-item-container-vertical': this.stepLayout === 'vertical',\n last: this.stepItemPositionStatus == 'last',\n 'label-top': this.labelPosition === 'top',\n 'label-left': this.labelPosition === 'left',\n 'label-right': this.labelPosition === 'right',\n 'label-bottom': this.labelPosition === 'bottom' && this.label !== '',\n controller: this.mode === 'controller',\n 'disabled-div': true,\n }\n }\n\n private getStepItemContentClassMap(): CssClassMap {\n return {\n 'step-item-content': true,\n 'label-bottom': this.labelPosition === 'bottom',\n 'label-top': this.labelPosition === 'top',\n 'label-left': this.labelPosition === 'left',\n 'label-right': this.labelPosition === 'right',\n timeline: this.showTimeLine === true,\n middle: this.stepItemPositionStatus === 'middle',\n first: this.stepItemPositionStatus === 'first',\n controller: this.mode === 'controller',\n }\n }\n\n private getStepItemIndicatorAreaClassMap(): CssClassMap {\n return {\n 'step-item-indicator-area': true,\n }\n }\n\n private getStepItemLabelAreaClassMap(): CssClassMap {\n return {\n 'step-item-label-area': true,\n vertical: this.stepLayout === 'vertical',\n horizontal: this.stepLayout === 'horizontal',\n 'label-bottom': this.labelPosition === 'bottom',\n 'label-top': this.labelPosition === 'top',\n 'label-left': this.labelPosition === 'left',\n 'label-right': this.labelPosition === 'right',\n 'no-label': this.label === '',\n }\n }\n\n private getHighlightClass(): CssClassMap {\n return {\n icon: true,\n success: this.highlight === 'success',\n info: this.highlight === 'info',\n warning: this.highlight === 'warning',\n danger: this.highlight === 'danger',\n 'no-content': this.contentType === 'no-content',\n }\n }\n\n private getStepItemIndicatorClass(): CssClassMap {\n return {\n 'step-button': true,\n controller: this.mode === 'controller',\n 'disabled-host': this.disabled,\n }\n }\n\n private highLightAriaLabel = {\n success: 'passo completo',\n info: 'passo com item informativo',\n warning: 'passo com alerta',\n danger: 'passo com erro',\n undefined: '',\n }\n\n private IconsName = {\n success: 'fa-check',\n info: 'fa-info-circle',\n warning: 'fa-exclamation-triangle',\n danger: 'fa-times',\n }\n\n render() {\n return (\n <Host>\n <div id=\"item-container\" part=\"item-container\" class={this.getStepContainerClassMap()}>\n <div id=\"item-content\" part=\"item-content\" class={this.getStepItemContentClassMap()}>\n <div id=\"indicator-area\" data-active={this.active} class={this.getStepItemIndicatorAreaClassMap()}>\n {this.mode === 'step' && this.highlight && (\n <div class={this.getHighlightClass()}>\n <br-icon\n icon-name={this.IconsName[this.highlight]}\n class={`${this.highlight === 'warning' && 'warning-color'}`}\n ></br-icon>\n </div>\n )}\n\n {this.mode === 'step' && (\n <br-button\n shape=\"circle\"\n emphasis=\"secondary\"\n isActive={this.active}\n aria-label={`Passo ${this.content || 'sem número'}`}\n class={this.getStepItemIndicatorClass()}\n >\n {this.contentType === 'no-content' && ''}\n {this.contentType === 'default' && this.content}\n {this.contentType === 'br-icon' && (\n <br-icon icon-name={this.brIconName} class={'content-type-br-icon'}></br-icon>\n )}\n {this.contentType === 'slotted' && <slot name={'content-area'}></slot>}\n </br-button>\n )}\n\n {this.mode === 'controller' && (\n <button\n data-active={this.active}\n class={'mode-controller'}\n aria-label={`Controlador do passo ${this.content || 'sem número'}`}\n ></button>\n )}\n </div>\n <div id=\"label-area\" part=\"label\" class={this.getStepItemLabelAreaClassMap()}>\n <span> {this.label} </span>\n </div>\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"br-step.br-step-item.entry.esm.js","sources":["../../packages/webcomponents/src/components/step/step.scss?tag=br-step&encapsulation=shadow","../../packages/webcomponents/src/components/step/step.tsx","../../packages/webcomponents/src/components/step/step-item/step-item.scss?tag=br-step-item&encapsulation=shadow","../../packages/webcomponents/src/components/step/step-item/step-item.tsx"],"sourcesContent":["@import \"../../../../../node_modules/@govbr-ds/core/src/components/step/step\";\n\n:host {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n\n .step-container {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n overflow: auto;\n flex-grow: 1;\n\n &:focus-visible {\n outline: var(--focus-width) var(--focus-style) var(--focus) var(--focus-offset);\n }\n }\n\n .horizontal {\n flex-direction: row;\n }\n\n .vertical {\n flex-direction: column;\n justify-content: center;\n\n &.label-right {\n align-items: start;\n padding-left: 20px;\n }\n\n &.label-left {\n align-items: start;\n padding-right: 20px;\n }\n }\n}\n\n::slotted([disabled]) {\n opacity: 1 !important;\n}\n\n::slotted(.linha) {\n width: 100px;\n height: 2px;\n display: flex;\n align-items: center;\n background-color: var(--interactive);\n}\n\n::slotted(*) {\n flex: 1;\n min-width: 0;\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} 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/step?tab=designer).\n *\n * @slot default - Slot para os itens do step (br-step-item), aceitando apenas esse componente.\n *\n * @part container - Parte para o contêiner principal envolvendo todos os step-items, usada para estilizar layout geral via ::part().\n *\n */\n@Component({\n tag: 'br-step',\n styleUrl: 'step.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Step {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrStepElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * propriedade responsável por definir a orientação do componente Step\n */\n @Prop({ reflect: true }) layout: 'horizontal' | 'vertical' = 'horizontal'\n /**\n *\n * define o passo que começará destacado\n */\n @Prop({ reflect: true }) initialStep: string = '0'\n /**\n *\n * Propriedade que define a posição onde o texto de destaque,label, ficará localizado no stepItem\n */\n @Prop({ reflect: true }) labelPosition?: 'top' | 'right' | 'bottom' | 'left' = 'bottom'\n /**\n *\n * Propriedade que define o tipo de conteúdo a ser exibido dentro do componente step e stepItem\n */\n @Prop({ reflect: true }) contentType: 'default' | 'br-icon' | 'no-content' | 'slotted' = 'default'\n /**\n *\n * Propriedade que define o tipo de comportamento que o componente Step deverá seguir\n */\n @Prop({ reflect: true }) mode: 'controller' | 'step' = 'step'\n\n /**\n *\n * Propriedade que define o tipo de progressão de etapas que o step vai executar\n */\n @Prop({ reflect: true }) progressionType: 'linear' | 'nonlinear' = 'nonlinear'\n\n @State() activeStep: number = 0\n @State() stepItems: Element[] = []\n /**\n * Emite um evento após o componente ter sido carregado pela primeira vez.\n * Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brDidLoad: EventEmitter<void>\n componentDidLoad() {\n this.setStepItemsLabelPosition()\n this.setStepItemsContentType()\n this.setStepItemsDefaultContent()\n this.setStepItemsMode(this.mode)\n if (this.mode === 'step') {\n this.configureTimeLine()\n }\n if (this.progressionType === 'linear') {\n this.configureLinearProgression()\n }\n if (this.activeStep <= this.stepItems.length - 1) {\n this.stepItems[this.activeStep].setAttribute('active', 'true')\n } else {\n console.warn('br-step initial-step attribute has value more than number of step-items provided')\n }\n this.brDidLoad.emit()\n }\n\n /**\n * Emite um evento antes do componente ser renderizado pela primeira vez, permitindo a preparação de dados ou inicializações necessárias.\n * Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdwillLoad) para mais detalhes.\n */\n @Event() brWillLoad: EventEmitter<void>\n componentWillLoad() {\n this.activeStep = Number(this.initialStep)\n this.getStepItemsElements()\n this.brWillLoad.emit()\n }\n\n /**\n * Emite um evento para indicar se o componente deve ser atualizado ou não.\n * Este evento é chamado antes de qualquer atualização do componente para decidir se a atualização deve prosseguir.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentshouldupdate) para mais detalhes.\n */\n @Event() brShouldUpdate: EventEmitter<void>\n\n /**\n * Emite um evento quando o step ativo muda.\n * O evento carrega o índice do novo step ativo (0-based).\n */\n @Event() brStepChange: EventEmitter<{ activeStep: number }>\n\n /** Controla atualizações pendentes para evitar race conditions */\n private updateScheduled = false\n\n componentShouldUpdate(newValue: number, oldValue: number, stateName: string) {\n if (stateName === 'activeStep' && oldValue !== newValue) {\n if (!this.updateScheduled) {\n this.updateScheduled = true\n requestAnimationFrame(() => {\n this.updateScheduled = false\n this.updateStepItemsActiveState(oldValue)\n })\n }\n this.brShouldUpdate.emit()\n this.brStepChange.emit({ activeStep: this.activeStep })\n }\n }\n\n /**\n * Atualiza os atributos 'active' dos step-items de forma segura\n * Chamado via requestAnimationFrame para garantir que o DOM é atualizado após batched state changes\n */\n private updateStepItemsActiveState(previousActiveStep: number) {\n const outOfRange = previousActiveStep > this.stepItems.length - 1\n\n if (!outOfRange) {\n this.stepItems[previousActiveStep].removeAttribute('active')\n }\n\n this.stepItems[this.activeStep].setAttribute('active', 'true')\n }\n\n /**\n * listener para ouvir o evento de click no componente step\n * Através desse listener o componente define qual será o proximo passo do step que terá o estado ativo\n */\n\n @Listen('click', { capture: true })\n handleClick(event) {\n const targetElement = event.target as Element\n if (targetElement.getAttribute('slot') !== null) {\n const slotItem = this.stepItems.findIndex((element) => element.lastElementChild === targetElement)\n this.activeStep = slotItem\n return\n }\n const item = this.stepItems.findIndex((element) => element === targetElement)\n this.activeStep = item\n }\n\n private getStepItemsElements() {\n const slotItems = Array.from(this.el.children)\n const firstChildrenContentTypeValue = slotItems[0].getAttribute('content-type')\n const childrenHaveConsistentContentType = slotItems.every(\n (item) => item.getAttribute('content-type') === firstChildrenContentTypeValue\n )\n const childrenHaveConsistentTagName = slotItems.every((item) => item.tagName.toLowerCase() === 'br-step-item')\n if (childrenHaveConsistentContentType && childrenHaveConsistentTagName) {\n this.stepItems = slotItems\n return\n }\n if (!childrenHaveConsistentTagName) {\n throw new Error('br-step component must have as child elements only br-step-items components')\n }\n if (!childrenHaveConsistentContentType) {\n throw new Error('br-step must have all child elements with same content type attribute value')\n }\n }\n\n private setStepItemsLabelPosition() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements) => {\n if (this.labelPosition !== undefined) {\n elements.setLabelPosition(this.labelPosition)\n }\n })\n }\n\n private setStepItemsDefaultContent() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n const indicatorContent = index + 1\n elements.setContent(indicatorContent.toString())\n })\n }\n\n private async setStepItemsContentType() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n await Promise.all(slotItems.map((element) => element.setContentType(this.contentType)))\n slotItems.forEach((elements, index) => {\n elements.setAttribute('aria-posinset', `${index + 1}`)\n elements.setAttribute('aria-setsize', `${slotItems.length}`)\n })\n }\n\n private setStepItemsMode(mode: 'controller' | 'step') {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements) => {\n if (mode === 'controller') {\n elements.setMode(this.mode)\n elements.setContentType('no-content')\n if (this.layout !== 'horizontal') {\n this.layout = 'horizontal'\n }\n elements.handleShowTimeLine(false, this.layout)\n elements.removeAttribute('label')\n }\n })\n }\n\n private getStepItemPosition(stepItemsElements: HTMLBrStepItemElement[], index) {\n if (index === 0) {\n return 'first'\n }\n if (index > 0 && index < stepItemsElements.length - 1) {\n return 'middle'\n }\n return 'last'\n }\n\n private configureTimeLine() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n const elementPosition = this.getStepItemPosition(slotItems, index)\n elements.setStepItemPositionStatus(elementPosition)\n elements.handleShowTimeLine(true, this.layout)\n })\n }\n\n private configureLinearProgression() {\n const slotItems = Array.from(this.el.getElementsByTagName('br-step-item'))\n slotItems.forEach((elements, index) => {\n if (index > 0) {\n elements.setAttribute('disabled', 'true')\n }\n })\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que controla o componente Step, responsável por avançar para o próximo passo e atualizar o valor do estado activeStep\n */\n @Method()\n async ProceedToNextStep() {\n if (this.activeStep + 1 < this.stepItems.length) {\n this.activeStep = this.activeStep + 1\n if (this.progressionType === 'linear') {\n this.stepItems[this.activeStep].removeAttribute('disabled')\n }\n }\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que controla o componente Step, responsável por retornar ao passo anterior e atualizar o valor do estado activeStep\n */\n @Method()\n async BackToPreviousStep() {\n if (this.activeStep - 1 >= 0) {\n this.activeStep = this.activeStep - 1\n }\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que integra um componente externo ao componente Step, permitindo sinalizar validações ou destacar a etapa com estado ativo.\n */\n @Method()\n async StepValidation(validationStatus: 'success' | 'info' | 'danger' | 'warning') {\n this.stepItems[this.activeStep].setAttribute('highlight', validationStatus)\n }\n\n /**\n *\n * Método disponibilizado via API do elemento que permite a um componente externo obter a etapa com o estado ativo do componente Step.\n */\n @Method()\n async GetActiveStep() {\n return this.activeStep\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-step': true,\n 'step-container': true,\n horizontal: this.layout === 'horizontal',\n vertical: this.layout === 'vertical',\n 'label-left': this.labelPosition === 'left',\n 'label-right': this.labelPosition === 'right',\n }\n }\n\n private AriaObjectContent = {\n step: 'Modo etapas ',\n controller: 'Modo controle ',\n default: 'passos com conteúdo numérico ',\n 'br-icon': 'passos com conteúdo que possuem icones ',\n slotted: 'passos com conteúdo customizados ',\n 'no-content': 'passos que apresentam conteúdo por meio de tooltip ',\n linear: 'progressão linear ',\n nonlinear: 'progressão não linear ',\n vertical: 'com layout vertical ',\n horizontal: 'com layout horizontal ',\n }\n\n private getAreaLabel(): string {\n let ariaLabel = ' Lista de Opções '\n if (this.mode !== 'controller') {\n ariaLabel +=\n this.AriaObjectContent[this.mode] +\n this.AriaObjectContent[this.contentType] +\n this.AriaObjectContent[this.progressionType] +\n this.AriaObjectContent[this.layout]\n } else {\n ariaLabel += this.AriaObjectContent[this.mode]\n }\n return ariaLabel\n }\n\n render() {\n return (\n <Host>\n {this.stepItems.length > 0 && (\n <div\n part=\"container\"\n role=\"listbox\"\n tabIndex={0}\n aria-orientation={this.layout}\n aria-label={this.getAreaLabel()}\n class={this.getCssClassMap()}\n >\n <slot></slot>\n </div>\n )}\n </Host>\n )\n }\n}\n",":host {\n display: flex;\n}\n\n.disabled-host {\n pointer-events: none;\n}\n\n.step-button {\n position: relative;\n z-index: 2;\n}\n\n.mode-controller {\n border: 1px solid var(--gray-20);\n width: 14px;\n height: 14px;\n cursor: pointer;\n border-radius: 50%;\n background-color: var(--gray-20);\n\n &:focus-visible {\n outline: var(--focus-width) var(--focus-style) var(--focus) var(--focus-offset);\n }\n\n &:hover {\n background-image: linear-gradient(\n rgb(var(--interactive-rgb), var(--hover)),\n rgb(var(--interactive-rgb), var(--hover))\n );\n }\n}\n\n[data-active].mode-controller {\n border: 1px solid var(--gray-20);\n background-color: var(--active);\n}\n\n.step-item-container-horizontal {\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n\n &.label-top::after {\n content: \"\";\n left: 0;\n bottom: 50%;\n }\n\n &.label-bottom::after {\n content: \"\";\n left: 0;\n bottom: 86%;\n }\n\n &.label-left::after {\n bottom: 68%;\n width: 70%;\n left: 26%;\n }\n\n &.label-right::after {\n bottom: 68%;\n width: 58%;\n left: 42%;\n }\n}\n\n.step-item-container-vertical {\n display: flex;\n flex-direction: row;\n max-width: max-content;\n\n &::after {\n content: \"\";\n position: relative;\n height: 100%;\n background-color: var(--interactive);\n display: block;\n transform: translate(50%, 20px);\n z-index: -1;\n width: 2px;\n right: 50%;\n }\n\n &.label-bottom::after {\n top: 50%;\n height: 70%;\n }\n\n &.label-top::after {\n top: 50%;\n height: 70%;\n }\n\n &.label-left::after {\n right: 16%;\n top: 12%;\n }\n\n &.label-right::after {\n top: 12%;\n right: 86%;\n }\n}\n\n.step-item-content {\n display: flex;\n position: relative;\n flex-grow: 1;\n margin: auto;\n min-height: 100px;\n min-width: 80px;\n justify-content: center;\n\n &.label-top {\n flex-direction: column-reverse;\n align-items: center;\n }\n\n &.label-bottom {\n flex-direction: column;\n align-items: center;\n }\n\n &.label-left {\n flex-direction: row-reverse;\n align-items: center;\n background-color: #fff;\n }\n\n &.label-right {\n flex-direction: row;\n align-items: center;\n background-color: #fff;\n }\n}\n\n.controller {\n display: flex;\n position: relative;\n flex-grow: 1;\n margin: 0 5px;\n min-height: unset;\n min-width: unset;\n}\n\n.step-item-container-vertical .step-item-content.label-right,\n.step-item-container-vertical .step-item-content.label-left {\n background-color: transparent;\n}\n\n.step-item-indicator-area {\n display: inline-block;\n position: relative;\n z-index: 1;\n\n .icon {\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n z-index: 4;\n border-radius: 50%;\n transform: translate(25px, -5px);\n color: white;\n font-size: 16px;\n font-weight: 900;\n width: 29px;\n height: 29px;\n }\n\n .icon.no-content {\n transform: translate(0, 0);\n width: 41px;\n height: 41px;\n }\n}\n\n[data-active].step-item-indicator-area .icon.no-content {\n transform: translate(5px, 5px);\n width: 30px;\n height: 30px;\n}\n\n.success {\n background-color: var(--success);\n}\n\n.info {\n background-color: var(--info);\n}\n\n.danger {\n background-color: var(--danger);\n}\n\n.warning {\n background-color: var(--warning);\n}\n\n.step-item-label-area {\n padding: 0;\n display: flex;\n\n &.label-left {\n padding: 0 14px;\n }\n\n &.label-right {\n padding: 0 14px;\n }\n}\n\n.step-item-label-area > span {\n font-size: var(--font-size-scale-up-01);\n // Permite que o wizard customize font-weight e color via CSS Custom Properties\n font-weight: var(--step-label-font-weight, var(--font-weight-medium));\n color: var(--step-label-color, var(--interactive));\n}\n\n.vertical.step-item-label-area {\n &.label-top {\n padding-top: 14px;\n }\n\n &.label-bottom {\n padding-bottom: 14px;\n }\n}\n\n.horizontal.step-item-label-area {\n &.label-top {\n padding-bottom: 14px;\n }\n\n &.label-bottom {\n padding-top: 14px;\n }\n}\n\n.step-item-container-vertical .step-item-content.label-right.last .step-item-indicator-area::after,\n.step-item-container-vertical .step-item-content.label-left.last .step-item-indicator-area::after,\n.step-item-container-horizontal .step-item-content.label-bottom.last .step-item-indicator-area::after {\n display: none;\n}\n\n.step-item-container-vertical .step-item-content.label-top .step-item-label-area,\n.step-item-container-vertical .step-item-content.label-bottom .step-item-label-area {\n flex-direction: column;\n align-items: center;\n}\n\n.step-item-container-horizontal::after {\n content: \"\";\n position: relative;\n height: 2px;\n background-color: var(--interactive);\n display: block;\n transform: translate(50%, 20px);\n z-index: -1;\n width: 100%;\n left: 0;\n bottom: 75%;\n}\n\n.step-item-container-horizontal.last::after,\n.step-item-container-horizontal.controller::after,\n.step-item-container-vertical.last::after {\n content: \"\";\n height: 0;\n display: none;\n}\n\n.step-item-container-horizontal .step-item-content.label-left.timeline.last::after {\n content: \"\";\n position: absolute;\n width: 160px;\n height: 2px;\n background-color: var(--interactive);\n display: inline-block;\n right: calc(100% - 80px);\n bottom: 50%;\n z-index: -1;\n}\n\n.content-type-br-icon {\n color: var(--interactive);\n font-size: 16px;\n font-weight: 900;\n}\n\n[data-active] .content-type-br-icon {\n color: var(--interactive);\n color: #fff;\n}\n\n.button-controller {\n width: 15px;\n height: 15px;\n}\n\n/* Desktops grandes (até 1440px) */\n@media (width <= 1440px) {\n .step-item-container-horizontal.label-left::after {\n width: 50%;\n left: 48%;\n bottom: 68%;\n }\n\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 58%;\n left: 48%;\n }\n}\n\n/* Laptops (até 1024px) */\n@media (width <= 1024px) {\n .step-item-container-horizontal.label-left::after {\n width: 34%;\n left: 58%;\n bottom: 68%;\n }\n\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\n }\n}\n\n/* Tablets (até 768px) */\n@media (width <= 768px) {\n .step-item-container-horizontal.label-left::after {\n width: 22%;\n left: 76%;\n bottom: 68%;\n }\n\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\n }\n}\n\n/* Celulares grandes (até 425px) */\n@media (width <= 425px) {\n .step-item-container-horizontal.label-left::after {\n width: 20%;\n left: 80%;\n bottom: 68%;\n }\n\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\n }\n}\n\n/* Celulares médios (até 375px) */\n@media (width <= 375px) {\n .step-item-container-horizontal.label-left::after {\n width: 18%;\n left: 82%;\n bottom: 68%;\n }\n\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\n }\n}\n\n/* Celulares pequenos (até 320px) */\n@media (width <= 320px) {\n .step-item-container-horizontal.label-left::after {\n width: 16%;\n left: 85%;\n bottom: 68%;\n }\n\n .step-item-container-horizontal.label-right::after {\n bottom: 68%;\n width: 36%;\n left: 72%;\n }\n\n .step-item-container-vertical.label-top::after {\n top: 50%;\n height: 50%;\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/step?tab=designer).\n *\n * @slot label-area - Slot para conteúdo customizado dentro do botão do item do step.\n *\n * @part item-container - Parte para o contêiner externo do item do step, usada para estilizar posicionamento e espaçamento via ::part().\n * @part item-content - Parte para o contêiner interno com indicador visual e label, usada para estilizar conteúdo via ::part().\n * @part label - Parte para o contêiner do texto da etapa, usada para estilizar tipografia e cor via ::part().\n *\n */\n@Component({\n tag: 'br-step-item',\n styleUrl: 'step-item.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class StepItem {\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: HTMLBrStepItemElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Propriedade que define o conteúdo do texto auxiliar de realce do item de Step.\n */\n @Prop({ reflect: true }) label: string = ''\n\n /**\n * Propriedade que define o tipo de ícone de destaque exibido pelo item Step, com quatro opções disponíveis: \"success\", \"info\", \"danger\" e \"warning\".\n */\n @Prop({ reflect: true }) highlight?: 'success' | 'info' | 'danger' | 'warning'\n\n /**\n * Propriedade que define se o item Step está com estado ativo.\n */\n @Prop({ reflect: true }) active: boolean = false\n\n /**\n * Propriedade que define se o item Step está com estado desativado..\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Propriedade Define o nome do ícone do componente BRIcon que será exibido como conteúdo do step item, propriedade funciona apenas quando o state contentType assume o valor br-icon.\n */\n @Prop({ reflect: true }) brIconName?: string = ''\n /**\n * Propriedade Define o nome do ícone o texto de acessibilidade apresentando quando o tipo de conteúdo for o br-icon\n */\n\n @Prop({ reflect: true }) brIconAria: string = ''\n\n @State() showTimeLine: boolean = false\n @State() stepItemPositionStatus: 'first' | 'middle' | 'last' = 'first'\n @State() stepLayout: 'horizontal' | 'vertical' = 'horizontal'\n @State() labelPosition: 'top' | 'right' | 'bottom' | 'left' = 'bottom'\n @State() contentType: 'default' | 'br-icon' | 'no-content' | 'slotted' = 'default'\n @State() mode: 'controller' | 'step' = 'step'\n @State() content: string = ''\n @State() ariaLabelContent: string = ''\n\n /**\n * Emite um evento após o componente ter sido carregado pela primeira vez.\n * Utilize este evento para realizar ações que devem ocorrer antes que o componente seja renderizado ou atualizado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brWillRender: EventEmitter<void>\n componentWillRender() {\n let accessibilityContent = ''\n let activeItem = ''\n if (this.contentType === 'slotted') {\n const slotedContent = this.el.lastElementChild\n accessibilityContent =\n this.label !== ''\n ? `passo ${this.content} ${slotedContent.textContent} ${this.label} ${this.highLightAriaLabel[this.highlight]}`\n : `passo ${this.content} ${slotedContent.textContent} ${this.highLightAriaLabel[this.highlight]}`\n this.ariaLabelContent = accessibilityContent\n return\n }\n if (this.contentType === 'br-icon') {\n accessibilityContent =\n `passo ${this.content} ` + this.brIconAria + this.label + this.highLightAriaLabel[this.highlight]\n activeItem = this.active === true ? accessibilityContent + ' selecionado' : accessibilityContent\n this.ariaLabelContent = activeItem\n return\n } else {\n accessibilityContent =\n this.label !== ''\n ? `passo ${this.content} ${this.label} ${this.highLightAriaLabel[this.highlight]}`\n : `passo ${this.content} ${this.highLightAriaLabel[this.highlight]}`\n activeItem = this.active === true ? accessibilityContent + ' selecionado' : accessibilityContent\n this.ariaLabelContent = activeItem\n }\n }\n\n /**\n * Emite um evento após o componente ter sido carregado pela primeira vez.\n * Utilize este evento para realizar ações que devem ocorrer antes que o componente seja renderizado ou atualizado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brDidRender: EventEmitter<void>\n componentDidRender() {\n const button = this.el.shadowRoot.getElementById('indicator-area').lastElementChild.shadowRoot\n if (button !== null) {\n button.lastElementChild.setAttribute('role', 'option')\n button.lastElementChild.setAttribute('aria-selected', `${this.active}`)\n button.lastElementChild.setAttribute('aria-label', this.ariaLabelContent)\n }\n }\n\n /**\n * Watch que observa o valor da propriedade active, e ao alterar seu valor este método altera o valor do campo de acessibilidade aria-selected\n */\n @Watch('active')\n watchItemIsActive(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue) {\n const button = this.el.shadowRoot.getElementById('indicator-area').lastElementChild.shadowRoot\n if (button !== null) {\n button.lastElementChild.setAttribute('aria-selected', `${this.active}`)\n }\n }\n }\n\n /**\n *\n * Método disponibilizado via api do elemento que indica a posição do step item, ele serve para setar o state stepItemPositionStatus do componente\n */\n @Method()\n async setStepItemPositionStatus(value: 'first' | 'middle' | 'last') {\n this.stepItemPositionStatus = value\n }\n\n /**\n * Método que define a orientação do stepItem e controla a exibição da linha do tempo após o componente.\n */\n @Method()\n async handleShowTimeLine(value: boolean, layout) {\n this.showTimeLine = value\n this.stepLayout = layout\n }\n\n /**\n *\n * Método disponibilizado via api do elemento que atribui o valor ao estado que define onde o label, o texto de destaque, irá ficar localizado\n */\n @Method()\n async setLabelPosition(value: 'top' | 'right' | 'bottom' | 'left') {\n this.labelPosition = value\n }\n\n /**\n *\n * Método disponibilizado via api do elemento que atribui o valor que irá definir o tipo de conteúdo apresentado dentro do componente stepItem\n */\n @Method()\n async setContentType(value: 'default' | 'br-icon' | 'no-content' | 'slotted') {\n this.contentType = value\n }\n\n /**\n *\n * Método disponibilizado via api do elemento que atribui o valor que irá definir o modo como o componente irá se comportar e exibir seu estilo.\n */\n @Method()\n async setMode(value: 'controller' | 'step') {\n this.mode = value\n }\n /**\n *\n * Método disponibilizado via api do elemento que atribui o valor que irá ser exibido dentro do componente stepItem\n */\n @Method()\n async setContent(value: string) {\n this.content = value\n }\n\n private getStepContainerClassMap(): CssClassMap {\n return {\n 'step-item-container-horizontal': this.stepLayout === 'horizontal',\n 'step-item-container-vertical': this.stepLayout === 'vertical',\n last: this.stepItemPositionStatus == 'last',\n 'label-top': this.labelPosition === 'top',\n 'label-left': this.labelPosition === 'left',\n 'label-right': this.labelPosition === 'right',\n 'label-bottom': this.labelPosition === 'bottom' && this.label !== '',\n controller: this.mode === 'controller',\n 'disabled-div': true,\n }\n }\n\n private getStepItemContentClassMap(): CssClassMap {\n return {\n 'step-item-content': true,\n 'label-bottom': this.labelPosition === 'bottom',\n 'label-top': this.labelPosition === 'top',\n 'label-left': this.labelPosition === 'left',\n 'label-right': this.labelPosition === 'right',\n timeline: this.showTimeLine === true,\n middle: this.stepItemPositionStatus === 'middle',\n first: this.stepItemPositionStatus === 'first',\n controller: this.mode === 'controller',\n }\n }\n\n private getStepItemIndicatorAreaClassMap(): CssClassMap {\n return {\n 'step-item-indicator-area': true,\n }\n }\n\n private getStepItemLabelAreaClassMap(): CssClassMap {\n return {\n 'step-item-label-area': true,\n vertical: this.stepLayout === 'vertical',\n horizontal: this.stepLayout === 'horizontal',\n 'label-bottom': this.labelPosition === 'bottom',\n 'label-top': this.labelPosition === 'top',\n 'label-left': this.labelPosition === 'left',\n 'label-right': this.labelPosition === 'right',\n 'no-label': this.label === '',\n }\n }\n\n private getHighlightClass(): CssClassMap {\n return {\n icon: true,\n success: this.highlight === 'success',\n info: this.highlight === 'info',\n warning: this.highlight === 'warning',\n danger: this.highlight === 'danger',\n 'no-content': this.contentType === 'no-content',\n }\n }\n\n private getStepItemIndicatorClass(): CssClassMap {\n return {\n 'step-button': true,\n controller: this.mode === 'controller',\n 'disabled-host': this.disabled,\n }\n }\n\n private highLightAriaLabel = {\n success: 'passo completo',\n info: 'passo com item informativo',\n warning: 'passo com alerta',\n danger: 'passo com erro',\n undefined: '',\n }\n\n private IconsName = {\n success: 'fa-check',\n info: 'fa-info-circle',\n warning: 'fa-exclamation-triangle',\n danger: 'fa-times',\n }\n\n render() {\n return (\n <Host>\n <div id=\"item-container\" part=\"item-container\" class={this.getStepContainerClassMap()}>\n <div id=\"item-content\" part=\"item-content\" class={this.getStepItemContentClassMap()}>\n <div id=\"indicator-area\" data-active={this.active} class={this.getStepItemIndicatorAreaClassMap()}>\n {this.mode === 'step' && this.highlight && (\n <div class={this.getHighlightClass()}>\n <br-icon\n icon-name={this.IconsName[this.highlight]}\n class={`${this.highlight === 'warning' && 'warning-color'}`}\n ></br-icon>\n </div>\n )}\n\n {this.mode === 'step' && (\n <br-button\n shape=\"circle\"\n emphasis=\"secondary\"\n isActive={this.active}\n aria-label={`Passo ${this.content || 'sem número'}`}\n class={this.getStepItemIndicatorClass()}\n >\n {this.contentType === 'no-content' && ''}\n {this.contentType === 'default' && this.content}\n {this.contentType === 'br-icon' && (\n <br-icon icon-name={this.brIconName} class={'content-type-br-icon'}></br-icon>\n )}\n {this.contentType === 'slotted' && <slot name={'content-area'}></slot>}\n </br-button>\n )}\n\n {this.mode === 'controller' && (\n <button\n data-active={this.active}\n class={'mode-controller'}\n aria-label={`Controlador do passo ${this.content || 'sem número'}`}\n ></button>\n )}\n </div>\n <div id=\"label-area\" part=\"label\" class={this.getStepItemLabelAreaClassMap()}>\n <span> {this.label} </span>\n </div>\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"br-switch.entry.esm.js","sources":["../../packages/webcomponents/src/components/switch/switch.scss?tag=br-switch&encapsulation=shadow","../../packages/webcomponents/src/components/switch/switch.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/switch/switch\";\n\n:host {\n display: inline-block;\n}\n\n:host([disabled]) .br-switch,\n:host([disabled]) .br-switch label,\n:host([disabled]) .br-switch input {\n cursor: not-allowed;\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } 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/switch?tab=designer).\n *\n * @slot default - Slot para o rótulo do switch, com prioridade sobre a propriedade label.\n */\n@Component({\n tag: 'br-switch',\n styleUrl: 'switch.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Switch {\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: HTMLBrSwitchElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Desativa o switch, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: 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; gerado automaticamente quando omitido.\n */\n @Prop({ reflect: true }) readonly customId: string = Helpers.generateUniqueId('br-switch')\n\n /**\n * Texto descritivo.\n * Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.\n */\n @Prop() readonly label: string\n\n /**\n * Posição do rótulo em relação ao switch.\n */\n @Prop({ reflect: true }) readonly labelPosition: 'right' | 'left' | 'top' = 'left'\n\n /**\n * Texto exibido quando o switch está ativado.\n */\n @Prop({ reflect: true }) readonly labelOn: string\n\n /**\n * Texto exibido quando o switch está desativado.\n */\n @Prop({ reflect: true }) readonly labelOff: string\n\n /**\n * Adiciona um ícone ao switch para indicar a mudança de estado.\n */\n @Prop({ reflect: true }) readonly hasIcon: boolean = false\n\n /**\n * Define o nome do switch, que é utilizado para agrupar switches 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 * Define o valor associado ao switch quando ele faz parte de um formulário nativo (`<form>`).\n * Esse valor é enviado com o formulário quando o switch está selecionado.\n * **Nota:** Esta propriedade não deve ser utilizada para determinar se o switch está selecionado; para verificar o estado de seleção, use a propriedade `checked`.\n */\n @Prop({ reflect: true }) readonly value: string\n\n /** O ajuste da densidade consiste em aumentar ou reduzir a área de interação do switch. Quanto menor for a densidade, maior a área de interação. */\n @Prop({ reflect: true }) readonly density: 'large' | 'medium' | 'small' = 'medium'\n\n // Propriedade interna para verificar a presença de conteúdo no slot default\n @State() _slotDefault: boolean = false\n\n componentWillLoad() {\n this._hasSlotContentDefault()\n }\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n @Event() checkedChange: EventEmitter<boolean>\n private _hasSlotContentDefault(): void {\n this._slotDefault = this.el.innerHTML !== ''\n }\n\n /**\n * Determina o texto a ser usado para acessibilidade quando não há label visível\n */\n private getAccessibilityLabel(): string {\n const hostAriaLabel = this.el.getAttribute('aria-label')\n\n if (hostAriaLabel && hostAriaLabel.trim() !== '') {\n return hostAriaLabel\n }\n\n if (this.label && this.label.trim() !== '') {\n return this.label\n }\n\n if (\n typeof this.labelOn === 'string' &&\n this.labelOn.trim() !== '' &&\n typeof this.labelOff === 'string' &&\n this.labelOff.trim() !== ''\n ) {\n return `Alternar entre ${this.labelOff} e ${this.labelOn}`\n }\n\n return 'Alternar seleção'\n }\n\n private readonly handleCheckedChange = (event: Event) => {\n this.checked = (event.target as HTMLInputElement).checked\n this.checkedChange.emit(this.checked)\n }\n\n private readonly handleClick = (event: Event) => {\n event.stopPropagation()\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 * Verifica se o componente tem texto visível (via slot ou label)\n */\n private hasVisibleText(): boolean {\n return this._slotDefault || (this.label !== undefined && this.label !== null && this.label.trim() !== '')\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-switch': true,\n icon: this.hasIcon,\n top: this.labelPosition === 'top',\n right: this.labelPosition === 'right',\n large: this.density === 'large',\n small: this.density === 'small',\n }\n }\n\n render() {\n const hasVisibleText = this.hasVisibleText()\n\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n <input\n id={this.customId}\n type=\"checkbox\"\n name={this.name}\n checked={this.checked}\n disabled={this.disabled}\n role=\"switch\"\n aria-checked={this.checked ? 'true' : 'false'}\n onChange={this.handleCheckedChange}\n onClick={this.handleClick}\n {...(!hasVisibleText ? { 'aria-label': this.getAccessibilityLabel() } : {})}\n />\n <label htmlFor={this.customId}>{this._slotDefault ? <slot></slot> : this.label || ''}</label>\n {this.labelOn && this.labelOff && (\n <div class=\"switch-data\" data-enabled={this.labelOn} data-disabled={this.labelOff} aria-hidden=\"true\"></div>\n )}\n </div>\n </Host>\n )\n }\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"br-switch.entry.esm.js","sources":["../../packages/webcomponents/src/components/switch/switch.scss?tag=br-switch&encapsulation=shadow","../../packages/webcomponents/src/components/switch/switch.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/switch/switch\";\n\n:host {\n display: inline-block;\n}\n\n:host([disabled]) .br-switch,\n:host([disabled]) .br-switch label,\n:host([disabled]) .br-switch input {\n cursor: not-allowed;\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } 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/switch?tab=designer).\n *\n * @slot default - Slot para o rótulo do switch, com prioridade sobre a propriedade label.\n */\n@Component({\n tag: 'br-switch',\n styleUrl: 'switch.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Switch {\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: HTMLBrSwitchElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Desativa o switch, tornando-o não interativo.\n */\n @Prop({ reflect: true }) readonly disabled: 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; gerado automaticamente quando omitido.\n */\n @Prop({ reflect: true }) readonly customId: string = Helpers.generateUniqueId('br-switch')\n\n /**\n * Texto descritivo.\n * Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.\n */\n @Prop() readonly label: string\n\n /**\n * Posição do rótulo em relação ao switch.\n */\n @Prop({ reflect: true }) readonly labelPosition: 'right' | 'left' | 'top' = 'left'\n\n /**\n * Texto exibido quando o switch está ativado.\n */\n @Prop({ reflect: true }) readonly labelOn: string\n\n /**\n * Texto exibido quando o switch está desativado.\n */\n @Prop({ reflect: true }) readonly labelOff: string\n\n /**\n * Adiciona um ícone ao switch para indicar a mudança de estado.\n */\n @Prop({ reflect: true }) readonly hasIcon: boolean = false\n\n /**\n * Define o nome do switch, que é utilizado para agrupar switches 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 * Define o valor associado ao switch quando ele faz parte de um formulário nativo (`<form>`).\n * Esse valor é enviado com o formulário quando o switch está selecionado.\n * **Nota:** Esta propriedade não deve ser utilizada para determinar se o switch está selecionado; para verificar o estado de seleção, use a propriedade `checked`.\n */\n @Prop({ reflect: true }) readonly value: string\n\n /** O ajuste da densidade consiste em aumentar ou reduzir a área de interação do switch. Quanto menor for a densidade, maior a área de interação. */\n @Prop({ reflect: true }) readonly density: 'large' | 'medium' | 'small' = 'medium'\n\n // Propriedade interna para verificar a presença de conteúdo no slot default\n @State() _slotDefault: boolean = false\n\n componentWillLoad() {\n this._hasSlotContentDefault()\n }\n\n /**\n * Disparado depois que o valor do `checked` foi alterado\n */\n @Event() checkedChange: EventEmitter<boolean>\n private _hasSlotContentDefault(): void {\n this._slotDefault = this.el.innerHTML !== ''\n }\n\n /**\n * Determina o texto a ser usado para acessibilidade quando não há label visível\n */\n private getAccessibilityLabel(): string {\n const hostAriaLabel = this.el.getAttribute('aria-label')\n\n if (hostAriaLabel && hostAriaLabel.trim() !== '') {\n return hostAriaLabel\n }\n\n if (this.label && this.label.trim() !== '') {\n return this.label\n }\n\n if (\n typeof this.labelOn === 'string' &&\n this.labelOn.trim() !== '' &&\n typeof this.labelOff === 'string' &&\n this.labelOff.trim() !== ''\n ) {\n return `Alternar entre ${this.labelOff} e ${this.labelOn}`\n }\n\n return 'Alternar seleção'\n }\n\n private readonly handleCheckedChange = (event: Event) => {\n this.checked = (event.target as HTMLInputElement).checked\n this.checkedChange.emit(this.checked)\n }\n\n private readonly handleClick = (event: Event) => {\n event.stopPropagation()\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 * Verifica se o componente tem texto visível (via slot ou label)\n */\n private hasVisibleText(): boolean {\n return this._slotDefault || (this.label !== undefined && this.label !== null && this.label.trim() !== '')\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-switch': true,\n icon: this.hasIcon,\n top: this.labelPosition === 'top',\n right: this.labelPosition === 'right',\n large: this.density === 'large',\n small: this.density === 'small',\n }\n }\n\n render() {\n const hasVisibleText = this.hasVisibleText()\n\n return (\n <Host>\n <div class={this.getCssClassMap()}>\n <input\n id={this.customId}\n type=\"checkbox\"\n name={this.name}\n checked={this.checked}\n disabled={this.disabled}\n role=\"switch\"\n aria-checked={this.checked ? 'true' : 'false'}\n onChange={this.handleCheckedChange}\n onClick={this.handleClick}\n {...(!hasVisibleText ? { 'aria-label': this.getAccessibilityLabel() } : {})}\n />\n <label htmlFor={this.customId}>{this._slotDefault ? <slot></slot> : this.label || ''}</label>\n {this.labelOn && this.labelOff && (\n <div class=\"switch-data\" data-enabled={this.labelOn} data-disabled={this.labelOff} aria-hidden=\"true\"></div>\n )}\n </div>\n </Host>\n )\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"br-textarea.entry.esm.js","sources":["../../packages/webcomponents/src/components/textarea/textarea.scss?tag=br-textarea&encapsulation=shadow","../../packages/webcomponents/src/components/textarea/textarea.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/textarea/textarea\";\n\n:host {\n display: inline-block;\n vertical-align: top;\n box-sizing: border-box;\n font-family: Rawline, Raleway, sans-serif;\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 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"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"br-textarea.entry.esm.js","sources":["../../packages/webcomponents/src/components/textarea/textarea.scss?tag=br-textarea&encapsulation=shadow","../../packages/webcomponents/src/components/textarea/textarea.tsx"],"sourcesContent":["@import \"~@govbr-ds/core/src/components/textarea/textarea\";\n\n:host {\n display: inline-block;\n vertical-align: top;\n box-sizing: border-box;\n font-family: Rawline, Raleway, sans-serif;\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 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"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"br-tooltip.entry.esm.js","sources":["../../packages/webcomponents/src/components/tooltip/tooltip.scss?tag=br-tooltip&encapsulation=shadow","../../packages/webcomponents/src/components/tooltip/tooltip.tsx"],"sourcesContent":[":host {\n display: inline-block;\n position: relative;\n}\n\n.br-tooltip {\n .content {\n display: none;\n border-radius: 4px;\n box-shadow: var(--surface-offset-xl) var(--surface-offset-xl) var(--surface-offset-xl) rgb(0 0 0 / 16%);\n color: var(--pure-0);\n font-size: var(--font-size-scale-down-01);\n font-weight: var(--font-weight-regular);\n width: max-content;\n position: absolute;\n left: 0;\n top: 0;\n text-align: center;\n z-index: 4;\n\n &.small {\n padding: var(--spacing-scale-base) var(--spacing-scale-base);\n }\n\n &.medium {\n padding: var(--spacing-scale-baseh) var(--spacing-scale-baseh);\n }\n\n &.large {\n padding: var(--spacing-scale-2x) var(--spacing-scale-2x);\n }\n\n &.is-visible {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n &.popover {\n br-button {\n align-self: flex-start;\n margin-left: var(--spacing-scale-half);\n }\n }\n\n &:focus-visible {\n outline: var(--focus) var(--focus-style) var(--focus-width);\n outline-offset: var(--focus-offset);\n }\n }\n\n .arrow {\n position: absolute;\n width: 8px;\n height: 8px;\n transform: rotate(45deg);\n }\n\n .content,\n .arrow {\n &.info {\n background-color: var(--blue-warm-vivid-60);\n\n br-button::part(button) {\n color: var(--pure-0);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--pure-0-rgb), var(--hover)), rgb(var(--pure-0-rgb), var(--hover)));\n }\n }\n\n &.warning {\n background-color: var(--yellow-vivid-20);\n color: var(--gray-80);\n\n br-button::part(button) {\n color: var(--gray-80);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--gray-80-rgb), var(--hover)), rgb(var(--gray-80-rgb), var(--hover)));\n }\n }\n\n &.error {\n background-color: var(--red-vivid-50);\n\n br-button::part(button) {\n color: var(--pure-0);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--pure-0-rgb), var(--hover)), rgb(var(--pure-0-rgb), var(--hover)));\n }\n }\n\n &.success {\n background-color: var(--green-cool-vivid-50);\n\n br-button::part(button) {\n color: var(--pure-0);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--pure-0-rgb), var(--hover)), rgb(var(--pure-0-rgb), var(--hover)));\n }\n }\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 Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport { FloatingUIManager } from '../../utils/floating-ui'\nimport Helpers from '../../utils/helpers'\nimport { CssClassMap } from '../../utils/interfaces'\n\ntype TooltipPosition = 'top' | 'bottom' | 'left' | 'right'\ntype TooltipType = 'standard' | 'popover'\ntype TooltipDensity = 'large' | 'medium' | 'small'\ntype TooltipState = 'info' | 'warning' | 'error' | 'success'\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/tooltip?tab=designer).\n *\n * @slot trigger - Slot para o elemento que aciona a exibição do tooltip.\n * @slot content - Slot para o conteúdo exibido no tooltip.\n */\n@Component({\n tag: 'br-tooltip',\n styleUrl: 'tooltip.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Tooltip {\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: HTMLBrTooltipElement\n\n /**\n * Referência ao elemento Internals do componente.\n * O elemento Internals fornece uma interface para acessar e manipular o estado interno do componente.\n * Isso é útil para componentes que precisam se integrar com o sistema de formulários nativo do navegador.\n */\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Identificador único do tooltip; gerado automaticamente quando omitido.\n */\n @Prop({ reflect: true }) customId: string = Helpers.generateUniqueId()\n\n /**\n * Posição do tooltip em relação ao acionador.\n */\n @Prop({ reflect: true }) position: TooltipPosition = 'top'\n\n /**\n * Tipo do tooltip: 'standard' (simples) ou 'popover' (mais rico, com fechamento por interação).\n */\n @Prop({ reflect: true }) type: TooltipType = 'standard'\n\n /**\n * Densidade do tooltip: controla compacidade do conteúdo.\n */\n @Prop({ reflect: true }) density: TooltipDensity = 'medium'\n\n /**\n * Estado visual do tooltip: 'info', 'warning', 'error' ou 'success'.\n */\n @Prop({ reflect: true }) state: TooltipState = 'info'\n\n /**\n * Exibe automaticamente sem interação quando true; caso contrário, depende do acionador.\n */\n @Prop({ reflect: true }) isAutoVisible: boolean = false\n\n /**\n * Atraso em milissegundos antes de exibir.\n */\n @Prop({ reflect: true }) showDelay: number = null\n\n /**\n * Atraso em milissegundos antes de ocultar.\n */\n @Prop({ reflect: true }) hideDelay: number = null\n\n /**\n * Estado interno de visibilidade do tooltip.\n */\n @State() isVisible: boolean = false\n\n /**\n * Indica se o conteúdo do trigger é focável.\n * Se for false, o wrapper do trigger receberá tabindex=\"0\".\n */\n @State() private hasFocusableTrigger: boolean = false\n\n /**\n * Watcher para monitorar alterações na propriedade `isVisible`.\n * @param visible boolean\n * @returns void\n */\n @Watch('isVisible')\n handleVisibilityChange(visible: boolean) {\n if (this.contentElement == null) return\n\n if (visible) {\n this.positionTooltip()\n this.brDidOpen.emit({ id: this.customId, visible: true })\n } else {\n this.clearAutoUpdate?.()\n this.clearAutoUpdate = undefined\n this.brDidClose.emit({ id: this.customId, visible: false })\n }\n }\n\n /**\n * Emitido quando o tooltip abre.\n */\n @Event({\n eventName: 'brDidOpen',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n brDidOpen: EventEmitter<{ id: string; visible: boolean }>\n\n /**\n * Emitido quando o tooltip fecha.\n */\n @Event({\n eventName: 'brDidClose',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n brDidClose: EventEmitter<{ id: string; visible: boolean }>\n\n /**\n * Exibe o tooltip quando o acionador recebe foco.\n */\n @Listen('focusin')\n handleFocusIn() {\n if (!this.fromPointerDown) {\n this.showContent()\n }\n this.fromPointerDown = false\n }\n\n /**\n * Oculta o tooltip quando o acionador perde foco.\n */\n @Listen('focusout')\n handleFocusOut() {\n this.hideContent()\n }\n\n /**\n * Fecha com Escape quando o documento recebe a tecla.\n */\n @Listen('keydown', { target: 'document' })\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault()\n this.hideContent()\n this.triggerElement?.focus()\n }\n }\n\n private floatingManager: FloatingUIManager\n\n /**\n * Elemento que aciona a exibição do tooltip.\n * Este elemento é referenciado para garantir que o tooltip seja posicionado corretamente em relação a ele.\n */\n private triggerElement: HTMLDivElement\n\n /**\n * Elemento que contém o conteúdo do tooltip.\n * Este elemento é referenciado para garantir que o tooltip seja posicionado corretamente em relação a ele.\n */\n private contentElement: HTMLDivElement\n\n /**\n * Elemento que representa a seta do tooltip.\n * Este elemento é utilizado para indicar a direção do tooltip em relação ao elemento acionador.\n */\n private arrowElement: HTMLDivElement\n\n /**\n * Função de limpeza para atualizar a posição do tooltip automaticamente.\n * Esta função é chamada quando o tooltip não está mais visível ou quando o componente é desconectado.\n * Isso garante que o tooltip não consuma recursos desnecessários quando não estiver em uso.\n */\n private clearAutoUpdate: () => void\n\n /**\n * Tempo limite para exibir o tooltip automaticamente.\n */\n private showTimer: ReturnType<typeof setTimeout>\n\n /**\n * Tempo limite para ocultar o tooltip.\n */\n private hideTimer: ReturnType<typeof setTimeout>\n\n /**\n * Indica se o tooltip foi acionado por um clique do mouse.\n * Isso é utilizado para evitar conflito com o acionamento por foco.\n */\n private fromPointerDown: boolean = false\n\n /**\n * Verifica se um elemento HTML é focável.\n * @param element HTMLElement a ser verificado\n * @returns boolean\n */\n private isFocusable(element: HTMLElement): boolean {\n if (!element || element.nodeType !== 1) return false\n\n // Verifica o atributo tabindex\n if (element.hasAttribute('tabindex')) {\n const index = parseInt(element.getAttribute('tabindex'), 10)\n return !isNaN(index) && index >= 0\n }\n\n // Verifica elementos interativos padrão\n const tag = element.tagName.toLowerCase()\n const interactiveTags = ['button', 'input', 'select', 'textarea', 'a']\n\n if (interactiveTags.includes(tag)) {\n if (tag === 'a') return element.hasAttribute('href')\n return !(element as any).disabled\n }\n\n return false\n }\n\n /**\n * Manipula a mudança no slot do trigger para verificar se há conteúdo focável.\n * @param event Evento de mudança do slot\n */\n private handleTriggerSlotChange = (event: Event) => {\n const slot = event.target as HTMLSlotElement\n const assignedNodes = slot.assignedNodes({ flatten: true })\n\n this.hasFocusableTrigger = assignedNodes.some((node) => {\n return node.nodeType === 1 && this.isFocusable(node as HTMLElement)\n })\n }\n\n /**\n * Controla a exibição do tooltip.\n * Quando o tooltip é exibido, ele é posicionado em relação ao elemento acionador.\n * Isso é feito utilizando a biblioteca Floating UI, que calcula a posição ideal do tooltip com base no espaço disponível na tela.\n * A função `autoUpdate` é utilizada para atualizar automaticamente a posição do tooltip quando o elemento acionador é movido ou redimensionado.\n */\n private positionTooltip() {\n if (this.triggerElement == null || this.contentElement == null) return\n\n this.floatingManager = new FloatingUIManager({\n triggerElement: this.triggerElement,\n contentElement: this.contentElement,\n arrowElement: this.arrowElement,\n placement: this.position,\n })\n\n this.floatingManager.start()\n }\n\n private cleanupPositioning() {\n this.floatingManager?.stop()\n }\n\n /**\n * Define os eventos de interação do tooltip.\n * Os eventos de interação incluem mouseenter, mouseleave, focus e blur.\n * @returns void\n */\n private setupInteractions() {\n if (this.triggerElement == null || this.contentElement == null) return\n\n if (this.type === 'standard') {\n this.triggerElement.addEventListener('mouseenter', this.showContent)\n this.triggerElement.addEventListener('mouseleave', this.hideContent)\n }\n\n if (this.type === 'popover') {\n this.triggerElement.addEventListener('pointerdown', this.toggleContent)\n }\n\n if (this.isAutoVisible) {\n requestAnimationFrame(() => {\n this.clearShowTimer()\n this.setShowTimer()\n })\n }\n\n // Verifica inicialmente se o slot já tem elementos (caso slotchange não dispare no load inicial dependendo do framework)\n // Pequeno delay para garantir que o DOM light foi projetado\n requestAnimationFrame(() => {\n if (this.triggerElement) {\n const slot = this.triggerElement.querySelector('slot[name=\"trigger\"]') as HTMLSlotElement\n if (slot) {\n // Dispara manualmente a verificação inicial\n this.handleTriggerSlotChange({ target: slot } as unknown as Event)\n }\n }\n })\n }\n\n /**\n * Alterna a exibição do tooltip.\n * Se o tooltip estiver visível, ele será ocultado.\n * Se o tooltip estiver oculto, ele será exibido.\n */\n private toggleContent = () => {\n this.fromPointerDown = true\n\n if (this.isVisible) {\n this.hideContent()\n } else {\n this.showContent()\n }\n }\n\n /**\n * Processa as ações relacionadas à exibição do tooltip.\n * Isso inclui exibir o tooltip e iniciar o tempo limite de ocultação automática.\n * @returns void\n */\n private showContent = () => {\n if (this.contentElement == null) return\n\n this.isVisible = true\n\n if (this.isAutoVisible) {\n if (this.hideDelay !== null) {\n this.clearHideTimer()\n this.setHideTimer()\n }\n }\n\n if (this.type === 'popover') {\n document.addEventListener('click', this.handleOutsideClick)\n }\n }\n\n /**\n * Processa as ações relacionadas ao fechamento do tooltip.\n * Isso inclui ocultar o tooltip e limpar o tempo limite de ocultação automática.\n * @returns void\n */\n private hideContent = () => {\n if (this.contentElement == null) return\n\n this.isVisible = false\n\n if (this.type === 'popover') {\n document.removeEventListener('click', this.handleOutsideClick)\n requestAnimationFrame(() => this.contentElement?.focus())\n }\n }\n\n /**\n * Configura o tempo limite para exibir o tooltip automaticamente.\n * O tempo limite é definido pelo valor da propriedade `showDelay`.\n */\n private setShowTimer() {\n this.showTimer = setTimeout(() => {\n this.showContent()\n }, this.showDelay || 0)\n }\n\n /**\n * Limpa o tempo limite de exibição automática do tooltip.\n */\n private clearShowTimer() {\n if (this.showTimer !== undefined) {\n clearTimeout(this.showTimer)\n this.showTimer = undefined\n }\n }\n\n /**\n * Configura o tempo limite para ocultar o tooltip automaticamente.\n * O tempo limite é definido pelo valor da propriedade `hideDelay`.\n */\n private setHideTimer() {\n this.hideTimer = setTimeout(() => {\n this.hideContent()\n }, this.hideDelay)\n }\n\n /**\n * Limpa o tempo limite de ocultação automática do tooltip.\n */\n private clearHideTimer() {\n if (this.hideTimer !== undefined) {\n clearTimeout(this.hideTimer)\n this.hideTimer = undefined\n }\n }\n\n /**\n * Lida com cliques fora do tooltip.\n * É utilizado para o tooltip do tipo 'popover'.\n * @param event MouseEvent\n */\n private handleOutsideClick = (event: MouseEvent) => {\n const path = event.composedPath()\n\n if (\n this.isVisible &&\n this.type === 'popover' &&\n !path.includes(this.contentElement) &&\n !path.includes(this.triggerElement)\n ) {\n this.hideContent()\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS do componente.\n * @returns Um objeto que representa o mapeamento de classes CSS do componente.\n */\n private getCssClassMap(): CssClassMap {\n return {\n 'br-tooltip': true,\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS do trigger.\n * @returns Um objeto que representa o mapeamento de classes CSS do trigger.\n */\n private getTriggerCssClassMap(): CssClassMap {\n return {\n trigger: true,\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS do conteúdo.\n * @returns Um objeto que representa o mapeamento de classes CSS do conteúdo.\n */\n private getContentCssClassMap(): CssClassMap {\n return {\n 'is-visible': this.isVisible,\n content: true,\n popover: this.type === 'popover',\n large: this.density === 'large',\n medium: this.density === 'medium',\n small: this.density === 'small',\n info: this.state === 'info',\n warning: this.state === 'warning',\n error: this.state === 'error',\n success: this.state === 'success',\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS da seta.\n * @returns Um objeto que representa o mapeamento de classes CSS da seta.\n */\n private getArrowCssClassMap(): CssClassMap {\n return {\n arrow: true,\n large: this.density === 'large',\n medium: this.density === 'medium',\n small: this.density === 'small',\n info: this.state === 'info',\n warning: this.state === 'warning',\n error: this.state === 'error',\n success: this.state === 'success',\n }\n }\n\n /**\n * Método do ciclo de vida do componente.\n * Este método é chamado uma única vez após o componente ser montado no DOM.\n */\n componentDidLoad() {\n if (typeof window === 'undefined') return\n this.setupInteractions()\n }\n\n /**\n * Método do ciclo de vida do componente.\n * Este método é chamado quando o componente é desconectado do DOM.\n */\n disconnectedCallback() {\n if (this.type === 'standard') {\n this.triggerElement?.removeEventListener('mouseenter', this.showContent)\n this.triggerElement?.removeEventListener('mouseleave', this.hideContent)\n } else if (this.type === 'popover') {\n this.triggerElement?.removeEventListener('pointerdown', this.toggleContent)\n document.removeEventListener('click', this.handleOutsideClick)\n }\n\n this.cleanupPositioning()\n\n this.clearShowTimer()\n this.clearHideTimer()\n }\n\n /**\n * Determina o texto de acessibilidade baseado no estado do tooltip.\n */\n private getAccessibilityLabel(): string {\n const labels = {\n info: 'Informação:',\n warning: 'Aviso:',\n error: 'Erro:',\n success: 'Sucesso:',\n }\n return labels[this.state] || ''\n }\n\n /**\n * Renderiza o componente.\n * Este método é responsável por gerar o conteúdo HTML do componente.\n * Ele utiliza a função `h` do Stencil para criar elementos JSX.\n * @returns JSX.Element\n */\n render() {\n return (\n <Host>\n <div id={this.customId} class={this.getCssClassMap()}>\n <div\n class={this.getTriggerCssClassMap()}\n ref={(el) => (this.triggerElement = el as HTMLDivElement)}\n aria-describedby={`${this.customId}-content`}\n aria-expanded={this.isVisible ? 'true' : 'false'}\n aria-controls={`${this.customId}-content`}\n tabindex={this.hasFocusableTrigger ? -1 : 0}\n >\n <slot name=\"trigger\" onSlotchange={this.handleTriggerSlotChange}></slot>\n </div>\n <div\n id={`${this.customId}-content`}\n class={this.getContentCssClassMap()}\n ref={(el) => (this.contentElement = el as HTMLDivElement)}\n role={this.type === 'popover' ? 'dialog' : 'tooltip'}\n tabindex=\"-1\"\n >\n <span class=\"sr-only\">{this.getAccessibilityLabel()}</span>\n <slot name=\"content\"></slot>\n {this.type === 'popover' && (\n <br-button\n class=\"close\"\n shape=\"circle\"\n density=\"small\"\n onClick={this.hideContent}\n aria-label=\"Fechar popover\"\n >\n <br-icon icon-name=\"fa6-solid:xmark\"></br-icon>\n </br-button>\n )}\n <div class={this.getArrowCssClassMap()} ref={(el) => (this.arrowElement = el as HTMLDivElement)}></div>\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"br-tooltip.entry.esm.js","sources":["../../packages/webcomponents/src/components/tooltip/tooltip.scss?tag=br-tooltip&encapsulation=shadow","../../packages/webcomponents/src/components/tooltip/tooltip.tsx"],"sourcesContent":[":host {\n display: inline-block;\n position: relative;\n}\n\n.br-tooltip {\n .content {\n display: none;\n border-radius: 4px;\n box-shadow: var(--surface-offset-xl) var(--surface-offset-xl) var(--surface-offset-xl) rgb(0 0 0 / 16%);\n color: var(--pure-0);\n font-size: var(--font-size-scale-down-01);\n font-weight: var(--font-weight-regular);\n width: max-content;\n position: absolute;\n left: 0;\n top: 0;\n text-align: center;\n z-index: 4;\n\n &.small {\n padding: var(--spacing-scale-base) var(--spacing-scale-base);\n }\n\n &.medium {\n padding: var(--spacing-scale-baseh) var(--spacing-scale-baseh);\n }\n\n &.large {\n padding: var(--spacing-scale-2x) var(--spacing-scale-2x);\n }\n\n &.is-visible {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n &.popover {\n br-button {\n align-self: flex-start;\n margin-left: var(--spacing-scale-half);\n }\n }\n\n &:focus-visible {\n outline: var(--focus) var(--focus-style) var(--focus-width);\n outline-offset: var(--focus-offset);\n }\n }\n\n .arrow {\n position: absolute;\n width: 8px;\n height: 8px;\n transform: rotate(45deg);\n }\n\n .content,\n .arrow {\n &.info {\n background-color: var(--blue-warm-vivid-60);\n\n br-button::part(button) {\n color: var(--pure-0);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--pure-0-rgb), var(--hover)), rgb(var(--pure-0-rgb), var(--hover)));\n }\n }\n\n &.warning {\n background-color: var(--yellow-vivid-20);\n color: var(--gray-80);\n\n br-button::part(button) {\n color: var(--gray-80);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--gray-80-rgb), var(--hover)), rgb(var(--gray-80-rgb), var(--hover)));\n }\n }\n\n &.error {\n background-color: var(--red-vivid-50);\n\n br-button::part(button) {\n color: var(--pure-0);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--pure-0-rgb), var(--hover)), rgb(var(--pure-0-rgb), var(--hover)));\n }\n }\n\n &.success {\n background-color: var(--green-cool-vivid-50);\n\n br-button::part(button) {\n color: var(--pure-0);\n }\n\n br-button::part(button):hover {\n background: linear-gradient(rgb(var(--pure-0-rgb), var(--hover)), rgb(var(--pure-0-rgb), var(--hover)));\n }\n }\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 Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport { FloatingUIManager } from '../../utils/floating-ui'\nimport Helpers from '../../utils/helpers'\nimport { CssClassMap } from '../../utils/interfaces'\n\ntype TooltipPosition = 'top' | 'bottom' | 'left' | 'right'\ntype TooltipType = 'standard' | 'popover'\ntype TooltipDensity = 'large' | 'medium' | 'small'\ntype TooltipState = 'info' | 'warning' | 'error' | 'success'\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/tooltip?tab=designer).\n *\n * @slot trigger - Slot para o elemento que aciona a exibição do tooltip.\n * @slot content - Slot para o conteúdo exibido no tooltip.\n */\n@Component({\n tag: 'br-tooltip',\n styleUrl: 'tooltip.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Tooltip {\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: HTMLBrTooltipElement\n\n /**\n * Referência ao elemento Internals do componente.\n * O elemento Internals fornece uma interface para acessar e manipular o estado interno do componente.\n * Isso é útil para componentes que precisam se integrar com o sistema de formulários nativo do navegador.\n */\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Identificador único do tooltip; gerado automaticamente quando omitido.\n */\n @Prop({ reflect: true }) customId: string = Helpers.generateUniqueId()\n\n /**\n * Posição do tooltip em relação ao acionador.\n */\n @Prop({ reflect: true }) position: TooltipPosition = 'top'\n\n /**\n * Tipo do tooltip: 'standard' (simples) ou 'popover' (mais rico, com fechamento por interação).\n */\n @Prop({ reflect: true }) type: TooltipType = 'standard'\n\n /**\n * Densidade do tooltip: controla compacidade do conteúdo.\n */\n @Prop({ reflect: true }) density: TooltipDensity = 'medium'\n\n /**\n * Estado visual do tooltip: 'info', 'warning', 'error' ou 'success'.\n */\n @Prop({ reflect: true }) state: TooltipState = 'info'\n\n /**\n * Exibe automaticamente sem interação quando true; caso contrário, depende do acionador.\n */\n @Prop({ reflect: true }) isAutoVisible: boolean = false\n\n /**\n * Atraso em milissegundos antes de exibir.\n */\n @Prop({ reflect: true }) showDelay: number = null\n\n /**\n * Atraso em milissegundos antes de ocultar.\n */\n @Prop({ reflect: true }) hideDelay: number = null\n\n /**\n * Estado interno de visibilidade do tooltip.\n */\n @State() isVisible: boolean = false\n\n /**\n * Indica se o conteúdo do trigger é focável.\n * Se for false, o wrapper do trigger receberá tabindex=\"0\".\n */\n @State() private hasFocusableTrigger: boolean = false\n\n /**\n * Watcher para monitorar alterações na propriedade `isVisible`.\n * @param visible boolean\n * @returns void\n */\n @Watch('isVisible')\n handleVisibilityChange(visible: boolean) {\n if (this.contentElement == null) return\n\n if (visible) {\n this.positionTooltip()\n this.brDidOpen.emit({ id: this.customId, visible: true })\n } else {\n this.clearAutoUpdate?.()\n this.clearAutoUpdate = undefined\n this.brDidClose.emit({ id: this.customId, visible: false })\n }\n }\n\n /**\n * Emitido quando o tooltip abre.\n */\n @Event({\n eventName: 'brDidOpen',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n brDidOpen: EventEmitter<{ id: string; visible: boolean }>\n\n /**\n * Emitido quando o tooltip fecha.\n */\n @Event({\n eventName: 'brDidClose',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n brDidClose: EventEmitter<{ id: string; visible: boolean }>\n\n /**\n * Exibe o tooltip quando o acionador recebe foco.\n */\n @Listen('focusin')\n handleFocusIn() {\n if (!this.fromPointerDown) {\n this.showContent()\n }\n this.fromPointerDown = false\n }\n\n /**\n * Oculta o tooltip quando o acionador perde foco.\n */\n @Listen('focusout')\n handleFocusOut() {\n this.hideContent()\n }\n\n /**\n * Fecha com Escape quando o documento recebe a tecla.\n */\n @Listen('keydown', { target: 'document' })\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault()\n this.hideContent()\n this.triggerElement?.focus()\n }\n }\n\n private floatingManager: FloatingUIManager\n\n /**\n * Elemento que aciona a exibição do tooltip.\n * Este elemento é referenciado para garantir que o tooltip seja posicionado corretamente em relação a ele.\n */\n private triggerElement: HTMLDivElement\n\n /**\n * Elemento que contém o conteúdo do tooltip.\n * Este elemento é referenciado para garantir que o tooltip seja posicionado corretamente em relação a ele.\n */\n private contentElement: HTMLDivElement\n\n /**\n * Elemento que representa a seta do tooltip.\n * Este elemento é utilizado para indicar a direção do tooltip em relação ao elemento acionador.\n */\n private arrowElement: HTMLDivElement\n\n /**\n * Função de limpeza para atualizar a posição do tooltip automaticamente.\n * Esta função é chamada quando o tooltip não está mais visível ou quando o componente é desconectado.\n * Isso garante que o tooltip não consuma recursos desnecessários quando não estiver em uso.\n */\n private clearAutoUpdate: () => void\n\n /**\n * Tempo limite para exibir o tooltip automaticamente.\n */\n private showTimer: ReturnType<typeof setTimeout>\n\n /**\n * Tempo limite para ocultar o tooltip.\n */\n private hideTimer: ReturnType<typeof setTimeout>\n\n /**\n * Indica se o tooltip foi acionado por um clique do mouse.\n * Isso é utilizado para evitar conflito com o acionamento por foco.\n */\n private fromPointerDown: boolean = false\n\n /**\n * Verifica se um elemento HTML é focável.\n * @param element HTMLElement a ser verificado\n * @returns boolean\n */\n private isFocusable(element: HTMLElement): boolean {\n if (!element || element.nodeType !== 1) return false\n\n // Verifica o atributo tabindex\n if (element.hasAttribute('tabindex')) {\n const index = parseInt(element.getAttribute('tabindex'), 10)\n return !isNaN(index) && index >= 0\n }\n\n // Verifica elementos interativos padrão\n const tag = element.tagName.toLowerCase()\n const interactiveTags = ['button', 'input', 'select', 'textarea', 'a']\n\n if (interactiveTags.includes(tag)) {\n if (tag === 'a') return element.hasAttribute('href')\n return !(element as any).disabled\n }\n\n return false\n }\n\n /**\n * Manipula a mudança no slot do trigger para verificar se há conteúdo focável.\n * @param event Evento de mudança do slot\n */\n private handleTriggerSlotChange = (event: Event) => {\n const slot = event.target as HTMLSlotElement\n const assignedNodes = slot.assignedNodes({ flatten: true })\n\n this.hasFocusableTrigger = assignedNodes.some((node) => {\n return node.nodeType === 1 && this.isFocusable(node as HTMLElement)\n })\n }\n\n /**\n * Controla a exibição do tooltip.\n * Quando o tooltip é exibido, ele é posicionado em relação ao elemento acionador.\n * Isso é feito utilizando a biblioteca Floating UI, que calcula a posição ideal do tooltip com base no espaço disponível na tela.\n * A função `autoUpdate` é utilizada para atualizar automaticamente a posição do tooltip quando o elemento acionador é movido ou redimensionado.\n */\n private positionTooltip() {\n if (this.triggerElement == null || this.contentElement == null) return\n\n this.floatingManager = new FloatingUIManager({\n triggerElement: this.triggerElement,\n contentElement: this.contentElement,\n arrowElement: this.arrowElement,\n placement: this.position,\n })\n\n this.floatingManager.start()\n }\n\n private cleanupPositioning() {\n this.floatingManager?.stop()\n }\n\n /**\n * Define os eventos de interação do tooltip.\n * Os eventos de interação incluem mouseenter, mouseleave, focus e blur.\n * @returns void\n */\n private setupInteractions() {\n if (this.triggerElement == null || this.contentElement == null) return\n\n if (this.type === 'standard') {\n this.triggerElement.addEventListener('mouseenter', this.showContent)\n this.triggerElement.addEventListener('mouseleave', this.hideContent)\n }\n\n if (this.type === 'popover') {\n this.triggerElement.addEventListener('pointerdown', this.toggleContent)\n }\n\n if (this.isAutoVisible) {\n requestAnimationFrame(() => {\n this.clearShowTimer()\n this.setShowTimer()\n })\n }\n\n // Verifica inicialmente se o slot já tem elementos (caso slotchange não dispare no load inicial dependendo do framework)\n // Pequeno delay para garantir que o DOM light foi projetado\n requestAnimationFrame(() => {\n if (this.triggerElement) {\n const slot = this.triggerElement.querySelector('slot[name=\"trigger\"]') as HTMLSlotElement\n if (slot) {\n // Dispara manualmente a verificação inicial\n this.handleTriggerSlotChange({ target: slot } as unknown as Event)\n }\n }\n })\n }\n\n /**\n * Alterna a exibição do tooltip.\n * Se o tooltip estiver visível, ele será ocultado.\n * Se o tooltip estiver oculto, ele será exibido.\n */\n private toggleContent = () => {\n this.fromPointerDown = true\n\n if (this.isVisible) {\n this.hideContent()\n } else {\n this.showContent()\n }\n }\n\n /**\n * Processa as ações relacionadas à exibição do tooltip.\n * Isso inclui exibir o tooltip e iniciar o tempo limite de ocultação automática.\n * @returns void\n */\n private showContent = () => {\n if (this.contentElement == null) return\n\n this.isVisible = true\n\n if (this.isAutoVisible) {\n if (this.hideDelay !== null) {\n this.clearHideTimer()\n this.setHideTimer()\n }\n }\n\n if (this.type === 'popover') {\n document.addEventListener('click', this.handleOutsideClick)\n }\n }\n\n /**\n * Processa as ações relacionadas ao fechamento do tooltip.\n * Isso inclui ocultar o tooltip e limpar o tempo limite de ocultação automática.\n * @returns void\n */\n private hideContent = () => {\n if (this.contentElement == null) return\n\n this.isVisible = false\n\n if (this.type === 'popover') {\n document.removeEventListener('click', this.handleOutsideClick)\n requestAnimationFrame(() => this.contentElement?.focus())\n }\n }\n\n /**\n * Configura o tempo limite para exibir o tooltip automaticamente.\n * O tempo limite é definido pelo valor da propriedade `showDelay`.\n */\n private setShowTimer() {\n this.showTimer = setTimeout(() => {\n this.showContent()\n }, this.showDelay || 0)\n }\n\n /**\n * Limpa o tempo limite de exibição automática do tooltip.\n */\n private clearShowTimer() {\n if (this.showTimer !== undefined) {\n clearTimeout(this.showTimer)\n this.showTimer = undefined\n }\n }\n\n /**\n * Configura o tempo limite para ocultar o tooltip automaticamente.\n * O tempo limite é definido pelo valor da propriedade `hideDelay`.\n */\n private setHideTimer() {\n this.hideTimer = setTimeout(() => {\n this.hideContent()\n }, this.hideDelay)\n }\n\n /**\n * Limpa o tempo limite de ocultação automática do tooltip.\n */\n private clearHideTimer() {\n if (this.hideTimer !== undefined) {\n clearTimeout(this.hideTimer)\n this.hideTimer = undefined\n }\n }\n\n /**\n * Lida com cliques fora do tooltip.\n * É utilizado para o tooltip do tipo 'popover'.\n * @param event MouseEvent\n */\n private handleOutsideClick = (event: MouseEvent) => {\n const path = event.composedPath()\n\n if (\n this.isVisible &&\n this.type === 'popover' &&\n !path.includes(this.contentElement) &&\n !path.includes(this.triggerElement)\n ) {\n this.hideContent()\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS do componente.\n * @returns Um objeto que representa o mapeamento de classes CSS do componente.\n */\n private getCssClassMap(): CssClassMap {\n return {\n 'br-tooltip': true,\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS do trigger.\n * @returns Um objeto que representa o mapeamento de classes CSS do trigger.\n */\n private getTriggerCssClassMap(): CssClassMap {\n return {\n trigger: true,\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS do conteúdo.\n * @returns Um objeto que representa o mapeamento de classes CSS do conteúdo.\n */\n private getContentCssClassMap(): CssClassMap {\n return {\n 'is-visible': this.isVisible,\n content: true,\n popover: this.type === 'popover',\n large: this.density === 'large',\n medium: this.density === 'medium',\n small: this.density === 'small',\n info: this.state === 'info',\n warning: this.state === 'warning',\n error: this.state === 'error',\n success: this.state === 'success',\n }\n }\n\n /**\n * Determina o mapeamento de classes CSS da seta.\n * @returns Um objeto que representa o mapeamento de classes CSS da seta.\n */\n private getArrowCssClassMap(): CssClassMap {\n return {\n arrow: true,\n large: this.density === 'large',\n medium: this.density === 'medium',\n small: this.density === 'small',\n info: this.state === 'info',\n warning: this.state === 'warning',\n error: this.state === 'error',\n success: this.state === 'success',\n }\n }\n\n /**\n * Método do ciclo de vida do componente.\n * Este método é chamado uma única vez após o componente ser montado no DOM.\n */\n componentDidLoad() {\n if (typeof window === 'undefined') return\n this.setupInteractions()\n }\n\n /**\n * Método do ciclo de vida do componente.\n * Este método é chamado quando o componente é desconectado do DOM.\n */\n disconnectedCallback() {\n if (this.type === 'standard') {\n this.triggerElement?.removeEventListener('mouseenter', this.showContent)\n this.triggerElement?.removeEventListener('mouseleave', this.hideContent)\n } else if (this.type === 'popover') {\n this.triggerElement?.removeEventListener('pointerdown', this.toggleContent)\n document.removeEventListener('click', this.handleOutsideClick)\n }\n\n this.cleanupPositioning()\n\n this.clearShowTimer()\n this.clearHideTimer()\n }\n\n /**\n * Determina o texto de acessibilidade baseado no estado do tooltip.\n */\n private getAccessibilityLabel(): string {\n const labels = {\n info: 'Informação:',\n warning: 'Aviso:',\n error: 'Erro:',\n success: 'Sucesso:',\n }\n return labels[this.state] || ''\n }\n\n /**\n * Renderiza o componente.\n * Este método é responsável por gerar o conteúdo HTML do componente.\n * Ele utiliza a função `h` do Stencil para criar elementos JSX.\n * @returns JSX.Element\n */\n render() {\n return (\n <Host>\n <div id={this.customId} class={this.getCssClassMap()}>\n <div\n class={this.getTriggerCssClassMap()}\n ref={(el) => (this.triggerElement = el as HTMLDivElement)}\n aria-describedby={`${this.customId}-content`}\n aria-expanded={this.isVisible ? 'true' : 'false'}\n aria-controls={`${this.customId}-content`}\n tabindex={this.hasFocusableTrigger ? -1 : 0}\n >\n <slot name=\"trigger\" onSlotchange={this.handleTriggerSlotChange}></slot>\n </div>\n <div\n id={`${this.customId}-content`}\n class={this.getContentCssClassMap()}\n ref={(el) => (this.contentElement = el as HTMLDivElement)}\n role={this.type === 'popover' ? 'dialog' : 'tooltip'}\n tabindex=\"-1\"\n >\n <span class=\"sr-only\">{this.getAccessibilityLabel()}</span>\n <slot name=\"content\"></slot>\n {this.type === 'popover' && (\n <br-button\n class=\"close\"\n shape=\"circle\"\n density=\"small\"\n onClick={this.hideContent}\n aria-label=\"Fechar popover\"\n >\n <br-icon icon-name=\"fa6-solid:xmark\"></br-icon>\n </br-button>\n )}\n <div class={this.getArrowCssClassMap()} ref={(el) => (this.arrowElement = el as HTMLDivElement)}></div>\n </div>\n </div>\n </Host>\n )\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"br-wizard-panel.entry.esm.js","sources":["../../packages/webcomponents/src/components/wizard/wizard-panel/wizard-panel.scss?tag=br-wizard-panel&encapsulation=shadow","../../packages/webcomponents/src/components/wizard/wizard-panel/wizard-panel.tsx"],"sourcesContent":[":host {\n display: none;\n}\n\n:host([active]) {\n display: block;\n}\n\n.wizard-panel {\n width: 100%;\n}\n\n.wizard-panel-content {\n width: 100%;\n}\n","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"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"br-wizard-panel.entry.esm.js","sources":["../../packages/webcomponents/src/components/wizard/wizard-panel/wizard-panel.scss?tag=br-wizard-panel&encapsulation=shadow","../../packages/webcomponents/src/components/wizard/wizard-panel/wizard-panel.tsx"],"sourcesContent":[":host {\n display: none;\n}\n\n:host([active]) {\n display: block;\n}\n\n.wizard-panel {\n width: 100%;\n}\n\n.wizard-panel-content {\n width: 100%;\n}\n","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"],"names":[],"mappings":";;;;;;AAAA,MAAM,cAAc,GAAG,s8YAAs8Y;;MCah9Y,WAAW,GAAA,MAAA;AALxB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAaE;;AAEG;AACc,QAAA,IAAM,CAAA,MAAA,GAAY,KAAK;AACvB,QAAA,IAAK,CAAA,KAAA,GAAW,CAAC;AA4CnC;AA1CC;;;AAGG;IAEH,MAAM,SAAS,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAGrB;;;AAGG;IAEH,MAAM,QAAQ,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAGpB;;;AAGG;AAEH,IAAA,MAAM,QAAQ,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM;;IAGpB,MAAM,GAAA;QACJ,MAAM,SAAS,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GACT,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EACtC;AAED,QAAA,QACE,CAAA,CAAC,IAAI,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EAAK,SAAS,CAAA,EACjB,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,cAAc,EAAC,IAAI,EAAC,UAAU,EAAC,EAAE,EAAE,CAAA,aAAA,EAAgB,IAAI,CAAC,KAAK,CAAA,CAAE,EAAA,EACxE,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,sBAAsB,EAAA,EAC/B,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,CACF,CACD;;;;;;;;"}
|