@govbr-ds/webcomponents 2.1.3 → 2.3.0
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/README.md +146 -54
- package/cem/custom-elements.json +6496 -1141
- package/cem/webcomponents.html-custom-data.json +400 -287
- package/dist/cjs/br-avatar.cjs.entry.js +21 -14
- package/dist/cjs/br-breadcrumb-item.cjs.entry.js +2 -2
- package/dist/cjs/br-breadcrumb.cjs.entry.js +49 -22
- package/dist/cjs/br-button_2.cjs.entry.js +77 -35
- package/dist/cjs/br-card.cjs.entry.js +6 -5
- package/dist/cjs/br-carousel-page.cjs.entry.js +3 -3
- package/dist/cjs/br-carousel.cjs.entry.js +77 -21
- package/dist/cjs/br-checkbox-group.cjs.entry.js +157 -27
- package/dist/cjs/br-checkbox.cjs.entry.js +86 -16
- package/dist/cjs/br-checkgroup.cjs.entry.js +5 -2
- package/dist/cjs/br-collapse_2.cjs.entry.js +90 -27
- package/dist/cjs/br-cookiebar-cookie.cjs.entry.js +4 -4
- package/dist/cjs/br-cookiebar-group.cjs.entry.js +4 -4
- package/dist/cjs/br-cookiebar-header.cjs.entry.js +4 -4
- package/dist/cjs/br-cookiebar-link.cjs.entry.js +14 -6
- package/dist/cjs/br-cookiebar-note-group.cjs.entry.js +3 -5
- package/dist/cjs/br-cookiebar-note.cjs.entry.js +4 -4
- package/dist/cjs/br-cookiebar.cjs.entry.js +38 -25
- package/dist/cjs/br-crumb.cjs.entry.js +2 -2
- package/dist/cjs/br-date-picker_3.cjs.entry.js +246 -88
- package/dist/cjs/br-datetime-picker.cjs.entry.js +116 -528
- package/dist/cjs/br-divider.cjs.entry.js +70 -17
- package/dist/cjs/br-dropdown_2.cjs.entry.js +334 -163
- package/dist/cjs/br-footer-category.cjs.entry.js +10 -6
- package/dist/cjs/br-footer-item.cjs.entry.js +9 -4
- package/dist/cjs/br-footer-legal.cjs.entry.js +4 -4
- package/dist/cjs/br-footer-logo.cjs.entry.js +22 -10
- package/dist/cjs/br-footer-social.cjs.entry.js +14 -6
- package/dist/cjs/br-footer.cjs.entry.js +16 -7
- package/dist/cjs/br-header-function.cjs.entry.js +28 -7
- package/dist/cjs/br-header-link.cjs.entry.js +25 -4
- package/dist/cjs/br-header-list.cjs.entry.js +6 -17
- package/dist/cjs/br-header-logo.cjs.entry.js +18 -7
- package/dist/cjs/br-header.cjs.entry.js +96 -37
- package/dist/cjs/br-icon.cjs.entry.js +161 -53
- package/dist/cjs/br-input.cjs.entry.js +150 -40
- package/dist/cjs/br-item.cjs.entry.js +97 -48
- package/dist/cjs/br-link.cjs.entry.js +20 -7
- package/dist/cjs/br-loading.cjs.entry.js +100 -38
- package/dist/cjs/br-magic-button.cjs.entry.js +39 -9
- package/dist/cjs/br-menu-group.cjs.entry.js +14 -3
- package/dist/cjs/br-menu-header.cjs.entry.js +4 -4
- package/dist/cjs/br-menu-info.cjs.entry.js +4 -4
- package/dist/cjs/br-menu-item.cjs.entry.js +27 -5
- package/dist/cjs/br-menu-link.cjs.entry.js +14 -6
- package/dist/cjs/br-menu-list.cjs.entry.js +23 -27
- package/dist/cjs/br-menu-logo.cjs.entry.js +4 -4
- package/dist/cjs/br-menu-social.cjs.entry.js +16 -6
- package/dist/cjs/br-menu.cjs.entry.js +38 -57
- package/dist/cjs/br-modal.cjs.entry.js +44 -42
- package/dist/cjs/br-notification-body.cjs.entry.js +4 -4
- package/dist/cjs/br-notification-header.cjs.entry.js +4 -4
- package/dist/cjs/br-notification-item.cjs.entry.js +14 -8
- package/dist/cjs/br-notification.cjs.entry.js +23 -8
- package/dist/cjs/br-pagination.cjs.entry.js +120 -88
- package/dist/cjs/br-radio-group.cjs.entry.js +107 -58
- package/dist/cjs/br-radio.cjs.entry.js +62 -12
- package/dist/cjs/br-scrim.cjs.entry.js +161 -67
- package/dist/cjs/br-select-input_3.cjs.entry.js +286 -91
- package/dist/cjs/br-sign-in.cjs.entry.js +38 -15
- package/dist/cjs/br-skip-link-item.cjs.entry.js +39 -2
- package/dist/cjs/br-skip-link.cjs.entry.js +50 -33
- package/dist/cjs/br-skiplink-item.cjs.entry.js +22 -6
- package/dist/cjs/br-slider.cjs.entry.js +522 -100
- package/dist/cjs/br-step_2.cjs.entry.js +98 -44
- package/dist/cjs/br-switch.cjs.entry.js +21 -12
- package/dist/cjs/br-tab-item.cjs.entry.js +38 -14
- package/dist/cjs/br-tab.cjs.entry.js +89 -51
- package/dist/cjs/br-table-body.cjs.entry.js +3 -3
- package/dist/cjs/br-table-cell.cjs.entry.js +30 -13
- package/dist/cjs/br-table-header-cell.cjs.entry.js +23 -7
- package/dist/cjs/br-table-header.cjs.entry.js +3 -3
- package/dist/cjs/br-table-row.cjs.entry.js +17 -3
- package/dist/cjs/br-table.cjs.entry.js +67 -21
- package/dist/cjs/br-tag.cjs.entry.js +49 -31
- package/dist/cjs/br-textarea.cjs.entry.js +118 -13
- package/dist/cjs/br-tooltip.cjs.entry.js +87 -41
- package/dist/cjs/br-upload.cjs.entry.js +84 -25
- package/dist/cjs/br-wizard-panel.cjs.entry.js +16 -3
- package/dist/cjs/br-wizard.cjs.entry.js +52 -28
- package/dist/cjs/{isValid-Fu3kaWNn.js → datetime-picker-props-validation-DmNKSXsy.js} +481 -4
- package/dist/cjs/{floating-ui-MBI1osio.js → floating-ui-B6nsdYUU.js} +24 -1
- package/dist/cjs/{floating-ui.dom-BUSTaaxR.js → floating-ui.dom-wzdGZjyG.js} +201 -113
- package/dist/cjs/{focus-DuywwJPR.js → focus-BhfJnFgJ.js} +21 -0
- package/dist/cjs/header-context-CdawuLsH.js +17 -0
- package/dist/cjs/icon.utils-DF6kMskA.js +46 -0
- package/dist/cjs/id-DE4jSi-L.js +36 -0
- package/dist/cjs/{index-CRdcutym.js → index-Bc30P_6z.js} +88 -766
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/motion-CgIooxWS.js +29 -0
- package/dist/cjs/ownership-UnpufyCx.js +116 -0
- package/dist/cjs/prop-warning-xvEHQz8H.js +60 -0
- package/dist/cjs/props-D8dybmr0.js +124 -0
- package/dist/cjs/{swipe-BU8_XE9f.js → swipe-BGF-h9WY.js} +11 -1
- package/dist/cjs/{validator-CTCajtT9.js → validator-GkkueMOx.js} +18 -0
- package/dist/cjs/webcomponents.cjs.js +3 -3
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/avatar/avatar.css +1 -1
- package/dist/collection/components/avatar/avatar.js +48 -16
- package/dist/collection/components/breadcrumb/breadcrumb-item/breadcrumb-item.js +15 -3
- package/dist/collection/components/breadcrumb/breadcrumb.css +1 -1
- package/dist/collection/components/breadcrumb/breadcrumb.js +107 -22
- package/dist/collection/components/breadcrumb/crumb/crumb.js +14 -2
- package/dist/collection/components/button/button.css +1 -1
- package/dist/collection/components/button/button.js +93 -24
- package/dist/collection/components/card/card.css +1 -1
- package/dist/collection/components/card/card.js +33 -5
- package/dist/collection/components/carousel/carousel-page/carousel-page.css +1 -1
- package/dist/collection/components/carousel/carousel-page/carousel-page.js +11 -4
- package/dist/collection/components/carousel/carousel.css +1 -1
- package/dist/collection/components/carousel/carousel.js +107 -21
- package/dist/collection/components/checkbox/checkbox.css +1 -1
- package/dist/collection/components/checkbox/checkbox.js +134 -20
- package/dist/collection/components/checkbox-group/checkbox-group.css +1 -1
- package/dist/collection/components/checkbox-group/checkbox-group.js +210 -30
- package/dist/collection/components/checkgroup/checkgroup.js +42 -4
- package/dist/collection/components/collapse/collapse.css +1 -1
- package/dist/collection/components/collapse/collapse.js +55 -9
- package/dist/collection/components/cookiebar/cookiebar-cookie/cookiebar-cookie.css +1 -1
- package/dist/collection/components/cookiebar/cookiebar-cookie/cookiebar-cookie.js +17 -4
- package/dist/collection/components/cookiebar/cookiebar-group/cookiebar-group.css +1 -1
- package/dist/collection/components/cookiebar/cookiebar-group/cookiebar-group.js +16 -7
- package/dist/collection/components/cookiebar/cookiebar-header/cookiebar-header.css +1 -1
- package/dist/collection/components/cookiebar/cookiebar-header/cookiebar-header.js +15 -9
- package/dist/collection/components/cookiebar/cookiebar-link/cookiebar-link.css +1 -1
- package/dist/collection/components/cookiebar/cookiebar-link/cookiebar-link.js +24 -8
- package/dist/collection/components/cookiebar/cookiebar-note/cookiebar-note.css +1 -1
- package/dist/collection/components/cookiebar/cookiebar-note/cookiebar-note.js +14 -4
- package/dist/collection/components/cookiebar/cookiebar-note-group/cookiebar-note-group.css +1 -1
- package/dist/collection/components/cookiebar/cookiebar-note-group/cookiebar-note-group.js +13 -5
- package/dist/collection/components/cookiebar/cookiebar.css +1 -1
- package/dist/collection/components/cookiebar/cookiebar.js +67 -32
- package/dist/collection/components/datetime-picker/date-picker/date-picker.css +1 -1
- package/dist/collection/components/datetime-picker/date-picker/date-picker.js +134 -35
- package/dist/collection/components/datetime-picker/datetime-input/datetime-input.css +1 -1
- package/dist/collection/components/datetime-picker/datetime-input/datetime-input.js +112 -22
- package/dist/collection/components/datetime-picker/datetime-picker-props-validation.js +13 -5
- package/dist/collection/components/datetime-picker/datetime-picker.css +1 -1
- package/dist/collection/components/datetime-picker/datetime-picker.js +158 -42
- package/dist/collection/components/datetime-picker/time-picker/time-picker.css +1 -1
- package/dist/collection/components/datetime-picker/time-picker/time-picker.js +78 -9
- package/dist/collection/components/divider/divider.css +1 -1
- package/dist/collection/components/divider/divider.js +101 -26
- package/dist/collection/components/dropdown/dropdown.css +1 -1
- package/dist/collection/components/dropdown/dropdown.js +195 -51
- package/dist/collection/components/footer/footer-category/footer-category.css +1 -1
- package/dist/collection/components/footer/footer-category/footer-category.js +23 -4
- package/dist/collection/components/footer/footer-item/footer-item.css +1 -1
- package/dist/collection/components/footer/footer-item/footer-item.js +21 -2
- package/dist/collection/components/footer/footer-legal/footer-legal.css +1 -1
- package/dist/collection/components/footer/footer-legal/footer-legal.js +16 -2
- package/dist/collection/components/footer/footer-logo/footer-logo.css +1 -1
- package/dist/collection/components/footer/footer-logo/footer-logo.js +35 -9
- package/dist/collection/components/footer/footer-social/footer-social.css +1 -1
- package/dist/collection/components/footer/footer-social/footer-social.js +26 -6
- package/dist/collection/components/footer/footer.css +1 -1
- package/dist/collection/components/footer/footer.js +48 -7
- package/dist/collection/components/header/header-context.js +13 -0
- package/dist/collection/components/header/header-function/header-function.css +1 -1
- package/dist/collection/components/header/header-function/header-function.js +51 -8
- package/dist/collection/components/header/header-link/header-link.css +1 -1
- package/dist/collection/components/header/header-link/header-link.js +52 -2
- package/dist/collection/components/header/header-list/header-list.css +1 -1
- package/dist/collection/components/header/header-list/header-list.js +20 -23
- package/dist/collection/components/header/header-logo/header-logo.css +1 -1
- package/dist/collection/components/header/header-logo/header-logo.js +33 -8
- package/dist/collection/components/header/header.css +1 -1
- package/dist/collection/components/header/header.js +134 -44
- package/dist/collection/components/icon/default-icons-cache.js +111 -3
- package/dist/collection/components/icon/icon.css +1 -1
- package/dist/collection/components/icon/icon.js +80 -33
- package/dist/collection/components/icon/icon.utils.js +8 -0
- package/dist/collection/components/input/input.css +1 -1
- package/dist/collection/components/input/input.js +189 -55
- package/dist/collection/components/item/item.css +1 -1
- package/dist/collection/components/item/item.js +136 -52
- package/dist/collection/components/link/link.css +1 -1
- package/dist/collection/components/link/link.js +48 -15
- package/dist/collection/components/list/list.css +1 -1
- package/dist/collection/components/list/list.js +106 -25
- package/dist/collection/components/loading/loading.css +1 -1
- package/dist/collection/components/loading/loading.js +131 -43
- package/dist/collection/components/magic-button/magic-button.css +1 -1
- package/dist/collection/components/magic-button/magic-button.js +65 -9
- package/dist/collection/components/menu/menu-group/menu-group.css +1 -1
- package/dist/collection/components/menu/menu-group/menu-group.js +60 -2
- package/dist/collection/components/menu/menu-header/menu-header.css +1 -1
- package/dist/collection/components/menu/menu-header/menu-header.js +17 -2
- package/dist/collection/components/menu/menu-info/menu-info.css +1 -1
- package/dist/collection/components/menu/menu-info/menu-info.js +15 -2
- package/dist/collection/components/menu/menu-item/menu-item.css +1 -1
- package/dist/collection/components/menu/menu-item/menu-item.js +72 -8
- package/dist/collection/components/menu/menu-link/menu-link.css +1 -1
- package/dist/collection/components/menu/menu-link/menu-link.js +25 -4
- package/dist/collection/components/menu/menu-list/menu-list.css +1 -1
- package/dist/collection/components/menu/menu-list/menu-list.js +64 -29
- package/dist/collection/components/menu/menu-logo/menu-logo.css +1 -1
- package/dist/collection/components/menu/menu-logo/menu-logo.js +15 -2
- package/dist/collection/components/menu/menu-social/menu-social.css +1 -1
- package/dist/collection/components/menu/menu-social/menu-social.js +29 -7
- package/dist/collection/components/menu/menu.css +1 -1
- package/dist/collection/components/menu/menu.js +71 -60
- package/dist/collection/components/menu/menu.utils.js +8 -18
- package/dist/collection/components/message/message.css +1 -1
- package/dist/collection/components/message/message.js +50 -24
- package/dist/collection/components/modal/modal.css +1 -1
- package/dist/collection/components/modal/modal.js +72 -43
- package/dist/collection/components/notification/notification-body/notification-body.css +1 -1
- package/dist/collection/components/notification/notification-body/notification-body.js +13 -4
- package/dist/collection/components/notification/notification-header/notification-header.css +1 -1
- package/dist/collection/components/notification/notification-header/notification-header.js +13 -4
- package/dist/collection/components/notification/notification-item/notification-item.css +1 -1
- package/dist/collection/components/notification/notification-item/notification-item.js +23 -9
- package/dist/collection/components/notification/notification.css +1 -1
- package/dist/collection/components/notification/notification.js +54 -10
- package/dist/collection/components/pagination/pagination.css +1 -1
- package/dist/collection/components/pagination/pagination.js +164 -75
- package/dist/collection/components/radio/radio.css +1 -1
- package/dist/collection/components/radio/radio.js +109 -14
- package/dist/collection/components/radio-group/radio-group.css +1 -1
- package/dist/collection/components/radio-group/radio-group.js +153 -63
- package/dist/collection/components/scrim/scrim.css +1 -1
- package/dist/collection/components/scrim/scrim.js +215 -74
- package/dist/collection/components/scrim/scrim.utils.js +5 -51
- package/dist/collection/components/select/select-input/select-input.css +1 -1
- package/dist/collection/components/select/select-input/select-input.js +61 -6
- package/dist/collection/components/select/select-list/select-list.css +1 -1
- package/dist/collection/components/select/select-list/select-list.js +247 -52
- package/dist/collection/components/select/select-option/select-option.css +1 -1
- package/dist/collection/components/select/select-option/select-option.js +108 -46
- package/dist/collection/components/select/select.css +1 -1
- package/dist/collection/components/select/select.js +320 -124
- package/dist/collection/components/select/select.utils.js +3 -1
- package/dist/collection/components/sign-in/sign-in.css +1 -1
- package/dist/collection/components/sign-in/sign-in.js +60 -17
- package/dist/collection/components/skip-link/skip-link-item/skip-link-item-alias.js +112 -3
- 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 +58 -5
- package/dist/collection/components/skip-link/skip-link.css +1 -1
- package/dist/collection/components/skip-link/skip-link.js +78 -39
- package/dist/collection/components/slider/slider.css +1 -1
- package/dist/collection/components/slider/slider.js +530 -132
- package/dist/collection/components/slider/slider.utils.js +178 -0
- package/dist/collection/components/step/step-item/step-item.css +1 -1
- package/dist/collection/components/step/step-item/step-item.js +29 -12
- package/dist/collection/components/step/step.css +1 -1
- package/dist/collection/components/step/step.js +119 -44
- package/dist/collection/components/switch/switch.css +1 -1
- package/dist/collection/components/switch/switch.js +48 -15
- package/dist/collection/components/tab/tab-item/tab-item.css +1 -1
- package/dist/collection/components/tab/tab-item/tab-item.js +49 -14
- package/dist/collection/components/tab/tab.css +1 -1
- package/dist/collection/components/tab/tab.js +123 -53
- package/dist/collection/components/table/table-body/table-body.css +1 -1
- package/dist/collection/components/table/table-body/table-body.js +11 -7
- package/dist/collection/components/table/table-cell/table-cell.css +1 -1
- package/dist/collection/components/table/table-cell/table-cell.js +36 -17
- package/dist/collection/components/table/table-header/table-header.css +1 -1
- package/dist/collection/components/table/table-header/table-header.js +11 -7
- 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 +35 -13
- package/dist/collection/components/table/table-row/table-row.css +1 -1
- package/dist/collection/components/table/table-row/table-row.js +24 -7
- package/dist/collection/components/table/table.css +1 -1
- package/dist/collection/components/table/table.js +107 -31
- package/dist/collection/components/tag/tag.css +1 -1
- package/dist/collection/components/tag/tag.js +86 -36
- package/dist/collection/components/textarea/textarea.css +1 -1
- package/dist/collection/components/textarea/textarea.js +222 -19
- package/dist/collection/components/tooltip/tooltip.css +1 -1
- package/dist/collection/components/tooltip/tooltip.js +134 -45
- package/dist/collection/components/upload/upload.css +1 -1
- package/dist/collection/components/upload/upload.js +135 -33
- package/dist/collection/components/wizard/wizard-panel/wizard-panel.css +1 -1
- package/dist/collection/components/wizard/wizard-panel/wizard-panel.js +54 -3
- package/dist/collection/components/wizard/wizard.css +1 -1
- package/dist/collection/components/wizard/wizard.js +82 -28
- package/dist/collection/pages/components/select/remote.js +33 -0
- package/dist/collection/pages/components/select/virtualized.js +13 -0
- package/dist/collection/pages/components/upload/handler.js +25 -0
- package/dist/collection/pages/scripts/component-controls-core.js +95 -0
- package/dist/collection/pages/scripts/component-controls.js +221 -158
- package/dist/collection/pages/scripts/dev-event-console.js +5 -1
- package/dist/collection/pages/scripts/menu.js +90 -6
- package/dist/collection/pages/scripts/pageLoader.js +1570 -607
- package/dist/collection/pages/scripts/pageloader-preview.js +796 -0
- package/dist/collection/pages/scripts/playground-core.js +173 -0
- package/dist/collection/shared/utils/cssVariables.js +2 -0
- package/dist/collection/shared/utils/date.js +8 -4
- package/dist/collection/shared/utils/floating-ui.js +24 -1
- package/dist/collection/shared/utils/focus.js +31 -0
- package/dist/collection/shared/utils/form.js +17 -0
- package/dist/collection/shared/utils/getRandom.js +16 -1
- package/dist/collection/shared/utils/helpers.js +4 -11
- package/dist/collection/shared/utils/id.js +23 -7
- package/dist/collection/shared/utils/index.js +6 -1
- package/dist/collection/shared/utils/isEmpty.js +5 -3
- package/dist/collection/shared/utils/motion.js +25 -0
- package/dist/collection/shared/utils/ownership.js +113 -0
- package/dist/collection/shared/utils/prop-warning.js +47 -0
- package/dist/collection/shared/utils/props.js +79 -0
- package/dist/collection/shared/utils/swipe.js +11 -1
- package/dist/collection/shared/utils/transition.js +3 -0
- package/dist/collection/shared/utils/virtual-scroll.js +24 -0
- package/dist/components/br-avatar.d.ts +1 -1
- package/dist/components/br-avatar.js +1 -1
- package/dist/components/br-breadcrumb-item.d.ts +1 -1
- package/dist/components/br-breadcrumb-item.js +1 -1
- package/dist/components/br-breadcrumb.d.ts +1 -1
- package/dist/components/br-breadcrumb.js +1 -1
- package/dist/components/br-button.d.ts +1 -1
- package/dist/components/br-button.js +1 -1
- package/dist/components/br-card.d.ts +1 -1
- package/dist/components/br-card.js +1 -1
- package/dist/components/br-carousel-page.d.ts +1 -1
- package/dist/components/br-carousel-page.js +1 -1
- package/dist/components/br-carousel.d.ts +1 -1
- package/dist/components/br-carousel.js +1 -1
- package/dist/components/br-checkbox-group.d.ts +1 -1
- package/dist/components/br-checkbox-group.js +1 -1
- package/dist/components/br-checkbox.d.ts +1 -1
- package/dist/components/br-checkbox.js +1 -1
- package/dist/components/br-checkgroup.d.ts +1 -1
- package/dist/components/br-checkgroup.js +1 -1
- package/dist/components/br-collapse.d.ts +1 -1
- package/dist/components/br-collapse.js +1 -1
- package/dist/components/br-cookiebar-cookie.d.ts +1 -1
- package/dist/components/br-cookiebar-cookie.js +1 -1
- package/dist/components/br-cookiebar-group.d.ts +1 -1
- package/dist/components/br-cookiebar-group.js +1 -1
- package/dist/components/br-cookiebar-header.d.ts +1 -1
- package/dist/components/br-cookiebar-header.js +1 -1
- package/dist/components/br-cookiebar-link.d.ts +1 -1
- package/dist/components/br-cookiebar-link.js +1 -1
- package/dist/components/br-cookiebar-note-group.d.ts +1 -1
- package/dist/components/br-cookiebar-note-group.js +1 -1
- package/dist/components/br-cookiebar-note.d.ts +1 -1
- package/dist/components/br-cookiebar-note.js +1 -1
- package/dist/components/br-cookiebar.d.ts +1 -1
- package/dist/components/br-cookiebar.js +1 -1
- package/dist/components/br-crumb.d.ts +1 -1
- package/dist/components/br-crumb.js +1 -1
- package/dist/components/br-date-picker.d.ts +1 -1
- package/dist/components/br-date-picker.js +1 -1
- package/dist/components/br-datetime-input.d.ts +1 -1
- package/dist/components/br-datetime-input.js +1 -1
- package/dist/components/br-datetime-picker.d.ts +1 -1
- package/dist/components/br-datetime-picker.js +1 -1
- package/dist/components/br-divider.d.ts +1 -1
- package/dist/components/br-divider.js +1 -1
- package/dist/components/br-dropdown.d.ts +1 -1
- package/dist/components/br-dropdown.js +1 -1
- package/dist/components/br-footer-category.d.ts +1 -1
- package/dist/components/br-footer-category.js +1 -1
- package/dist/components/br-footer-item.d.ts +1 -1
- package/dist/components/br-footer-item.js +1 -1
- package/dist/components/br-footer-legal.d.ts +1 -1
- package/dist/components/br-footer-legal.js +1 -1
- package/dist/components/br-footer-logo.d.ts +1 -1
- package/dist/components/br-footer-logo.js +1 -1
- package/dist/components/br-footer-social.d.ts +1 -1
- package/dist/components/br-footer-social.js +1 -1
- package/dist/components/br-footer.d.ts +1 -1
- package/dist/components/br-footer.js +1 -1
- package/dist/components/br-header-function.d.ts +1 -1
- package/dist/components/br-header-function.js +1 -1
- package/dist/components/br-header-link.d.ts +1 -1
- package/dist/components/br-header-link.js +1 -1
- package/dist/components/br-header-list.d.ts +1 -1
- package/dist/components/br-header-list.js +1 -1
- package/dist/components/br-header-logo.d.ts +1 -1
- package/dist/components/br-header-logo.js +1 -1
- package/dist/components/br-header.d.ts +1 -1
- package/dist/components/br-header.js +1 -1
- package/dist/components/br-icon.d.ts +1 -1
- package/dist/components/br-icon.js +1 -1
- package/dist/components/br-input.d.ts +1 -1
- package/dist/components/br-input.js +1 -1
- package/dist/components/br-item.d.ts +1 -1
- package/dist/components/br-item.js +1 -1
- package/dist/components/br-link.d.ts +1 -1
- package/dist/components/br-link.js +1 -1
- package/dist/components/br-list.d.ts +1 -1
- package/dist/components/br-list.js +1 -1
- package/dist/components/br-loading.d.ts +1 -1
- package/dist/components/br-loading.js +1 -1
- package/dist/components/br-magic-button.d.ts +1 -1
- package/dist/components/br-magic-button.js +1 -1
- package/dist/components/br-menu-group.d.ts +1 -1
- package/dist/components/br-menu-group.js +1 -1
- package/dist/components/br-menu-header.d.ts +1 -1
- package/dist/components/br-menu-header.js +1 -1
- package/dist/components/br-menu-info.d.ts +1 -1
- package/dist/components/br-menu-info.js +1 -1
- package/dist/components/br-menu-item.d.ts +1 -1
- package/dist/components/br-menu-item.js +1 -1
- package/dist/components/br-menu-link.d.ts +1 -1
- package/dist/components/br-menu-link.js +1 -1
- package/dist/components/br-menu-list.d.ts +1 -1
- package/dist/components/br-menu-list.js +1 -1
- package/dist/components/br-menu-logo.d.ts +1 -1
- package/dist/components/br-menu-logo.js +1 -1
- package/dist/components/br-menu-social.d.ts +1 -1
- package/dist/components/br-menu-social.js +1 -1
- package/dist/components/br-menu.d.ts +1 -1
- package/dist/components/br-menu.js +1 -1
- package/dist/components/br-message.d.ts +1 -1
- package/dist/components/br-message.js +1 -1
- package/dist/components/br-modal.d.ts +1 -1
- package/dist/components/br-modal.js +1 -1
- package/dist/components/br-notification-body.d.ts +1 -1
- package/dist/components/br-notification-body.js +1 -1
- package/dist/components/br-notification-header.d.ts +1 -1
- package/dist/components/br-notification-header.js +1 -1
- package/dist/components/br-notification-item.d.ts +1 -1
- package/dist/components/br-notification-item.js +1 -1
- package/dist/components/br-notification.d.ts +1 -1
- package/dist/components/br-notification.js +1 -1
- package/dist/components/br-pagination.d.ts +1 -1
- package/dist/components/br-pagination.js +1 -1
- package/dist/components/br-radio-group.d.ts +1 -1
- package/dist/components/br-radio-group.js +1 -1
- package/dist/components/br-radio.d.ts +1 -1
- package/dist/components/br-radio.js +1 -1
- package/dist/components/br-scrim.d.ts +1 -1
- package/dist/components/br-scrim.js +1 -1
- package/dist/components/br-select-input.d.ts +1 -1
- package/dist/components/br-select-input.js +1 -1
- package/dist/components/br-select-list.d.ts +1 -1
- package/dist/components/br-select-list.js +1 -1
- package/dist/components/br-select-option.d.ts +1 -1
- package/dist/components/br-select-option.js +1 -1
- package/dist/components/br-select.d.ts +1 -1
- package/dist/components/br-select.js +1 -1
- package/dist/components/br-sign-in.d.ts +1 -1
- package/dist/components/br-sign-in.js +1 -1
- package/dist/components/br-skip-link-item.d.ts +1 -1
- package/dist/components/br-skip-link-item.js +1 -1
- package/dist/components/br-skip-link.d.ts +1 -1
- package/dist/components/br-skip-link.js +1 -1
- package/dist/components/br-skiplink-item.d.ts +1 -1
- package/dist/components/br-skiplink-item.js +1 -1
- package/dist/components/br-slider.d.ts +1 -1
- package/dist/components/br-slider.js +1 -1
- package/dist/components/br-step-item.d.ts +1 -1
- package/dist/components/br-step-item.js +1 -1
- package/dist/components/br-step.d.ts +1 -1
- package/dist/components/br-step.js +1 -1
- package/dist/components/br-switch.d.ts +1 -1
- package/dist/components/br-switch.js +1 -1
- package/dist/components/br-tab-item.d.ts +1 -1
- package/dist/components/br-tab-item.js +1 -1
- package/dist/components/br-tab.d.ts +1 -1
- package/dist/components/br-tab.js +1 -1
- package/dist/components/br-table-body.d.ts +1 -1
- package/dist/components/br-table-body.js +1 -1
- package/dist/components/br-table-cell.d.ts +1 -1
- package/dist/components/br-table-cell.js +1 -1
- package/dist/components/br-table-header-cell.d.ts +1 -1
- package/dist/components/br-table-header-cell.js +1 -1
- package/dist/components/br-table-header.d.ts +1 -1
- package/dist/components/br-table-header.js +1 -1
- package/dist/components/br-table-row.d.ts +1 -1
- package/dist/components/br-table-row.js +1 -1
- package/dist/components/br-table.d.ts +1 -1
- package/dist/components/br-table.js +1 -1
- package/dist/components/br-tag.d.ts +1 -1
- package/dist/components/br-tag.js +1 -1
- package/dist/components/br-textarea.d.ts +1 -1
- package/dist/components/br-textarea.js +1 -1
- package/dist/components/br-time-picker.d.ts +1 -1
- package/dist/components/br-time-picker.js +1 -1
- package/dist/components/br-tooltip.d.ts +1 -1
- package/dist/components/br-tooltip.js +1 -1
- package/dist/components/br-upload.d.ts +1 -1
- package/dist/components/br-upload.js +1 -1
- package/dist/components/br-wizard-panel.d.ts +1 -1
- package/dist/components/br-wizard-panel.js +1 -1
- package/dist/components/br-wizard.d.ts +1 -1
- package/dist/components/br-wizard.js +1 -1
- package/dist/components/index.d.ts +89 -89
- package/dist/components/index.js +1 -1
- package/dist/components/p-0qmYp77w.js +5 -0
- package/dist/components/p-5c3rNBXh.js +5 -0
- package/dist/components/p-B8oIvH3q.js +5 -0
- package/dist/components/p-BECz8XWJ.js +5 -0
- package/dist/components/p-BEJGB0Nd.js +5 -0
- package/dist/{webcomponents/p-Dmfk7eEe.js → components/p-BJZC_NuV.js} +1 -1
- package/dist/components/p-BJtdabsr.js +5 -0
- package/dist/components/p-BM4Ys6hX.js +5 -0
- package/dist/components/p-BXWh9s7p.js +5 -0
- package/dist/components/{p-DA5GS53D.js → p-BblZlUp2.js} +1 -1
- package/dist/components/{p-C1yRmdso.js → p-BcqVlof7.js} +1 -1
- package/dist/components/p-BeJxz5TQ.js +5 -0
- package/dist/components/p-Bezou5CQ.js +5 -0
- package/dist/components/p-BjeUETWJ.js +5 -0
- package/dist/components/p-CDTENPaP.js +5 -0
- package/dist/components/p-CDtFCbKp.js +5 -0
- package/dist/components/p-CNwZRgyL.js +5 -0
- package/dist/components/p-CZZVc2gK.js +5 -0
- package/dist/components/p-Cd6udSDt.js +5 -0
- package/dist/components/p-Ci0_RqAE.js +5 -0
- package/dist/components/p-CuBgClZm.js +5 -0
- package/dist/components/p-D0QYZSoP.js +5 -0
- package/dist/components/p-D4SWpW6-.js +5 -0
- package/dist/components/p-D579DS7x.js +5 -0
- package/dist/components/p-D8K7rhHd.js +5 -0
- package/dist/components/p-D9Zo6FlV.js +5 -0
- package/dist/components/p-D9nXlCuS.js +5 -0
- package/dist/components/p-DKFO6Q_g.js +5 -0
- package/dist/components/p-DNJSSCNi.js +5 -0
- package/dist/components/p-DOJ1vYOl.js +5 -0
- package/dist/components/p-DWhzxlCx.js +5 -0
- package/dist/components/p-DYI30IZL.js +5 -0
- package/dist/components/p-DcVldfL0.js +5 -0
- package/dist/components/p-DhvmHPp4.js +5 -0
- package/dist/components/p-DiLI514I.js +5 -0
- package/dist/components/p-DwgiHL0b.js +5 -0
- package/dist/components/p-Jk_KQE5V.js +5 -0
- package/dist/components/p-Nze3Utvd.js +5 -0
- package/dist/components/p-WxDB6Dk4.js +5 -0
- package/dist/components/p-ZLoeVagg.js +5 -0
- package/dist/components/p-gbYJ9sfc.js +5 -0
- package/dist/components/p-uc8ABlC_.js +5 -0
- package/dist/components/p-v60ypfxD.js +5 -0
- package/dist/esm/br-avatar.entry.js +21 -14
- package/dist/esm/br-breadcrumb-item.entry.js +2 -2
- package/dist/esm/br-breadcrumb.entry.js +49 -22
- package/dist/esm/br-button_2.entry.js +77 -35
- package/dist/esm/br-card.entry.js +6 -5
- package/dist/esm/br-carousel-page.entry.js +3 -3
- package/dist/esm/br-carousel.entry.js +78 -22
- package/dist/esm/br-checkbox-group.entry.js +157 -27
- package/dist/esm/br-checkbox.entry.js +87 -17
- package/dist/esm/br-checkgroup.entry.js +5 -2
- package/dist/esm/br-collapse_2.entry.js +91 -28
- package/dist/esm/br-cookiebar-cookie.entry.js +4 -4
- package/dist/esm/br-cookiebar-group.entry.js +4 -4
- package/dist/esm/br-cookiebar-header.entry.js +4 -4
- package/dist/esm/br-cookiebar-link.entry.js +14 -6
- package/dist/esm/br-cookiebar-note-group.entry.js +3 -5
- package/dist/esm/br-cookiebar-note.entry.js +4 -4
- package/dist/esm/br-cookiebar.entry.js +39 -26
- package/dist/esm/br-crumb.entry.js +2 -2
- package/dist/esm/br-date-picker_3.entry.js +207 -49
- package/dist/esm/br-datetime-picker.entry.js +83 -495
- package/dist/esm/br-divider.entry.js +70 -17
- package/dist/esm/br-dropdown_2.entry.js +335 -164
- package/dist/esm/br-footer-category.entry.js +10 -6
- package/dist/esm/br-footer-item.entry.js +9 -4
- package/dist/esm/br-footer-legal.entry.js +4 -4
- package/dist/esm/br-footer-logo.entry.js +22 -10
- package/dist/esm/br-footer-social.entry.js +14 -6
- package/dist/esm/br-footer.entry.js +16 -7
- package/dist/esm/br-header-function.entry.js +28 -7
- package/dist/esm/br-header-link.entry.js +25 -4
- package/dist/esm/br-header-list.entry.js +7 -18
- package/dist/esm/br-header-logo.entry.js +18 -7
- package/dist/esm/br-header.entry.js +96 -37
- package/dist/esm/br-icon.entry.js +160 -52
- package/dist/esm/br-input.entry.js +152 -42
- package/dist/esm/br-item.entry.js +97 -48
- package/dist/esm/br-link.entry.js +20 -7
- package/dist/esm/br-loading.entry.js +100 -38
- package/dist/esm/br-magic-button.entry.js +39 -9
- package/dist/esm/br-menu-group.entry.js +14 -3
- package/dist/esm/br-menu-header.entry.js +4 -4
- package/dist/esm/br-menu-info.entry.js +4 -4
- package/dist/esm/br-menu-item.entry.js +27 -5
- package/dist/esm/br-menu-link.entry.js +14 -6
- package/dist/esm/br-menu-list.entry.js +23 -27
- package/dist/esm/br-menu-logo.entry.js +4 -4
- package/dist/esm/br-menu-social.entry.js +16 -6
- package/dist/esm/br-menu.entry.js +39 -58
- package/dist/esm/br-modal.entry.js +44 -42
- package/dist/esm/br-notification-body.entry.js +4 -4
- package/dist/esm/br-notification-header.entry.js +4 -4
- package/dist/esm/br-notification-item.entry.js +14 -8
- package/dist/esm/br-notification.entry.js +24 -9
- package/dist/esm/br-pagination.entry.js +120 -88
- package/dist/esm/br-radio-group.entry.js +108 -59
- package/dist/esm/br-radio.entry.js +63 -13
- package/dist/esm/br-scrim.entry.js +161 -67
- package/dist/esm/br-select-input_3.entry.js +286 -91
- package/dist/esm/br-sign-in.entry.js +38 -15
- package/dist/esm/br-skip-link-item.entry.js +39 -2
- package/dist/esm/br-skip-link.entry.js +50 -33
- package/dist/esm/br-skiplink-item.entry.js +22 -6
- package/dist/esm/br-slider.entry.js +520 -98
- package/dist/esm/br-step_2.entry.js +98 -44
- package/dist/esm/br-switch.entry.js +22 -13
- package/dist/esm/br-tab-item.entry.js +38 -14
- package/dist/esm/br-tab.entry.js +89 -51
- package/dist/esm/br-table-body.entry.js +3 -3
- package/dist/esm/br-table-cell.entry.js +30 -13
- package/dist/esm/br-table-header-cell.entry.js +23 -7
- package/dist/esm/br-table-header.entry.js +3 -3
- package/dist/esm/br-table-row.entry.js +17 -3
- package/dist/esm/br-table.entry.js +68 -22
- package/dist/esm/br-tag.entry.js +50 -32
- package/dist/esm/br-textarea.entry.js +119 -14
- package/dist/esm/br-tooltip.entry.js +88 -42
- package/dist/esm/br-upload.entry.js +85 -26
- package/dist/esm/br-wizard-panel.entry.js +16 -3
- package/dist/esm/br-wizard.entry.js +52 -28
- package/dist/esm/{datetime-picker-constants-Bfm58jO6.js → datetime-picker-constants-BtRPYRvA.js} +1 -1
- package/dist/esm/{isValid-DIUZX1qS.js → datetime-picker-props-validation-BeTcUTnE.js} +476 -5
- package/dist/esm/{event-DFN_so7I.js → event-CfuJQ1DY.js} +1 -1
- package/dist/esm/{floating-ui-BavFwMnx.js → floating-ui-CskvaxD5.js} +24 -1
- package/dist/esm/{floating-ui.dom-DIK54tTj.js → floating-ui.dom-D9Zo6FlV.js} +201 -114
- package/dist/esm/{focus-DxZJrIyL.js → focus-CNwZRgyL.js} +20 -1
- package/dist/esm/header-context-BEJGB0Nd.js +15 -0
- package/dist/esm/icon.utils-zlORkiHQ.js +43 -0
- package/dist/esm/id-BeJxz5TQ.js +34 -0
- package/dist/esm/{index-Bo-2igoO.js → index-BQPOWxe5.js} +1 -1
- package/dist/esm/{index-C2RBydfd.js → index-ConyRdJe.js} +88 -766
- package/dist/esm/index.js +2 -2
- package/dist/esm/loader.js +3 -3
- package/dist/esm/motion-DWhzxlCx.js +27 -0
- package/dist/esm/ownership-CDtFCbKp.js +111 -0
- package/dist/esm/prop-warning-BlGV-x0w.js +56 -0
- package/dist/esm/props-D07GjR4_.js +116 -0
- package/dist/esm/{swipe-Dmfk7eEe.js → swipe-BJZC_NuV.js} +11 -1
- package/dist/esm/{validator-D3tVP32U.js → validator-BkWWrDEr.js} +18 -1
- package/dist/esm/webcomponents.js +4 -4
- package/dist/hydrate/index.js +7541 -2577
- package/dist/hydrate/index.mjs +7541 -2577
- package/dist/loader/index.d.ts +1 -1
- package/dist/types/components/avatar/avatar.d.ts +34 -4
- package/dist/types/components/breadcrumb/breadcrumb-item/breadcrumb-item.d.ts +14 -2
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +66 -5
- package/dist/types/components/breadcrumb/crumb/crumb.d.ts +13 -1
- package/dist/types/components/button/button.d.ts +45 -8
- package/dist/types/components/card/card.d.ts +31 -3
- package/dist/types/components/carousel/carousel-page/carousel-page.d.ts +10 -3
- package/dist/types/components/carousel/carousel.d.ts +46 -3
- package/dist/types/components/checkbox/checkbox.d.ts +59 -6
- package/dist/types/components/checkbox-group/checkbox-group.d.ts +47 -5
- package/dist/types/components/checkgroup/checkgroup.d.ts +27 -5
- package/dist/types/components/collapse/collapse.d.ts +37 -4
- package/dist/types/components/cookiebar/cookiebar-cookie/cookiebar-cookie.d.ts +16 -3
- package/dist/types/components/cookiebar/cookiebar-group/cookiebar-group.d.ts +15 -6
- package/dist/types/components/cookiebar/cookiebar-header/cookiebar-header.d.ts +14 -8
- package/dist/types/components/cookiebar/cookiebar-link/cookiebar-link.d.ts +16 -5
- package/dist/types/components/cookiebar/cookiebar-note/cookiebar-note.d.ts +13 -3
- package/dist/types/components/cookiebar/cookiebar-note-group/cookiebar-note-group.d.ts +13 -3
- package/dist/types/components/cookiebar/cookiebar.d.ts +35 -10
- package/dist/types/components/datetime-picker/date-picker/date-picker.d.ts +63 -7
- package/dist/types/components/datetime-picker/datetime-input/datetime-input.d.ts +51 -9
- package/dist/types/components/datetime-picker/datetime-picker-props-validation.d.ts +4 -2
- package/dist/types/components/datetime-picker/datetime-picker.d.ts +118 -12
- package/dist/types/components/datetime-picker/time-picker/time-picker.d.ts +38 -4
- package/dist/types/components/divider/divider.d.ts +45 -8
- package/dist/types/components/dropdown/dropdown.d.ts +53 -7
- package/dist/types/components/footer/footer-category/footer-category.d.ts +16 -1
- package/dist/types/components/footer/footer-item/footer-item.d.ts +17 -1
- package/dist/types/components/footer/footer-legal/footer-legal.d.ts +15 -1
- package/dist/types/components/footer/footer-logo/footer-logo.d.ts +21 -2
- package/dist/types/components/footer/footer-social/footer-social.d.ts +20 -3
- package/dist/types/components/footer/footer.d.ts +39 -3
- package/dist/types/components/header/header-context.d.ts +1 -0
- package/dist/types/components/header/header-function/header-function.d.ts +24 -2
- package/dist/types/components/header/header-link/header-link.d.ts +22 -1
- package/dist/types/components/header/header-list/header-list.d.ts +16 -8
- package/dist/types/components/header/header-logo/header-logo.d.ts +20 -1
- package/dist/types/components/header/header.d.ts +47 -7
- package/dist/types/components/icon/icon.d.ts +44 -13
- package/dist/types/components/icon/icon.utils.d.ts +6 -0
- package/dist/types/components/input/input.d.ts +74 -15
- package/dist/types/components/item/item.d.ts +44 -6
- package/dist/types/components/link/link.d.ts +41 -9
- package/dist/types/components/list/list.d.ts +58 -8
- package/dist/types/components/loading/loading.d.ts +48 -8
- package/dist/types/components/magic-button/magic-button.d.ts +41 -3
- package/dist/types/components/menu/menu-group/menu-group.d.ts +19 -1
- package/dist/types/components/menu/menu-header/menu-header.d.ts +16 -1
- package/dist/types/components/menu/menu-info/menu-info.d.ts +14 -1
- package/dist/types/components/menu/menu-item/menu-item.d.ts +27 -3
- package/dist/types/components/menu/menu-link/menu-link.d.ts +17 -1
- package/dist/types/components/menu/menu-list/menu-list.d.ts +22 -4
- package/dist/types/components/menu/menu-logo/menu-logo.d.ts +14 -1
- package/dist/types/components/menu/menu-social/menu-social.d.ts +21 -2
- package/dist/types/components/menu/menu.d.ts +39 -6
- package/dist/types/components/menu/menu.utils.d.ts +2 -6
- package/dist/types/components/message/message.d.ts +38 -9
- package/dist/types/components/modal/modal.d.ts +40 -4
- package/dist/types/components/notification/notification-body/notification-body.d.ts +12 -3
- package/dist/types/components/notification/notification-header/notification-header.d.ts +12 -3
- package/dist/types/components/notification/notification-item/notification-item.d.ts +15 -3
- package/dist/types/components/notification/notification.d.ts +36 -5
- package/dist/types/components/pagination/pagination.d.ts +58 -20
- package/dist/types/components/radio/radio.d.ts +49 -4
- package/dist/types/components/radio-group/radio-group.d.ts +52 -10
- package/dist/types/components/scrim/scrim.d.ts +72 -11
- package/dist/types/components/scrim/scrim.utils.d.ts +2 -17
- package/dist/types/components/select/select-input/select-input.d.ts +22 -4
- package/dist/types/components/select/select-list/select-list.d.ts +51 -5
- package/dist/types/components/select/select-option/select-option.d.ts +31 -8
- package/dist/types/components/select/select.d.ts +152 -13
- package/dist/types/components/select/select.types.d.ts +5 -0
- package/dist/types/components/sign-in/sign-in.d.ts +32 -4
- package/dist/types/components/skip-link/skip-link-item/skip-link-item-alias.d.ts +15 -2
- package/dist/types/components/skip-link/skip-link-item/skip-link-item.d.ts +22 -1
- package/dist/types/components/skip-link/skip-link.d.ts +37 -3
- package/dist/types/components/slider/slider.d.ts +147 -21
- package/dist/types/components/slider/slider.types.d.ts +7 -2
- package/dist/types/components/slider/slider.utils.d.ts +27 -0
- package/dist/types/components/step/step-item/step-item.d.ts +15 -3
- package/dist/types/components/step/step.d.ts +47 -12
- package/dist/types/components/switch/switch.d.ts +39 -6
- package/dist/types/components/tab/tab-item/tab-item.d.ts +24 -4
- package/dist/types/components/tab/tab.d.ts +48 -11
- package/dist/types/components/table/table-body/table-body.d.ts +10 -6
- package/dist/types/components/table/table-cell/table-cell.d.ts +10 -6
- package/dist/types/components/table/table-header/table-header.d.ts +10 -6
- package/dist/types/components/table/table-header-cell/table-header-cell.d.ts +18 -6
- package/dist/types/components/table/table-row/table-row.d.ts +11 -6
- package/dist/types/components/table/table.d.ts +49 -11
- package/dist/types/components/tag/tag.d.ts +55 -7
- package/dist/types/components/textarea/textarea.d.ts +75 -5
- package/dist/types/components/textarea/textarea.types.d.ts +4 -0
- package/dist/types/components/tooltip/tooltip.d.ts +46 -8
- package/dist/types/components/upload/upload.d.ts +78 -10
- package/dist/types/components/wizard/wizard-panel/wizard-panel.d.ts +20 -2
- package/dist/types/components/wizard/wizard.d.ts +44 -7
- package/dist/types/components.d.ts +5827 -1354
- package/dist/types/shared/utils/floating-ui.d.ts +4 -0
- package/dist/types/shared/utils/focus.d.ts +14 -0
- package/dist/types/shared/utils/form.d.ts +8 -0
- package/dist/types/shared/utils/getRandom.d.ts +1 -0
- package/dist/types/shared/utils/id.d.ts +1 -1
- package/dist/types/shared/utils/index.d.ts +6 -1
- package/dist/types/shared/utils/motion.d.ts +14 -0
- package/dist/types/shared/utils/ownership.d.ts +33 -0
- package/dist/types/shared/utils/prop-warning.d.ts +7 -0
- package/dist/types/shared/utils/props.d.ts +38 -0
- package/dist/types/shared/utils/swipe.d.ts +5 -0
- package/dist/types/shared/utils/virtual-scroll.d.ts +25 -0
- package/dist/types/stencil-public-runtime.d.ts +73 -55
- package/dist/webcomponents/index.esm.js +1 -1
- package/dist/webcomponents/p-078bd760.entry.js +5 -0
- package/dist/webcomponents/p-07c2cdff.entry.js +5 -0
- package/dist/webcomponents/{p-7f7506f0.entry.js → p-09817344.entry.js} +1 -1
- package/dist/webcomponents/p-0b0cf355.entry.js +5 -0
- package/dist/webcomponents/p-0d2ca2f7.entry.js +5 -0
- package/dist/webcomponents/p-0d79ca44.entry.js +5 -0
- package/dist/webcomponents/p-0fe3c47b.entry.js +5 -0
- package/dist/webcomponents/p-116b53c9.entry.js +5 -0
- package/dist/webcomponents/p-1240dae7.entry.js +5 -0
- package/dist/webcomponents/p-14ff5865.entry.js +5 -0
- package/dist/webcomponents/p-15743a02.entry.js +5 -0
- package/dist/webcomponents/p-16cebf49.entry.js +5 -0
- package/dist/webcomponents/p-1884b9d3.entry.js +5 -0
- package/dist/webcomponents/p-19a38e20.entry.js +5 -0
- package/dist/webcomponents/p-1d36c8fa.entry.js +5 -0
- package/dist/webcomponents/p-1fa4b5b2.entry.js +5 -0
- package/dist/webcomponents/p-212c069b.entry.js +5 -0
- package/dist/webcomponents/p-23f37cd6.entry.js +5 -0
- package/dist/webcomponents/p-24502b63.entry.js +5 -0
- package/dist/webcomponents/p-27fb81f3.entry.js +5 -0
- package/dist/webcomponents/p-28844490.entry.js +5 -0
- package/dist/webcomponents/p-2b41bdcc.entry.js +5 -0
- package/dist/webcomponents/p-2cb1e09b.entry.js +5 -0
- package/dist/webcomponents/p-2fcda70b.entry.js +5 -0
- package/dist/webcomponents/p-3378300c.entry.js +5 -0
- package/dist/webcomponents/p-3ae9cf69.entry.js +5 -0
- package/dist/webcomponents/p-3b79cd49.entry.js +5 -0
- package/dist/webcomponents/p-3c1513ec.entry.js +5 -0
- package/dist/webcomponents/p-4118b878.entry.js +5 -0
- package/dist/webcomponents/p-4534a3c3.entry.js +5 -0
- package/dist/webcomponents/p-48abf568.entry.js +5 -0
- package/dist/webcomponents/p-4e5ea05c.entry.js +5 -0
- package/dist/webcomponents/p-513ee754.entry.js +5 -0
- package/dist/webcomponents/p-521a1076.entry.js +5 -0
- package/dist/webcomponents/p-59fc52c0.entry.js +5 -0
- package/dist/webcomponents/p-5a7c2031.entry.js +5 -0
- package/dist/webcomponents/p-5a9f4ea2.entry.js +5 -0
- package/dist/webcomponents/p-5f422a69.entry.js +5 -0
- package/dist/webcomponents/p-61977114.entry.js +5 -0
- package/dist/webcomponents/p-6850e98e.entry.js +5 -0
- package/dist/webcomponents/p-71853dfc.entry.js +5 -0
- package/dist/webcomponents/p-76d51654.entry.js +5 -0
- package/dist/webcomponents/p-77e242f3.entry.js +5 -0
- package/dist/webcomponents/p-7b849472.entry.js +5 -0
- package/dist/webcomponents/p-7dbfb875.entry.js +5 -0
- package/dist/webcomponents/p-7fa7f052.entry.js +5 -0
- package/dist/webcomponents/p-81c65747.entry.js +5 -0
- package/dist/webcomponents/p-82759002.entry.js +5 -0
- package/dist/webcomponents/p-91a5329f.entry.js +5 -0
- package/dist/webcomponents/p-94848046.entry.js +5 -0
- package/dist/webcomponents/p-966773a9.entry.js +5 -0
- package/dist/webcomponents/p-9abb5a53.entry.js +5 -0
- package/dist/webcomponents/p-9bf2e325.entry.js +5 -0
- package/dist/webcomponents/p-9c943b40.entry.js +5 -0
- package/dist/webcomponents/p-9ec3ca00.entry.js +5 -0
- package/dist/webcomponents/p-B0PbhaxL.js +5 -0
- package/dist/webcomponents/p-BEJGB0Nd.js +5 -0
- package/dist/{components/p-Dmfk7eEe.js → webcomponents/p-BJZC_NuV.js} +1 -1
- package/dist/webcomponents/p-BJtdabsr.js +5 -0
- package/dist/webcomponents/p-BeJxz5TQ.js +5 -0
- package/dist/webcomponents/p-BkWWrDEr.js +5 -0
- package/dist/webcomponents/p-BlGV-x0w.js +5 -0
- package/dist/webcomponents/{p-Bfm58jO6.js → p-BtRPYRvA.js} +1 -1
- package/dist/webcomponents/p-CDtFCbKp.js +5 -0
- package/dist/webcomponents/p-CNwZRgyL.js +5 -0
- package/dist/webcomponents/{p-DFN_so7I.js → p-CfuJQ1DY.js} +1 -1
- package/dist/webcomponents/p-ConyRdJe.js +7 -0
- package/dist/webcomponents/p-D9Zo6FlV.js +5 -0
- package/dist/webcomponents/{p-BhMVJQ4-.js → p-DV-iW9Aj.js} +1 -1
- package/dist/webcomponents/p-DWhzxlCx.js +5 -0
- package/dist/webcomponents/p-EbtQZm5s.js +5 -0
- package/dist/webcomponents/p-ad91f149.entry.js +5 -0
- package/dist/webcomponents/p-aeea1f17.entry.js +5 -0
- package/dist/webcomponents/p-b02a7218.entry.js +5 -0
- package/dist/webcomponents/p-b16590fc.entry.js +5 -0
- package/dist/webcomponents/{p-12286e73.entry.js → p-b55425b7.entry.js} +1 -1
- package/dist/webcomponents/p-c1dafd8d.entry.js +5 -0
- package/dist/webcomponents/p-c2ca0289.entry.js +5 -0
- package/dist/webcomponents/p-c8af334e.entry.js +5 -0
- package/dist/webcomponents/p-cac49c6a.entry.js +5 -0
- package/dist/webcomponents/p-cb9ebfbe.entry.js +5 -0
- package/dist/webcomponents/p-ce3d689c.entry.js +5 -0
- package/dist/webcomponents/p-d11f95a0.entry.js +5 -0
- package/dist/webcomponents/p-d5d2205c.entry.js +5 -0
- package/dist/webcomponents/p-dad03b49.entry.js +5 -0
- package/dist/webcomponents/p-db8e6322.entry.js +5 -0
- package/dist/webcomponents/p-dea8015f.entry.js +5 -0
- package/dist/webcomponents/p-e07e309d.entry.js +5 -0
- package/dist/webcomponents/p-e53d874b.entry.js +5 -0
- package/dist/webcomponents/p-e5540387.entry.js +5 -0
- package/dist/webcomponents/p-e94a52ac.entry.js +5 -0
- package/dist/webcomponents/p-e9be4d3f.entry.js +5 -0
- package/dist/webcomponents/p-e9db9381.entry.js +5 -0
- package/dist/webcomponents/p-edca5de1.entry.js +5 -0
- package/dist/webcomponents/p-ee5b9fc9.entry.js +5 -0
- package/dist/webcomponents/p-f4ef8c63.entry.js +5 -0
- package/dist/webcomponents/p-zlORkiHQ.js +5 -0
- package/dist/webcomponents/webcomponents.esm.js +1 -1
- package/package.json +18 -3
- package/dist/cjs/clamp-Co_hWptd.js +0 -25
- package/dist/cjs/id-CjRFMzf6.js +0 -20
- package/dist/cjs/props-CScmBvKd.js +0 -24
- package/dist/collection/pages/components/cookiebar/index.js +0 -26
- package/dist/collection/pages/components/link/index.js +0 -29
- package/dist/collection/pages/components/pagination/index.js +0 -12
- package/dist/collection/pages/components/slider/index.js +0 -18
- package/dist/components/p-6OdfnwnK.js +0 -5
- package/dist/components/p-AmOh1cks.js +0 -5
- package/dist/components/p-B4ylcipx.js +0 -5
- package/dist/components/p-BCv4PCOx.js +0 -5
- package/dist/components/p-BLOyd_iF.js +0 -5
- package/dist/components/p-BODem6tr.js +0 -5
- package/dist/components/p-Bb-nLtTG.js +0 -5
- package/dist/components/p-BeFK-82z.js +0 -5
- package/dist/components/p-BkS6ujyf.js +0 -5
- package/dist/components/p-BloE-KAN.js +0 -5
- package/dist/components/p-BoSc_kmY.js +0 -5
- package/dist/components/p-BrH3r7eL.js +0 -5
- package/dist/components/p-BsZ0Ny88.js +0 -5
- package/dist/components/p-ByHVf7zy.js +0 -5
- package/dist/components/p-CdDwqbBv.js +0 -5
- package/dist/components/p-CdF-gmk1.js +0 -5
- package/dist/components/p-CfyjGPGI.js +0 -5
- package/dist/components/p-CjF7pBVQ.js +0 -5
- package/dist/components/p-ClqtllDH.js +0 -5
- package/dist/components/p-CqW2Yh34.js +0 -5
- package/dist/components/p-DIK54tTj.js +0 -5
- package/dist/components/p-DLE5ioJN.js +0 -5
- package/dist/components/p-DQRSHR-D.js +0 -5
- package/dist/components/p-DRVMm1Py.js +0 -5
- package/dist/components/p-DRnCpVrL.js +0 -5
- package/dist/components/p-DVdlaP7z.js +0 -5
- package/dist/components/p-DeeF6ok0.js +0 -5
- package/dist/components/p-Dim2PnUm.js +0 -5
- package/dist/components/p-Dk8rfQjL.js +0 -5
- package/dist/components/p-DkmEpoef.js +0 -5
- package/dist/components/p-DwfAYaEv.js +0 -5
- package/dist/components/p-DxZJrIyL.js +0 -5
- package/dist/components/p-P2Z_MmH6.js +0 -5
- package/dist/components/p-Xa0Mj4pP.js +0 -5
- package/dist/components/p-_vsQvdxD.js +0 -5
- package/dist/components/p-aNjo4Alx.js +0 -5
- package/dist/components/p-gvnfuTjd.js +0 -5
- package/dist/components/p-rB-s1M3Q.js +0 -5
- package/dist/esm/clamp-gvnfuTjd.js +0 -23
- package/dist/esm/id-BkS6ujyf.js +0 -18
- package/dist/esm/props-DRVMm1Py.js +0 -22
- package/dist/webcomponents/p-00cc31f9.entry.js +0 -5
- package/dist/webcomponents/p-026475bd.entry.js +0 -5
- package/dist/webcomponents/p-0291ab28.entry.js +0 -5
- package/dist/webcomponents/p-03e5a7dc.entry.js +0 -5
- package/dist/webcomponents/p-060df8ee.entry.js +0 -5
- package/dist/webcomponents/p-09fce2a5.entry.js +0 -5
- package/dist/webcomponents/p-1002bbff.entry.js +0 -5
- package/dist/webcomponents/p-1124de33.entry.js +0 -5
- package/dist/webcomponents/p-12e97d80.entry.js +0 -5
- package/dist/webcomponents/p-1580beee.entry.js +0 -5
- package/dist/webcomponents/p-1b19b191.entry.js +0 -5
- package/dist/webcomponents/p-2baf353b.entry.js +0 -5
- package/dist/webcomponents/p-2eb9a42c.entry.js +0 -5
- package/dist/webcomponents/p-30c82805.entry.js +0 -5
- package/dist/webcomponents/p-31bd1c74.entry.js +0 -5
- package/dist/webcomponents/p-31db2313.entry.js +0 -5
- package/dist/webcomponents/p-33a3dc63.entry.js +0 -5
- package/dist/webcomponents/p-3889c51f.entry.js +0 -5
- package/dist/webcomponents/p-3f2c179a.entry.js +0 -5
- package/dist/webcomponents/p-470eb770.entry.js +0 -5
- package/dist/webcomponents/p-4ae387ae.entry.js +0 -5
- package/dist/webcomponents/p-4e65df84.entry.js +0 -5
- package/dist/webcomponents/p-51a62876.entry.js +0 -5
- package/dist/webcomponents/p-5860b96b.entry.js +0 -5
- package/dist/webcomponents/p-5b9c01e9.entry.js +0 -5
- package/dist/webcomponents/p-5df2f1dd.entry.js +0 -5
- package/dist/webcomponents/p-5f3f7b3f.entry.js +0 -5
- package/dist/webcomponents/p-5f6afb79.entry.js +0 -5
- package/dist/webcomponents/p-5f9c28a7.entry.js +0 -5
- package/dist/webcomponents/p-62511921.entry.js +0 -5
- package/dist/webcomponents/p-63b52947.entry.js +0 -5
- package/dist/webcomponents/p-67a8e0b7.entry.js +0 -5
- package/dist/webcomponents/p-6OdfnwnK.js +0 -5
- package/dist/webcomponents/p-7b2a5fec.entry.js +0 -5
- package/dist/webcomponents/p-7f95e2f5.entry.js +0 -5
- package/dist/webcomponents/p-8128833c.entry.js +0 -5
- package/dist/webcomponents/p-8200ccb1.entry.js +0 -5
- package/dist/webcomponents/p-82b100fd.entry.js +0 -5
- package/dist/webcomponents/p-8806df15.entry.js +0 -5
- package/dist/webcomponents/p-881eb81a.entry.js +0 -5
- package/dist/webcomponents/p-8bd3d541.entry.js +0 -5
- package/dist/webcomponents/p-90648343.entry.js +0 -5
- package/dist/webcomponents/p-9100a5f7.entry.js +0 -5
- package/dist/webcomponents/p-91313d77.entry.js +0 -5
- package/dist/webcomponents/p-946b2ac0.entry.js +0 -5
- package/dist/webcomponents/p-98e7ccb9.entry.js +0 -5
- package/dist/webcomponents/p-99f2bddb.entry.js +0 -5
- package/dist/webcomponents/p-9adbdb0a.entry.js +0 -5
- package/dist/webcomponents/p-9c260049.entry.js +0 -5
- package/dist/webcomponents/p-9ed51017.entry.js +0 -5
- package/dist/webcomponents/p-BkS6ujyf.js +0 -5
- package/dist/webcomponents/p-C2RBydfd.js +0 -6
- package/dist/webcomponents/p-CO5cOQQU.js +0 -5
- package/dist/webcomponents/p-D3tVP32U.js +0 -5
- package/dist/webcomponents/p-DIK54tTj.js +0 -5
- package/dist/webcomponents/p-DRVMm1Py.js +0 -5
- package/dist/webcomponents/p-DxZJrIyL.js +0 -5
- package/dist/webcomponents/p-a0b299dd.entry.js +0 -5
- package/dist/webcomponents/p-a2c5fad0.entry.js +0 -5
- package/dist/webcomponents/p-a3e044d7.entry.js +0 -5
- package/dist/webcomponents/p-a9f23aa7.entry.js +0 -5
- package/dist/webcomponents/p-a9f2fcbc.entry.js +0 -5
- package/dist/webcomponents/p-b6c68136.entry.js +0 -5
- package/dist/webcomponents/p-b6e9b8d1.entry.js +0 -5
- package/dist/webcomponents/p-c333eac6.entry.js +0 -5
- package/dist/webcomponents/p-c3732fd6.entry.js +0 -5
- package/dist/webcomponents/p-c458ed0e.entry.js +0 -5
- package/dist/webcomponents/p-c91000ff.entry.js +0 -5
- package/dist/webcomponents/p-c9c6ab2d.entry.js +0 -5
- package/dist/webcomponents/p-cd2550d6.entry.js +0 -5
- package/dist/webcomponents/p-cf42613f.entry.js +0 -5
- package/dist/webcomponents/p-d0b0b420.entry.js +0 -5
- package/dist/webcomponents/p-d1b32ee8.entry.js +0 -5
- package/dist/webcomponents/p-db65b083.entry.js +0 -5
- package/dist/webcomponents/p-de7c101d.entry.js +0 -5
- package/dist/webcomponents/p-dfb77dd0.entry.js +0 -5
- package/dist/webcomponents/p-e258da78.entry.js +0 -5
- package/dist/webcomponents/p-e31ddd42.entry.js +0 -5
- package/dist/webcomponents/p-e8d82227.entry.js +0 -5
- package/dist/webcomponents/p-e988cf1d.entry.js +0 -5
- package/dist/webcomponents/p-ed9122a1.entry.js +0 -5
- package/dist/webcomponents/p-ee347d2e.entry.js +0 -5
- package/dist/webcomponents/p-f1c01d52.entry.js +0 -5
- package/dist/webcomponents/p-f5baf8be.entry.js +0 -5
- package/dist/webcomponents/p-fb593739.entry.js +0 -5
- package/dist/webcomponents/p-fff9acd4.entry.js +0 -5
- package/dist/webcomponents/p-gvnfuTjd.js +0 -5
|
@@ -6,16 +6,100 @@ import { Host, h, } from "@stencil/core";
|
|
|
6
6
|
import { dispatchNativeFormEvent } from "../../shared/utils/event";
|
|
7
7
|
import { listenForExternalBlockingSurface } from "../../shared/utils/floating-surface-dismiss";
|
|
8
8
|
import { getFormValidationState, isFormControlDisabled, safeSetFormValue, syncNativeFormValidity, } from "../../shared/utils/form";
|
|
9
|
+
import { generateUniqueId } from "../../shared/utils/id";
|
|
10
|
+
import { createMicrotaskReconciler, findComposedOwner } from "../../shared/utils/ownership";
|
|
11
|
+
import { reportInvalidPropValue } from "../../shared/utils/prop-warning";
|
|
12
|
+
import { resolveAllowedPropValue, resolveDensity, resolveIntegerPropValue, resolveNumberPropValue, } from "../../shared/utils/props";
|
|
9
13
|
import { hasAssignedSlotContent, hasNamedLightDomSlot } from "../../shared/utils/slot";
|
|
10
14
|
import { resolveFormValidator } from "../../shared/utils/validator";
|
|
11
15
|
import { transitionAllSelection, transitionSelection } from "./select.utils";
|
|
12
|
-
|
|
16
|
+
const SELECT_SEARCH_MODES = ['local', 'remote'];
|
|
17
|
+
const SELECT_AUTOCOMPLETE_VALUES = ['on', 'off'];
|
|
13
18
|
/**
|
|
14
|
-
*
|
|
19
|
+
* O componente `br-select` é o controle oficial de seleção do GovBR-DS, desenvolvido para permitir que o usuário escolha uma ou múltiplas opções a partir de uma lista expansível. Compatível com o padrão WAI-ARIA Combobox, ele reúne em um único componente acessível o campo de acionamento/digitação, a lista suspensa e as opções selecionáveis, integrando-se nativamente a formulários HTML e frameworks modernos.
|
|
15
20
|
*
|
|
16
|
-
* Para
|
|
21
|
+
* ### Para que serve
|
|
17
22
|
*
|
|
18
|
-
*
|
|
23
|
+
* O `br-select` gerencia todo o fluxo de interação de seleção:
|
|
24
|
+
* - **Seleção simples e múltipla:** Permite selecionar uma única opção ou múltiplas opções (`multiple`), incluindo a opção de selecionar ou desmarcar todas em lote.
|
|
25
|
+
* - **Busca e filtragem:** Oferece filtro local integrado (conforme o usuário digita) e suporte a busca remota assíncrona (`search-mode="remote"`), disparando eventos para carregamento sob demanda via API.
|
|
26
|
+
* - **Agrupamento de opções:** Organiza opções contíguas por categoria, preservando virtualização, busca local e semântica nativa de formulário.
|
|
27
|
+
* - **Integração com formulários:** É associado a formulários nativos (`formAssociated`), comunicando seu valor, estado de validação (válido/inválido), mensagens de erro contextuais e eventos padrão (`change`, `input`).
|
|
28
|
+
* - **Navegação acessível:** Suporta controle total via teclado (setas para cima/baixo, Enter, Escape, Home, End), foco gerenciado e anúncios para leitores de tela.
|
|
29
|
+
*
|
|
30
|
+
* ### Quando utilizar
|
|
31
|
+
*
|
|
32
|
+
* - **Utilize quando:**
|
|
33
|
+
* - O número de opções for moderado a grande (mais de 5 a 7 itens), onde listar todas diretamente na tela consumiria muito espaço visual.
|
|
34
|
+
* - For necessário filtrar opções por texto (digitação em lista longa).
|
|
35
|
+
* - As opções forem carregadas dinamicamente de uma API externa (busca remota/paginada).
|
|
36
|
+
* - O espaço no leiaute for restrito e exigir um controle compacto e expansível.
|
|
37
|
+
* - **Evite e prefira outro componente quando:**
|
|
38
|
+
* - Houver poucas opções fixas (de 2 a 4 opções mutuamente exclusivas): prefira `br-radio` ou `br-radio-group` para manter as alternativas imediatamente visíveis.
|
|
39
|
+
* - Houver uma escolha binária (sim/não, ativo/inativo): prefira `br-switch` ou `br-checkbox`.
|
|
40
|
+
* - Houver seleção múltipla com até 4 alternativas: prefira `br-checkbox` ou um grupo de checkboxes visíveis.
|
|
41
|
+
*
|
|
42
|
+
* ### Composição e Subcomponentes
|
|
43
|
+
*
|
|
44
|
+
* O ecossistema do Select é composto pelo elemento principal orquestrador e três subcomponentes especializados:
|
|
45
|
+
*
|
|
46
|
+
* | Subcomponente | Papel | Regra de uso |
|
|
47
|
+
* | --- | --- | --- |
|
|
48
|
+
* | `br-select` | **Orquestrador principal.** Gerencia o valor, ciclo de vida, acessibilidade, busca, formulário e renderização dos elementos internos. | Deve ser o único componente diretamente instanciado no template da aplicação. |
|
|
49
|
+
* | `br-select-input` | **Campo de acionamento.** Exibe o valor selecionado, o rótulo (`label`), o campo de busca/digitação e o botão de expandir/recolher. | Coordenado automaticamente pelo `br-select`; utilize isoladamente apenas em composições arquiteturais avançadas. |
|
|
50
|
+
* | `br-select-list` | **Lista suspensa virtualizada.** Contêiner flutuante que renderiza as opções de forma otimizada com suporte a rolagem e virtualização. | Gerenciada exclusivamente pelo `br-select`; não deve ser usada como controle autônomo. |
|
|
51
|
+
* | `br-select-option` | **Item individual de opção.** Representa um valor selecionável, exibindo texto, estado de seleção e checkbox/radio associado. | Deve ser declarado dentro do slot padrão do `br-select` para cada opção desejada. |
|
|
52
|
+
*
|
|
53
|
+
* Além dos subcomponentes, o `br-select` oferece slots dedicados:
|
|
54
|
+
* - `default`: Slot principal onde são passados os elementos `br-select-option`.
|
|
55
|
+
* - `feedback`: Slot para exibição de mensagens de validação (ex.: `br-message`).
|
|
56
|
+
* - `loading`: Slot para indicador de carregamento durante busca remota.
|
|
57
|
+
* - `validation-loading`: Slot para indicador visual durante validação assíncrona.
|
|
58
|
+
*
|
|
59
|
+
* ### Como fornecer opções
|
|
60
|
+
*
|
|
61
|
+
* O `br-select` possui uma API declarativa canônica e uma API imperativa para atualizações dinâmicas:
|
|
62
|
+
*
|
|
63
|
+
* 1. **Slot com `br-select-option`:** é a forma declarativa canônica para código novo. O pai lê os atributos e o conteúdo de cada opção e os transforma em dados para a lista. Em frameworks, a coleção também pode ser renderizada como vários elementos `br-select-option`.
|
|
64
|
+
* 2. **Método `setOptions()`:** substitui a coleção de forma imperativa e deve ser reservado para dados dinâmicos, especialmente respostas de busca remota. A lista recebe os objetos e cria internamente somente a janela visível de opções.
|
|
65
|
+
*
|
|
66
|
+
* `br-select-input` e `br-select-list` não substituem essas fontes. Eles são peças internas da composição: o primeiro controla o campo de acionamento e busca; o segundo recebe a coleção normalizada e renderiza a lista virtualizada.
|
|
67
|
+
*
|
|
68
|
+
* Evite misturar slot e dados imperativos sem necessidade. Na inicialização, opções declaradas no slot têm precedência quando existem. Depois que `options` é alterada ou `setOptions()` é chamado, a coleção imperativa passa a ser a fonte de dados e alterações posteriores no slot não são sincronizadas.
|
|
69
|
+
*
|
|
70
|
+
* A prop `options` é uma API legada e está depreciada. Ela continua funcionando apenas para preservar compatibilidade: no HTML, recebe uma string JSON; em JavaScript e frameworks, recebe um array por property binding. Não a adote em código novo; use `br-select-option` ou, para respostas dinâmicas/remotas, `setOptions()`.
|
|
71
|
+
*
|
|
72
|
+
* Cada objeto deve conter `value` string e pode conter `label`, `selected`, `disabled`, `indeterminate` e `content`. `content` é renderizado como HTML na lista; não use esse campo com conteúdo não confiável.
|
|
73
|
+
*
|
|
74
|
+
* ### O Conceito "Lego" e a Diferença entre os Componentes {#conceito-lego}
|
|
75
|
+
*
|
|
76
|
+
* O ecossistema de seleção do GovBR-DS foi projetado seguindo o **conceito de peças de Lego**: modular, flexível e combinável:
|
|
77
|
+
*
|
|
78
|
+
* 1. **`br-select` (Componente Principal / Modelo Pronto):**
|
|
79
|
+
* É o **componente principal**. Já vem montado com todas as peças essenciais integradas: o acionador (`br-select-input`), a lista flutuante virtualizada (`br-select-list`), a navegação por teclado e a integração nativa com formulários (`formAssociated`). Na quase totalidade das aplicações (99% dos casos), você deve usar apenas `<br-select>`.
|
|
80
|
+
*
|
|
81
|
+
* 2. **`br-select-option` (Peça de Conteúdo):**
|
|
82
|
+
* É a peça de Lego que você encaixa diretamente no slot padrão do `<br-select>` para definir cada valor selecionável.
|
|
83
|
+
*
|
|
84
|
+
* 3. **`br-select-input` e `br-select-list` (Subcomponentes Internos):**
|
|
85
|
+
* São as peças internas que formam a estrutura do `br-select`. No uso comum, **não devem ser declarados manualmente**, pois o `br-select` já os instancia e os sincroniza automaticamente.
|
|
86
|
+
*
|
|
87
|
+
* #### Quando usar apenas `<br-select>`?
|
|
88
|
+
* Use apenas `<br-select>` em quase todos os fluxos. Para opções fixas, declare os itens `<br-select-option>` no slot padrão; para opções dinâmicas, alimente a coleção com `setOptions()`. A prop `options` permanece disponível somente para compatibilidade legada.
|
|
89
|
+
*
|
|
90
|
+
* #### Quando montar os componentes separadamente?
|
|
91
|
+
* A montagem separada das peças avulsas de Lego (`br-select-input` + `br-select-list` + `br-select-option`) destina-se exclusivamente a **composições arquiteturais avançadas**, onde o leiaute exige desacoplar fisicamente o campo de acionamento da lista suspensa (ex.: campo de busca fixo na barra superior e a lista exibida dentro de um drawer ou modal lateral). Nesse caso, a aplicação precisa implementar manualmente a sincronização de foco, abertura, navegação por teclado e repasse de valor ao formulário.
|
|
92
|
+
*
|
|
93
|
+
* ### Como os subcomponentes se relacionam
|
|
94
|
+
*
|
|
95
|
+
* A arquitetura do `br-select` segue o padrão de **orquestrador centralizado**:
|
|
96
|
+
* 1. **O componente pai coordena o estado:** A aplicação declara o `<br-select>` com múltiplos `<br-select-option>` filhos ou usa `setOptions()` para dados dinâmicos. O `br-select` projeta internamente o `<br-select-input>` e a `<br-select-list>`, garantindo sincronia total de foco, estados de abertura, termos pesquisados e eventos. A prop `options` não é uma alternativa para código novo; existe somente para compatibilidade legada.
|
|
97
|
+
* 2. **Evite montagem manual desarticulada:** Tentar declarar manualmente `br-select-input` e `br-select-list` fora do `br-select` quebra as relações de acessibilidade WAI-ARIA (combobox, controles expandidos, aria-activedescendant) e desvincula o controle da validação nativa de formulários (`ElementInternals`).
|
|
98
|
+
* 3. **Comunicação por eventos:** Para busca remota ou resposta a seleção, a aplicação escuta os eventos disparados diretamente pelo `br-select` (`brSearch`, `change`, `input`), sem precisar interceptar nós internos da lista ou do campo de texto.
|
|
99
|
+
*
|
|
100
|
+
* Para a documentação completa de design, incluindo diretrizes de acessibilidade e especificações visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/select?tab=designer).
|
|
101
|
+
*
|
|
102
|
+
* @category Formulários, Seleção
|
|
19
103
|
* @status stable
|
|
20
104
|
* @slot default - Opções declaradas com elementos br-select-option.
|
|
21
105
|
* @slot feedback - Mensagem de validação, normalmente um br-message.
|
|
@@ -33,6 +117,7 @@ let selectId = 0;
|
|
|
33
117
|
* @part input-action-button - Botão interno da ação.
|
|
34
118
|
* @part list - Lista de opções.
|
|
35
119
|
* @part option - Opção individual.
|
|
120
|
+
* @part option-group - Cabeçalho visual de um grupo de opções.
|
|
36
121
|
* @part select-all - Alias legado para a opção de selecionar todos.
|
|
37
122
|
* @part empty-option - Alias legado para a opção vazia da lista.
|
|
38
123
|
* @part option-checkbox - Alias legado para o checkbox da opção.
|
|
@@ -55,6 +140,13 @@ export class Select {
|
|
|
55
140
|
* @default false
|
|
56
141
|
*/
|
|
57
142
|
this.disabled = false;
|
|
143
|
+
/**
|
|
144
|
+
* Define a densidade visual compartilhada pelo campo e pela lista de opções.
|
|
145
|
+
* Aceita `small`, `medium` ou `large`. Valores inválidos usam `medium`.
|
|
146
|
+
*
|
|
147
|
+
* @default 'medium'
|
|
148
|
+
*/
|
|
149
|
+
this.density = 'medium';
|
|
58
150
|
/**
|
|
59
151
|
* Exibe label e campo na mesma linha.
|
|
60
152
|
*
|
|
@@ -78,13 +170,16 @@ export class Select {
|
|
|
78
170
|
*/
|
|
79
171
|
this.keepOpenOnSelect = false;
|
|
80
172
|
/**
|
|
81
|
-
* Define quantas
|
|
173
|
+
* Define quantas linhas visuais ficam visíveis na janela da lista.
|
|
174
|
+
* Cabeçalhos de grupo também ocupam uma linha quando existem.
|
|
175
|
+
* Deve ser um inteiro positivo; valores inválidos usam 6.
|
|
82
176
|
*
|
|
83
177
|
* @default 6
|
|
84
178
|
*/
|
|
85
179
|
this.visibleItems = 6;
|
|
86
180
|
/**
|
|
87
|
-
* Informa a altura base de cada opção para o cálculo de virtual scroll.
|
|
181
|
+
* Informa a altura base de cada opção ou cabeçalho para o cálculo de virtual scroll.
|
|
182
|
+
* Deve ser um número finito positivo; valores inválidos usam 40.
|
|
88
183
|
*
|
|
89
184
|
* @default 40
|
|
90
185
|
*/
|
|
@@ -98,6 +193,7 @@ export class Select {
|
|
|
98
193
|
this.inputWidth = undefined;
|
|
99
194
|
/**
|
|
100
195
|
* Define quantas opções extras são renderizadas antes e depois da área visível no virtual scroll.
|
|
196
|
+
* Deve ser um inteiro não negativo; valores inválidos usam 1.
|
|
101
197
|
*
|
|
102
198
|
* @default 1
|
|
103
199
|
*/
|
|
@@ -114,6 +210,12 @@ export class Select {
|
|
|
114
210
|
*
|
|
115
211
|
* @type {string | string[] | undefined}
|
|
116
212
|
* @remarks Em modo múltiplo, o valor público é um array de strings.
|
|
213
|
+
* @example
|
|
214
|
+
* ```js
|
|
215
|
+
* const select = document.querySelector('br-select');
|
|
216
|
+
* select.multiple = true;
|
|
217
|
+
* select.value = ['df', 'sp'];
|
|
218
|
+
* ```
|
|
117
219
|
*/
|
|
118
220
|
this.value = '';
|
|
119
221
|
/**
|
|
@@ -167,21 +269,33 @@ export class Select {
|
|
|
167
269
|
*/
|
|
168
270
|
this.unselectAllLabel = Select.DESELECT_ALL_LABEL;
|
|
169
271
|
/**
|
|
170
|
-
*
|
|
272
|
+
* Fornece opções como array ou JSON, além das opções projetadas por slot.
|
|
273
|
+
* Use property binding para arrays em JavaScript e frameworks; no atributo
|
|
274
|
+
* HTML, informe uma string JSON válida. Na inicialização, opções no slot têm
|
|
275
|
+
* precedência quando existem. Depois de uma alteração nesta prop ou de uma
|
|
276
|
+
* chamada a `setOptions()`, a coleção imperativa passa a ser a fonte de dados.
|
|
277
|
+
* Não use em código novo. Declare `br-select-option` no slot padrão ou, para
|
|
278
|
+
* respostas dinâmicas/remotas, atualize a coleção com `setOptions()`.
|
|
171
279
|
*
|
|
172
|
-
* @
|
|
280
|
+
* @example
|
|
281
|
+
* ```html
|
|
282
|
+
* <!-- Compatibilidade legada; prefira elementos br-select-option. -->
|
|
283
|
+
* <br-select options='[{"label":"Distrito Federal","value":"df"}]'></br-select>
|
|
284
|
+
* ```
|
|
285
|
+
* @deprecated Use `br-select-option` no slot padrão ou `setOptions()` para respostas dinâmicas/remotas.
|
|
173
286
|
*/
|
|
174
287
|
this.options = [];
|
|
175
288
|
/** Identificador público do controle. */
|
|
176
|
-
this.customId =
|
|
177
|
-
/** Quantidade mínima de opções selecionadas no modo múltiplo. */
|
|
289
|
+
this.customId = generateUniqueId('br-select');
|
|
290
|
+
/** Quantidade mínima de opções selecionadas no modo múltiplo. Deve ser um inteiro não negativo; valores inválidos usam 0. */
|
|
178
291
|
this.minSelections = 0;
|
|
179
|
-
/** Quantidade máxima de opções selecionadas no modo múltiplo. */
|
|
292
|
+
/** Quantidade máxima de opções selecionadas no modo múltiplo. Deve ser um inteiro não negativo; valores inválidos usam 0. */
|
|
180
293
|
this.maxSelections = 0;
|
|
181
294
|
this.shouldRestoreSelectedOptionOnOpen = false;
|
|
182
295
|
this.pendingOptions = null;
|
|
183
296
|
this.slotElement = null;
|
|
184
|
-
this.handleSlotChange = () => this.
|
|
297
|
+
this.handleSlotChange = () => this.slotReconciler.schedule();
|
|
298
|
+
this.slotReconciler = createMicrotaskReconciler(() => this.syncOptionsFromSlot());
|
|
185
299
|
this.lastEmittedStateKey = '';
|
|
186
300
|
this.isStateChangeReady = false;
|
|
187
301
|
this.isValueChangeReady = false;
|
|
@@ -242,6 +356,30 @@ export class Select {
|
|
|
242
356
|
this.applySelectedValue(state);
|
|
243
357
|
}
|
|
244
358
|
}
|
|
359
|
+
get effectiveVisibleItems() {
|
|
360
|
+
return resolveIntegerPropValue(this.el, 'visibleItems', this.visibleItems, 1, Number.MAX_SAFE_INTEGER, 6);
|
|
361
|
+
}
|
|
362
|
+
get effectiveDensity() {
|
|
363
|
+
return resolveDensity(this.el, this.density);
|
|
364
|
+
}
|
|
365
|
+
get effectiveItemHeight() {
|
|
366
|
+
return resolveNumberPropValue(this.el, 'itemHeight', this.itemHeight, 1, Number.MAX_SAFE_INTEGER, 40);
|
|
367
|
+
}
|
|
368
|
+
get effectiveOverscan() {
|
|
369
|
+
return resolveIntegerPropValue(this.el, 'overscan', this.overscan, 0, Number.MAX_SAFE_INTEGER, 1);
|
|
370
|
+
}
|
|
371
|
+
get effectiveSearchMode() {
|
|
372
|
+
return resolveAllowedPropValue(this.el, 'searchMode', this.searchMode, SELECT_SEARCH_MODES, 'local');
|
|
373
|
+
}
|
|
374
|
+
get effectiveMinSelections() {
|
|
375
|
+
return resolveIntegerPropValue(this.el, 'minSelections', this.minSelections, 0, Number.MAX_SAFE_INTEGER, 0);
|
|
376
|
+
}
|
|
377
|
+
get effectiveAutocomplete() {
|
|
378
|
+
return resolveAllowedPropValue(this.el, 'autocomplete', this.autocomplete, SELECT_AUTOCOMPLETE_VALUES, undefined, { allowUndefined: true });
|
|
379
|
+
}
|
|
380
|
+
get effectiveMaxSelections() {
|
|
381
|
+
return resolveIntegerPropValue(this.el, 'maxSelections', this.maxSelections, 0, Number.MAX_SAFE_INTEGER, 0);
|
|
382
|
+
}
|
|
245
383
|
componentWillLoad() {
|
|
246
384
|
this.hasFeedbackSlot = hasNamedLightDomSlot(this.el, 'feedback');
|
|
247
385
|
this.hasValidationLoadingSlot = hasNamedLightDomSlot(this.el, 'validation-loading');
|
|
@@ -287,6 +425,7 @@ export class Select {
|
|
|
287
425
|
this.updateValidity();
|
|
288
426
|
}
|
|
289
427
|
disconnectedCallback() {
|
|
428
|
+
this.slotReconciler.cancel();
|
|
290
429
|
if (this.slotElement) {
|
|
291
430
|
this.slotElement.removeEventListener('slotchange', this.handleSlotChange);
|
|
292
431
|
this.slotElement = null;
|
|
@@ -329,10 +468,10 @@ export class Select {
|
|
|
329
468
|
return options.map((option) => ({ ...option, selected: selected.has(option.value) }));
|
|
330
469
|
}
|
|
331
470
|
getListOptions(options) {
|
|
332
|
-
const normalized = this.applyCanonicalSelection(options).filter((option) => option
|
|
471
|
+
const normalized = this.applyCanonicalSelection(options).filter((option) => !this.isSelectAllOption(option));
|
|
333
472
|
if (!this.effectiveMultiple)
|
|
334
473
|
return normalized;
|
|
335
|
-
const selectable = normalized.filter((option) => !this.
|
|
474
|
+
const selectable = normalized.filter((option) => !this.isSelectAllOption(option));
|
|
336
475
|
const allSelected = selectable.length > 0 && selectable.every((option) => Boolean(option.selected));
|
|
337
476
|
const anySelected = selectable.some((option) => Boolean(option.selected));
|
|
338
477
|
return [
|
|
@@ -502,6 +641,23 @@ export class Select {
|
|
|
502
641
|
dispatchNativeFormEvent(this.el, 'input');
|
|
503
642
|
dispatchNativeFormEvent(this.el, 'change');
|
|
504
643
|
}
|
|
644
|
+
/**
|
|
645
|
+
* Recalcula a coleção quando uma opção projetada muda por atribuição direta
|
|
646
|
+
* de `selected`, `disabled`, `label`, `group` ou `value`. A lista virtualizada em
|
|
647
|
+
* Shadow DOM não é uma fonte independente; ela recebe o snapshot pelo seu
|
|
648
|
+
* contrato público `options`.
|
|
649
|
+
*/
|
|
650
|
+
handleSelectOptionPropsChange(event) {
|
|
651
|
+
const path = event.composedPath();
|
|
652
|
+
if (path.some((node) => node.tagName?.toLowerCase() === 'br-select-list'))
|
|
653
|
+
return;
|
|
654
|
+
const target = path.find((node) => node.tagName?.toLowerCase() === 'br-select-option');
|
|
655
|
+
if (!(target instanceof HTMLElement) || findComposedOwner(target, 'br-select') !== this.el)
|
|
656
|
+
return;
|
|
657
|
+
if (this.hasImperativeOptions)
|
|
658
|
+
return;
|
|
659
|
+
this.slotReconciler.schedule();
|
|
660
|
+
}
|
|
505
661
|
handleSelectOptionHover(event) {
|
|
506
662
|
this.optionHover.emit(event.detail);
|
|
507
663
|
}
|
|
@@ -711,7 +867,7 @@ export class Select {
|
|
|
711
867
|
*/
|
|
712
868
|
async setOptions(options) {
|
|
713
869
|
this.hasImperativeOptions = true;
|
|
714
|
-
const nextOptions = this.
|
|
870
|
+
const nextOptions = this.effectiveSearchMode === 'remote' ? this.applyRemoteSelection(options) : options;
|
|
715
871
|
this.suppressValueChange = true;
|
|
716
872
|
try {
|
|
717
873
|
if (this.selectListElement) {
|
|
@@ -776,41 +932,23 @@ export class Select {
|
|
|
776
932
|
const rawLabel = el.getAttribute('label') ?? el.label ?? '';
|
|
777
933
|
let value = String(rawValue || '').trim();
|
|
778
934
|
let label = String(rawLabel || '').trim();
|
|
935
|
+
const group = this.getOptionElementGroup(el);
|
|
779
936
|
const inner = this.extractInnerTextFromOption(el);
|
|
780
937
|
const content = (el.innerHTML || '').trim();
|
|
781
938
|
const selected = el.hasAttribute('selected') || Boolean(el.selected);
|
|
782
|
-
if (!value)
|
|
783
|
-
|
|
784
|
-
value = inner.trim();
|
|
785
|
-
}
|
|
939
|
+
if (!value && inner)
|
|
940
|
+
value = inner.trim();
|
|
786
941
|
if (!label)
|
|
787
942
|
label = inner?.trim() || value;
|
|
788
|
-
return { value: value || '', label: label || undefined, selected, content: content || undefined };
|
|
943
|
+
return { value: value || '', label: label || undefined, group, selected, content: content || undefined };
|
|
944
|
+
}
|
|
945
|
+
getOptionElementGroup(el) {
|
|
946
|
+
return String(el.getAttribute('group') ?? el.group ?? '').trim() || undefined;
|
|
789
947
|
}
|
|
790
948
|
extractInnerTextFromOption(el) {
|
|
791
|
-
const fromSlot = this.getAssignedSlotText(el);
|
|
792
|
-
if (fromSlot)
|
|
793
|
-
return fromSlot;
|
|
794
949
|
const fallback = (el.textContent || '').trim();
|
|
795
950
|
return fallback || null;
|
|
796
951
|
}
|
|
797
|
-
getAssignedSlotText(el) {
|
|
798
|
-
try {
|
|
799
|
-
const innerSlot = el.shadowRoot?.querySelector('slot:not([name])');
|
|
800
|
-
if (!innerSlot?.assignedNodes)
|
|
801
|
-
return null;
|
|
802
|
-
const text = innerSlot
|
|
803
|
-
.assignedNodes({ flatten: true })
|
|
804
|
-
.map((node) => (node.textContent || '').trim())
|
|
805
|
-
.filter(Boolean)
|
|
806
|
-
.join(' ')
|
|
807
|
-
.trim();
|
|
808
|
-
return text || null;
|
|
809
|
-
}
|
|
810
|
-
catch (_e) {
|
|
811
|
-
return null;
|
|
812
|
-
}
|
|
813
|
-
}
|
|
814
952
|
getOptionLabel(option) {
|
|
815
953
|
return (option.label ?? option.value).trim();
|
|
816
954
|
}
|
|
@@ -868,15 +1006,44 @@ export class Select {
|
|
|
868
1006
|
return selectedValues[0];
|
|
869
1007
|
}
|
|
870
1008
|
getOptionsProp() {
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
1009
|
+
let parsed = this.options;
|
|
1010
|
+
if (!Array.isArray(this.options)) {
|
|
1011
|
+
try {
|
|
1012
|
+
parsed = JSON.parse(this.options || '[]');
|
|
1013
|
+
}
|
|
1014
|
+
catch {
|
|
1015
|
+
reportInvalidPropValue(this.el, 'options', this.options, 'Informe um array de opções ou uma string JSON válida.', 'Aplicando fallback [].');
|
|
1016
|
+
return [];
|
|
1017
|
+
}
|
|
876
1018
|
}
|
|
877
|
-
|
|
1019
|
+
if (!Array.isArray(parsed)) {
|
|
1020
|
+
reportInvalidPropValue(this.el, 'options', this.options, 'Informe um array de opções ou uma string JSON válida.', 'Aplicando fallback [].');
|
|
878
1021
|
return [];
|
|
879
1022
|
}
|
|
1023
|
+
const validOptions = parsed.filter((option) => {
|
|
1024
|
+
return typeof option === 'object' && option !== null && typeof option.value === 'string';
|
|
1025
|
+
});
|
|
1026
|
+
const hasInvalidLabels = parsed.some((option) => {
|
|
1027
|
+
if (typeof option !== 'object' || option === null)
|
|
1028
|
+
return false;
|
|
1029
|
+
const label = option.label;
|
|
1030
|
+
return label !== undefined && typeof label !== 'string';
|
|
1031
|
+
});
|
|
1032
|
+
const hasInvalidGroups = parsed.some((option) => {
|
|
1033
|
+
if (typeof option !== 'object' || option === null)
|
|
1034
|
+
return false;
|
|
1035
|
+
const group = option.group;
|
|
1036
|
+
return group !== undefined && typeof group !== 'string';
|
|
1037
|
+
});
|
|
1038
|
+
const normalizedOptions = validOptions.map((option) => ({
|
|
1039
|
+
...option,
|
|
1040
|
+
group: typeof option.group === 'string' ? option.group.trim() || undefined : undefined,
|
|
1041
|
+
label: typeof option.label === 'string' ? option.label : undefined,
|
|
1042
|
+
}));
|
|
1043
|
+
if (validOptions.length !== parsed.length || hasInvalidLabels || hasInvalidGroups) {
|
|
1044
|
+
reportInvalidPropValue(this.el, 'options', this.options, 'Cada opção deve ter `value` string e pode ter `label` e `group` como strings.', 'Ignorando opções inválidas e removendo rótulos ou grupos com tipo incompatível.');
|
|
1045
|
+
}
|
|
1046
|
+
return normalizedOptions;
|
|
880
1047
|
}
|
|
881
1048
|
applySelectedValue(value) {
|
|
882
1049
|
const currentOptions = this.getCurrentOptions();
|
|
@@ -896,7 +1063,7 @@ export class Select {
|
|
|
896
1063
|
this.isApplyingExternalValue = false;
|
|
897
1064
|
this.remoteSelectedOptions.clear();
|
|
898
1065
|
this.rememberRemoteSelections(options);
|
|
899
|
-
if (this.
|
|
1066
|
+
if (this.effectiveSearchMode === 'remote') {
|
|
900
1067
|
const selectedValues = new Set(Array.isArray(value) ? value : [value ?? '']);
|
|
901
1068
|
selectedValues.forEach((selectedValue) => {
|
|
902
1069
|
if (selectedValue && !currentOptions.some((option) => option.value === selectedValue)) {
|
|
@@ -923,7 +1090,7 @@ export class Select {
|
|
|
923
1090
|
return nextOptions;
|
|
924
1091
|
}
|
|
925
1092
|
rememberRemoteSelections(options) {
|
|
926
|
-
if (this.
|
|
1093
|
+
if (this.effectiveSearchMode !== 'remote')
|
|
927
1094
|
return;
|
|
928
1095
|
const visibleValues = new Set(options.map((option) => option.value));
|
|
929
1096
|
options.forEach((option) => {
|
|
@@ -934,7 +1101,7 @@ export class Select {
|
|
|
934
1101
|
});
|
|
935
1102
|
}
|
|
936
1103
|
getFormOptions(options) {
|
|
937
|
-
if (this.
|
|
1104
|
+
if (this.effectiveSearchMode !== 'remote')
|
|
938
1105
|
return options;
|
|
939
1106
|
const result = options.map((option) => ({ ...option }));
|
|
940
1107
|
const existingValues = new Set(result.map((option) => option.value));
|
|
@@ -968,10 +1135,10 @@ export class Select {
|
|
|
968
1135
|
const nativeSelect = this.getNativeSelect();
|
|
969
1136
|
if (!nativeSelect)
|
|
970
1137
|
return;
|
|
971
|
-
const selectionMessage = this.effectiveMultiple && this.
|
|
972
|
-
? `Selecione pelo menos ${this.
|
|
973
|
-
: this.effectiveMultiple && this.
|
|
974
|
-
? `Selecione no máximo ${this.
|
|
1138
|
+
const selectionMessage = this.effectiveMultiple && this.effectiveMinSelections > 0 && selectedCount < this.effectiveMinSelections
|
|
1139
|
+
? `Selecione pelo menos ${this.effectiveMinSelections} opções.`
|
|
1140
|
+
: this.effectiveMultiple && this.effectiveMaxSelections > 0 && selectedCount > this.effectiveMaxSelections
|
|
1141
|
+
? `Selecione no máximo ${this.effectiveMaxSelections} opções.`
|
|
975
1142
|
: '';
|
|
976
1143
|
nativeSelect.setCustomValidity(this.customValidationMessage || this.validatorMessage || selectionMessage);
|
|
977
1144
|
syncNativeFormValidity(this.elementInternals, nativeSelect);
|
|
@@ -1156,28 +1323,21 @@ export class Select {
|
|
|
1156
1323
|
});
|
|
1157
1324
|
}
|
|
1158
1325
|
reflectRenderedListSelection(values, sourceOptions) {
|
|
1159
|
-
|
|
1160
|
-
if (!renderedOptions)
|
|
1326
|
+
if (!this.selectListElement)
|
|
1161
1327
|
return;
|
|
1162
|
-
const
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
const allSelected = selectableOptions.length > 0 && selectableOptions.every((option) => selectedValues.has(option.value));
|
|
1167
|
-
const anySelected = selectableOptions.some((option) => selectedValues.has(option.value));
|
|
1168
|
-
renderedOptions.forEach((option) => {
|
|
1169
|
-
if (this.isSelectAllLabel(option.label ?? option.value)) {
|
|
1170
|
-
option.indeterminate = anySelected && !allSelected;
|
|
1171
|
-
option.selected = allSelected;
|
|
1172
|
-
option.label = this.getSelectAllLabel(allSelected, option.indeterminate);
|
|
1173
|
-
return;
|
|
1174
|
-
}
|
|
1175
|
-
option.selected = selectedValues.has(option.value);
|
|
1176
|
-
});
|
|
1328
|
+
const options = sourceOptions ?? this.getCurrentOptions();
|
|
1329
|
+
// `select-list` expõe uma coleção controlada; o pai não precisa conhecer
|
|
1330
|
+
// os nós internos (nem atravessar `shadowRoot`) para refletir a seleção.
|
|
1331
|
+
this.selectListElement.options = this.getListOptions(options.map((option) => ({ ...option, selected: values.includes(option.value) })));
|
|
1177
1332
|
}
|
|
1178
1333
|
isSelectAllLabel(label) {
|
|
1179
1334
|
return label === this.selectAllLabel || label === this.unselectAllLabel;
|
|
1180
1335
|
}
|
|
1336
|
+
isSelectAllOption(option) {
|
|
1337
|
+
return (option.value === '__select_all__' ||
|
|
1338
|
+
option.value === 'Alternar todos' ||
|
|
1339
|
+
this.isSelectAllLabel(this.getOptionLabel(option)));
|
|
1340
|
+
}
|
|
1181
1341
|
getSelectAllLabel(selected, indeterminate) {
|
|
1182
1342
|
return selected && !indeterminate ? this.unselectAllLabel : this.selectAllLabel;
|
|
1183
1343
|
}
|
|
@@ -1255,7 +1415,6 @@ export class Select {
|
|
|
1255
1415
|
* A precedência é: lista interna, opções pendentes, conteúdo do slot e, por último,
|
|
1256
1416
|
* os filhos atuais do host.
|
|
1257
1417
|
*/
|
|
1258
|
-
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: prioriza a precedência entre slot, lista e opções remotas.
|
|
1259
1418
|
getCurrentOptions() {
|
|
1260
1419
|
// As opções projetadas são a fonte canônica quando não há coleção
|
|
1261
1420
|
// imperativa: a lista virtualizada pode manter um snapshot enquanto o
|
|
@@ -1267,16 +1426,7 @@ export class Select {
|
|
|
1267
1426
|
.filter((option) => Boolean(option));
|
|
1268
1427
|
if (slotOptions.length > 0) {
|
|
1269
1428
|
const normalizedSlotOptions = this.applyCanonicalSelection(slotOptions);
|
|
1270
|
-
|
|
1271
|
-
!normalizedSlotOptions.some((option) => this.isSelectAllLabel(this.getOptionLabel(option)))) {
|
|
1272
|
-
normalizedSlotOptions.unshift({
|
|
1273
|
-
value: '__select_all__',
|
|
1274
|
-
label: this.selectAllLabel,
|
|
1275
|
-
selected: false,
|
|
1276
|
-
indeterminate: false,
|
|
1277
|
-
});
|
|
1278
|
-
}
|
|
1279
|
-
return normalizedSlotOptions;
|
|
1429
|
+
return this.getListOptions(normalizedSlotOptions);
|
|
1280
1430
|
}
|
|
1281
1431
|
}
|
|
1282
1432
|
const listOptions = this.getSelectListController()?.options;
|
|
@@ -1284,34 +1434,14 @@ export class Select {
|
|
|
1284
1434
|
const normalizedListOptions = listOptions.map((option) => ({ ...option }));
|
|
1285
1435
|
const hasRealOptions = normalizedListOptions.some((option) => !this.isSelectAllLabel(this.getOptionLabel(option)));
|
|
1286
1436
|
if (hasRealOptions) {
|
|
1287
|
-
|
|
1288
|
-
!normalizedListOptions.some((option) => this.isSelectAllLabel(this.getOptionLabel(option)))) {
|
|
1289
|
-
normalizedListOptions.unshift({
|
|
1290
|
-
value: '__select_all__',
|
|
1291
|
-
label: this.selectAllLabel,
|
|
1292
|
-
selected: false,
|
|
1293
|
-
indeterminate: false,
|
|
1294
|
-
});
|
|
1295
|
-
}
|
|
1296
|
-
return this.applyCanonicalSelection(normalizedListOptions);
|
|
1437
|
+
return this.getListOptions(normalizedListOptions);
|
|
1297
1438
|
}
|
|
1298
1439
|
}
|
|
1299
1440
|
if (this.pendingOptions) {
|
|
1300
|
-
return this.
|
|
1441
|
+
return this.getListOptions(this.pendingOptions);
|
|
1301
1442
|
}
|
|
1302
1443
|
const hostOptions = this.applyCanonicalSelection(this.getHostOptions());
|
|
1303
|
-
|
|
1304
|
-
return [
|
|
1305
|
-
{
|
|
1306
|
-
value: '__select_all__',
|
|
1307
|
-
label: this.selectAllLabel,
|
|
1308
|
-
selected: false,
|
|
1309
|
-
indeterminate: false,
|
|
1310
|
-
},
|
|
1311
|
-
...hostOptions,
|
|
1312
|
-
];
|
|
1313
|
-
}
|
|
1314
|
-
return hostOptions;
|
|
1444
|
+
return this.getListOptions(hostOptions);
|
|
1315
1445
|
}
|
|
1316
1446
|
normalizeSearchText(value) {
|
|
1317
1447
|
return value
|
|
@@ -1323,7 +1453,7 @@ export class Select {
|
|
|
1323
1453
|
getNavigableOptions() {
|
|
1324
1454
|
const options = this.getCurrentOptions();
|
|
1325
1455
|
const normalizedTerm = this.normalizeSearchText(this.searchTerm);
|
|
1326
|
-
if (!this.filterable || this.
|
|
1456
|
+
if (!this.filterable || this.effectiveSearchMode === 'remote' || !normalizedTerm)
|
|
1327
1457
|
return options;
|
|
1328
1458
|
return options.filter((option) => {
|
|
1329
1459
|
if (this.isSelectAllLabel(this.getOptionLabel(option)))
|
|
@@ -1358,10 +1488,10 @@ export class Select {
|
|
|
1358
1488
|
this.selectListElement?.setMultiple(isMultiple);
|
|
1359
1489
|
}
|
|
1360
1490
|
renderSelectInput() {
|
|
1361
|
-
return (h("br-select-input", { part: "input", exportparts: "container:input-container, input:input-field, label:input-label, group:input-group, icon:input-icon, action:input-action, action-button:input-action-button", ref: (el) => (this.selectInputElement = el), "aria-activedescendant": this.getActiveDescendant(), "aria-controls": this.listboxId, "aria-disabled": String(this.isDisabled()), "aria-expanded": String(this.effectiveOpen), "aria-haspopup": "listbox", "aria-label": this.getAccessibleLabel(), "aria-required": String(this.required), borderless: this.borderless, "is-inline": this.effectiveInline, "is-open": this.effectiveOpen, label: this.label, name: this.name, placeholder: this.placeholder, required: this.required, disabled: this.isDisabled(), filterable: this.filterable, showSearchIcon: this.showSearchIcon, autocomplete: this.
|
|
1491
|
+
return (h("br-select-input", { part: "input", exportparts: "container:input-container, input:input-field, label:input-label, group:input-group, icon:input-icon, action:input-action, action-button:input-action-button", ref: (el) => (this.selectInputElement = el), "aria-activedescendant": this.getActiveDescendant(), "aria-controls": this.listboxId, "aria-disabled": String(this.isDisabled()), "aria-expanded": String(this.effectiveOpen), "aria-haspopup": "listbox", "aria-label": this.getAccessibleLabel(), "aria-required": String(this.required), borderless: this.borderless, density: this.effectiveDensity, "is-inline": this.effectiveInline, "is-open": this.effectiveOpen, label: this.label, name: this.name, placeholder: this.placeholder, required: this.required, disabled: this.isDisabled(), filterable: this.filterable, showSearchIcon: this.showSearchIcon, autocomplete: this.effectiveAutocomplete, "input-width": this.inputWidth, role: "combobox", value: this.filterable && this.effectiveOpen ? this.searchTerm : this.getRenderedDisplayValue() }));
|
|
1362
1492
|
}
|
|
1363
1493
|
renderSelectList() {
|
|
1364
|
-
return (h("br-select-list", { part: "list", options: this.getCurrentOptions(), exportparts: "list, option, checkbox, select-all, empty-option, option-checkbox, option-radio", "active-option-index": this.activeOptionIndex, "aria-label": this.getAccessibleLabel(), "aria-multiselectable": this.effectiveMultiple ? 'true' : 'false', id: this.listboxId, "visible-items": this.
|
|
1494
|
+
return (h("br-select-list", { part: "list", options: this.getListOptions(this.getCurrentOptions()), exportparts: "list, option, checkbox, select-all, empty-option, option-checkbox, option-radio, option-group", "active-option-index": this.activeOptionIndex, "aria-label": this.getAccessibleLabel(), "aria-multiselectable": this.effectiveMultiple ? 'true' : 'false', density: this.effectiveDensity, id: this.listboxId, "visible-items": this.effectiveVisibleItems, "item-height": this.effectiveItemHeight, overscan: this.effectiveOverscan, "search-term": this.filterable && this.effectiveSearchMode === 'local' ? this.searchTerm : '', role: "listbox", "select-all-label": this.selectAllLabel, "unselect-all-label": this.unselectAllLabel, ref: (el) => {
|
|
1365
1495
|
this.selectListElement = el;
|
|
1366
1496
|
this.selectListElement.loading = this.loading;
|
|
1367
1497
|
this.setSelectionMode(this.effectiveMultiple);
|
|
@@ -1371,7 +1501,7 @@ export class Select {
|
|
|
1371
1501
|
renderHiddenSelect() {
|
|
1372
1502
|
const options = this.getFormOptions(this.getCurrentOptions()).filter((option) => !this.isSelectAllLabel(this.getOptionLabel(option)));
|
|
1373
1503
|
const hasSelection = options.some((option) => option.selected);
|
|
1374
|
-
return (h("select", { ref: (el) => (this.nativeSelect = el), part: "hidden-select", name: this.name, autocomplete: this.
|
|
1504
|
+
return (h("select", { ref: (el) => (this.nativeSelect = el), part: "hidden-select", name: this.name, autocomplete: this.effectiveAutocomplete, multiple: this.effectiveMultiple, required: this.required, disabled: this.isDisabled(), tabIndex: -1, "aria-hidden": "true", style: {
|
|
1375
1505
|
position: 'absolute',
|
|
1376
1506
|
width: '1px',
|
|
1377
1507
|
height: '1px',
|
|
@@ -1381,10 +1511,31 @@ export class Select {
|
|
|
1381
1511
|
clip: 'rect(0, 0, 0, 0)',
|
|
1382
1512
|
whiteSpace: 'nowrap',
|
|
1383
1513
|
border: '0',
|
|
1384
|
-
}, onChange: (event) => event.preventDefault() }, h("option", { value: "", selected: !hasSelection }), options.map((
|
|
1514
|
+
}, onChange: (event) => event.preventDefault() }, h("option", { value: "", selected: !hasSelection }), this.getNativeOptionGroups(options).map((optionGroup, groupIndex) => {
|
|
1515
|
+
const nativeOptions = optionGroup.options.map((option) => this.renderNativeOption(option));
|
|
1516
|
+
if (!optionGroup.group)
|
|
1517
|
+
return nativeOptions;
|
|
1518
|
+
return (h("optgroup", { key: `${optionGroup.group}:${groupIndex}`, label: optionGroup.group }, nativeOptions));
|
|
1519
|
+
})));
|
|
1520
|
+
}
|
|
1521
|
+
getNativeOptionGroups(options) {
|
|
1522
|
+
return options.reduce((groups, option) => {
|
|
1523
|
+
const group = option.group?.trim() || undefined;
|
|
1524
|
+
const currentGroup = groups.at(-1);
|
|
1525
|
+
if (!currentGroup || currentGroup.group !== group) {
|
|
1526
|
+
groups.push({ group, options: [option] });
|
|
1527
|
+
}
|
|
1528
|
+
else {
|
|
1529
|
+
currentGroup.options.push(option);
|
|
1530
|
+
}
|
|
1531
|
+
return groups;
|
|
1532
|
+
}, []);
|
|
1533
|
+
}
|
|
1534
|
+
renderNativeOption(option) {
|
|
1535
|
+
return (h("option", { key: option.value, value: option.value, selected: option.selected, disabled: option.disabled }));
|
|
1385
1536
|
}
|
|
1386
1537
|
render() {
|
|
1387
|
-
return (h(Host, { key: '
|
|
1538
|
+
return (h(Host, { key: '9c74748b6b9b428fc6f0388a704196e579d45ae6', "aria-busy": this.isValidating || this.loading ? 'true' : null }, h("div", { key: '291a5947bd1f1de1b93944fca855fc7a2cacd24e', class: this.getCssClassMap(), part: "container" }, this.renderSelectInput(), this.renderSelectList(), h("div", { key: '86f0d585b01076b26926e80a10e60ae1077f4183', part: "feedback", hidden: !this.hasFeedbackSlot && !this.validatorMessage }, h("slot", { key: 'f5aad9aa79604fe8b7be56fb80ecf27ea116559b', name: "feedback", onSlotchange: (event) => (this.hasFeedbackSlot = hasAssignedSlotContent(event.currentTarget)) }, this.validatorMessage)), h("div", { key: '1bf287a49b52beb2655d80e7195ea1657ce1cf18', part: "validation-loading", hidden: !this.hasValidationLoadingSlot || !this.isValidating }, h("slot", { key: 'e0b02f9a40c8105c901600fed485352e664ff9d2', name: "validation-loading" })), this.renderHiddenSelect())));
|
|
1388
1539
|
}
|
|
1389
1540
|
static get is() { return "br-select"; }
|
|
1390
1541
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1447,6 +1598,36 @@ export class Select {
|
|
|
1447
1598
|
"attribute": "disabled",
|
|
1448
1599
|
"defaultValue": "false"
|
|
1449
1600
|
},
|
|
1601
|
+
"density": {
|
|
1602
|
+
"type": "string",
|
|
1603
|
+
"mutable": false,
|
|
1604
|
+
"complexType": {
|
|
1605
|
+
"original": "BrDensity",
|
|
1606
|
+
"resolved": "\"large\" | \"medium\" | \"small\"",
|
|
1607
|
+
"references": {
|
|
1608
|
+
"BrDensity": {
|
|
1609
|
+
"location": "import",
|
|
1610
|
+
"path": "../global.types",
|
|
1611
|
+
"id": "src/components/global.types.ts::BrDensity",
|
|
1612
|
+
"referenceLocation": "BrDensity"
|
|
1613
|
+
}
|
|
1614
|
+
}
|
|
1615
|
+
},
|
|
1616
|
+
"required": false,
|
|
1617
|
+
"optional": false,
|
|
1618
|
+
"docs": {
|
|
1619
|
+
"tags": [{
|
|
1620
|
+
"name": "default",
|
|
1621
|
+
"text": "'medium'"
|
|
1622
|
+
}],
|
|
1623
|
+
"text": "Define a densidade visual compartilhada pelo campo e pela lista de op\u00E7\u00F5es.\nAceita `small`, `medium` ou `large`. Valores inv\u00E1lidos usam `medium`."
|
|
1624
|
+
},
|
|
1625
|
+
"getter": false,
|
|
1626
|
+
"setter": false,
|
|
1627
|
+
"reflect": true,
|
|
1628
|
+
"attribute": "density",
|
|
1629
|
+
"defaultValue": "'medium'"
|
|
1630
|
+
},
|
|
1450
1631
|
"isInline": {
|
|
1451
1632
|
"type": "boolean",
|
|
1452
1633
|
"mutable": false,
|
|
@@ -1578,7 +1759,7 @@ export class Select {
|
|
|
1578
1759
|
"name": "default",
|
|
1579
1760
|
"text": "6"
|
|
1580
1761
|
}],
|
|
1581
|
-
"text": "Define quantas
|
|
1762
|
+
"text": "Define quantas linhas visuais ficam vis\u00EDveis na janela da lista.\nCabe\u00E7alhos de grupo tamb\u00E9m ocupam uma linha quando existem.\nDeve ser um inteiro positivo; valores inv\u00E1lidos usam 6."
|
|
1582
1763
|
},
|
|
1583
1764
|
"getter": false,
|
|
1584
1765
|
"setter": false,
|
|
@@ -1601,7 +1782,7 @@ export class Select {
|
|
|
1601
1782
|
"name": "default",
|
|
1602
1783
|
"text": "40"
|
|
1603
1784
|
}],
|
|
1604
|
-
"text": "Informa a altura base de cada op\u00E7\u00E3o para o c\u00E1lculo de virtual scroll."
|
|
1785
|
+
"text": "Informa a altura base de cada op\u00E7\u00E3o ou cabe\u00E7alho para o c\u00E1lculo de virtual scroll.\nDeve ser um n\u00FAmero finito positivo; valores inv\u00E1lidos usam 40."
|
|
1605
1786
|
},
|
|
1606
1787
|
"getter": false,
|
|
1607
1788
|
"setter": false,
|
|
@@ -1650,7 +1831,7 @@ export class Select {
|
|
|
1650
1831
|
"name": "default",
|
|
1651
1832
|
"text": "1"
|
|
1652
1833
|
}],
|
|
1653
|
-
"text": "Define quantas op\u00E7\u00F5es extras s\u00E3o renderizadas antes e depois da \u00E1rea vis\u00EDvel no virtual scroll."
|
|
1834
|
+
"text": "Define quantas op\u00E7\u00F5es extras s\u00E3o renderizadas antes e depois da \u00E1rea vis\u00EDvel no virtual scroll.\nDeve ser um inteiro n\u00E3o negativo; valores inv\u00E1lidos usam 1."
|
|
1654
1835
|
},
|
|
1655
1836
|
"getter": false,
|
|
1656
1837
|
"setter": false,
|
|
@@ -1764,6 +1945,9 @@ export class Select {
|
|
|
1764
1945
|
}, {
|
|
1765
1946
|
"name": "remarks",
|
|
1766
1947
|
"text": "Em modo m\u00FAltiplo, o valor p\u00FAblico \u00E9 um array de strings."
|
|
1948
|
+
}, {
|
|
1949
|
+
"name": "example",
|
|
1950
|
+
"text": "```js\nconst select = document.querySelector('br-select');\nselect.multiple = true;\nselect.value = ['df', 'sp'];\n```"
|
|
1767
1951
|
}],
|
|
1768
1952
|
"text": "Valor p\u00FAblico do select baseado nas op\u00E7\u00F5es atualmente selecionadas."
|
|
1769
1953
|
},
|
|
@@ -1968,8 +2152,8 @@ export class Select {
|
|
|
1968
2152
|
"type": "string",
|
|
1969
2153
|
"mutable": false,
|
|
1970
2154
|
"complexType": {
|
|
1971
|
-
"original": "string
|
|
1972
|
-
"resolved": "SelectOptionData[] | string | { label: string; value: string; selected?: boolean; }[]",
|
|
2155
|
+
"original": "| string\n | { group?: string; label: string; value: string; selected?: boolean }[]\n | SelectOptionData[]",
|
|
2156
|
+
"resolved": "SelectOptionData[] | string | { group?: string; label: string; value: string; selected?: boolean; }[]",
|
|
1973
2157
|
"references": {
|
|
1974
2158
|
"SelectOptionData": {
|
|
1975
2159
|
"location": "import",
|
|
@@ -1983,10 +2167,13 @@ export class Select {
|
|
|
1983
2167
|
"optional": false,
|
|
1984
2168
|
"docs": {
|
|
1985
2169
|
"tags": [{
|
|
2170
|
+
"name": "example",
|
|
2171
|
+
"text": "```html\n<!-- Compatibilidade legada; prefira elementos br-select-option. -->\n<br-select options='[{\"label\":\"Distrito Federal\",\"value\":\"df\"}]'></br-select>\n```"
|
|
2172
|
+
}, {
|
|
1986
2173
|
"name": "deprecated",
|
|
1987
|
-
"text": "
|
|
2174
|
+
"text": "Use `br-select-option` no slot padr\u00E3o ou `setOptions()` para respostas din\u00E2micas/remotas."
|
|
1988
2175
|
}],
|
|
1989
|
-
"text": "
|
|
2176
|
+
"text": "Fornece op\u00E7\u00F5es como array ou JSON, al\u00E9m das op\u00E7\u00F5es projetadas por slot.\nUse property binding para arrays em JavaScript e frameworks; no atributo\nHTML, informe uma string JSON v\u00E1lida. Na inicializa\u00E7\u00E3o, op\u00E7\u00F5es no slot t\u00EAm\npreced\u00EAncia quando existem. Depois de uma altera\u00E7\u00E3o nesta prop ou de uma\nchamada a `setOptions()`, a cole\u00E7\u00E3o imperativa passa a ser a fonte de dados.\nN\u00E3o use em c\u00F3digo novo. Declare `br-select-option` no slot padr\u00E3o ou, para\nrespostas din\u00E2micas/remotas, atualize a cole\u00E7\u00E3o com `setOptions()`."
|
|
1990
2177
|
},
|
|
1991
2178
|
"getter": false,
|
|
1992
2179
|
"setter": false,
|
|
@@ -2013,7 +2200,7 @@ export class Select {
|
|
|
2013
2200
|
"optional": true,
|
|
2014
2201
|
"docs": {
|
|
2015
2202
|
"tags": [],
|
|
2016
|
-
"text": "Controla o autocomplete do campo de busca interno."
|
|
2203
|
+
"text": "Controla o autocomplete do campo de busca interno. Aceita `on` ou `off`; valores inv\u00E1lidos s\u00E3o ignorados."
|
|
2017
2204
|
},
|
|
2018
2205
|
"getter": false,
|
|
2019
2206
|
"setter": false,
|
|
@@ -2038,7 +2225,7 @@ export class Select {
|
|
|
2038
2225
|
"setter": false,
|
|
2039
2226
|
"reflect": true,
|
|
2040
2227
|
"attribute": "custom-id",
|
|
2041
|
-
"defaultValue": "
|
|
2228
|
+
"defaultValue": "generateUniqueId('br-select')"
|
|
2042
2229
|
},
|
|
2043
2230
|
"minSelections": {
|
|
2044
2231
|
"type": "number",
|
|
@@ -2052,7 +2239,7 @@ export class Select {
|
|
|
2052
2239
|
"optional": false,
|
|
2053
2240
|
"docs": {
|
|
2054
2241
|
"tags": [],
|
|
2055
|
-
"text": "Quantidade m\u00EDnima de op\u00E7\u00F5es selecionadas no modo m\u00FAltiplo."
|
|
2242
|
+
"text": "Quantidade m\u00EDnima de op\u00E7\u00F5es selecionadas no modo m\u00FAltiplo. Deve ser um inteiro n\u00E3o negativo; valores inv\u00E1lidos usam 0."
|
|
2056
2243
|
},
|
|
2057
2244
|
"getter": false,
|
|
2058
2245
|
"setter": false,
|
|
@@ -2072,7 +2259,7 @@ export class Select {
|
|
|
2072
2259
|
"optional": false,
|
|
2073
2260
|
"docs": {
|
|
2074
2261
|
"tags": [],
|
|
2075
|
-
"text": "Quantidade m\u00E1xima de op\u00E7\u00F5es selecionadas no modo m\u00FAltiplo."
|
|
2262
|
+
"text": "Quantidade m\u00E1xima de op\u00E7\u00F5es selecionadas no modo m\u00FAltiplo. Deve ser um inteiro n\u00E3o negativo; valores inv\u00E1lidos usam 0."
|
|
2076
2263
|
},
|
|
2077
2264
|
"getter": false,
|
|
2078
2265
|
"setter": false,
|
|
@@ -2098,8 +2285,11 @@ export class Select {
|
|
|
2098
2285
|
"required": false,
|
|
2099
2286
|
"optional": true,
|
|
2100
2287
|
"docs": {
|
|
2101
|
-
"tags": [
|
|
2102
|
-
|
|
2288
|
+
"tags": [{
|
|
2289
|
+
"name": "example",
|
|
2290
|
+
"text": "```js\nconst select = document.querySelector('br-select');\nselect.validator = (value) =>\n (Array.isArray(value) ? value.length > 0 : Boolean(value)) ? null : 'Selecione uma op\u00E7\u00E3o';\n```"
|
|
2291
|
+
}],
|
|
2292
|
+
"text": "Valida\u00E7\u00E3o s\u00EDncrona ou ass\u00EDncrona executada no m\u00E9todo `validate()`.\nRecebe uma string no modo simples e um array de strings no modo m\u00FAltiplo."
|
|
2103
2293
|
},
|
|
2104
2294
|
"getter": false,
|
|
2105
2295
|
"setter": false,
|
|
@@ -2583,7 +2773,7 @@ export class Select {
|
|
|
2583
2773
|
"signature": "(option: SelectOptionData) => Promise<void>",
|
|
2584
2774
|
"parameters": [{
|
|
2585
2775
|
"name": "option",
|
|
2586
|
-
"type": "{ content?: string; disabled?: boolean; indeterminate?: boolean; label?: string; selected?: boolean; value: string; }",
|
|
2776
|
+
"type": "{ content?: string; disabled?: boolean; group?: string; indeterminate?: boolean; label?: string; selected?: boolean; value: string; }",
|
|
2587
2777
|
"docs": "Op\u00E7\u00E3o que deve ser inserida ou atualizada."
|
|
2588
2778
|
}],
|
|
2589
2779
|
"references": {
|
|
@@ -2675,6 +2865,12 @@ export class Select {
|
|
|
2675
2865
|
"target": undefined,
|
|
2676
2866
|
"capture": false,
|
|
2677
2867
|
"passive": false
|
|
2868
|
+
}, {
|
|
2869
|
+
"name": "brSelectOptionPropsChange",
|
|
2870
|
+
"method": "handleSelectOptionPropsChange",
|
|
2871
|
+
"target": undefined,
|
|
2872
|
+
"capture": false,
|
|
2873
|
+
"passive": false
|
|
2678
2874
|
}, {
|
|
2679
2875
|
"name": "brInternalSelectOptionHover",
|
|
2680
2876
|
"method": "handleSelectOptionHover",
|