@govbr-ds/webcomponents 2.0.0-next.64 → 2.0.0-next.65
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 +1 -1
- package/dist/cjs/br-avatar.entry.cjs.js.map +1 -1
- package/dist/cjs/br-breadcrumb.cjs.entry.js +113 -61
- 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 +4 -4
- package/dist/cjs/br-card.cjs.entry.js +2 -2
- package/dist/cjs/br-card.entry.cjs.js.map +1 -1
- package/dist/cjs/br-checkbox.br-input.br-radio.entry.cjs.js.map +1 -1
- package/dist/cjs/br-checkbox_3.cjs.entry.js +6 -6
- package/dist/cjs/br-checkgroup.cjs.entry.js +2 -2
- 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 +4 -4
- package/dist/cjs/br-crumb.cjs.entry.js +38 -0
- package/dist/cjs/br-crumb.entry.cjs.js.map +1 -0
- package/dist/cjs/br-datetime-picker.cjs.entry.js +2 -2
- package/dist/cjs/br-datetime-picker.entry.cjs.js.map +1 -1
- package/dist/cjs/br-divider.cjs.entry.js +2 -2
- package/dist/cjs/br-divider.entry.cjs.js.map +1 -1
- package/dist/cjs/br-dropdown.br-select.entry.cjs.js.map +1 -1
- package/dist/cjs/br-dropdown_2.cjs.entry.js +123 -40
- package/dist/cjs/br-footer-category.cjs.entry.js +3 -3
- package/dist/cjs/br-footer-category.entry.cjs.js.map +1 -1
- package/dist/cjs/br-footer-item.cjs.entry.js +2 -2
- package/dist/cjs/br-footer-item.entry.cjs.js.map +1 -1
- package/dist/cjs/br-footer-legal.cjs.entry.js +2 -2
- package/dist/cjs/br-footer-legal.entry.cjs.js.map +1 -1
- package/dist/cjs/br-footer-logo.cjs.entry.js +2 -2
- package/dist/cjs/br-footer-logo.entry.cjs.js.map +1 -1
- package/dist/cjs/br-footer-social.cjs.entry.js +2 -2
- package/dist/cjs/br-footer-social.entry.cjs.js.map +1 -1
- package/dist/cjs/br-footer.cjs.entry.js +2 -2
- package/dist/cjs/br-footer.entry.cjs.js.map +1 -1
- package/dist/cjs/br-header-function.cjs.entry.js +2 -2
- package/dist/cjs/br-header-function.entry.cjs.js.map +1 -1
- package/dist/cjs/br-header-link.cjs.entry.js +2 -2
- package/dist/cjs/br-header-link.entry.cjs.js.map +1 -1
- package/dist/cjs/br-header-list.cjs.entry.js +2 -2
- package/dist/cjs/br-header-list.entry.cjs.js.map +1 -1
- package/dist/cjs/br-header-logo.cjs.entry.js +2 -2
- package/dist/cjs/br-header-logo.entry.cjs.js.map +1 -1
- package/dist/cjs/br-header.cjs.entry.js +2 -2
- package/dist/cjs/br-header.entry.cjs.js.map +1 -1
- package/dist/cjs/br-item.cjs.entry.js +2 -2
- package/dist/cjs/br-item.entry.cjs.js.map +1 -1
- package/dist/cjs/br-loading.cjs.entry.js +2 -2
- 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.entry.cjs.js.map +1 -1
- package/dist/cjs/br-menu-header.cjs.entry.js +2 -2
- package/dist/cjs/br-menu-header.entry.cjs.js.map +1 -1
- package/dist/cjs/br-menu-info.cjs.entry.js +2 -2
- package/dist/cjs/br-menu-info.entry.cjs.js.map +1 -1
- package/dist/cjs/br-menu-item.cjs.entry.js +3 -3
- package/dist/cjs/br-menu-item.entry.cjs.js.map +1 -1
- package/dist/cjs/br-menu-link.cjs.entry.js +2 -2
- package/dist/cjs/br-menu-link.entry.cjs.js.map +1 -1
- package/dist/cjs/br-menu-list.cjs.entry.js +1 -1
- package/dist/cjs/br-menu-list.entry.cjs.js.map +1 -1
- package/dist/cjs/br-menu-logo.cjs.entry.js +2 -2
- package/dist/cjs/br-menu-logo.entry.cjs.js.map +1 -1
- package/dist/cjs/br-menu-social.cjs.entry.js +2 -2
- package/dist/cjs/br-menu-social.entry.cjs.js.map +1 -1
- package/dist/cjs/br-menu.cjs.entry.js +3 -3
- package/dist/cjs/br-menu.entry.cjs.js.map +1 -1
- package/dist/cjs/br-message.cjs.entry.js +2 -2
- package/dist/cjs/br-message.entry.cjs.js.map +1 -1
- package/dist/cjs/br-modal.cjs.entry.js +252 -12
- package/dist/cjs/br-modal.entry.cjs.js.map +1 -1
- package/dist/cjs/br-pagination.cjs.entry.js +1 -1
- package/dist/cjs/br-pagination.entry.cjs.js.map +1 -1
- package/dist/cjs/br-scrim.cjs.entry.js +117 -24
- package/dist/cjs/br-scrim.entry.cjs.js.map +1 -1
- package/dist/cjs/br-select-option.cjs.entry.js +32 -0
- package/dist/cjs/br-select-option.entry.cjs.js.map +1 -0
- package/dist/cjs/br-sign-in.cjs.entry.js +2 -2
- package/dist/cjs/br-sign-in.entry.cjs.js.map +1 -1
- package/dist/cjs/br-skip-link.cjs.entry.js +2 -2
- package/dist/cjs/br-skip-link.entry.cjs.js.map +1 -1
- package/dist/cjs/br-skiplink-item.cjs.entry.js +2 -2
- package/dist/cjs/br-skiplink-item.entry.cjs.js.map +1 -1
- package/dist/cjs/br-step.br-step-item.entry.cjs.js.map +1 -1
- package/dist/cjs/br-step_2.cjs.entry.js +17 -86
- package/dist/cjs/br-switch.cjs.entry.js +2 -2
- 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.entry.cjs.js.map +1 -1
- package/dist/cjs/br-tab.cjs.entry.js +76 -10
- package/dist/cjs/br-tab.entry.cjs.js.map +1 -1
- package/dist/cjs/br-table-cell.cjs.entry.js +2 -2
- package/dist/cjs/br-table-cell.entry.cjs.js.map +1 -1
- package/dist/cjs/br-table-header-cell.cjs.entry.js +2 -2
- package/dist/cjs/br-table-header-cell.entry.cjs.js.map +1 -1
- package/dist/cjs/br-table-header-row.cjs.entry.js +2 -2
- package/dist/cjs/br-table-header-row.entry.cjs.js.map +1 -1
- package/dist/cjs/br-table-row.cjs.entry.js +2 -2
- package/dist/cjs/br-table-row.entry.cjs.js.map +1 -1
- package/dist/cjs/br-table.cjs.entry.js +2 -2
- package/dist/cjs/br-table.entry.cjs.js.map +1 -1
- package/dist/cjs/br-tag.cjs.entry.js +2 -2
- package/dist/cjs/br-tag.entry.cjs.js.map +1 -1
- package/dist/cjs/br-textarea.cjs.entry.js +2 -2
- package/dist/cjs/br-textarea.entry.cjs.js.map +1 -1
- package/dist/cjs/br-tooltip.cjs.entry.js +2 -2
- package/dist/cjs/br-tooltip.entry.cjs.js.map +1 -1
- package/dist/cjs/br-upload.cjs.entry.js +2 -2
- package/dist/cjs/br-upload.entry.cjs.js.map +1 -1
- package/dist/cjs/br-wizard-panel.cjs.entry.js +2 -2
- package/dist/cjs/br-wizard-panel.entry.cjs.js.map +1 -1
- package/dist/cjs/br-wizard.cjs.entry.js +2 -2
- package/dist/cjs/br-wizard.entry.cjs.js.map +1 -1
- package/dist/cjs/index-CFIH680Y.js +8 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/webcomponents.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/avatar/avatar.css +1 -1
- package/dist/collection/components/breadcrumb/breadcrumb.css +1 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js +124 -57
- package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/collection/components/breadcrumb/crumb/crumb.js +168 -0
- package/dist/collection/components/breadcrumb/crumb/crumb.js.map +1 -0
- 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 -1
- package/dist/collection/components/card/card.js +1 -1
- package/dist/collection/components/checkbox/checkbox.css +1 -1
- package/dist/collection/components/checkbox/checkbox.js +1 -1
- package/dist/collection/components/checkgroup/checkgroup.css +1 -1
- package/dist/collection/components/checkgroup/checkgroup.js +1 -1
- package/dist/collection/components/collapse/collapse.css +1 -1
- package/dist/collection/components/collapse/collapse.js +1 -1
- package/dist/collection/components/datetime-picker/datetime-picker.css +1 -1
- package/dist/collection/components/datetime-picker/datetime-picker.js +1 -1
- package/dist/collection/components/divider/divider.css +1 -1
- package/dist/collection/components/divider/divider.js +1 -1
- package/dist/collection/components/dropdown/dropdown.css +1 -1
- package/dist/collection/components/dropdown/dropdown.js +1 -1
- package/dist/collection/components/footer/footer-category/footer-category.css +1 -1
- package/dist/collection/components/footer/footer-category/footer-category.js +2 -2
- package/dist/collection/components/footer/footer-item/footer-item.css +1 -1
- package/dist/collection/components/footer/footer-item/footer-item.js +1 -1
- package/dist/collection/components/footer/footer-legal/footer-legal.css +1 -1
- package/dist/collection/components/footer/footer-legal/footer-legal.js +1 -1
- package/dist/collection/components/footer/footer-logo/footer-logo.css +1 -1
- package/dist/collection/components/footer/footer-logo/footer-logo.js +1 -1
- package/dist/collection/components/footer/footer-social/footer-social.css +1 -1
- package/dist/collection/components/footer/footer-social/footer-social.js +1 -1
- package/dist/collection/components/footer/footer.css +1 -1
- package/dist/collection/components/footer/footer.js +1 -1
- package/dist/collection/components/header/header-function/header-function.css +1 -1
- package/dist/collection/components/header/header-function/header-function.js +1 -1
- package/dist/collection/components/header/header-link/header-link.css +1 -1
- package/dist/collection/components/header/header-link/header-link.js +1 -1
- package/dist/collection/components/header/header-list/header-list.css +1 -1
- package/dist/collection/components/header/header-list/header-list.js +1 -1
- package/dist/collection/components/header/header-logo/header-logo.css +1 -1
- package/dist/collection/components/header/header-logo/header-logo.js +1 -1
- package/dist/collection/components/header/header.css +1 -1
- package/dist/collection/components/header/header.js +1 -1
- package/dist/collection/components/icon/icon.css +1 -1
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/input/input.css +1 -1
- package/dist/collection/components/input/input.js +1 -1
- package/dist/collection/components/item/item.css +1 -1
- package/dist/collection/components/item/item.js +1 -1
- package/dist/collection/components/list/list.css +1 -1
- package/dist/collection/components/list/list.js +1 -1
- package/dist/collection/components/loading/loading.css +1 -1
- package/dist/collection/components/loading/loading.js +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/menu/menu-header/menu-header.css +1 -1
- package/dist/collection/components/menu/menu-header/menu-header.js +1 -1
- package/dist/collection/components/menu/menu-info/menu-info.css +1 -1
- package/dist/collection/components/menu/menu-info/menu-info.js +1 -1
- package/dist/collection/components/menu/menu-item/menu-item.css +1 -1
- package/dist/collection/components/menu/menu-item/menu-item.js +2 -2
- package/dist/collection/components/menu/menu-link/menu-link.css +1 -1
- package/dist/collection/components/menu/menu-link/menu-link.js +1 -1
- package/dist/collection/components/menu/menu-list/menu-list.css +1 -1
- package/dist/collection/components/menu/menu-logo/menu-logo.css +1 -1
- package/dist/collection/components/menu/menu-logo/menu-logo.js +1 -1
- package/dist/collection/components/menu/menu-social/menu-social.css +1 -1
- package/dist/collection/components/menu/menu-social/menu-social.js +1 -1
- package/dist/collection/components/menu/menu.css +1 -1
- package/dist/collection/components/menu/menu.js +2 -2
- package/dist/collection/components/message/message.css +1 -1
- package/dist/collection/components/message/message.js +1 -1
- package/dist/collection/components/modal/modal.css +1 -1
- package/dist/collection/components/modal/modal.js +266 -12
- package/dist/collection/components/modal/modal.js.map +1 -1
- package/dist/collection/components/pagination/pagination.css +1 -1
- package/dist/collection/components/radio/radio.css +1 -1
- package/dist/collection/components/radio/radio.js +1 -1
- package/dist/collection/components/scrim/scrim.css +1 -1
- package/dist/collection/components/scrim/scrim.js +116 -23
- package/dist/collection/components/scrim/scrim.js.map +1 -1
- package/dist/collection/components/select/select-option/select-option.js +122 -0
- package/dist/collection/components/select/select-option/select-option.js.map +1 -0
- package/dist/collection/components/select/select.css +1 -1
- package/dist/collection/components/select/select.js +151 -38
- package/dist/collection/components/select/select.js.map +1 -1
- package/dist/collection/components/sign-in/sign-in.css +1 -1
- package/dist/collection/components/sign-in/sign-in.js +1 -1
- package/dist/collection/components/skip-link/skip-link-item/skip-link-item.css +1 -1
- package/dist/collection/components/skip-link/skip-link-item/skip-link-item.js +1 -1
- package/dist/collection/components/skip-link/skip-link.css +1 -1
- package/dist/collection/components/skip-link/skip-link.js +1 -1
- package/dist/collection/components/step/step-item/step-item.css +1 -1
- package/dist/collection/components/step/step-item/step-item.js +16 -86
- package/dist/collection/components/step/step-item/step-item.js.map +1 -1
- package/dist/collection/components/step/step.css +1 -1
- package/dist/collection/components/step/step.js +2 -6
- package/dist/collection/components/step/step.js.map +1 -1
- package/dist/collection/components/switch/switch.css +1 -1
- package/dist/collection/components/switch/switch.js +1 -1
- package/dist/collection/components/tab/tab-item/tab-item.css +1 -1
- package/dist/collection/components/tab/tab-item/tab-item.js +1 -1
- package/dist/collection/components/tab/tab.css +1 -1
- package/dist/collection/components/tab/tab.js +137 -17
- package/dist/collection/components/tab/tab.js.map +1 -1
- package/dist/collection/components/table/table-cell/table-cell.css +1 -1
- package/dist/collection/components/table/table-cell/table-cell.js +1 -1
- package/dist/collection/components/table/table-header-cell/table-header-cell.css +1 -1
- package/dist/collection/components/table/table-header-cell/table-header-cell.js +1 -1
- package/dist/collection/components/table/table-header-row/table-header-row.css +1 -1
- package/dist/collection/components/table/table-header-row/table-header-row.js +1 -1
- package/dist/collection/components/table/table-row/table-row.css +1 -1
- package/dist/collection/components/table/table-row/table-row.js +1 -1
- package/dist/collection/components/table/table.css +1 -1
- package/dist/collection/components/table/table.js +1 -1
- package/dist/collection/components/tag/tag.css +1 -1
- package/dist/collection/components/tag/tag.js +1 -1
- package/dist/collection/components/textarea/textarea.css +1 -1
- package/dist/collection/components/textarea/textarea.js +1 -1
- package/dist/collection/components/tooltip/tooltip.css +1 -1
- package/dist/collection/components/tooltip/tooltip.js +1 -1
- package/dist/collection/components/upload/upload.css +1 -1
- package/dist/collection/components/upload/upload.js +1 -1
- package/dist/collection/components/wizard/wizard-panel/wizard-panel.css +1 -1
- package/dist/collection/components/wizard/wizard-panel/wizard-panel.js +1 -1
- package/dist/collection/components/wizard/wizard.css +1 -1
- package/dist/collection/components/wizard/wizard.js +1 -1
- package/dist/collection/pages/scripts/menu.js +3 -1
- package/dist/collection/pages/scripts/pageLoader.js +4 -2
- package/dist/collection/value-accessors/angular-value-accessor-config.js +1 -1
- package/dist/collection/value-accessors/angular-value-accessor-config.js.map +1 -1
- package/dist/components/br-avatar.js +3 -3
- package/dist/components/br-breadcrumb.js +161 -90
- package/dist/components/br-breadcrumb.js.map +1 -1
- package/dist/components/br-button.js +3 -3
- package/dist/components/br-card.js +3 -3
- package/dist/components/br-checkbox.js +4 -4
- package/dist/components/br-checkgroup.js +11 -11
- package/dist/components/br-collapse.js +4 -4
- package/dist/components/br-crumb.d.ts +11 -0
- package/dist/components/br-crumb.js +80 -0
- package/dist/components/br-crumb.js.map +1 -0
- package/dist/components/br-datetime-picker.js +324 -324
- package/dist/components/br-divider.js +1 -1
- package/dist/components/br-dropdown.js +4 -4
- package/dist/components/br-footer-category.js +14 -14
- package/dist/components/br-footer-item.js +6 -6
- package/dist/components/br-footer-legal.js +9 -9
- package/dist/components/br-footer-logo.js +4 -4
- package/dist/components/br-footer-social.js +7 -7
- package/dist/components/br-footer.js +24 -24
- package/dist/components/br-header-function.js +6 -6
- package/dist/components/br-header-link.js +6 -6
- package/dist/components/br-header-list.js +8 -8
- package/dist/components/br-header-logo.js +13 -13
- package/dist/components/br-header.js +15 -15
- package/dist/components/br-icon.js +3 -3
- 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 -7
- package/dist/components/br-magic-button.js +7 -7
- package/dist/components/br-menu-header.js +14 -14
- package/dist/components/br-menu-info.js +5 -5
- package/dist/components/br-menu-item.js +3 -3
- package/dist/components/br-menu-link.js +9 -9
- package/dist/components/br-menu-list.js +4 -4
- package/dist/components/br-menu-logo.js +6 -6
- package/dist/components/br-menu-social.js +9 -9
- package/dist/components/br-menu.js +35 -35
- package/dist/components/br-message.js +5 -5
- package/dist/components/br-modal.js +230 -21
- package/dist/components/br-modal.js.map +1 -1
- package/dist/components/br-pagination.js +12 -12
- package/dist/components/br-radio.js +4 -4
- package/dist/components/br-scrim.js +122 -37
- package/dist/components/br-scrim.js.map +1 -1
- package/dist/components/br-select-option.d.ts +11 -0
- package/dist/components/br-select-option.js +72 -0
- package/dist/components/br-select-option.js.map +1 -0
- package/dist/components/br-select.js +4 -4
- package/dist/components/br-sign-in.js +11 -11
- package/dist/components/br-skip-link.js +9 -9
- package/dist/components/br-skiplink-item.js +14 -14
- package/dist/components/br-step-item.js +4 -4
- package/dist/components/br-step.js +3 -3
- package/dist/components/br-switch.js +7 -7
- package/dist/components/br-tab-item.js +7 -7
- package/dist/components/br-tab.js +82 -26
- package/dist/components/br-tab.js.map +1 -1
- package/dist/components/br-table-cell.js +5 -5
- package/dist/components/br-table-header-cell.js +8 -8
- package/dist/components/br-table-header-row.js +5 -5
- package/dist/components/br-table-row.js +5 -5
- package/dist/components/br-table.js +8 -8
- package/dist/components/br-tag.js +1 -1
- package/dist/components/br-textarea.js +4 -4
- package/dist/components/br-tooltip.js +14 -14
- package/dist/components/br-upload.js +34 -34
- package/dist/components/br-wizard-panel.js +6 -6
- package/dist/components/br-wizard.js +12 -12
- package/dist/components/br-wizard.js.map +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +5 -1
- package/dist/components/{p-CJSXIVVe.js → p-B4_2a6sY.js} +9 -9
- package/dist/components/{p-DdjKNpU3.js → p-BVCWXitK.js} +157 -61
- package/dist/components/p-BVCWXitK.js.map +1 -0
- package/dist/components/p-BXMQkO62.js +399 -0
- package/dist/components/p-Bb4aDGZV.js +192 -0
- package/dist/components/p-BfM6USmd.js +138 -0
- package/dist/components/{p-BIJ6vVdB.js.map → p-BfM6USmd.js.map} +1 -1
- package/dist/components/{p-CwtLw60M.js → p-Bjywc5uG.js} +6 -6
- package/dist/components/p-BtGv7ZmW.js +229 -0
- package/dist/components/p-BtGv7ZmW.js.map +1 -0
- package/dist/components/{p-C_OI0BQu.js → p-BwHD1VKm.js} +6 -6
- package/dist/components/{p-Bqb7YtL0.js → p-C1NfZb6u.js} +19 -19
- package/dist/components/{p-DW63EY0U.js → p-C2apigAS.js} +13 -13
- package/dist/components/{p-5Bn_PU3B.js → p-CldlPwBq.js} +8 -8
- package/dist/components/p-DLCPJIh7.js +306 -0
- package/dist/components/p-DLCPJIh7.js.map +1 -0
- package/dist/components/{p-Bri6ECVa.js → p-DexVMiiX.js} +13 -13
- package/dist/components/p-DexVMiiX.js.map +1 -0
- package/dist/components/{p-DSkSDmzD.js → p-DozXPp1d.js} +3 -3
- package/dist/components/p-DzfbHHTf.js +136 -0
- package/dist/components/{p-CBj_WCYf.js → p-JsxUUux9.js} +6 -6
- package/dist/components/{p-lIb35q2K.js → p-p8k-sBQZ.js} +8 -8
- package/dist/custom-elements.json +1388 -710
- package/dist/esm/br-avatar.entry.js +2 -2
- package/dist/esm/br-avatar.entry.js.map +1 -1
- package/dist/esm/br-breadcrumb.entry.js +114 -62
- 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 +5 -5
- package/dist/esm/br-card.entry.js +3 -3
- package/dist/esm/br-card.entry.js.map +1 -1
- package/dist/esm/br-checkbox.br-input.br-radio.entry.js.map +1 -1
- package/dist/esm/br-checkbox_3.entry.js +7 -7
- package/dist/esm/br-checkgroup.entry.js +3 -3
- 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 +5 -5
- package/dist/esm/br-crumb.entry.js +36 -0
- package/dist/esm/br-crumb.entry.js.map +1 -0
- package/dist/esm/br-datetime-picker.entry.js +3 -3
- package/dist/esm/br-datetime-picker.entry.js.map +1 -1
- package/dist/esm/br-divider.entry.js +3 -3
- package/dist/esm/br-divider.entry.js.map +1 -1
- package/dist/esm/br-dropdown.br-select.entry.js.map +1 -1
- package/dist/esm/br-dropdown_2.entry.js +124 -41
- package/dist/esm/br-footer-category.entry.js +4 -4
- package/dist/esm/br-footer-category.entry.js.map +1 -1
- package/dist/esm/br-footer-item.entry.js +3 -3
- package/dist/esm/br-footer-item.entry.js.map +1 -1
- package/dist/esm/br-footer-legal.entry.js +3 -3
- package/dist/esm/br-footer-legal.entry.js.map +1 -1
- package/dist/esm/br-footer-logo.entry.js +3 -3
- package/dist/esm/br-footer-logo.entry.js.map +1 -1
- package/dist/esm/br-footer-social.entry.js +3 -3
- package/dist/esm/br-footer-social.entry.js.map +1 -1
- package/dist/esm/br-footer.entry.js +3 -3
- package/dist/esm/br-footer.entry.js.map +1 -1
- package/dist/esm/br-header-function.entry.js +3 -3
- package/dist/esm/br-header-function.entry.js.map +1 -1
- package/dist/esm/br-header-link.entry.js +3 -3
- package/dist/esm/br-header-link.entry.js.map +1 -1
- package/dist/esm/br-header-list.entry.js +3 -3
- package/dist/esm/br-header-list.entry.js.map +1 -1
- package/dist/esm/br-header-logo.entry.js +3 -3
- package/dist/esm/br-header-logo.entry.js.map +1 -1
- package/dist/esm/br-header.entry.js +3 -3
- package/dist/esm/br-header.entry.js.map +1 -1
- package/dist/esm/br-item.entry.js +3 -3
- package/dist/esm/br-item.entry.js.map +1 -1
- package/dist/esm/br-loading.entry.js +3 -3
- package/dist/esm/br-loading.entry.js.map +1 -1
- package/dist/esm/br-magic-button.entry.js +3 -3
- package/dist/esm/br-magic-button.entry.js.map +1 -1
- package/dist/esm/br-menu-header.entry.js +3 -3
- package/dist/esm/br-menu-header.entry.js.map +1 -1
- package/dist/esm/br-menu-info.entry.js +3 -3
- package/dist/esm/br-menu-info.entry.js.map +1 -1
- package/dist/esm/br-menu-item.entry.js +4 -4
- package/dist/esm/br-menu-item.entry.js.map +1 -1
- package/dist/esm/br-menu-link.entry.js +3 -3
- package/dist/esm/br-menu-link.entry.js.map +1 -1
- package/dist/esm/br-menu-list.entry.js +2 -2
- package/dist/esm/br-menu-list.entry.js.map +1 -1
- package/dist/esm/br-menu-logo.entry.js +3 -3
- package/dist/esm/br-menu-logo.entry.js.map +1 -1
- package/dist/esm/br-menu-social.entry.js +3 -3
- package/dist/esm/br-menu-social.entry.js.map +1 -1
- package/dist/esm/br-menu.entry.js +4 -4
- package/dist/esm/br-menu.entry.js.map +1 -1
- package/dist/esm/br-message.entry.js +3 -3
- package/dist/esm/br-message.entry.js.map +1 -1
- package/dist/esm/br-modal.entry.js +253 -13
- package/dist/esm/br-modal.entry.js.map +1 -1
- package/dist/esm/br-pagination.entry.js +2 -2
- package/dist/esm/br-pagination.entry.js.map +1 -1
- package/dist/esm/br-scrim.entry.js +118 -25
- package/dist/esm/br-scrim.entry.js.map +1 -1
- package/dist/esm/br-select-option.entry.js +30 -0
- package/dist/esm/br-select-option.entry.js.map +1 -0
- package/dist/esm/br-sign-in.entry.js +3 -3
- package/dist/esm/br-sign-in.entry.js.map +1 -1
- package/dist/esm/br-skip-link.entry.js +3 -3
- package/dist/esm/br-skip-link.entry.js.map +1 -1
- package/dist/esm/br-skiplink-item.entry.js +3 -3
- package/dist/esm/br-skiplink-item.entry.js.map +1 -1
- package/dist/esm/br-step.br-step-item.entry.js.map +1 -1
- package/dist/esm/br-step_2.entry.js +18 -87
- package/dist/esm/br-switch.entry.js +3 -3
- package/dist/esm/br-switch.entry.js.map +1 -1
- package/dist/esm/br-tab-item.entry.js +3 -3
- package/dist/esm/br-tab-item.entry.js.map +1 -1
- package/dist/esm/br-tab.entry.js +77 -11
- package/dist/esm/br-tab.entry.js.map +1 -1
- package/dist/esm/br-table-cell.entry.js +3 -3
- package/dist/esm/br-table-cell.entry.js.map +1 -1
- package/dist/esm/br-table-header-cell.entry.js +3 -3
- package/dist/esm/br-table-header-cell.entry.js.map +1 -1
- package/dist/esm/br-table-header-row.entry.js +3 -3
- package/dist/esm/br-table-header-row.entry.js.map +1 -1
- package/dist/esm/br-table-row.entry.js +3 -3
- package/dist/esm/br-table-row.entry.js.map +1 -1
- package/dist/esm/br-table.entry.js +3 -3
- package/dist/esm/br-table.entry.js.map +1 -1
- package/dist/esm/br-tag.entry.js +3 -3
- package/dist/esm/br-tag.entry.js.map +1 -1
- package/dist/esm/br-textarea.entry.js +3 -3
- package/dist/esm/br-textarea.entry.js.map +1 -1
- package/dist/esm/br-tooltip.entry.js +3 -3
- package/dist/esm/br-tooltip.entry.js.map +1 -1
- package/dist/esm/br-upload.entry.js +3 -3
- package/dist/esm/br-upload.entry.js.map +1 -1
- package/dist/esm/br-wizard-panel.entry.js +3 -3
- package/dist/esm/br-wizard-panel.entry.js.map +1 -1
- package/dist/esm/br-wizard.entry.js +3 -3
- package/dist/esm/br-wizard.entry.js.map +1 -1
- package/dist/esm/{index-ByGJPTh2.js → index-CgnD6TrP.js} +11 -3
- package/dist/esm/{index-ByGJPTh2.js.map → index-CgnD6TrP.js.map} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/webcomponents.js +3 -3
- package/dist/hydrate/index.js +3543 -2986
- package/dist/hydrate/index.mjs +3543 -2986
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +21 -15
- package/dist/types/components/breadcrumb/crumb/crumb.d.ts +35 -0
- package/dist/types/components/modal/modal.d.ts +86 -3
- package/dist/types/components/scrim/scrim.d.ts +32 -2
- package/dist/types/components/select/select-option/select-option.d.ts +29 -0
- package/dist/types/components/select/select.d.ts +30 -10
- package/dist/types/components/step/step-item/step-item.d.ts +3 -14
- package/dist/types/components/tab/tab.d.ts +67 -7
- package/dist/types/components.d.ts +215 -12
- 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 -1
- package/dist/webcomponents/br-checkbox.br-input.br-radio.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-crumb.entry.esm.js.map +1 -0
- package/dist/webcomponents/br-datetime-picker.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-divider.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-dropdown.br-select.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-footer-category.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-footer-item.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-footer-legal.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-footer-logo.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-footer-social.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-footer.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-header-function.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-header-link.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-header-list.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-header-logo.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-header.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-item.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-loading.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-magic-button.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-menu-header.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-menu-info.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-menu-item.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-menu-link.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-menu-list.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-menu-logo.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-menu-social.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-menu.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-message.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-modal.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-pagination.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-scrim.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-select-option.entry.esm.js.map +1 -0
- package/dist/webcomponents/br-sign-in.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-skip-link.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-skiplink-item.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-step.br-step-item.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-switch.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-tab-item.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-tab.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-table-cell.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-table-header-cell.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-table-header-row.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-table-row.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-table.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-tag.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/br-wizard-panel.entry.esm.js.map +1 -1
- package/dist/webcomponents/br-wizard.entry.esm.js.map +1 -1
- package/dist/webcomponents/{p-f2ea0d7e.entry.js → p-020c598b.entry.js} +19 -19
- package/dist/webcomponents/{p-f2ea0d7e.entry.js.map → p-020c598b.entry.js.map} +1 -1
- package/dist/webcomponents/{p-83001853.entry.js → p-09a09974.entry.js} +6 -6
- package/dist/webcomponents/{p-83001853.entry.js.map → p-09a09974.entry.js.map} +1 -1
- package/dist/webcomponents/{p-bd803fec.entry.js → p-0be0b270.entry.js} +372 -372
- package/dist/webcomponents/{p-bd803fec.entry.js.map → p-0be0b270.entry.js.map} +1 -1
- package/dist/webcomponents/p-0d8da69a.entry.js +50 -0
- package/dist/webcomponents/{p-8b3688ab.entry.js → p-107ad6d3.entry.js} +6 -6
- package/dist/webcomponents/{p-01b4fecb.entry.js → p-10b0d158.entry.js} +6 -6
- package/dist/webcomponents/{p-f1fb559a.entry.js → p-13b1b500.entry.js} +7 -7
- package/dist/webcomponents/p-15561737.entry.js +428 -0
- package/dist/webcomponents/p-15561737.entry.js.map +1 -0
- package/dist/webcomponents/{p-c0cdb81f.entry.js → p-24dd7de0.entry.js} +9 -9
- package/dist/webcomponents/{p-e5875d3d.entry.js → p-26ec56f1.entry.js} +5 -5
- package/dist/webcomponents/{p-e5875d3d.entry.js.map → p-26ec56f1.entry.js.map} +1 -1
- package/dist/webcomponents/p-34cd69c7.entry.js +105 -0
- package/dist/webcomponents/{p-d856888c.entry.js.map → p-34cd69c7.entry.js.map} +1 -1
- package/dist/webcomponents/{p-c06a79b8.entry.js → p-3956e4ac.entry.js} +6 -6
- package/dist/webcomponents/{p-462c5647.entry.js → p-4071b981.entry.js} +4 -4
- package/dist/webcomponents/p-42f11872.entry.js +60 -0
- package/dist/webcomponents/{p-f16a5e27.entry.js → p-4ad3b8c9.entry.js} +8 -8
- package/dist/webcomponents/{p-de358dbe.entry.js → p-512385f0.entry.js} +7 -7
- package/dist/webcomponents/{p-cfecd64a.entry.js → p-53c2b2c2.entry.js} +34 -34
- package/dist/webcomponents/p-567b17e6.entry.js +346 -0
- package/dist/webcomponents/{p-46dfc3ee.entry.js → p-57d49488.entry.js} +5 -5
- package/dist/webcomponents/p-58a862f9.entry.js +44 -0
- package/dist/webcomponents/p-58a862f9.entry.js.map +1 -0
- package/dist/webcomponents/p-59d41342.entry.js +101 -0
- package/dist/webcomponents/{p-c1b0a116.entry.js → p-5b7f446c.entry.js} +7 -7
- package/dist/webcomponents/{p-bd978abf.entry.js → p-610c2e8e.entry.js} +4 -4
- package/dist/webcomponents/p-62651eba.entry.js +44 -0
- package/dist/webcomponents/{p-50f1b088.entry.js → p-6bf86e0b.entry.js} +6 -6
- package/dist/webcomponents/{p-10e25a32.entry.js → p-6f8abd26.entry.js} +41 -41
- package/dist/webcomponents/{p-a2eec4fb.entry.js → p-7a93d79b.entry.js} +123 -38
- package/dist/webcomponents/p-7a93d79b.entry.js.map +1 -0
- package/dist/webcomponents/p-7d8eb8ac.entry.js +40 -0
- package/dist/webcomponents/p-7d8eb8ac.entry.js.map +1 -0
- package/dist/webcomponents/{p-56aabe89.entry.js → p-857cfe62.entry.js} +19 -19
- package/dist/webcomponents/p-898d950f.entry.js +84 -0
- package/dist/webcomponents/{p-6ecb3439.entry.js → p-8a931bfe.entry.js} +9 -9
- package/dist/webcomponents/p-8b7cc3a9.entry.js +92 -0
- package/dist/webcomponents/{p-ca2d95f7.entry.js → p-946cc8f3.entry.js} +142 -48
- package/dist/webcomponents/p-946cc8f3.entry.js.map +1 -0
- package/dist/webcomponents/p-9bb74d81.entry.js +133 -0
- package/dist/webcomponents/{p-cfa86a23.entry.js.map → p-9bb74d81.entry.js.map} +1 -1
- package/dist/webcomponents/p-9fabdfb4.entry.js +75 -0
- package/dist/webcomponents/{p-9b50e6af.entry.js → p-9fe9f5d2.entry.js} +6 -6
- package/dist/webcomponents/{p-ByGJPTh2.js → p-CgnD6TrP.js} +3 -3
- package/dist/webcomponents/{p-ByGJPTh2.js.map → p-CgnD6TrP.js.map} +1 -1
- package/dist/webcomponents/p-a09cf1bc.entry.js +145 -0
- package/dist/webcomponents/{p-30af66b3.entry.js → p-ae4feb1e.entry.js} +9 -9
- package/dist/webcomponents/p-b020467b.entry.js +351 -0
- package/dist/webcomponents/p-b020467b.entry.js.map +1 -0
- package/dist/webcomponents/{p-336071a5.entry.js → p-b04b7996.entry.js} +13 -13
- package/dist/webcomponents/{p-d7070712.entry.js → p-b39c2ad1.entry.js} +5 -5
- package/dist/webcomponents/{p-4bb5aeab.entry.js → p-b8e4bc36.entry.js} +17 -17
- package/dist/webcomponents/{p-66d26793.entry.js → p-b9c38611.entry.js} +3 -3
- package/dist/webcomponents/p-c4e28f37.entry.js +446 -0
- package/dist/webcomponents/p-c4e28f37.entry.js.map +1 -0
- package/dist/webcomponents/{p-d090d412.entry.js → p-cf764a83.entry.js} +6 -6
- package/dist/webcomponents/{p-27eb10f9.entry.js → p-d75fccd1.entry.js} +13 -13
- package/dist/webcomponents/p-da17c570.entry.js +134 -0
- package/dist/webcomponents/{p-6a9d2a0b.entry.js → p-df170bb4.entry.js} +6 -6
- package/dist/webcomponents/p-e55b41b4.entry.js +159 -0
- package/dist/webcomponents/{p-7537c4ba.entry.js.map → p-e55b41b4.entry.js.map} +1 -1
- package/dist/webcomponents/{p-a365183a.entry.js → p-e58dbeef.entry.js} +6 -6
- package/dist/webcomponents/p-e5ff5232.entry.js +452 -0
- package/dist/webcomponents/p-e5ff5232.entry.js.map +1 -0
- package/dist/webcomponents/{p-007c0f38.entry.js → p-f2f32774.entry.js} +14 -14
- package/dist/webcomponents/{p-2be1c309.entry.js → p-f583b74c.entry.js} +7 -7
- package/dist/webcomponents/{p-2be1c309.entry.js.map → p-f583b74c.entry.js.map} +1 -1
- package/dist/webcomponents/{p-061dbde5.entry.js → p-f723c6fc.entry.js} +5 -5
- package/dist/webcomponents/p-f86da8f9.entry.js +94 -0
- package/dist/webcomponents/p-fc94c64c.entry.js +50 -0
- package/dist/webcomponents/webcomponents.esm.js +3 -3
- package/dist/webcomponents.html-custom-data.json +136 -79
- package/package.json +1 -1
- package/dist/components/p-AOxMWARt.js +0 -136
- package/dist/components/p-BIJ6vVdB.js +0 -138
- package/dist/components/p-B_YesJM8.js +0 -192
- package/dist/components/p-Bc03PTAW.js +0 -306
- package/dist/components/p-Bc03PTAW.js.map +0 -1
- package/dist/components/p-Bri6ECVa.js.map +0 -1
- package/dist/components/p-C3Rduy2t.js +0 -399
- package/dist/components/p-CWRBs6PD.js +0 -316
- package/dist/components/p-CWRBs6PD.js.map +0 -1
- package/dist/components/p-DdjKNpU3.js.map +0 -1
- package/dist/webcomponents/p-0e3a9a52.entry.js +0 -44
- package/dist/webcomponents/p-271fafec.entry.js +0 -94
- package/dist/webcomponents/p-2768bb52.entry.js +0 -92
- package/dist/webcomponents/p-2a6b20bb.entry.js +0 -60
- package/dist/webcomponents/p-2de59d45.entry.js +0 -145
- package/dist/webcomponents/p-3c75367e.entry.js +0 -50
- package/dist/webcomponents/p-492972fb.entry.js +0 -380
- package/dist/webcomponents/p-492972fb.entry.js.map +0 -1
- package/dist/webcomponents/p-4cc446e4.entry.js +0 -50
- package/dist/webcomponents/p-5710a3e9.entry.js +0 -529
- package/dist/webcomponents/p-5710a3e9.entry.js.map +0 -1
- package/dist/webcomponents/p-7537c4ba.entry.js +0 -159
- package/dist/webcomponents/p-8c0f167a.entry.js +0 -101
- package/dist/webcomponents/p-90401ecd.entry.js +0 -219
- package/dist/webcomponents/p-90401ecd.entry.js.map +0 -1
- package/dist/webcomponents/p-a2eec4fb.entry.js.map +0 -1
- package/dist/webcomponents/p-aa7635d4.entry.js +0 -346
- package/dist/webcomponents/p-b30ef853.entry.js +0 -75
- package/dist/webcomponents/p-b8e4b353.entry.js +0 -84
- package/dist/webcomponents/p-c5b716c8.entry.js +0 -134
- package/dist/webcomponents/p-c73b38c5.entry.js +0 -297
- package/dist/webcomponents/p-c73b38c5.entry.js.map +0 -1
- package/dist/webcomponents/p-ca2d95f7.entry.js.map +0 -1
- package/dist/webcomponents/p-cfa86a23.entry.js +0 -133
- package/dist/webcomponents/p-d856888c.entry.js +0 -105
- /package/dist/components/{p-CJSXIVVe.js.map → p-B4_2a6sY.js.map} +0 -0
- /package/dist/components/{p-C3Rduy2t.js.map → p-BXMQkO62.js.map} +0 -0
- /package/dist/components/{p-B_YesJM8.js.map → p-Bb4aDGZV.js.map} +0 -0
- /package/dist/components/{p-CwtLw60M.js.map → p-Bjywc5uG.js.map} +0 -0
- /package/dist/components/{p-C_OI0BQu.js.map → p-BwHD1VKm.js.map} +0 -0
- /package/dist/components/{p-Bqb7YtL0.js.map → p-C1NfZb6u.js.map} +0 -0
- /package/dist/components/{p-DW63EY0U.js.map → p-C2apigAS.js.map} +0 -0
- /package/dist/components/{p-5Bn_PU3B.js.map → p-CldlPwBq.js.map} +0 -0
- /package/dist/components/{p-DSkSDmzD.js.map → p-DozXPp1d.js.map} +0 -0
- /package/dist/components/{p-AOxMWARt.js.map → p-DzfbHHTf.js.map} +0 -0
- /package/dist/components/{p-CBj_WCYf.js.map → p-JsxUUux9.js.map} +0 -0
- /package/dist/components/{p-lIb35q2K.js.map → p-p8k-sBQZ.js.map} +0 -0
- /package/dist/webcomponents/{p-3c75367e.entry.js.map → p-0d8da69a.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-8b3688ab.entry.js.map → p-107ad6d3.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-01b4fecb.entry.js.map → p-10b0d158.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-f1fb559a.entry.js.map → p-13b1b500.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-c0cdb81f.entry.js.map → p-24dd7de0.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-c06a79b8.entry.js.map → p-3956e4ac.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-462c5647.entry.js.map → p-4071b981.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-2a6b20bb.entry.js.map → p-42f11872.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-f16a5e27.entry.js.map → p-4ad3b8c9.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-de358dbe.entry.js.map → p-512385f0.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-cfecd64a.entry.js.map → p-53c2b2c2.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-aa7635d4.entry.js.map → p-567b17e6.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-46dfc3ee.entry.js.map → p-57d49488.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-8c0f167a.entry.js.map → p-59d41342.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-c1b0a116.entry.js.map → p-5b7f446c.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-bd978abf.entry.js.map → p-610c2e8e.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-0e3a9a52.entry.js.map → p-62651eba.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-50f1b088.entry.js.map → p-6bf86e0b.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-10e25a32.entry.js.map → p-6f8abd26.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-56aabe89.entry.js.map → p-857cfe62.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-b8e4b353.entry.js.map → p-898d950f.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-6ecb3439.entry.js.map → p-8a931bfe.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-2768bb52.entry.js.map → p-8b7cc3a9.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-b30ef853.entry.js.map → p-9fabdfb4.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-9b50e6af.entry.js.map → p-9fe9f5d2.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-2de59d45.entry.js.map → p-a09cf1bc.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-30af66b3.entry.js.map → p-ae4feb1e.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-336071a5.entry.js.map → p-b04b7996.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-d7070712.entry.js.map → p-b39c2ad1.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-4bb5aeab.entry.js.map → p-b8e4bc36.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-66d26793.entry.js.map → p-b9c38611.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-d090d412.entry.js.map → p-cf764a83.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-27eb10f9.entry.js.map → p-d75fccd1.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-c5b716c8.entry.js.map → p-da17c570.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-6a9d2a0b.entry.js.map → p-df170bb4.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-a365183a.entry.js.map → p-e58dbeef.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-007c0f38.entry.js.map → p-f2f32774.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-061dbde5.entry.js.map → p-f723c6fc.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-271fafec.entry.js.map → p-f86da8f9.entry.js.map} +0 -0
- /package/dist/webcomponents/{p-4cc446e4.entry.js.map → p-fc94c64c.entry.js.map} +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Construído por SERPRO
|
|
3
3
|
* © https://serpro.gov.br/ - MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { h } from "@stencil/core";
|
|
5
|
+
import { h, Host, } from "@stencil/core";
|
|
6
6
|
/**
|
|
7
7
|
* ## Design System
|
|
8
8
|
*
|
|
@@ -10,6 +10,7 @@ import { h } from "@stencil/core";
|
|
|
10
10
|
*/
|
|
11
11
|
export class Select {
|
|
12
12
|
constructor() {
|
|
13
|
+
this.isSyncingOptionElements = false;
|
|
13
14
|
/**
|
|
14
15
|
* Texto auxiliar exibido antes de uma seleção.
|
|
15
16
|
*/
|
|
@@ -18,6 +19,11 @@ export class Select {
|
|
|
18
19
|
* Habilita o modo múltiplo para selecionar várias opções.
|
|
19
20
|
*/
|
|
20
21
|
this.isMultiple = false;
|
|
22
|
+
/**
|
|
23
|
+
* Controla se o dropdown permanece aberto após selecionar opções.
|
|
24
|
+
* Quando `true`, permite seleção sequencial sem reabrir a lista.
|
|
25
|
+
*/
|
|
26
|
+
this.keepOpenOnSelect = false;
|
|
21
27
|
/**
|
|
22
28
|
* Define as opções disponíveis no componente de seleção.
|
|
23
29
|
* 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.
|
|
@@ -81,6 +87,11 @@ export class Select {
|
|
|
81
87
|
this.isExpanded = false;
|
|
82
88
|
// Armazena o índice do item atualmente focado, usado para navegação por teclado.
|
|
83
89
|
this.focusedIndex = -1;
|
|
90
|
+
this.optionElements = [];
|
|
91
|
+
this.registerOptionItems = () => {
|
|
92
|
+
this.optionElements = this.getOptionElements();
|
|
93
|
+
this.synchronizeSelect();
|
|
94
|
+
};
|
|
84
95
|
/**
|
|
85
96
|
* Fecha a lista suspensa (`dropdown`) do `br-select` quando o usuário clica fora do componente.
|
|
86
97
|
* O listener global é adicionado no `componentDidLoad` e removido no `disconnectedCallback` para evitar vazamentos de memória.
|
|
@@ -104,30 +115,13 @@ export class Select {
|
|
|
104
115
|
}
|
|
105
116
|
synchronizeSelect() {
|
|
106
117
|
try {
|
|
107
|
-
|
|
108
|
-
if (typeof this.options === 'string') {
|
|
109
|
-
try {
|
|
110
|
-
const jsonData = JSON.parse(this.options);
|
|
111
|
-
if (Array.isArray(jsonData)) {
|
|
112
|
-
parsedOptions = jsonData;
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
throw new Error('JSON inválido: deve ser um array');
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
catch (error) {
|
|
119
|
-
console.error('Erro ao converter options para JSON:', error.message);
|
|
120
|
-
parsedOptions = [];
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
else if (Array.isArray(this.options)) {
|
|
124
|
-
parsedOptions = this.options;
|
|
125
|
-
}
|
|
118
|
+
const parsedOptions = this.getSourceOptions();
|
|
126
119
|
// Sanitiza as opções (remove opções inválidas, etc.)
|
|
127
120
|
this.parsedOptions = parsedOptions;
|
|
128
121
|
// Atualiza lista filtrada considerando o termo atual
|
|
129
122
|
this.filteredOptions = this.getFilteredOptions(this.searchTerm);
|
|
130
123
|
// Atualiza o estado do componente
|
|
124
|
+
this.updateSelectedValueFromParsedOptions();
|
|
131
125
|
this.updateSelectedOptions();
|
|
132
126
|
this.updateSelectedAllState();
|
|
133
127
|
this.emitSelectedOptions();
|
|
@@ -144,9 +138,18 @@ export class Select {
|
|
|
144
138
|
this.updateSelectedOptions(); // mantém inputValue coeso
|
|
145
139
|
this.updateSelectedAllState();
|
|
146
140
|
this.filteredOptions = this.getFilteredOptions(this.searchTerm);
|
|
141
|
+
this.syncOptionElementsFromParsedOptions();
|
|
142
|
+
}
|
|
143
|
+
handleSelectOptionPropsChange() {
|
|
144
|
+
if (this.isSyncingOptionElements)
|
|
145
|
+
return;
|
|
146
|
+
if (this.optionElements.length === 0)
|
|
147
|
+
return;
|
|
148
|
+
this.synchronizeSelect();
|
|
147
149
|
}
|
|
148
150
|
componentWillLoad() {
|
|
149
151
|
this.isExpanded = this.isOpen;
|
|
152
|
+
this.optionElements = this.getOptionElements();
|
|
150
153
|
this.synchronizeSelect();
|
|
151
154
|
}
|
|
152
155
|
handleExpandedChange(isExpanded) {
|
|
@@ -163,6 +166,83 @@ export class Select {
|
|
|
163
166
|
disconnectedCallback() {
|
|
164
167
|
document.removeEventListener('click', this.handleClickOutside);
|
|
165
168
|
}
|
|
169
|
+
getOptionElements() {
|
|
170
|
+
if (this.slotElement !== undefined && this.slotElement !== null) {
|
|
171
|
+
const assignedElements = this.slotElement.assignedElements({ flatten: true });
|
|
172
|
+
return assignedElements.filter((el) => { var _a; return ((_a = el.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'br-select-option'; });
|
|
173
|
+
}
|
|
174
|
+
return Array.from(this.el.querySelectorAll('br-select-option'));
|
|
175
|
+
}
|
|
176
|
+
getSourceOptions() {
|
|
177
|
+
if (this.optionElements.length > 0) {
|
|
178
|
+
return this.optionElements
|
|
179
|
+
.map((optionElement) => {
|
|
180
|
+
var _a;
|
|
181
|
+
const label = this.getOptionElementLabel(optionElement);
|
|
182
|
+
const value = ((_a = optionElement.value) === null || _a === void 0 ? void 0 : _a.trim()) || label;
|
|
183
|
+
return {
|
|
184
|
+
label,
|
|
185
|
+
value,
|
|
186
|
+
selected: optionElement.selected === true,
|
|
187
|
+
sourceElement: optionElement,
|
|
188
|
+
};
|
|
189
|
+
})
|
|
190
|
+
.filter((option) => option.label !== '' || option.value !== '');
|
|
191
|
+
}
|
|
192
|
+
return this.getOptionsFromProp();
|
|
193
|
+
}
|
|
194
|
+
getOptionsFromProp() {
|
|
195
|
+
let parsedOptions = [];
|
|
196
|
+
if (typeof this.options === 'string') {
|
|
197
|
+
try {
|
|
198
|
+
const jsonData = JSON.parse(this.options);
|
|
199
|
+
if (Array.isArray(jsonData)) {
|
|
200
|
+
parsedOptions = jsonData;
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
throw new Error('JSON inválido: deve ser um array');
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
console.error('Erro ao converter options para JSON:', error.message);
|
|
208
|
+
parsedOptions = [];
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
else if (Array.isArray(this.options)) {
|
|
212
|
+
parsedOptions = this.options;
|
|
213
|
+
}
|
|
214
|
+
return parsedOptions;
|
|
215
|
+
}
|
|
216
|
+
getOptionElementLabel(optionElement) {
|
|
217
|
+
var _a, _b;
|
|
218
|
+
const propLabel = (_a = optionElement.label) === null || _a === void 0 ? void 0 : _a.trim();
|
|
219
|
+
if (propLabel !== undefined && propLabel !== '')
|
|
220
|
+
return propLabel;
|
|
221
|
+
return ((_b = optionElement.textContent) === null || _b === void 0 ? void 0 : _b.trim()) || '';
|
|
222
|
+
}
|
|
223
|
+
updateSelectedValueFromParsedOptions() {
|
|
224
|
+
var _a, _b;
|
|
225
|
+
const selectedValues = this.parsedOptions.filter((option) => option.selected === true).map((option) => option.value);
|
|
226
|
+
const currentValue = typeof this.value === 'string' ? this.value : undefined;
|
|
227
|
+
this.selectedValue = this.isMultiple ? selectedValues : ((_b = (_a = selectedValues[0]) !== null && _a !== void 0 ? _a : currentValue) !== null && _b !== void 0 ? _b : undefined);
|
|
228
|
+
this.value = this.selectedValue;
|
|
229
|
+
}
|
|
230
|
+
syncOptionElementsFromParsedOptions() {
|
|
231
|
+
if (this.optionElements.length === 0)
|
|
232
|
+
return;
|
|
233
|
+
this.isSyncingOptionElements = true;
|
|
234
|
+
this.parsedOptions.forEach((option) => {
|
|
235
|
+
if (option.sourceElement !== undefined) {
|
|
236
|
+
if (option.selected === true) {
|
|
237
|
+
option.sourceElement.setAttribute('selected', '');
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
option.sourceElement.removeAttribute('selected');
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
this.isSyncingOptionElements = false;
|
|
245
|
+
}
|
|
166
246
|
handleKeydownOnInput(event) {
|
|
167
247
|
switch (event.key) {
|
|
168
248
|
case 'Tab':
|
|
@@ -271,24 +351,23 @@ export class Select {
|
|
|
271
351
|
return;
|
|
272
352
|
if (this.isMultiple) {
|
|
273
353
|
this.parsedOptions = this.parsedOptions.map((o, i) => (i === index ? Object.assign(Object.assign({}, o), { selected: !o.selected }) : o));
|
|
274
|
-
|
|
275
|
-
this.isExpanded = false;
|
|
354
|
+
this.isExpanded = this.keepOpenOnSelect;
|
|
276
355
|
this.isFocused = false;
|
|
277
356
|
this.searchTerm = '';
|
|
278
357
|
}
|
|
279
358
|
else {
|
|
280
359
|
this.parsedOptions = this.parsedOptions.map((o, i) => (Object.assign(Object.assign({}, o), { selected: i === index })));
|
|
281
|
-
this.isExpanded =
|
|
360
|
+
this.isExpanded = this.keepOpenOnSelect;
|
|
282
361
|
// Se fechou, não estamos mais focados na busca.
|
|
283
362
|
// Isso garante que o valor selecionado seja exibido em vez do termo de busca.
|
|
284
363
|
this.isFocused = false;
|
|
285
364
|
this.searchTerm = '';
|
|
286
365
|
}
|
|
287
|
-
this.
|
|
288
|
-
this.value = this.selectedValue;
|
|
366
|
+
this.updateSelectedValueFromParsedOptions();
|
|
289
367
|
this.valueChange.emit(this.selectedValue);
|
|
290
368
|
this.updateSelectedOptions();
|
|
291
369
|
this.updateSelectedAllState();
|
|
370
|
+
this.syncOptionElementsFromParsedOptions();
|
|
292
371
|
// Força a atualização da referência do array para garantir que o Stencil detecte a mudança
|
|
293
372
|
this.filteredOptions = [...this.getFilteredOptions(this.searchTerm)];
|
|
294
373
|
try {
|
|
@@ -352,21 +431,19 @@ export class Select {
|
|
|
352
431
|
this.isIndeterminate = selectedCount > 0 && selectedCount < total;
|
|
353
432
|
}
|
|
354
433
|
toggleSelectAll() {
|
|
355
|
-
var _a
|
|
434
|
+
var _a;
|
|
356
435
|
const updatedOptions = this.parsedOptions.map((option) => (Object.assign(Object.assign({}, option), { selected: !this.isAllSelected })));
|
|
357
436
|
this.parsedOptions = updatedOptions;
|
|
358
437
|
this.updateSelectedAllState();
|
|
359
438
|
this.updateSelectedOptions();
|
|
360
439
|
// Atualiza a prop 'value' e emite o evento para ngModel
|
|
361
|
-
this.
|
|
362
|
-
? this.parsedOptions.filter((o) => o.selected).map((o) => o.value)
|
|
363
|
-
: (_a = this.parsedOptions.find((o) => o.selected)) === null || _a === void 0 ? void 0 : _a.value;
|
|
364
|
-
this.value = this.selectedValue;
|
|
440
|
+
this.updateSelectedValueFromParsedOptions();
|
|
365
441
|
this.valueChange.emit(this.selectedValue);
|
|
442
|
+
this.syncOptionElementsFromParsedOptions();
|
|
366
443
|
try {
|
|
367
|
-
this.elementInternals.setFormValue(JSON.stringify((
|
|
444
|
+
this.elementInternals.setFormValue(JSON.stringify((_a = this.selectedValue) !== null && _a !== void 0 ? _a : []));
|
|
368
445
|
}
|
|
369
|
-
catch (
|
|
446
|
+
catch (_b) {
|
|
370
447
|
// Ignora erro em testes onde setFormValue não é implementado
|
|
371
448
|
}
|
|
372
449
|
}
|
|
@@ -422,13 +499,14 @@ export class Select {
|
|
|
422
499
|
/**
|
|
423
500
|
* Inverte o valor da prop `isOpen`
|
|
424
501
|
*/
|
|
425
|
-
|
|
502
|
+
toggleOpen() {
|
|
426
503
|
this.isExpanded = !this.isExpanded;
|
|
504
|
+
return Promise.resolve();
|
|
427
505
|
}
|
|
428
506
|
/**
|
|
429
507
|
* Limpa todas as opções selecionadas.
|
|
430
508
|
*/
|
|
431
|
-
|
|
509
|
+
clear() {
|
|
432
510
|
const updatedOptions = this.parsedOptions.map((option) => (Object.assign(Object.assign({}, option), { selected: false })));
|
|
433
511
|
this.parsedOptions = updatedOptions;
|
|
434
512
|
const newValue = this.isMultiple ? [] : undefined;
|
|
@@ -437,27 +515,30 @@ export class Select {
|
|
|
437
515
|
this.updateSelectedOptions();
|
|
438
516
|
this.updateSelectedAllState();
|
|
439
517
|
this.valueChange.emit(newValue);
|
|
518
|
+
this.syncOptionElementsFromParsedOptions();
|
|
440
519
|
try {
|
|
441
520
|
this.elementInternals.setFormValue(JSON.stringify(newValue !== null && newValue !== void 0 ? newValue : (this.isMultiple ? [] : null)));
|
|
442
521
|
}
|
|
443
522
|
catch (_a) {
|
|
444
523
|
// Ignora erro em testes onde setFormValue não é implementado
|
|
445
524
|
}
|
|
525
|
+
return Promise.resolve();
|
|
446
526
|
}
|
|
447
527
|
/**
|
|
448
528
|
* Retorna o valor selecionado.
|
|
449
529
|
* @returns {Promise<string | string[]>} O valor atual.
|
|
450
530
|
*/
|
|
451
|
-
|
|
452
|
-
return this.value;
|
|
531
|
+
getValue() {
|
|
532
|
+
return Promise.resolve(this.value);
|
|
453
533
|
}
|
|
454
534
|
/**
|
|
455
535
|
* Define o valor do componente.
|
|
456
536
|
* @param {string | string[]} newValue O novo valor a ser definido.
|
|
457
537
|
*/
|
|
458
|
-
|
|
538
|
+
setValue(newValue) {
|
|
459
539
|
this.value = newValue;
|
|
460
540
|
// O @Watch('value') cuidará da sincronização
|
|
541
|
+
return Promise.resolve();
|
|
461
542
|
}
|
|
462
543
|
getCssClassMap() {
|
|
463
544
|
return {
|
|
@@ -489,7 +570,9 @@ export class Select {
|
|
|
489
570
|
this.filteredOptions = this.getFilteredOptions('');
|
|
490
571
|
}
|
|
491
572
|
render() {
|
|
492
|
-
return (h("div", { key: '
|
|
573
|
+
return (h(Host, { key: '8cd5f45424ecceeb8d66cff3dc7faa76278eaf0b' }, h("div", { key: 'fad5adaf9b5bbf78dd78446fef4b20269c3e1d7a', style: { display: 'none' }, "aria-hidden": "true" }, h("slot", { key: '91096cfd9b52aef919f19b3e782c8bdd844051c9', ref: (el) => {
|
|
574
|
+
this.slotElement = el;
|
|
575
|
+
}, onSlotchange: this.registerOptionItems })), h("div", { key: 'f18dd776d24a33972003493b8aa00cc0e433e429', class: this.getCssClassMap(), id: this.getComputedId(), "aria-disabled": this.disabled }, this.renderInput(), this.isExpanded && (h("br-list", { key: 'd71be8faab4143a97ef6c98d78e9110b3ba143ed', tabindex: -1, onKeyDown: (event) => this.handleKeydownOnList(event), style: this.inputWidth !== undefined ? { width: this.inputWidth } : undefined }, this.isMultiple && this.renderSelectAllCheckbox(), this.renderOptions())))));
|
|
493
576
|
}
|
|
494
577
|
static get is() { return "br-select"; }
|
|
495
578
|
static get encapsulation() { return "shadow"; }
|
|
@@ -565,6 +648,26 @@ export class Select {
|
|
|
565
648
|
"attribute": "is-multiple",
|
|
566
649
|
"defaultValue": "false"
|
|
567
650
|
},
|
|
651
|
+
"keepOpenOnSelect": {
|
|
652
|
+
"type": "boolean",
|
|
653
|
+
"mutable": false,
|
|
654
|
+
"complexType": {
|
|
655
|
+
"original": "boolean",
|
|
656
|
+
"resolved": "boolean",
|
|
657
|
+
"references": {}
|
|
658
|
+
},
|
|
659
|
+
"required": false,
|
|
660
|
+
"optional": false,
|
|
661
|
+
"docs": {
|
|
662
|
+
"tags": [],
|
|
663
|
+
"text": "Controla se o dropdown permanece aberto ap\u00F3s selecionar op\u00E7\u00F5es.\nQuando `true`, permite sele\u00E7\u00E3o sequencial sem reabrir a lista."
|
|
664
|
+
},
|
|
665
|
+
"getter": false,
|
|
666
|
+
"setter": false,
|
|
667
|
+
"reflect": true,
|
|
668
|
+
"attribute": "keep-open-on-select",
|
|
669
|
+
"defaultValue": "false"
|
|
670
|
+
},
|
|
568
671
|
"options": {
|
|
569
672
|
"type": "string",
|
|
570
673
|
"mutable": false,
|
|
@@ -796,6 +899,7 @@ export class Select {
|
|
|
796
899
|
"isIndeterminate": {},
|
|
797
900
|
"isExpanded": {},
|
|
798
901
|
"focusedIndex": {},
|
|
902
|
+
"optionElements": {},
|
|
799
903
|
"isFocused": {}
|
|
800
904
|
};
|
|
801
905
|
}
|
|
@@ -957,6 +1061,15 @@ export class Select {
|
|
|
957
1061
|
"methodName": "handleExpandedChange"
|
|
958
1062
|
}];
|
|
959
1063
|
}
|
|
1064
|
+
static get listeners() {
|
|
1065
|
+
return [{
|
|
1066
|
+
"name": "brSelectOptionPropsChange",
|
|
1067
|
+
"method": "handleSelectOptionPropsChange",
|
|
1068
|
+
"target": undefined,
|
|
1069
|
+
"capture": false,
|
|
1070
|
+
"passive": false
|
|
1071
|
+
}];
|
|
1072
|
+
}
|
|
960
1073
|
static get attachInternalsMemberName() { return "elementInternals"; }
|
|
961
1074
|
}
|
|
962
1075
|
let selectId = 0;
|
|
@@ -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/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/select?tab=designer).\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 * 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 * Exibe o rótulo e o controle em linha (ao lado), ao invés de empilhados.\n * Útil para casos contextuais como paginação.\n */\n @Prop({ reflect: true }) isInline: boolean = false\n\n /**\n * Largura do campo de entrada interno (por exemplo, '88px').\n * Quando definido, sobrescreve a largura padrão de 100% do input.\n */\n @Prop({ reflect: true }) inputWidth?: string\n\n /**\n * Desabilita a interação com o componente `br-select`.\n * Quando `true`, o input e as opções ficam desabilitados e não respondem a cliques ou teclas.\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Propaga para o input interno a remoção da borda quando desfocado.\n */\n @Prop({ reflect: true }) borderless: 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 // Opções filtradas de acordo com o termo de busca digitado.\n @State() filteredOptions: { label: string; value: string; selected?: boolean }[] = []\n\n // Valor exibido no input, refletindo as opções selecionadas.\n @State() inputValue: string = ''\n\n // Termo digitado no input (modo busca).\n @State() searchTerm: string = ''\n\n /** Valor selecionado (string para single, string[] para multiple) */\n @Prop({ reflect: false, mutable: true }) value?: string | string[]\n\n @State() selectedValue?: 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 // Indica se o estado do checkbox \"Selecionar Todos\" está indeterminado (algumas, mas não todas, opções selecionadas).\n @State() isIndeterminate: 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 /** Emite os dados da opção quando ela recebe foco/hover (antes da seleção). */\n @Event({ bubbles: true, composed: true }) optionHover: EventEmitter<{ label: string; value: string }>\n\n /** Dispara quando o dropdown é aberto. */\n @Event({ bubbles: true, composed: true }) opened: EventEmitter<void>\n\n /** Dispara quando o dropdown é fechado. */\n @Event({ bubbles: true, composed: true }) closed: EventEmitter<void>\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 lista filtrada considerando o termo atual\n this.filteredOptions = this.getFilteredOptions(this.searchTerm)\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 ? Array.isArray(newVal) && newVal.includes(o.value) : newVal === o.value,\n }))\n this.selectedValue = newVal\n this.updateSelectedOptions() // mantém inputValue coeso\n this.updateSelectedAllState()\n this.filteredOptions = this.getFilteredOptions(this.searchTerm)\n }\n\n componentWillLoad() {\n this.isExpanded = this.isOpen\n this.synchronizeSelect()\n }\n\n @Watch('isExpanded')\n handleExpandedChange(isExpanded: boolean) {\n if (isExpanded) {\n this.opened.emit()\n } else {\n this.closed.emit()\n }\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 // Usa composedPath para considerar nós dentro de Shadow DOM como \"dentro\" do componente\n const path = (event.composedPath && event.composedPath()) || []\n const clickedInside = path.includes(this.el) || (event.target instanceof Node && this.el.contains(event.target))\n\n if (this.isExpanded && !clickedInside) {\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 const option = this.filteredOptions[index]\n if (option !== undefined) {\n this.handleSelectionByValue(option.value)\n }\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 HTMLBrInputElement | null\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 this.emitHoverFromOption(this.filteredOptions[index])\n }\n }\n\n private emitHoverFromOption(option?: { label: string; value: string }) {\n if (!option) return\n this.optionHover.emit({ label: option.label || option.value, value: option.value })\n }\n\n private openSelect() {\n this.isExpanded = true\n }\n\n private closeSelect() {\n this.isExpanded = false\n // Reinicializar o índice focado ao fechar o select\n this.focusedIndex = -1\n }\n\n private handleSelectionByValue(value: string) {\n const index = this.parsedOptions.findIndex((o) => o.value === value)\n if (index === -1) return\n\n if (this.isMultiple) {\n this.parsedOptions = this.parsedOptions.map((o, i) => (i === index ? { ...o, selected: !o.selected } : o))\n // Fecha o dropdown e limpa a busca para mostrar o resumo das seleções\n this.isExpanded = false\n this.isFocused = false\n this.searchTerm = ''\n } else {\n this.parsedOptions = this.parsedOptions.map((o, i) => ({\n ...o,\n selected: i === index,\n }))\n this.isExpanded = false\n // Se fechou, não estamos mais focados na busca.\n // Isso garante que o valor selecionado seja exibido em vez do termo de busca.\n this.isFocused = false\n this.searchTerm = ''\n }\n\n this.selectedValue = this.isMultiple ? this.parsedOptions.filter((o) => o.selected).map((o) => o.value) : value\n\n this.value = this.selectedValue\n this.valueChange.emit(this.selectedValue)\n\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n\n // Força a atualização da referência do array para garantir que o Stencil detecte a mudança\n this.filteredOptions = [...this.getFilteredOptions(this.searchTerm)]\n\n try {\n this.elementInternals.setFormValue(JSON.stringify(this.selectedValue ?? []))\n } catch {}\n }\n\n private updateSelectedOptions() {\n this.inputValue = this.getStringValue(this.parsedOptions.filter((option) => option.selected))\n }\n\n private normalizeText(text: string): string {\n return (text || '')\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n }\n\n private getFilteredOptions(term: string) {\n if (!term) {\n return this.parsedOptions\n }\n\n const normalizedTerm = this.normalizeText(term)\n return this.parsedOptions.filter((option) => {\n const normalizedLabel = this.normalizeText(option.label || option.value)\n const normalizedValue = this.normalizeText(option.value)\n return normalizedLabel.includes(normalizedTerm) || normalizedValue.includes(normalizedTerm)\n })\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.filter((option) => option.selected === true).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 try {\n this.elementInternals.setFormValue(JSON.stringify(this.isMultiple ? selectedValues : (selectedValues[0] ?? null)))\n } catch {\n // Ignora erro em testes onde setFormValue não é implementado\n }\n }\n\n private updateSelectedAllState() {\n const selectedCount = this.parsedOptions.filter((option) => option.selected).length\n const total = this.parsedOptions.length\n\n this.isAllSelected = total > 0 && selectedCount === total\n this.isIndeterminate = selectedCount > 0 && selectedCount < total\n }\n\n private toggleSelectAll() {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: !this.isAllSelected }))\n this.parsedOptions = updatedOptions\n\n this.updateSelectedAllState()\n this.updateSelectedOptions()\n\n // Atualiza a prop 'value' e emite o evento para ngModel\n this.selectedValue = this.isMultiple\n ? this.parsedOptions.filter((o) => o.selected).map((o) => o.value)\n : this.parsedOptions.find((o) => o.selected)?.value\n this.value = this.selectedValue\n this.valueChange.emit(this.selectedValue)\n\n try {\n this.elementInternals.setFormValue(JSON.stringify(this.selectedValue ?? []))\n } catch {\n // Ignora erro em testes onde setFormValue não é implementado\n }\n }\n\n // Indica se o input de busca está focado.\n @State() isFocused: boolean = false\n\n private renderInput() {\n // Se estiver focado, mostramos EXATAMENTE o que está sendo digitado (searchTerm), mesmo que seja vazio.\n // Se não estiver focado, mostramos o termo de busca (se houver) ou o valor selecionado (inputValue).\n const displayValue = this.isFocused ? this.searchTerm : this.searchTerm || this.inputValue\n\n return (\n <br-input\n exportparts=\"label\"\n value={displayValue}\n label={this.label}\n isInline={this.isInline}\n controlWidth={this.inputWidth}\n borderless={this.borderless}\n placeholder={this.placeholder}\n actionLabel={this.isExpanded ? 'Recolher lista de opções' : 'Exibir lista de opções'}\n actionTabIndex={-1}\n readonly={false}\n disabled={this.disabled}\n onClick={() => {\n if (!this.disabled) this.toggleOpen()\n }}\n onInput={(event) => this.handleSearchInput(event)}\n onFocus={() => this.handleSearchFocus()}\n onBlur={(event) => this.handleSearchBlur(event)}\n onKeyDown={(event) => {\n if (!this.disabled) this.handleKeydownOnInput(event)\n }}\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' : ''} ${this.disabled ? 'disabled' : ''}`}\n data-all=\"data-all\"\n tabindex=\"-1\"\n role=\"option\"\n aria-selected={this.isAllSelected}\n aria-disabled={this.disabled}\n onKeyDown={(event) => {\n if (!this.disabled) this.handleSelectAllKeyDown(event)\n }}\n onClick={() => {\n if (!this.disabled) this.toggleSelectAll()\n }}\n >\n <br-checkbox\n name={`checkbox-${this.customId}`}\n label={this.isAllSelected ? this.unselectAllLabel : this.selectAllLabel}\n checked={this.isAllSelected}\n indeterminate={this.isIndeterminate}\n disabled={this.disabled}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={() => {\n if (!this.disabled) this.toggleSelectAll()\n }}\n ></br-checkbox>\n </div>\n )\n }\n\n private renderOptions() {\n if (this.filteredOptions.length === 0) {\n return (\n <div class=\"br-item empty\" role=\"option\" aria-selected=\"false\" tabindex={-1}>\n Nenhum resultado encontrado\n </div>\n )\n }\n\n return this.filteredOptions.map((option, index) => (\n <div\n class={`br-item ${option.selected ? 'selected' : ''} ${this.disabled ? 'disabled' : ''}`}\n key={`${option.label}-${this.customId}`}\n role=\"option\"\n tabindex={this.disabled ? -1 : this.focusedIndex === index ? 0 : -1}\n aria-selected={option.selected}\n aria-disabled={this.disabled}\n data-value={option.value}\n onClick={() => {\n if (!this.disabled) this.handleSelectionByValue(option.value)\n }}\n onKeyDown={(event) => {\n if (!this.disabled) this.handleKeydownOnItem(event, index)\n }}\n onMouseOver={() => this.emitHoverFromOption(option)}\n onPointerOver={() => this.emitHoverFromOption(option)}\n onFocus={() => this.emitHoverFromOption(option)}\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 disabled={this.disabled}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={() => {\n if (!this.disabled) this.handleSelectionByValue(option.value)\n }}\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 disabled={this.disabled}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={() => {\n if (!this.disabled) this.handleSelectionByValue(option.value)\n }}\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 /**\n * Limpa todas as opções selecionadas.\n */\n @Method()\n async clear() {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: false }))\n this.parsedOptions = updatedOptions\n\n const newValue = this.isMultiple ? [] : undefined\n this.selectedValue = newValue\n this.value = newValue\n\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n this.valueChange.emit(newValue)\n\n try {\n this.elementInternals.setFormValue(JSON.stringify(newValue ?? (this.isMultiple ? [] : null)))\n } catch {\n // Ignora erro em testes onde setFormValue não é implementado\n }\n }\n\n /**\n * Retorna o valor selecionado.\n * @returns {Promise<string | string[]>} O valor atual.\n */\n @Method()\n async getValue() {\n return this.value\n }\n\n /**\n * Define o valor do componente.\n * @param {string | string[]} newValue O novo valor a ser definido.\n */\n @Method()\n async setValue(newValue: string | string[]) {\n this.value = newValue\n // O @Watch('value') cuidará da sincronização\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-select': true,\n }\n }\n\n private handleSearchInput(event: Event) {\n const value = (event.target as HTMLInputElement).value ?? ''\n this.searchTerm = value\n this.filteredOptions = this.getFilteredOptions(value)\n this.isExpanded = true\n }\n\n private handleSearchFocus() {\n this.isFocused = true\n this.filteredOptions = this.getFilteredOptions(this.searchTerm)\n }\n\n private handleSearchBlur(event: FocusEvent) {\n // Se o foco foi movido para dentro do componente (ex: clicou no checkbox/item),\n // não limpamos a busca para manter a lista filtrada estável e permitir o clique.\n const relatedTarget = event.relatedTarget as Node\n if (relatedTarget && (this.el.contains(relatedTarget) || this.el.shadowRoot?.contains(relatedTarget))) {\n return\n }\n\n this.isFocused = false\n // Ao sair do campo, volta a exibir o resumo das seleções\n this.searchTerm = ''\n this.filteredOptions = this.getFilteredOptions('')\n }\n\n render() {\n return (\n <div class={this.getCssClassMap()} id={this.getComputedId()} aria-disabled={this.disabled}>\n {this.renderInput()}\n\n {this.isExpanded && (\n <br-list\n tabindex={-1}\n onKeyDown={(event) => this.handleKeydownOnList(event)}\n style={this.inputWidth !== undefined ? { width: this.inputWidth } : undefined}\n >\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":"AAAA,OAAO,EACL,eAAe,EACf,SAAS,EACT,OAAO,EACP,KAAK,EAEL,CAAC,EACD,IAAI,EACJ,MAAM,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,KAAK,GACN,MAAM,eAAe,CAAA;AAiBtB;;;;GAIG;AAOH,MAAM,OAAO,MAAM;IANnB;QAgBU,4BAAuB,GAAG,KAAK,CAAA;QAOvC;;WAEG;QACsB,gBAAW,GAAW,EAAE,CAAA;QAEjD;;WAEG;QACsB,eAAU,GAAY,KAAK,CAAA;QAEpD;;;WAGG;QACsB,qBAAgB,GAAY,KAAK,CAAA;QAE1D;;;;;;;;;WASG;QACsB,YAAO,GAMtB,EAAE,CAAA;QAEZ;;WAEG;QACsB,mBAAc,GAAW,kBAAkB,CAAA;QAEpE;;WAEG;QACsB,qBAAgB,GAAW,qBAAqB,CAAA;QAEzE;;WAEG;QACsB,mBAAc,GAAY,KAAK,CAAA;QAExD;;WAEG;QACsB,WAAM,GAAY,KAAK,CAAA;QAEhD;;;WAGG;QACsB,aAAQ,GAAY,KAAK,CAAA;QAQlD;;;WAGG;QACsB,aAAQ,GAAY,KAAK,CAAA;QAElD;;WAEG;QACsB,eAAU,GAAY,KAAK,CAAA;QAEpD;;;WAGG;QAC+B,aAAQ,GAAW,aAAa,QAAQ,EAAE,EAAE,CAAA;QAE9E,gEAAgE;QAChE,yEAAyE;QAChE,kBAAa,GAAuB,EAAE,CAAA;QAE/C,4DAA4D;QACnD,oBAAe,GAAuB,EAAE,CAAA;QAEjD,6DAA6D;QACpD,eAAU,GAAW,EAAE,CAAA;QAEhC,wCAAwC;QAC/B,eAAU,GAAW,EAAE,CAAA;QAOhC,8FAA8F;QACrF,kBAAa,GAAY,KAAK,CAAA;QAEvC,sHAAsH;QAC7G,oBAAe,GAAY,KAAK,CAAA;QAEzC,0FAA0F;QACjF,eAAU,GAAY,KAAK,CAAA;QAEpC,iFAAiF;QACxE,iBAAY,GAAW,CAAC,CAAC,CAAA;QACzB,mBAAc,GAA4B,EAAE,CAAA;QAmF7C,wBAAmB,GAAG,GAAG,EAAE;YACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;YAC9C,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC1B,CAAC,CAAA;QAuFD;;;;;;;;;WASG;QACc,uBAAkB,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC1D,wFAAwF;YACxF,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAA;YAC/D,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,YAAY,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;YAEhH,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,aAAa,EAAE,CAAC;gBACtC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;YACzB,CAAC;QACH,CAAC,CAAA;QAoOD,0CAA0C;QACjC,cAAS,GAAY,KAAK,CAAA;KA2PpC;IA7oBC,iBAAiB;QACf,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;YAE7C,qDAAqD;YACrD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;YAElC,qDAAqD;YACrD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAE/D,kCAAkC;YAClC,IAAI,CAAC,oCAAoC,EAAE,CAAA;YAC3C,IAAI,CAAC,qBAAqB,EAAE,CAAA;YAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAA;YAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAA;YAC9D,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACzB,CAAC;IACH,CAAC;IAGD,oBAAoB,CAAC,MAAyB;QAC5C,4CAA4C;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iCAC9C,CAAC,KACJ,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,IAClG,CAAC,CAAA;QACH,IAAI,CAAC,aAAa,GAAG,MAAM,CAAA;QAC3B,IAAI,CAAC,qBAAqB,EAAE,CAAA,CAAC,0BAA0B;QACvD,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/D,IAAI,CAAC,mCAAmC,EAAE,CAAA;IAC5C,CAAC;IAGD,6BAA6B;QAC3B,IAAI,IAAI,CAAC,uBAAuB;YAAE,OAAM;QACxC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC5C,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC1B,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAA;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC9C,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC1B,CAAC;IAGD,oBAAoB,CAAC,UAAmB;QACtC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QACpB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QACpB,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAC7D,CAAC;IAED,oBAAoB;QAClB,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAChE,CAAC;IAOO,iBAAiB;QACvB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAkB,CAAA;YAC9F,OAAO,gBAAgB,CAAC,MAAM,CAC5B,CAAC,EAAE,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,EAAE,CAAC,OAAO,0CAAE,WAAW,EAAE,MAAK,kBAAkB,CAAA,EAAA,CAC9B,CAAA;QAC9B,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAA4B,CAAA;IAC5F,CAAC;IAEO,gBAAgB;QACtB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,cAAc;iBACvB,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;;gBACrB,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAA;gBACvD,MAAM,KAAK,GAAG,CAAA,MAAA,aAAa,CAAC,KAAK,0CAAE,IAAI,EAAE,KAAI,KAAK,CAAA;gBAElD,OAAO;oBACL,KAAK;oBACL,KAAK;oBACL,QAAQ,EAAE,aAAa,CAAC,QAAQ,KAAK,IAAI;oBACzC,aAAa,EAAE,aAAa;iBAC7B,CAAA;YACH,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC,CAAA;QACnE,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAClC,CAAC;IAEO,kBAAkB;QACxB,IAAI,aAAa,GAAuB,EAAE,CAAA;QAE1C,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACzC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,aAAa,GAAG,QAAQ,CAAA;gBAC1B,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;gBACrD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;gBACpE,aAAa,GAAG,EAAE,CAAA;YACpB,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAA;QAC9B,CAAC;QAED,OAAO,aAAa,CAAA;IACtB,CAAC;IAEO,qBAAqB,CAAC,aAAoC;;QAChE,MAAM,SAAS,GAAG,MAAA,aAAa,CAAC,KAAK,0CAAE,IAAI,EAAE,CAAA;QAC7C,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE;YAAE,OAAO,SAAS,CAAA;QAEjE,OAAO,CAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,IAAI,EAAE,KAAI,EAAE,CAAA;IAChD,CAAC;IAEO,oCAAoC;;QAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACpH,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QAC5E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAA,MAAA,cAAc,CAAC,CAAC,CAAC,mCAAI,YAAY,mCAAI,SAAS,CAAC,CAAA;QACxG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAA;IACjC,CAAC;IAEO,mCAAmC;QACzC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAE5C,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAA;QAEnC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACpC,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBACvC,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBAC7B,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;gBACnD,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;gBAClD,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAA;IACtC,CAAC;IAsBO,oBAAoB,CAAC,KAAoB;QAC/C,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,KAAK;gBACR,IAAI,CAAC,WAAW,EAAE,CAAA;gBAClB,MAAK;YACP,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE,CAAA;gBACtB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrB,IAAI,CAAC,UAAU,EAAE,CAAA;gBACnB,CAAC;gBACD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;gBACjC,MAAK;YACP,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE,CAAA;gBACtB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrB,IAAI,CAAC,UAAU,EAAE,CAAA;gBACnB,CAAC;gBACD,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAA;gBACrC,MAAK;YACP,KAAK,QAAQ;gBACX,IAAI,CAAC,WAAW,EAAE,CAAA;gBAClB,IAAI,CAAC,UAAU,EAAE,CAAA;gBACjB,MAAK;YACP,KAAK,OAAO;gBACV,IAAI,CAAC,UAAU,EAAE,CAAA;gBACjB,MAAK;YACP,QAAQ;QACV,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,KAAoB;QAC9C,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;YAClB,KAAK,KAAK,CAAC;YACX,KAAK,QAAQ;gBACX,IAAI,CAAC,UAAU,EAAE,CAAA;gBACjB,MAAK;YACP,KAAK,SAAS;gBACZ,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAA;gBACrC,MAAK;YACP,KAAK,WAAW;gBACd,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;gBACjC,MAAK;YACP;gBACE,MAAK;QACT,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,KAAoB,EAAE,KAAa;QAC7D,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YAC/C,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;YAC1C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,EAAE,CAAA;QACpB,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,KAAoB;QACjD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YAC/C,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,IAAI,CAAC,eAAe,EAAE,CAAA;QACxB,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,IAAI,CAAC,WAAW,EAAE,CAAA;QACpB,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAA8B,CAAA;QACvF,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,EAAE,CAAA;IAChB,CAAC;IAEO,oBAAoB,CAAC,SAA8B;QACzD,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAA;QACzC,IAAI,IAAI,CAAC,UAAU;YAAE,SAAS,IAAI,CAAC,CAAA;QAEnC,IAAI,CAAC,YAAY;YACf,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;QAE9G,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACnC,CAAC;IAEO,SAAS,CAAC,KAAa;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;QAC7D,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAgB,CAAA;YACxC,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,MAAyC;QACnE,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;IACrF,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACxB,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACvB,mDAAmD;QACnD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAA;IACxB,CAAC;IAEO,sBAAsB,CAAC,KAAa;;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;QACpE,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAM;QAExB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,iCAAM,CAAC,KAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1G,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAA;YACvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;YACtB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iCACjD,CAAC,KACJ,QAAQ,EAAE,CAAC,KAAK,KAAK,IACrB,CAAC,CAAA;YACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAA;YACvC,gDAAgD;YAChD,8EAA8E;YAC9E,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;YACtB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACtB,CAAC;QAED,IAAI,CAAC,oCAAoC,EAAE,CAAA;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEzC,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,mCAAmC,EAAE,CAAA;QAE1C,2FAA2F;QAC3F,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;QAEpE,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,MAAA,IAAI,CAAC,aAAa,mCAAI,EAAE,CAAC,CAAC,CAAA;QAC9E,CAAC;QAAC,WAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC/F,CAAC;IAEO,aAAa,CAAC,IAAY;QAChC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;aAChB,SAAS,CAAC,KAAK,CAAC;aAChB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;aAC/B,WAAW,EAAE,CAAA;IAClB,CAAC;IAEO,kBAAkB,CAAC,IAAY;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC,aAAa,CAAA;QAC3B,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAA;YACxE,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACxD,OAAO,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QAC7F,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,cAAc,CAAC,OAA2B;QAChD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YAC1D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC9E,OAAO,GAAG,aAAa,GAAG,eAAe,EAAE,CAAA;YAC7C,CAAC;iBAAM,CAAC;gBACN,OAAO,aAAa,CAAA;YACtB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAEO,mBAAmB;;QACzB,2EAA2E;QAC3E,+FAA+F;QAC/F,8EAA8E;QAC9E,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,gDAAgD;QAErK,sFAAsF;QACtF,4FAA4F;QAE5F,qCAAqC;QACrC,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAA,cAAc,CAAC,CAAC,CAAC,mCAAI,IAAI,CAAC,CAAC,CAAC,CAAA;QACpH,CAAC;QAAC,WAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;IACH,CAAC;IAEO,sBAAsB;QAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAA;QACnF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAA;QAEvC,IAAI,CAAC,aAAa,GAAG,KAAK,GAAG,CAAC,IAAI,aAAa,KAAK,KAAK,CAAA;QACzD,IAAI,CAAC,eAAe,GAAG,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,KAAK,CAAA;IACnE,CAAC;IAEO,eAAe;;QACrB,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iCAAM,MAAM,KAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,aAAa,IAAG,CAAC,CAAA;QACzG,IAAI,CAAC,aAAa,GAAG,cAAc,CAAA;QAEnC,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAE5B,wDAAwD;QACxD,IAAI,CAAC,oCAAoC,EAAE,CAAA;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACzC,IAAI,CAAC,mCAAmC,EAAE,CAAA;QAE1C,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,MAAA,IAAI,CAAC,aAAa,mCAAI,EAAE,CAAC,CAAC,CAAA;QAC9E,CAAC;QAAC,WAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;IACH,CAAC;IAKO,WAAW;QACjB,wGAAwG;QACxG,qGAAqG;QACrG,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAA;QAE1F,OAAO,CACL,gBACE,WAAW,EAAC,OAAO,EACnB,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,YAAY,EAAE,IAAI,CAAC,UAAU,EAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,wBAAwB,EACpF,cAAc,EAAE,CAAC,CAAC,EAClB,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,UAAU,EAAE,CAAA;YACvC,CAAC,EACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EACjD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EACvC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAC/C,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;YACtD,CAAC;YAEA,IAAI,CAAC,cAAc,IAAI,eAAS,IAAI,EAAC,MAAM,eAAW,iBAAiB,iBAAa,MAAM,GAAW;YACtG,eACE,IAAI,EAAC,QAAQ,eACF,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,qBAAqB,EACxE,MAAM,EAAC,IAAI,iBACC,MAAM,GACT,CACF,CACZ,CAAA;IACH,CAAC;IAEO,uBAAuB;QAC7B,OAAO,CACL,WACE,KAAK,EAAE,uBAAuB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,cAC9F,UAAU,EACnB,QAAQ,EAAC,IAAI,EACb,IAAI,EAAC,QAAQ,mBACE,IAAI,CAAC,aAAa,mBAClB,IAAI,CAAC,QAAQ,EAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAA;YACxD,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,eAAe,EAAE,CAAA;YAC5C,CAAC;YAED,mBACE,IAAI,EAAE,YAAY,IAAI,CAAC,QAAQ,EAAE,EACjC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EACvE,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,aAAa,EAAE,IAAI,CAAC,eAAe,EACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,eAAe,EAAE,GAAG,EAAE;oBACpB,IAAI,CAAC,IAAI,CAAC,QAAQ;wBAAE,IAAI,CAAC,eAAe,EAAE,CAAA;gBAC5C,CAAC,GACY,CACX,CACP,CAAA;IACH,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,CACL,WAAK,KAAK,EAAC,eAAe,EAAC,IAAI,EAAC,QAAQ,mBAAe,OAAO,EAAC,QAAQ,EAAE,CAAC,CAAC,kCAErE,CACP,CAAA;QACH,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACjD,WACE,KAAK,EAAE,WAAW,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EACxF,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,EACvC,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBACpD,MAAM,CAAC,QAAQ,mBACf,IAAI,CAAC,QAAQ,gBAChB,MAAM,CAAC,KAAK,EACxB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC/D,CAAC,EACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAC5D,CAAC,EACD,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EACnD,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EACrD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAE9C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CACjB,mBACE,IAAI,EAAE,YAAY,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,EAC1C,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EACnC,OAAO,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,EACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,eAAe,EAAE,GAAG,EAAE;gBACpB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC/D,CAAC,GACD,CACH,CAAC,CAAC,CAAC,CACF,gBACE,WAAW,EAAC,0BAA0B,EACtC,IAAI,EAAE,SAAS,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,EACvC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EACnC,OAAO,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,EACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,eAAe,EAAE,GAAG,EAAE;gBACpB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC/D,CAAC,GACD,CACH,CACG,CACP,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACK,aAAa;;QACnB,OAAO,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,IAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjF,CAAC;IAED;;OAEG;IAEH,UAAU;QACR,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAA;QAClC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAED;;OAEG;IAEH,KAAK;QACH,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iCAAM,MAAM,KAAE,QAAQ,EAAE,KAAK,IAAG,CAAC,CAAA;QAC3F,IAAI,CAAC,aAAa,GAAG,cAAc,CAAA;QAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;QACjD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;QAErB,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/B,IAAI,CAAC,mCAAmC,EAAE,CAAA;QAE1C,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/F,CAAC;QAAC,WAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAED;;;OAGG;IAEH,QAAQ;QACN,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC;IAED;;;OAGG;IAEH,QAAQ,CAAC,QAA2B;QAClC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAA;QACrB,6CAA6C;QAC7C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAEO,cAAc;QACpB,OAAO;YACL,WAAW,EAAE,IAAI;SAClB,CAAA;IACH,CAAC;IAEO,iBAAiB,CAAC,KAAY;;QACpC,MAAM,KAAK,GAAG,MAAC,KAAK,CAAC,MAA2B,CAAC,KAAK,mCAAI,EAAE,CAAA;QAC5D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACxB,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACjE,CAAC;IAEO,gBAAgB,CAAC,KAAiB;;QACxC,gFAAgF;QAChF,iFAAiF;QACjF,MAAM,aAAa,GAAG,KAAK,CAAC,aAAqB,CAAA;QACjD,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAI,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAC,EAAE,CAAC;YACtG,OAAM;QACR,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,yDAAyD;QACzD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACpB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,4DAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAc,MAAM;gBACjD,6DACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;wBACV,IAAI,CAAC,WAAW,GAAG,EAAqB,CAAA;oBAC1C,CAAC,EACD,YAAY,EAAE,IAAI,CAAC,mBAAmB,GAChC,CACJ;YAEN,4DAAK,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,mBAAiB,IAAI,CAAC,QAAQ;gBACtF,IAAI,CAAC,WAAW,EAAE;gBAElB,IAAI,CAAC,UAAU,IAAI,CAClB,gEACE,QAAQ,EAAE,CAAC,CAAC,EACZ,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACrD,KAAK,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS;oBAE5E,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,uBAAuB,EAAE;oBACjD,IAAI,CAAC,aAAa,EAAE,CACb,CACX,CACG,CACD,CACR,CAAA;IACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF;AAED,IAAI,QAAQ,GAAG,CAAC,CAAA","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 Watch,\n} from '@stencil/core'\n\nimport { CssClassMap } from '../../utils/interfaces'\n\ninterface SelectOptionItem {\n label: string\n value: string\n selected?: boolean\n sourceElement?: BrSelectOptionElement\n}\n\ninterface BrSelectOptionElement extends HTMLElement {\n label?: string\n value?: string\n selected?: boolean\n}\n\n/**\n * ## Design System\n *\n * Para a documentação completa de design, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/select?tab=designer).\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 private slotElement?: HTMLSlotElement\n private isSyncingOptionElements = false\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 * Controla se o dropdown permanece aberto após selecionar opções.\n * Quando `true`, permite seleção sequencial sem reabrir a lista.\n */\n @Prop({ reflect: true }) keepOpenOnSelect: boolean = false\n\n /**\n * Define as opções disponíveis no componente de seleção.\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 * Exibe o rótulo e o controle em linha (ao lado), ao invés de empilhados.\n * Útil para casos contextuais como paginação.\n */\n @Prop({ reflect: true }) isInline: boolean = false\n\n /**\n * Largura do campo de entrada interno (por exemplo, '88px').\n * Quando definido, sobrescreve a largura padrão de 100% do input.\n */\n @Prop({ reflect: true }) inputWidth?: string\n\n /**\n * Desabilita a interação com o componente `br-select`.\n * Quando `true`, o input e as opções ficam desabilitados e não respondem a cliques ou teclas.\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Propaga para o input interno a remoção da borda quando desfocado.\n */\n @Prop({ reflect: true }) borderless: 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: SelectOptionItem[] = []\n\n // Opções filtradas de acordo com o termo de busca digitado.\n @State() filteredOptions: SelectOptionItem[] = []\n\n // Valor exibido no input, refletindo as opções selecionadas.\n @State() inputValue: string = ''\n\n // Termo digitado no input (modo busca).\n @State() searchTerm: string = ''\n\n /** Valor selecionado (string para single, string[] para multiple) */\n @Prop({ reflect: false, mutable: true }) value?: string | string[]\n\n @State() selectedValue?: 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 // Indica se o estado do checkbox \"Selecionar Todos\" está indeterminado (algumas, mas não todas, opções selecionadas).\n @State() isIndeterminate: 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 @State() optionElements: BrSelectOptionElement[] = []\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 /** Emite os dados da opção quando ela recebe foco/hover (antes da seleção). */\n @Event({ bubbles: true, composed: true }) optionHover: EventEmitter<{ label: string; value: string }>\n\n /** Dispara quando o dropdown é aberto. */\n @Event({ bubbles: true, composed: true }) opened: EventEmitter<void>\n\n /** Dispara quando o dropdown é fechado. */\n @Event({ bubbles: true, composed: true }) closed: EventEmitter<void>\n\n @Watch('options')\n synchronizeSelect() {\n try {\n const parsedOptions = this.getSourceOptions()\n\n // Sanitiza as opções (remove opções inválidas, etc.)\n this.parsedOptions = parsedOptions\n\n // Atualiza lista filtrada considerando o termo atual\n this.filteredOptions = this.getFilteredOptions(this.searchTerm)\n\n // Atualiza o estado do componente\n this.updateSelectedValueFromParsedOptions()\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 ? Array.isArray(newVal) && newVal.includes(o.value) : newVal === o.value,\n }))\n this.selectedValue = newVal\n this.updateSelectedOptions() // mantém inputValue coeso\n this.updateSelectedAllState()\n this.filteredOptions = this.getFilteredOptions(this.searchTerm)\n this.syncOptionElementsFromParsedOptions()\n }\n\n @Listen('brSelectOptionPropsChange')\n handleSelectOptionPropsChange() {\n if (this.isSyncingOptionElements) return\n if (this.optionElements.length === 0) return\n this.synchronizeSelect()\n }\n\n componentWillLoad() {\n this.isExpanded = this.isOpen\n this.optionElements = this.getOptionElements()\n this.synchronizeSelect()\n }\n\n @Watch('isExpanded')\n handleExpandedChange(isExpanded: boolean) {\n if (isExpanded) {\n this.opened.emit()\n } else {\n this.closed.emit()\n }\n }\n\n componentDidLoad() {\n document.addEventListener('click', this.handleClickOutside)\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside)\n }\n\n private registerOptionItems = () => {\n this.optionElements = this.getOptionElements()\n this.synchronizeSelect()\n }\n\n private getOptionElements(): BrSelectOptionElement[] {\n if (this.slotElement !== undefined && this.slotElement !== null) {\n const assignedElements = this.slotElement.assignedElements({ flatten: true }) as HTMLElement[]\n return assignedElements.filter(\n (el) => el.tagName?.toLowerCase() === 'br-select-option'\n ) as BrSelectOptionElement[]\n }\n\n return Array.from(this.el.querySelectorAll('br-select-option')) as BrSelectOptionElement[]\n }\n\n private getSourceOptions(): SelectOptionItem[] {\n if (this.optionElements.length > 0) {\n return this.optionElements\n .map((optionElement) => {\n const label = this.getOptionElementLabel(optionElement)\n const value = optionElement.value?.trim() || label\n\n return {\n label,\n value,\n selected: optionElement.selected === true,\n sourceElement: optionElement,\n }\n })\n .filter((option) => option.label !== '' || option.value !== '')\n }\n\n return this.getOptionsFromProp()\n }\n\n private getOptionsFromProp(): SelectOptionItem[] {\n let parsedOptions: SelectOptionItem[] = []\n\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 return parsedOptions\n }\n\n private getOptionElementLabel(optionElement: BrSelectOptionElement): string {\n const propLabel = optionElement.label?.trim()\n if (propLabel !== undefined && propLabel !== '') return propLabel\n\n return optionElement.textContent?.trim() || ''\n }\n\n private updateSelectedValueFromParsedOptions() {\n const selectedValues = this.parsedOptions.filter((option) => option.selected === true).map((option) => option.value)\n const currentValue = typeof this.value === 'string' ? this.value : undefined\n this.selectedValue = this.isMultiple ? selectedValues : (selectedValues[0] ?? currentValue ?? undefined)\n this.value = this.selectedValue\n }\n\n private syncOptionElementsFromParsedOptions() {\n if (this.optionElements.length === 0) return\n\n this.isSyncingOptionElements = true\n\n this.parsedOptions.forEach((option) => {\n if (option.sourceElement !== undefined) {\n if (option.selected === true) {\n option.sourceElement.setAttribute('selected', '')\n } else {\n option.sourceElement.removeAttribute('selected')\n }\n }\n })\n\n this.isSyncingOptionElements = false\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 // Usa composedPath para considerar nós dentro de Shadow DOM como \"dentro\" do componente\n const path = (event.composedPath && event.composedPath()) || []\n const clickedInside = path.includes(this.el) || (event.target instanceof Node && this.el.contains(event.target))\n\n if (this.isExpanded && !clickedInside) {\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 const option = this.filteredOptions[index]\n if (option !== undefined) {\n this.handleSelectionByValue(option.value)\n }\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 HTMLBrInputElement | null\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 this.emitHoverFromOption(this.filteredOptions[index])\n }\n }\n\n private emitHoverFromOption(option?: { label: string; value: string }) {\n if (!option) return\n this.optionHover.emit({ label: option.label || option.value, value: option.value })\n }\n\n private openSelect() {\n this.isExpanded = true\n }\n\n private closeSelect() {\n this.isExpanded = false\n // Reinicializar o índice focado ao fechar o select\n this.focusedIndex = -1\n }\n\n private handleSelectionByValue(value: string) {\n const index = this.parsedOptions.findIndex((o) => o.value === value)\n if (index === -1) return\n\n if (this.isMultiple) {\n this.parsedOptions = this.parsedOptions.map((o, i) => (i === index ? { ...o, selected: !o.selected } : o))\n this.isExpanded = this.keepOpenOnSelect\n this.isFocused = false\n this.searchTerm = ''\n } else {\n this.parsedOptions = this.parsedOptions.map((o, i) => ({\n ...o,\n selected: i === index,\n }))\n this.isExpanded = this.keepOpenOnSelect\n // Se fechou, não estamos mais focados na busca.\n // Isso garante que o valor selecionado seja exibido em vez do termo de busca.\n this.isFocused = false\n this.searchTerm = ''\n }\n\n this.updateSelectedValueFromParsedOptions()\n this.valueChange.emit(this.selectedValue)\n\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n this.syncOptionElementsFromParsedOptions()\n\n // Força a atualização da referência do array para garantir que o Stencil detecte a mudança\n this.filteredOptions = [...this.getFilteredOptions(this.searchTerm)]\n\n try {\n this.elementInternals.setFormValue(JSON.stringify(this.selectedValue ?? []))\n } catch {}\n }\n\n private updateSelectedOptions() {\n this.inputValue = this.getStringValue(this.parsedOptions.filter((option) => option.selected))\n }\n\n private normalizeText(text: string): string {\n return (text || '')\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n }\n\n private getFilteredOptions(term: string) {\n if (!term) {\n return this.parsedOptions\n }\n\n const normalizedTerm = this.normalizeText(term)\n return this.parsedOptions.filter((option) => {\n const normalizedLabel = this.normalizeText(option.label || option.value)\n const normalizedValue = this.normalizeText(option.value)\n return normalizedLabel.includes(normalizedTerm) || normalizedValue.includes(normalizedTerm)\n })\n }\n\n private getStringValue(options: SelectOptionItem[]) {\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.filter((option) => option.selected === true).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 try {\n this.elementInternals.setFormValue(JSON.stringify(this.isMultiple ? selectedValues : (selectedValues[0] ?? null)))\n } catch {\n // Ignora erro em testes onde setFormValue não é implementado\n }\n }\n\n private updateSelectedAllState() {\n const selectedCount = this.parsedOptions.filter((option) => option.selected).length\n const total = this.parsedOptions.length\n\n this.isAllSelected = total > 0 && selectedCount === total\n this.isIndeterminate = selectedCount > 0 && selectedCount < total\n }\n\n private toggleSelectAll() {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: !this.isAllSelected }))\n this.parsedOptions = updatedOptions\n\n this.updateSelectedAllState()\n this.updateSelectedOptions()\n\n // Atualiza a prop 'value' e emite o evento para ngModel\n this.updateSelectedValueFromParsedOptions()\n this.valueChange.emit(this.selectedValue)\n this.syncOptionElementsFromParsedOptions()\n\n try {\n this.elementInternals.setFormValue(JSON.stringify(this.selectedValue ?? []))\n } catch {\n // Ignora erro em testes onde setFormValue não é implementado\n }\n }\n\n // Indica se o input de busca está focado.\n @State() isFocused: boolean = false\n\n private renderInput() {\n // Se estiver focado, mostramos EXATAMENTE o que está sendo digitado (searchTerm), mesmo que seja vazio.\n // Se não estiver focado, mostramos o termo de busca (se houver) ou o valor selecionado (inputValue).\n const displayValue = this.isFocused ? this.searchTerm : this.searchTerm || this.inputValue\n\n return (\n <br-input\n exportparts=\"label\"\n value={displayValue}\n label={this.label}\n isInline={this.isInline}\n controlWidth={this.inputWidth}\n borderless={this.borderless}\n placeholder={this.placeholder}\n actionLabel={this.isExpanded ? 'Recolher lista de opções' : 'Exibir lista de opções'}\n actionTabIndex={-1}\n readonly={false}\n disabled={this.disabled}\n onClick={() => {\n if (!this.disabled) this.toggleOpen()\n }}\n onInput={(event) => this.handleSearchInput(event)}\n onFocus={() => this.handleSearchFocus()}\n onBlur={(event) => this.handleSearchBlur(event)}\n onKeyDown={(event) => {\n if (!this.disabled) this.handleKeydownOnInput(event)\n }}\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' : ''} ${this.disabled ? 'disabled' : ''}`}\n data-all=\"data-all\"\n tabindex=\"-1\"\n role=\"option\"\n aria-selected={this.isAllSelected}\n aria-disabled={this.disabled}\n onKeyDown={(event) => {\n if (!this.disabled) this.handleSelectAllKeyDown(event)\n }}\n onClick={() => {\n if (!this.disabled) this.toggleSelectAll()\n }}\n >\n <br-checkbox\n name={`checkbox-${this.customId}`}\n label={this.isAllSelected ? this.unselectAllLabel : this.selectAllLabel}\n checked={this.isAllSelected}\n indeterminate={this.isIndeterminate}\n disabled={this.disabled}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={() => {\n if (!this.disabled) this.toggleSelectAll()\n }}\n ></br-checkbox>\n </div>\n )\n }\n\n private renderOptions() {\n if (this.filteredOptions.length === 0) {\n return (\n <div class=\"br-item empty\" role=\"option\" aria-selected=\"false\" tabindex={-1}>\n Nenhum resultado encontrado\n </div>\n )\n }\n\n return this.filteredOptions.map((option, index) => (\n <div\n class={`br-item ${option.selected ? 'selected' : ''} ${this.disabled ? 'disabled' : ''}`}\n key={`${option.label}-${this.customId}`}\n role=\"option\"\n tabindex={this.disabled ? -1 : this.focusedIndex === index ? 0 : -1}\n aria-selected={option.selected}\n aria-disabled={this.disabled}\n data-value={option.value}\n onClick={() => {\n if (!this.disabled) this.handleSelectionByValue(option.value)\n }}\n onKeyDown={(event) => {\n if (!this.disabled) this.handleKeydownOnItem(event, index)\n }}\n onMouseOver={() => this.emitHoverFromOption(option)}\n onPointerOver={() => this.emitHoverFromOption(option)}\n onFocus={() => this.emitHoverFromOption(option)}\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 disabled={this.disabled}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={() => {\n if (!this.disabled) this.handleSelectionByValue(option.value)\n }}\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 disabled={this.disabled}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={() => {\n if (!this.disabled) this.handleSelectionByValue(option.value)\n }}\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 toggleOpen(): Promise<void> {\n this.isExpanded = !this.isExpanded\n return Promise.resolve()\n }\n\n /**\n * Limpa todas as opções selecionadas.\n */\n @Method()\n clear(): Promise<void> {\n const updatedOptions = this.parsedOptions.map((option) => ({ ...option, selected: false }))\n this.parsedOptions = updatedOptions\n\n const newValue = this.isMultiple ? [] : undefined\n this.selectedValue = newValue\n this.value = newValue\n\n this.updateSelectedOptions()\n this.updateSelectedAllState()\n this.valueChange.emit(newValue)\n this.syncOptionElementsFromParsedOptions()\n\n try {\n this.elementInternals.setFormValue(JSON.stringify(newValue ?? (this.isMultiple ? [] : null)))\n } catch {\n // Ignora erro em testes onde setFormValue não é implementado\n }\n\n return Promise.resolve()\n }\n\n /**\n * Retorna o valor selecionado.\n * @returns {Promise<string | string[]>} O valor atual.\n */\n @Method()\n getValue(): Promise<string | string[]> {\n return Promise.resolve(this.value)\n }\n\n /**\n * Define o valor do componente.\n * @param {string | string[]} newValue O novo valor a ser definido.\n */\n @Method()\n setValue(newValue: string | string[]): Promise<void> {\n this.value = newValue\n // O @Watch('value') cuidará da sincronização\n return Promise.resolve()\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-select': true,\n }\n }\n\n private handleSearchInput(event: Event) {\n const value = (event.target as HTMLInputElement).value ?? ''\n this.searchTerm = value\n this.filteredOptions = this.getFilteredOptions(value)\n this.isExpanded = true\n }\n\n private handleSearchFocus() {\n this.isFocused = true\n this.filteredOptions = this.getFilteredOptions(this.searchTerm)\n }\n\n private handleSearchBlur(event: FocusEvent) {\n // Se o foco foi movido para dentro do componente (ex: clicou no checkbox/item),\n // não limpamos a busca para manter a lista filtrada estável e permitir o clique.\n const relatedTarget = event.relatedTarget as Node\n if (relatedTarget && (this.el.contains(relatedTarget) || this.el.shadowRoot?.contains(relatedTarget))) {\n return\n }\n\n this.isFocused = false\n // Ao sair do campo, volta a exibir o resumo das seleções\n this.searchTerm = ''\n this.filteredOptions = this.getFilteredOptions('')\n }\n\n render() {\n return (\n <Host>\n <div style={{ display: 'none' }} aria-hidden=\"true\">\n <slot\n ref={(el) => {\n this.slotElement = el as HTMLSlotElement\n }}\n onSlotchange={this.registerOptionItems}\n ></slot>\n </div>\n\n <div class={this.getCssClassMap()} id={this.getComputedId()} aria-disabled={this.disabled}>\n {this.renderInput()}\n\n {this.isExpanded && (\n <br-list\n tabindex={-1}\n onKeyDown={(event) => this.handleKeydownOnList(event)}\n style={this.inputWidth !== undefined ? { width: this.inputWidth } : undefined}\n >\n {this.isMultiple && this.renderSelectAllCheckbox()}\n {this.renderOptions()}\n </br-list>\n )}\n </div>\n </Host>\n )\n }\n}\n\nlet selectId = 0\n"]}
|