@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,"names":["scrimCss","Scrim","__stencil_proxyCustomElement","HTMLElement","constructor","this","customId","ScrimId","isOpen","disableCloseOnClick","zIndex","customBackground","customOpacity","displayMode","scrollThreshold","activator","isActive","hasActivatorSlot","contentRef","activatorElement","scrollOffset","lastScrollTop","previouslyFocusedElement","handleActivatorClick","toggle","handleBlockScroll","e","scrollStrategy","window","scrollTo","preventDefault","stopPropagation","handleScrollClose","currentScroll","scrollY","Math","abs","handleOpenChange","handleKeyDown","event","shouldHandleEscape","key","handleTabNavigation","handleMaskClick","_event","close","newValue","updateStyles","document","activeElement","applyScrollStrategy","setTimeout","focusFirstElement","brScrimOpen","emit","resetScrolling","restoreFocus","brScrimClose","undefined","el","style","setProperty","handleActivatorChange","removeActivatorClickListener","setupActivator","componentWillLoad","checkActivatorSlot","componentDidLoad","setupActivatorSlotClick","addEventListener","connectedCallback","disconnectedCallback","removeEventListener","cleanupActivatorSlotClick","slotName","querySelector","slotEl","_a","shadowRoot","assignedElements","_c","_b","call","length","console","warn","parentElement","element","addActivatorClickListener","enableScrollBlock","enableScrollWatcher","body","documentElement","removeProperty","setAttribute","focus","focusableElements","getFocusableElements","firstElement","scrollIntoView","block","inline","preventScroll","targetElement","isConnected","error","defaultSlot","flatten","forEach","matches","FOCUSABLE_SELECTORS","push","nestedFocusables","Array","from","querySelectorAll","filterVisibleElements","elements","filter","offsetWidth","offsetHeight","getComputedStyle","visibility","lastElement","isTabForward","shiftKey","shouldTrapFocus","wrapFocus","getCssClassMap","opened","positionContent","setScrollThreshold","threshold","open","render","h","Host","name","class","id","role","onClick","ref","tabIndex","onKeyDown","join"],"sources":["../../packages/webcomponents/src/components/scrim/scrim.scss?tag=br-scrim&encapsulation=shadow","../../packages/webcomponents/src/components/scrim/scrim.tsx"],"sourcesContent":[":host {\n --br-scrim-opacity: 1;\n\n .br-scrim {\n visibility: hidden;\n transition: visibility 0.3s ease;\n z-index: var(--z-index-layer-4);\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: auto;\n }\n\n .br-scrim.mode-fullscreen {\n position: fixed;\n inset: 0;\n }\n\n .br-scrim.mode-parent {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n }\n\n .br-scrim.opened {\n visibility: visible;\n pointer-events: auto;\n }\n\n .mask {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: var(--surface-overlay-scrim);\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: auto;\n }\n\n .br-scrim.opened .mask {\n opacity: var(--br-scrim-opacity);\n }\n\n .content {\n position: relative;\n outline: none;\n pointer-events: auto;\n opacity: 0;\n transform: scale(0.9);\n transition:\n opacity 0.3s ease,\n transform 0.3s ease;\n background: transparent;\n padding: 0;\n margin: 0;\n border: none;\n box-shadow: none;\n overflow: visible;\n contain: none;\n display: inline-block;\n width: fit-content;\n height: fit-content;\n z-index: calc(var(--z-index-layer-4) + 1);\n\n &:focus {\n outline: var(--focus-outline);\n outline-offset: var(--focus-offset);\n box-shadow: var(--focus-shadow);\n }\n }\n\n .br-scrim.opened .content {\n opacity: 1;\n transform: scale(1);\n pointer-events: auto;\n }\n\n .br-scrim.position-top .content {\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n }\n\n .br-scrim.position-bottom .content {\n position: absolute;\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n }\n\n .br-scrim.position-left .content {\n position: absolute;\n top: 50%;\n left: 0;\n transform: translateY(-50%);\n }\n\n .br-scrim.position-right .content {\n position: absolute;\n top: 50%;\n right: 0;\n transform: translateY(-50%);\n }\n\n .br-scrim.position-center .content {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n .content ::slotted(*) {\n opacity: 1 !important;\n filter: none;\n }\n\n /* Estilos responsivos */\n @media (width <= 768px) {\n .content {\n max-width: 95%;\n max-height: 95%;\n width: auto;\n }\n\n .br-scrim.position-top .content,\n .br-scrim.position-bottom .content {\n width: 100%;\n max-width: 100%;\n border-radius: 0;\n }\n }\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * 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"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["scrimCss","Scrim","__stencil_proxyCustomElement","HTMLElement","constructor","this","customId","ScrimId","isOpen","disableCloseOnClick","zIndex","customBackground","customOpacity","displayMode","scrollThreshold","activator","isActive","hasActivatorSlot","contentRef","activatorElement","scrollOffset","lastScrollTop","previouslyFocusedElement","handleActivatorClick","toggle","handleBlockScroll","e","scrollStrategy","window","scrollTo","preventDefault","stopPropagation","handleScrollClose","currentScroll","scrollY","Math","abs","handleOpenChange","handleKeyDown","event","shouldHandleEscape","key","handleTabNavigation","handleMaskClick","_event","close","newValue","updateStyles","document","activeElement","applyScrollStrategy","setTimeout","focusFirstElement","brScrimOpen","emit","resetScrolling","restoreFocus","brScrimClose","undefined","el","style","setProperty","handleActivatorChange","removeActivatorClickListener","setupActivator","componentWillLoad","checkActivatorSlot","componentDidLoad","setupActivatorSlotClick","addEventListener","connectedCallback","disconnectedCallback","removeEventListener","cleanupActivatorSlotClick","slotName","querySelector","slotEl","shadowRoot","assignedElements","length","console","warn","parentElement","element","addActivatorClickListener","enableScrollBlock","enableScrollWatcher","body","documentElement","removeProperty","setAttribute","focus","focusableElements","getFocusableElements","firstElement","scrollIntoView","block","inline","preventScroll","targetElement","isConnected","error","defaultSlot","flatten","forEach","matches","FOCUSABLE_SELECTORS","push","nestedFocusables","Array","from","querySelectorAll","filterVisibleElements","elements","filter","offsetWidth","offsetHeight","getComputedStyle","visibility","lastElement","isTabForward","shiftKey","shouldTrapFocus","wrapFocus","getCssClassMap","opened","positionContent","setScrollThreshold","threshold","open","render","h","Host","name","class","id","role","onClick","ref","tabIndex","onKeyDown","join"],"sources":["../../packages/webcomponents/src/components/scrim/scrim.scss?tag=br-scrim&encapsulation=shadow","../../packages/webcomponents/src/components/scrim/scrim.tsx"],"sourcesContent":[":host {\n --br-scrim-opacity: 1;\n\n .br-scrim {\n visibility: hidden;\n transition: visibility 0.3s ease;\n z-index: var(--z-index-layer-4);\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: auto;\n }\n\n .br-scrim.mode-fullscreen {\n position: fixed;\n inset: 0;\n }\n\n .br-scrim.mode-parent {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n }\n\n .br-scrim.opened {\n visibility: visible;\n pointer-events: auto;\n }\n\n .mask {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: var(--surface-overlay-scrim);\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: auto;\n }\n\n .br-scrim.opened .mask {\n opacity: var(--br-scrim-opacity);\n }\n\n .content {\n position: relative;\n outline: none;\n pointer-events: auto;\n opacity: 0;\n transform: scale(0.9);\n transition:\n opacity 0.3s ease,\n transform 0.3s ease;\n background: transparent;\n padding: 0;\n margin: 0;\n border: none;\n box-shadow: none;\n overflow: visible;\n contain: none;\n display: inline-block;\n width: fit-content;\n height: fit-content;\n z-index: calc(var(--z-index-layer-4) + 1);\n\n &:focus {\n outline: var(--focus-outline);\n outline-offset: var(--focus-offset);\n box-shadow: var(--focus-shadow);\n }\n }\n\n .br-scrim.opened .content {\n opacity: 1;\n transform: scale(1);\n pointer-events: auto;\n }\n\n .br-scrim.position-top .content {\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n }\n\n .br-scrim.position-bottom .content {\n position: absolute;\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n }\n\n .br-scrim.position-left .content {\n position: absolute;\n top: 50%;\n left: 0;\n transform: translateY(-50%);\n }\n\n .br-scrim.position-right .content {\n position: absolute;\n top: 50%;\n right: 0;\n transform: translateY(-50%);\n }\n\n .br-scrim.position-center .content {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n .content ::slotted(*) {\n opacity: 1 !important;\n filter: none;\n }\n\n /* Estilos responsivos */\n @media (width <= 768px) {\n .content {\n max-width: 95%;\n max-height: 95%;\n width: auto;\n }\n\n .br-scrim.position-top .content,\n .br-scrim.position-bottom .content {\n width: 100%;\n max-width: 100%;\n border-radius: 0;\n }\n }\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * 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"],"mappings":"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","ignoreList":[]}
|