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