@ds-mo/ui 12.6.2 → 12.8.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 +44 -115
- package/dist/.build-stamp +1 -1
- package/dist/agent-patterns.json +26 -11
- package/dist/agent.json +285 -49
- package/dist/angular/ds-button-filled.d.ts +1 -1
- package/dist/angular/ds-button-filled.js +3 -3
- package/dist/angular/ds-button-unfilled.d.ts +1 -1
- package/dist/angular/ds-button-unfilled.js +3 -3
- package/dist/angular/ds-card-overview.d.ts +19 -0
- package/dist/angular/ds-card-overview.js +42 -0
- package/dist/angular/ds-menu.d.ts +1 -1
- package/dist/angular/ds-menu.js +3 -3
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +1 -0
- package/dist/angular/proxies.d.ts +1 -0
- package/dist/angular/proxies.js +1 -0
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-source-list.js +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-nav.js.map +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-title.js.map +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-bar-workflow.js.map +1 -1
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-card-data-viz-bar.js +1 -1
- package/dist/components/ds-card-data-viz-bar.js.map +1 -1
- package/dist/components/ds-card-data-viz-donut.js +1 -1
- package/dist/components/ds-card-data-viz-donut.js.map +1 -1
- package/dist/components/ds-card-data-viz-line.js +1 -1
- package/dist/components/ds-card-data-viz-line.js.map +1 -1
- package/dist/components/ds-card-overview.d.ts +11 -0
- package/dist/components/ds-card-overview.js +2 -0
- package/dist/components/ds-card-overview.js.map +1 -0
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-setting.js.map +1 -1
- package/dist/components/ds-card-shell-data-viz.js +1 -1
- package/dist/components/ds-chart-bar-stacked.js +1 -1
- package/dist/components/ds-chart-bar-stacked.js.map +1 -1
- package/dist/components/ds-chart-bar.js +1 -1
- package/dist/components/ds-chart-bar.js.map +1 -1
- package/dist/components/ds-chart-donut.js +1 -1
- package/dist/components/ds-chart-donut.js.map +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart-line.js +1 -1
- package/dist/components/ds-chart-line.js.map +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-item.js.map +1 -1
- package/dist/components/ds-conversation-list-section.js +1 -1
- package/dist/components/ds-conversation-list.js +1 -1
- package/dist/components/ds-conversation-list.js.map +1 -1
- package/dist/components/ds-divider.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-field.js.map +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-input.js.map +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-bubble.js +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-composer.js.map +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message-scroller.js.map +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js.map +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js.map +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-modal.js.map +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-nav.js.map +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tool-search.js.map +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-radio.js.map +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-select-multi.js +1 -1
- package/dist/components/ds-select-multi.js.map +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-select.js.map +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-app.js.map +1 -1
- package/dist/components/ds-shell-gradient-picker.js +1 -1
- package/dist/components/ds-shell-gradient-swatch.js +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-page.js.map +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-shell-tools.js.map +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-skeleton.js.map +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-slider.js.map +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-toast.js.map +1 -1
- package/dist/components/ds-tooltip-data-viz.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/p-2foAUsDN.js +2 -0
- package/dist/components/p-2foAUsDN.js.map +1 -0
- package/dist/components/{p-Ccj5Op6E.js → p-38PfdMkF.js} +2 -2
- package/dist/components/p-69lHhJiX.js +2 -0
- package/dist/components/p-69lHhJiX.js.map +1 -0
- package/dist/components/p-B6NvVdeO.js +2 -0
- package/dist/components/p-B6NvVdeO.js.map +1 -0
- package/dist/components/p-B6Vuayt6.js +2 -0
- package/dist/components/p-B6Vuayt6.js.map +1 -0
- package/dist/components/p-B6vE3ujd.js +2 -0
- package/dist/components/p-B6vE3ujd.js.map +1 -0
- package/dist/components/p-BBePKRHC.js +2 -0
- package/dist/components/p-BBePKRHC.js.map +1 -0
- package/dist/components/{p-CaRyxTMz.js → p-BFRMwl93.js} +2 -2
- package/dist/components/p-BKOlvCGS.js +2 -0
- package/dist/components/p-BKOlvCGS.js.map +1 -0
- package/dist/components/{p-C7bZ-jiU.js → p-BO5aqZcf.js} +2 -2
- package/dist/components/p-BX0BMhgz.js +2 -0
- package/dist/components/p-BX0BMhgz.js.map +1 -0
- package/dist/components/p-BXaieghV.js +2 -0
- package/dist/components/p-BXaieghV.js.map +1 -0
- package/dist/components/p-BlHzmszE.js +2 -0
- package/dist/components/{p-BkAMkjIR.js.map → p-BlHzmszE.js.map} +1 -1
- package/dist/components/p-By_s1wNN.js +2 -0
- package/dist/components/p-By_s1wNN.js.map +1 -0
- package/dist/components/p-C61yJkfr.js +2 -0
- package/dist/components/p-C61yJkfr.js.map +1 -0
- package/dist/components/{p-DXLWm4PF.js → p-CNgPwd11.js} +2 -2
- package/dist/components/p-CNjOyUQu.js +2 -0
- package/dist/components/p-CNjOyUQu.js.map +1 -0
- package/dist/components/{p-BwGnhInj.js → p-CPwpgUWT.js} +2 -2
- package/dist/components/p-CU2673IJ.js +2 -0
- package/dist/components/p-CU2673IJ.js.map +1 -0
- package/dist/components/{p-B9bxDfZV.js → p-CsX3ICz7.js} +2 -2
- package/dist/components/p-CuwopElg.js +2 -0
- package/dist/components/p-CuwopElg.js.map +1 -0
- package/dist/components/{p-D-xttdpn.js → p-D0e77tkd.js} +2 -2
- package/dist/components/p-D1bNvIpb.js +2 -0
- package/dist/components/p-D1bNvIpb.js.map +1 -0
- package/dist/components/{p-BwsGYxZx.js → p-D9u1_OEZ.js} +2 -2
- package/dist/components/{p-DQDpDYyF.js → p-DB9XJm2c.js} +2 -2
- package/dist/components/{p-CnHrJTD5.js → p-DIFUsoM-.js} +2 -2
- package/dist/components/p-DhKvqh5G.js +2 -0
- package/dist/components/p-DhKvqh5G.js.map +1 -0
- package/dist/components/p-DhLmoCe_.js +2 -0
- package/dist/components/p-DhLmoCe_.js.map +1 -0
- package/dist/components/p-DjbTFy2B.js +2 -0
- package/dist/components/p-DjbTFy2B.js.map +1 -0
- package/dist/components/{p-CWTih3Gc.js → p-DmAHufd5.js} +2 -2
- package/dist/components/p-DzM3SzPz.js +2 -0
- package/dist/components/p-DzM3SzPz.js.map +1 -0
- package/dist/components/{p-DqubRds2.js → p-G3qIxpQj.js} +2 -2
- package/dist/components/p-Re2kPrXm.js +2 -0
- package/dist/components/p-Re2kPrXm.js.map +1 -0
- package/dist/components/{p-DwX7UmLl.js → p-Utr23NC-.js} +2 -2
- package/dist/components/{p-DIoiApa-.js → p-Vdufoj7G.js} +2 -2
- package/dist/components/p-huw1oRbt.js +2 -0
- package/dist/components/p-huw1oRbt.js.map +1 -0
- package/dist/components/p-ukB-dPOK.js +2 -0
- package/dist/components/{p-BY0PzkUp.js.map → p-ukB-dPOK.js.map} +1 -1
- package/dist/components/p-yhj1lIPx.js +2 -0
- package/dist/docs/components.json +760 -87
- package/dist/lib/components/Menu/menu-position.d.ts +6 -6
- package/dist/lib/toast/toast-types.d.ts +3 -3
- package/dist/lib/utils/anchored-position.d.ts +34 -0
- package/dist/lib/utils/choice-popup-alignment.d.ts +2 -2
- package/dist/lib/utils/control-text.d.ts +3 -1
- package/dist/lib/utils/index.d.ts +3 -1
- package/dist/lib/utils/index.js +39 -0
- package/dist/lib/utils/index.js.map +3 -3
- package/dist/lib/utils/metric-change.d.ts +52 -0
- package/dist/lib/utils/token-defaults.d.ts +3 -0
- package/dist/mcp-data/registry/agent-activity.json +1 -1
- package/dist/mcp-data/registry/agent-response.json +1 -1
- package/dist/mcp-data/registry/agent-source-list.json +1 -1
- package/dist/mcp-data/registry/agent-tool-call.json +1 -1
- package/dist/mcp-data/registry/attachment-list.json +1 -1
- package/dist/mcp-data/registry/avatar.json +1 -1
- package/dist/mcp-data/registry/badge.json +1 -1
- package/dist/mcp-data/registry/bar-nav.json +3 -3
- package/dist/mcp-data/registry/bar-title.json +3 -3
- package/dist/mcp-data/registry/bar-workflow.json +3 -3
- package/dist/mcp-data/registry/breadcrumb.json +1 -1
- package/dist/mcp-data/registry/button-filled.json +125 -8
- package/dist/mcp-data/registry/button-unfilled.json +50 -5
- package/dist/mcp-data/registry/card-data-viz-bar.json +5 -4
- package/dist/mcp-data/registry/card-data-viz-donut.json +5 -3
- package/dist/mcp-data/registry/card-data-viz-line.json +5 -4
- package/dist/mcp-data/registry/card-overview.json +317 -0
- package/dist/mcp-data/registry/card-setting.json +3 -3
- package/dist/mcp-data/registry/card-shell-data-viz.json +3 -3
- package/dist/mcp-data/registry/chart-bar-stacked.json +14 -9
- package/dist/mcp-data/registry/chart-bar.json +15 -10
- package/dist/mcp-data/registry/chart-donut.json +3 -2
- package/dist/mcp-data/registry/chart-legend.json +1 -1
- package/dist/mcp-data/registry/chart-line.json +15 -10
- package/dist/mcp-data/registry/checkbox.json +10 -10
- package/dist/mcp-data/registry/chip.json +1 -1
- package/dist/mcp-data/registry/code-block.json +1 -1
- package/dist/mcp-data/registry/conversation-list-item.json +3 -3
- package/dist/mcp-data/registry/conversation-list-section.json +1 -1
- package/dist/mcp-data/registry/conversation-list.json +3 -3
- package/dist/mcp-data/registry/divider.json +1 -1
- package/dist/mcp-data/registry/empty-state.json +6 -2
- package/dist/mcp-data/registry/field.json +4 -3
- package/dist/mcp-data/registry/icon.json +1 -1
- package/dist/mcp-data/registry/input.json +9 -8
- package/dist/mcp-data/registry/loader.json +1 -1
- package/dist/mcp-data/registry/markdown.json +1 -1
- package/dist/mcp-data/registry/menu.json +24 -5
- package/dist/mcp-data/registry/message-bubble.json +1 -1
- package/dist/mcp-data/registry/message-composer.json +1 -1
- package/dist/mcp-data/registry/message-scroller.json +3 -3
- package/dist/mcp-data/registry/message.json +1 -1
- package/dist/mcp-data/registry/mobile-bar-nav.json +4 -4
- package/dist/mcp-data/registry/mobile-header.json +3 -3
- package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
- package/dist/mcp-data/registry/mobile-sheet-nav.json +6 -4
- package/dist/mcp-data/registry/modal.json +3 -3
- package/dist/mcp-data/registry/panel-nav.json +3 -3
- package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
- package/dist/mcp-data/registry/panel-tool-header.json +3 -3
- package/dist/mcp-data/registry/panel-tool-search.json +3 -3
- package/dist/mcp-data/registry/panel-tools.json +4 -3
- package/dist/mcp-data/registry/radio.json +10 -10
- package/dist/mcp-data/registry/registry.json +288 -49
- package/dist/mcp-data/registry/scroll-overlay.json +1 -1
- package/dist/mcp-data/registry/select-multi.json +10 -8
- package/dist/mcp-data/registry/select.json +10 -8
- package/dist/mcp-data/registry/shell-app.json +3 -2
- package/dist/mcp-data/registry/shell-gradient-picker.json +1 -1
- package/dist/mcp-data/registry/shell-gradient-swatch.json +1 -1
- package/dist/mcp-data/registry/shell-page.json +5 -4
- package/dist/mcp-data/registry/shell-tools.json +2 -2
- package/dist/mcp-data/registry/skeleton.json +3 -3
- package/dist/mcp-data/registry/slider.json +4 -3
- package/dist/mcp-data/registry/swatch-picker.json +1 -1
- package/dist/mcp-data/registry/switch.json +8 -8
- package/dist/mcp-data/registry/tab-group.json +1 -1
- package/dist/mcp-data/registry/tag.json +1 -1
- package/dist/mcp-data/registry/text.json +1 -1
- package/dist/mcp-data/registry/toast.json +2 -2
- package/dist/mcp-data/registry/tooltip-data-viz.json +3 -1
- package/dist/mcp-data/registry/tooltip.json +3 -8
- package/dist/mcp-data/registry/typing-indicator.json +1 -1
- package/dist/react/components.d.ts +1 -0
- package/dist/react/components.js +1 -0
- package/dist/react/ds-card-overview.d.ts +12 -0
- package/dist/react/ds-card-overview.js +12 -0
- package/dist/styles/control-elevation.css +38 -2
- package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +33 -1
- package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +20 -0
- package/dist/types/components/CardOverview/CardOverview.d.ts +59 -0
- package/dist/types/components/CardOverview/card-overview-types.d.ts +32 -0
- package/dist/types/components/CardOverview/index.d.ts +2 -0
- package/dist/types/components/ChartBar/ChartBar.d.ts +11 -0
- package/dist/types/components/ChartBarStacked/ChartBarStacked.d.ts +11 -0
- package/dist/types/components/ChartLine/ChartLine.d.ts +11 -0
- package/dist/types/components/Checkbox/Checkbox.d.ts +1 -1
- package/dist/types/components/Input/Input.d.ts +1 -1
- package/dist/types/components/Menu/Menu.d.ts +11 -5
- package/dist/types/components/Menu/menu-position.d.ts +6 -6
- package/dist/types/components/MobileSheetNav/MobileSheetNav.d.ts +0 -1
- package/dist/types/components/Radio/Radio.d.ts +1 -1
- package/dist/types/components/Select/Select.d.ts +6 -23
- package/dist/types/components/SelectMulti/SelectMulti.d.ts +5 -20
- package/dist/types/components/ShellPage/ShellPage.d.ts +1 -0
- package/dist/types/components/ShellTools/ShellTools.d.ts +1 -0
- package/dist/types/components/Switch/Switch.d.ts +1 -1
- package/dist/types/components/Tooltip/Tooltip.d.ts +1 -4
- package/dist/types/components.d.ts +225 -4
- package/dist/types/toast/toast-types.d.ts +3 -3
- package/dist/types/utils/anchored-position-controller.d.ts +96 -0
- package/dist/types/utils/anchored-position.d.ts +35 -0
- package/dist/types/utils/cartesian-chart-layout.d.ts +13 -0
- package/dist/types/utils/chart-viewport-controller.d.ts +21 -0
- package/dist/types/utils/choice-list-parts.d.ts +4 -0
- package/dist/types/utils/choice-popup-alignment.d.ts +2 -2
- package/dist/types/utils/control-press.d.ts +9 -0
- package/dist/types/utils/control-text.d.ts +3 -1
- package/dist/types/utils/index.d.ts +3 -1
- package/dist/types/utils/metric-change.d.ts +53 -0
- package/dist/types/utils/select-controller.d.ts +67 -0
- package/dist/types/utils/token-defaults.d.ts +3 -0
- package/package.json +3 -3
- package/dist/components/p-B8C_yfLQ.js +0 -2
- package/dist/components/p-B8C_yfLQ.js.map +0 -1
- package/dist/components/p-B9xVWER6.js +0 -2
- package/dist/components/p-B9xVWER6.js.map +0 -1
- package/dist/components/p-BLea0TrP.js +0 -2
- package/dist/components/p-BLea0TrP.js.map +0 -1
- package/dist/components/p-BY0PzkUp.js +0 -2
- package/dist/components/p-BbgPGF2a.js +0 -2
- package/dist/components/p-BbgPGF2a.js.map +0 -1
- package/dist/components/p-BhC1YyId.js +0 -2
- package/dist/components/p-BhC1YyId.js.map +0 -1
- package/dist/components/p-BkAMkjIR.js +0 -2
- package/dist/components/p-C2ym_Ich.js +0 -2
- package/dist/components/p-C_ewSXTT.js +0 -2
- package/dist/components/p-C_ewSXTT.js.map +0 -1
- package/dist/components/p-CiqnkENu.js +0 -2
- package/dist/components/p-CiqnkENu.js.map +0 -1
- package/dist/components/p-Cx-ywr1e.js +0 -2
- package/dist/components/p-Cx-ywr1e.js.map +0 -1
- package/dist/components/p-CydY-v7X.js +0 -2
- package/dist/components/p-CydY-v7X.js.map +0 -1
- package/dist/components/p-DPME1wUJ.js +0 -2
- package/dist/components/p-DPME1wUJ.js.map +0 -1
- package/dist/components/p-DSa0Hnd3.js +0 -2
- package/dist/components/p-DSa0Hnd3.js.map +0 -1
- package/dist/components/p-DUlqUNbE.js +0 -2
- package/dist/components/p-DUlqUNbE.js.map +0 -1
- package/dist/components/p-DWdRSOBV.js +0 -2
- package/dist/components/p-DWdRSOBV.js.map +0 -1
- package/dist/components/p-DYcC5-R9.js +0 -2
- package/dist/components/p-DYcC5-R9.js.map +0 -1
- package/dist/components/p-DbpfpeQT.js +0 -2
- package/dist/components/p-DbpfpeQT.js.map +0 -1
- package/dist/components/p-Dg3xLna0.js +0 -2
- package/dist/components/p-Dg3xLna0.js.map +0 -1
- package/dist/components/p-DuFm-ieS.js +0 -2
- package/dist/components/p-DuFm-ieS.js.map +0 -1
- package/dist/components/p-uQhuDEVt.js +0 -2
- package/dist/components/p-uQhuDEVt.js.map +0 -1
- package/dist/lib/utils/anchored-popup.d.ts +0 -23
- package/dist/types/components/Tooltip/tooltip-position.d.ts +0 -21
- package/dist/types/utils/anchored-popup.d.ts +0 -24
- /package/dist/components/{p-Ccj5Op6E.js.map → p-38PfdMkF.js.map} +0 -0
- /package/dist/components/{p-CaRyxTMz.js.map → p-BFRMwl93.js.map} +0 -0
- /package/dist/components/{p-C7bZ-jiU.js.map → p-BO5aqZcf.js.map} +0 -0
- /package/dist/components/{p-DXLWm4PF.js.map → p-CNgPwd11.js.map} +0 -0
- /package/dist/components/{p-BwGnhInj.js.map → p-CPwpgUWT.js.map} +0 -0
- /package/dist/components/{p-B9bxDfZV.js.map → p-CsX3ICz7.js.map} +0 -0
- /package/dist/components/{p-D-xttdpn.js.map → p-D0e77tkd.js.map} +0 -0
- /package/dist/components/{p-BwsGYxZx.js.map → p-D9u1_OEZ.js.map} +0 -0
- /package/dist/components/{p-DQDpDYyF.js.map → p-DB9XJm2c.js.map} +0 -0
- /package/dist/components/{p-CnHrJTD5.js.map → p-DIFUsoM-.js.map} +0 -0
- /package/dist/components/{p-CWTih3Gc.js.map → p-DmAHufd5.js.map} +0 -0
- /package/dist/components/{p-DqubRds2.js.map → p-G3qIxpQj.js.map} +0 -0
- /package/dist/components/{p-DwX7UmLl.js.map → p-Utr23NC-.js.map} +0 -0
- /package/dist/components/{p-DIoiApa-.js.map → p-Vdufoj7G.js.map} +0 -0
- /package/dist/components/{p-C2ym_Ich.js.map → p-yhj1lIPx.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["selectMultiCss","ICON_SIZE","md","sm","xs","selectMultiId","POSITION_RETRY_BUDGET","SelectMulti","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","options","sections","values","open","disabled","required","requiredMessage","DEFAULT_REQUIRED_MESSAGE","placeholder","size","width","isInactive","isLoading","activeFill","hasBorder","allowClear","clearLabel","selectedLabel","searchable","searchPlaceholder","noResultsText","loadingLabel","error","ariaLabel","activeIndex","searchTerm","formDisabled","position","x","y","positionReady","focusRingVisible","generatedId","listboxId","errorId","triggerEl","popupEl","searchEl","initialValues","typeahead","typeaheadTimer","outsideHandler","repositionHandler","positionRetryRaf","clearSelection","event","preventDefault","stopPropagation","dsChange","emit","dsClear","requestAnimationFrame","focus","handleTriggerKeyDown","includes","key","openPopup","length","metaKey","ctrlKey","altKey","handleTypeahead","handleListKeyDown","componentWillLoad","syncFormValue","componentDidLoad","onOpenChange","disconnectedCallback","cancelPositionRetry","unbindPopupListeners","clearTimeout","resolvedValues","isDisabled","name","internals","setFormValue","data","FormData","forEach","value","append","JSON","stringify","missing","setRequiredValidity","enabled","enabledChoiceIndexes","visibleOptions","updatePosition","onLoadingChange","dsOpenChange","bindPopupListeners","schedulePositionUpdate","scrollActiveOptionIntoView","onSearchTermChange","onActiveIndexChange","formDisabledCallback","formResetCallback","closePopup","formStateRestoreCallback","state","restored","parse","Array","isArray","filter","setFocus","allSections","resolveChoiceSections","allOptions","flattenChoiceSections","visibleSections","filterChoiceSections","valid","Set","map","option","has","hasSelection","activeOptionId","undefined","el","querySelector","scrollIntoView","block","inline","contains","target","document","addEventListener","window","removeEventListener","cancelAnimationFrame","onReady","remaining","attempt","isConnected","sectionPadding","resolveCssLengthPx","TOKEN_DEFAULTS","space050","style","minWidth","choicePopupMinWidth","offsetWidth","computeAnchoredPopupPosition","anchorRect","getBoundingClientRect","popupWidth","popupHeight","offsetHeight","side","align","sideOffsetPx","alignOffsetPx","resolveChoicePopupAlignOffset","sectionInsetPx","viewportPadPx","viewportWidth","innerWidth","viewportHeight","innerHeight","focusVisible","edge","restoreFocus","toggleOption","current","next","normalized","toLocaleLowerCase","repeatedCharacter","every","character","match","findChoiceTypeaheadMatch","resetMs","resolveCssTimeMs","animationDurationMedium1","setTimeout","moveChoiceIndex","renderOption","index","usesSubtext","selected","active","h","ChoiceOptionRow","id","leading","class","label","checked","presentation","onHover","onSelect","render","inactive","count","textVariant","CONTROL_TEXT_VARIANT","iconSize","usesOptionSubtext","choiceListUsesSubtext","showError","Boolean","errorMessage","describedBy","ariaDescribedby","join","popupStyle","left","top","transform","Math","round","zIndex","visibility","flatIndex","Host","controlWidthClass","background","ref","element","inputId","type","trigger","choiceBackgroundClassMap","role","String","ariaLabelledby","onClick","onKeyDown","icon","color","as","variant","lineTruncation","ChoiceSearch","controls","activeDescendant","inputRef","onValueChange","body","section","divider","header","emphasis","ChoiceFooter","summary","onClear","textId"],"sources":["src/wc/components/SelectMulti/SelectMulti.css?tag=ds-select-multi&encapsulation=scoped","src/wc/components/SelectMulti/SelectMulti.tsx"],"sourcesContent":["@import '../Select/Select.css';\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n controlWidthClass,\n CONTROL_TEXT_VARIANT,\n choicePopupMinWidth,\n resolveCssLengthPx,\n resolveCssTimeMs,\n resolveChoicePopupAlignOffset,\n TOKEN_DEFAULTS,\n DEFAULT_REQUIRED_MESSAGE,\n setRequiredValidity,\n type ControlWidth,\n} from '../../utils';\nimport { computeAnchoredPopupPosition } from '../../utils/anchored-popup';\nimport { ChoiceFooter, ChoiceOptionRow, ChoiceSearch } from '../../utils/choice-list-parts';\nimport {\n choiceBackgroundClassMap,\n choiceListUsesSubtext,\n enabledChoiceIndexes,\n filterChoiceSections,\n findChoiceTypeaheadMatch,\n flattenChoiceSections,\n moveChoiceIndex,\n resolveChoiceSections,\n} from '../../utils/choice-list';\nimport type {\n SelectBackground,\n SelectOption,\n SelectSection,\n SelectSize,\n} from '../Select/Select';\n\nexport type SelectMultiOption = Omit<SelectOption, 'icon'>;\nexport type SelectMultiSection = Omit<SelectSection, 'options'> & {\n options: SelectMultiOption[];\n};\nexport type SelectMultiBackground = SelectBackground;\nexport type SelectMultiSize = SelectSize;\nexport type SelectMultiWidth = ControlWidth;\n\nconst ICON_SIZE: Record<SelectMultiSize, 'md' | 'sm' | 'xs'> = {\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\nlet selectMultiId = 0;\n/** rAF retries while the conditionally rendered popup mounts. */\nconst POSITION_RETRY_BUDGET = 8;\n\n@Component({\n tag: 'ds-select-multi',\n styleUrl: 'SelectMulti.css',\n scoped: true,\n formAssociated: true,\n})\nexport class SelectMulti {\n @Element() el!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n /** Flat choices. Assign arrays through the JavaScript property. */\n @Prop() options: SelectMultiOption[] = [];\n /** Grouped choices; takes precedence over options. Assign through JavaScript. */\n @Prop() sections: SelectMultiSection[] = [];\n /** Selected values. Assign arrays through the JavaScript property. */\n @Prop({ mutable: true }) values: string[] = [];\n /** Controlled popup visibility. */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n /** Native form field name used for each repeated selected-value entry. */\n @Prop({ reflect: true }) name: string | undefined;\n /** Native disabled state. */\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Require at least one valid selected value. */\n @Prop({ reflect: true }) required: boolean = false;\n /** Validation message used when required is missing. */\n @Prop() requiredMessage: string = DEFAULT_REQUIRED_MESSAGE;\n /** Persistent trigger label; selected option labels never replace it. */\n @Prop() placeholder: string = 'Select';\n /** Control density. */\n @Prop() size: SelectMultiSize = 'md';\n /** Width fit — hug content (default) or fill the parent. */\n @Prop() width: SelectMultiWidth = 'hug';\n /** Shared inactive treatment; removes interaction and form submission. */\n @Prop() isInactive: boolean = false;\n /** Replace the prefix with a loader and disable option interaction. */\n @Prop() isLoading: boolean = false;\n /** Show the selected interaction fill when at least one value exists. */\n @Prop() activeFill: boolean = true;\n /** Show the surface-aware inset border. */\n @Prop() hasBorder: boolean = true;\n /** Optional trigger prefix icon name. */\n @Prop() icon: string | undefined;\n /** Show the clear-all footer action when values exist. */\n @Prop() allowClear: boolean = true;\n /** Localized clear-all action label. */\n @Prop() clearLabel: string = 'Clear';\n /** Localized noun displayed after the selected count. */\n @Prop() selectedLabel: string = 'selected';\n /** Show immediate local filtering over option labels, subtext, and section headings. */\n @Prop() searchable: boolean = false;\n /** Localized search-field placeholder and accessible name. */\n @Prop() searchPlaceholder: string = 'Search';\n /** Localized empty-filter result text. */\n @Prop() noResultsText: string = 'No results found';\n /** Accessible loading status label. */\n @Prop() loadingLabel: string = 'Loading';\n /** Actual parent surface context; omit on primary and secondary surfaces. */\n @Prop() background: SelectMultiBackground | undefined;\n /** Show invalid visual state. */\n @Prop() error: boolean = false;\n /** Error text rendered below the trigger when error is true. */\n @Prop() errorMessage: string | undefined;\n /** ID applied to the internal combobox trigger for external labels. */\n @Prop() inputId: string | undefined;\n /** Direct accessible name when no external label is available. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** IDs of elements that label the combobox. */\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined;\n /** Additional IDs that describe the combobox. */\n @Prop({ attribute: 'aria-describedby' }) ariaDescribedby: string | undefined;\n\n /** Emitted after user toggles or clearing with a new values array. */\n @Event() dsChange!: EventEmitter<string[]>;\n /** Emitted after the footer clear-all action. */\n @Event() dsClear!: EventEmitter<void>;\n /** Emitted whenever popup visibility changes. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n\n @State() private activeIndex = -1;\n @State() private searchTerm = '';\n @State() private formDisabled = false;\n @State() private position = { x: 0, y: 0 };\n @State() private positionReady = false;\n @State() private focusRingVisible = false;\n\n private readonly generatedId = `ds-select-multi-${++selectMultiId}`;\n private readonly listboxId = `${this.generatedId}-listbox`;\n private readonly errorId = `${this.generatedId}-error`;\n private triggerEl: HTMLButtonElement | null = null;\n private popupEl: HTMLDivElement | null = null;\n private searchEl: HTMLInputElement | null = null;\n private initialValues: string[] = [];\n private typeahead = '';\n private typeaheadTimer: ReturnType<typeof setTimeout> | null = null;\n private outsideHandler: ((event: MouseEvent) => void) | null = null;\n private repositionHandler: (() => void) | null = null;\n private positionRetryRaf: number | null = null;\n\n componentWillLoad() {\n this.initialValues = [...this.values];\n this.syncFormValue();\n }\n\n componentDidLoad() {\n if (this.open) this.onOpenChange(true);\n }\n\n disconnectedCallback() {\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n }\n\n @Watch('values')\n @Watch('disabled')\n @Watch('isInactive')\n @Watch('required')\n @Watch('name')\n @Watch('options')\n @Watch('sections')\n syncFormValue() {\n const resolvedValues = this.resolvedValues;\n if (this.isDisabled || !this.name || resolvedValues.length === 0) {\n this.internals.setFormValue(null);\n } else {\n const data = new FormData();\n resolvedValues.forEach(value => data.append(this.name as string, value));\n this.internals.setFormValue(data, JSON.stringify(resolvedValues));\n }\n const missing = this.required && !this.isDisabled && resolvedValues.length === 0;\n setRequiredValidity(this.internals, missing, this.requiredMessage);\n if (this.open) {\n const enabled = enabledChoiceIndexes(this.visibleOptions);\n if (!enabled.includes(this.activeIndex)) this.activeIndex = enabled[0] ?? -1;\n requestAnimationFrame(() => this.updatePosition());\n }\n }\n\n @Watch('isLoading')\n onLoadingChange() {\n if (this.open) requestAnimationFrame(() => this.updatePosition());\n }\n\n @Watch('open')\n onOpenChange(open: boolean) {\n this.dsOpenChange.emit(open);\n if (open) {\n this.bindPopupListeners();\n this.schedulePositionUpdate(() => {\n this.scrollActiveOptionIntoView();\n if (this.searchable) this.searchEl?.focus();\n });\n } else {\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n this.searchTerm = '';\n this.positionReady = false;\n }\n }\n\n @Watch('searchTerm')\n onSearchTermChange() {\n this.activeIndex = enabledChoiceIndexes(this.visibleOptions)[0] ?? -1;\n requestAnimationFrame(() => {\n this.updatePosition();\n this.scrollActiveOptionIntoView();\n });\n }\n\n @Watch('activeIndex')\n onActiveIndexChange() {\n requestAnimationFrame(() => this.scrollActiveOptionIntoView());\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.values = [...this.initialValues];\n this.closePopup();\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n if (typeof state !== 'string') {\n this.values = [];\n return;\n }\n try {\n const restored = JSON.parse(state);\n this.values = Array.isArray(restored)\n ? restored.filter((value): value is string => typeof value === 'string')\n : [];\n } catch {\n this.values = [];\n }\n }\n\n @Method()\n async setFocus() {\n this.triggerEl?.focus();\n }\n\n private get isDisabled(): boolean {\n return this.disabled || this.isInactive || this.formDisabled;\n }\n\n private get allSections(): SelectMultiSection[] {\n return resolveChoiceSections(this.options, this.sections);\n }\n\n private get allOptions(): SelectMultiOption[] {\n return flattenChoiceSections(this.allSections);\n }\n\n private get visibleSections(): SelectMultiSection[] {\n return this.searchable\n ? filterChoiceSections(this.allSections, this.searchTerm)\n : this.allSections;\n }\n\n private get visibleOptions(): SelectMultiOption[] {\n return flattenChoiceSections(this.visibleSections);\n }\n\n private get resolvedValues(): string[] {\n const valid = new Set(this.allOptions.map(option => option.value));\n return [...new Set(this.values.filter(value => valid.has(value)))];\n }\n\n private get hasSelection(): boolean {\n return this.resolvedValues.length > 0;\n }\n\n private get activeOptionId(): string | undefined {\n return !this.isLoading && this.activeIndex >= 0\n ? `${this.generatedId}-option-${this.activeIndex}`\n : undefined;\n }\n\n private scrollActiveOptionIntoView() {\n if (!this.open || !this.activeOptionId) return;\n this.el\n .querySelector<HTMLElement>(`#${this.activeOptionId}`)\n ?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n\n private bindPopupListeners() {\n this.unbindPopupListeners();\n this.outsideHandler = event => {\n if (this.el.contains(event.target as Node)) return;\n this.closePopup();\n };\n this.repositionHandler = () => this.updatePosition();\n document.addEventListener('mousedown', this.outsideHandler, true);\n window.addEventListener('scroll', this.repositionHandler, true);\n window.addEventListener('resize', this.repositionHandler);\n }\n\n private unbindPopupListeners() {\n if (this.outsideHandler) {\n document.removeEventListener('mousedown', this.outsideHandler, true);\n this.outsideHandler = null;\n }\n if (this.repositionHandler) {\n window.removeEventListener('scroll', this.repositionHandler, true);\n window.removeEventListener('resize', this.repositionHandler);\n this.repositionHandler = null;\n }\n }\n\n private cancelPositionRetry() {\n if (this.positionRetryRaf !== null) {\n cancelAnimationFrame(this.positionRetryRaf);\n this.positionRetryRaf = null;\n }\n }\n\n /** Retry until the conditionally rendered popup is mounted and measurable. */\n private schedulePositionUpdate(onReady?: () => void) {\n if (!this.open) return;\n\n this.cancelPositionRetry();\n this.positionReady = false;\n let remaining = POSITION_RETRY_BUDGET;\n\n const attempt = () => {\n this.positionRetryRaf = null;\n if (!this.open) return;\n\n if (this.updatePosition()) {\n onReady?.();\n return;\n }\n\n if (remaining > 0) {\n remaining -= 1;\n this.positionRetryRaf = requestAnimationFrame(attempt);\n }\n };\n\n this.positionRetryRaf = requestAnimationFrame(attempt);\n }\n\n /** @returns `true` when the current popup was found and positioned. */\n private updatePosition(): boolean {\n if (\n !this.open ||\n !this.triggerEl ||\n !this.popupEl ||\n !this.popupEl.isConnected ||\n !this.el.contains(this.popupEl)\n ) return false;\n const sectionPadding = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n this.popupEl.style.minWidth = `${choicePopupMinWidth(this.triggerEl.offsetWidth, sectionPadding)}px`;\n this.position = computeAnchoredPopupPosition({\n anchorRect: this.triggerEl.getBoundingClientRect(),\n popupWidth: this.popupEl.offsetWidth,\n popupHeight: this.popupEl.offsetHeight,\n side: 'bottom',\n align: 'start',\n sideOffsetPx: sectionPadding,\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align: 'start',\n alignOffsetPx: 0,\n sectionInsetPx: sectionPadding,\n }),\n viewportPadPx: sectionPadding,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n });\n this.positionReady = true;\n return true;\n }\n\n private openPopup(focusVisible: boolean, edge?: 'first' | 'last') {\n if (this.isDisabled || (!this.allOptions.length && !this.isLoading)) return;\n const enabled = enabledChoiceIndexes(this.visibleOptions);\n this.activeIndex =\n edge === 'last'\n ? (enabled[enabled.length - 1] ?? -1)\n : (enabled[0] ?? -1);\n this.focusRingVisible = focusVisible;\n this.open = true;\n }\n\n private closePopup(restoreFocus = false) {\n if (!this.open) return;\n this.open = false;\n if (restoreFocus) requestAnimationFrame(() => this.triggerEl?.focus());\n }\n\n private toggleOption(option: SelectMultiOption) {\n if (option.isInactive || this.isLoading) return;\n const current = this.resolvedValues;\n const next = current.includes(option.value)\n ? current.filter(value => value !== option.value)\n : [...current, option.value];\n this.values = next;\n this.dsChange.emit([...next]);\n }\n\n private clearSelection = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.values = [];\n this.dsChange.emit([]);\n this.dsClear.emit();\n requestAnimationFrame(() => (this.searchable ? this.searchEl?.focus() : this.triggerEl?.focus()));\n };\n\n private handleTypeahead(key: string) {\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n this.focusRingVisible = true;\n const normalized = key.toLocaleLowerCase();\n const repeatedCharacter =\n this.typeahead.length > 0 &&\n [...this.typeahead].every(character => character === normalized);\n this.typeahead = repeatedCharacter ? normalized : `${this.typeahead}${normalized}`;\n const match = findChoiceTypeaheadMatch(this.visibleOptions, this.typeahead, this.activeIndex);\n if (match >= 0) this.activeIndex = match;\n const resetMs = resolveCssTimeMs(\n TOKEN_DEFAULTS.animationDurationMedium1,\n TOKEN_DEFAULTS.animationDurationMedium1,\n );\n this.typeaheadTimer = setTimeout(() => {\n this.typeahead = '';\n this.typeaheadTimer = null;\n }, resetMs);\n }\n\n private handleListKeyDown(event: KeyboardEvent) {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.focusRingVisible = true;\n this.activeIndex = moveChoiceIndex(this.visibleOptions, this.activeIndex, 1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.focusRingVisible = true;\n this.activeIndex = moveChoiceIndex(this.visibleOptions, this.activeIndex, -1);\n break;\n case 'Home':\n event.preventDefault();\n this.focusRingVisible = true;\n this.activeIndex = enabledChoiceIndexes(this.visibleOptions)[0] ?? -1;\n break;\n case 'End': {\n event.preventDefault();\n this.focusRingVisible = true;\n const enabled = enabledChoiceIndexes(this.visibleOptions);\n this.activeIndex = enabled[enabled.length - 1] ?? -1;\n break;\n }\n case 'Enter':\n case ' ': {\n if (event.key === ' ' && this.searchable && event.target === this.searchEl) break;\n event.preventDefault();\n const option = this.visibleOptions[this.activeIndex];\n if (option) this.toggleOption(option);\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.closePopup(true);\n break;\n case 'Tab':\n this.closePopup();\n break;\n default:\n if (!this.searchable && event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey) {\n this.handleTypeahead(event.key);\n }\n }\n }\n\n private handleTriggerKeyDown = (event: KeyboardEvent) => {\n if (!this.open) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n this.openPopup(true, event.key === 'ArrowUp' ? 'last' : 'first');\n } else if (event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey) {\n event.preventDefault();\n this.openPopup(true);\n if (this.searchable) this.searchTerm = event.key;\n else this.handleTypeahead(event.key);\n }\n return;\n }\n this.handleListKeyDown(event);\n };\n\n private renderOption(option: SelectMultiOption, index: number, usesSubtext: boolean) {\n const selected = this.values.includes(option.value);\n const active = this.activeIndex === index;\n return (\n <ChoiceOptionRow\n id={`${this.generatedId}-option-${index}`}\n option={option}\n selected={selected}\n active={active}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={usesSubtext}\n leading={(\n <span class=\"ds-choice-item__icon ds-interaction-fill__content\" aria-hidden=\"true\">\n <ds-checkbox\n class=\"select-option__checkbox\"\n label=\"\"\n size=\"md\"\n checked={selected}\n presentation\n />\n </span>\n )}\n onHover={() => {\n this.focusRingVisible = false;\n this.activeIndex = index;\n }}\n onSelect={() => this.toggleOption(option)}\n />\n );\n }\n\n render() {\n const inactive = this.isDisabled;\n const count = this.resolvedValues.length;\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n const usesOptionSubtext = choiceListUsesSubtext(this.allOptions);\n const showError = this.error && Boolean(this.errorMessage);\n const describedBy = [this.ariaDescribedby, showError ? this.errorId : undefined]\n .filter(Boolean)\n .join(' ') || undefined;\n const popupStyle = {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: `translate(${Math.round(this.position.x)}px, ${Math.round(this.position.y)}px)`,\n zIndex: 'var(--dimension-z-index-floating)',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n let flatIndex = 0;\n\n return (\n <Host\n class={{\n 'select-host': true,\n 'ds-control-inactive': inactive,\n 'ds-control--md': this.size === 'md',\n 'ds-control--sm': this.size === 'sm',\n 'ds-control--xs': this.size === 'xs',\n ...controlWidthClass(this.width),\n [`select-host--background-${this.background}`]: !!this.background,\n }}\n >\n <button\n ref={element => {\n this.triggerEl = (element as HTMLButtonElement) ?? null;\n }}\n id={this.inputId ?? this.generatedId}\n type=\"button\"\n class={{\n trigger: true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected':\n !inactive && this.activeFill && this.hasSelection,\n 'trigger--bordered': this.hasBorder || this.error,\n 'trigger--has-value': this.hasSelection,\n 'wrapper--error': this.error,\n [`ds-control--${this.size}`]: true,\n ...choiceBackgroundClassMap(this.background),\n }}\n disabled={inactive}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={String(this.open)}\n aria-controls={this.open ? this.listboxId : undefined}\n aria-activedescendant={this.open && !this.searchable ? this.activeOptionId : undefined}\n aria-label={this.ariaLabel}\n aria-labelledby={this.ariaLabelledby}\n aria-describedby={describedBy}\n aria-invalid={this.error ? 'true' : undefined}\n aria-required={this.required || undefined}\n aria-busy={this.isLoading ? 'true' : undefined}\n onClick={() => (this.open ? this.closePopup() : this.openPopup(false))}\n onKeyDown={this.handleTriggerKeyDown}\n >\n {(this.icon || this.isLoading) && (\n <span class=\"trigger__prefix ds-interaction-fill__content\" aria-hidden=\"true\">\n {this.isLoading ? (\n <ds-loader size={iconSize} color=\"inherit\" />\n ) : (\n <ds-icon name={this.icon} size={iconSize} color=\"inherit\" />\n )}\n </span>\n )}\n <ds-text\n class=\"trigger__label ds-interaction-fill__content\"\n as=\"span\"\n variant={textVariant}\n color=\"inherit\"\n lineTruncation={1}\n >\n {`${this.placeholder}${count > 0 ? ` · ${count}` : ''}`}\n </ds-text>\n <span class=\"trigger__chevron ds-interaction-fill__content\" aria-hidden=\"true\">\n <ds-icon name=\"ChevronDown\" size={iconSize} color=\"inherit\" />\n </span>\n </button>\n\n {this.open && (\n <div\n ref={element => {\n this.popupEl = (element as HTMLDivElement) ?? null;\n }}\n class=\"select-popup ds-choice-popup\"\n style={popupStyle}\n >\n {this.searchable && (\n <ChoiceSearch\n value={this.searchTerm}\n placeholder={this.searchPlaceholder}\n controls={this.listboxId}\n activeDescendant={this.activeOptionId}\n inputRef={element => {\n this.searchEl = element;\n }}\n clearLabel={this.clearLabel}\n onValueChange={value => {\n this.searchTerm = value;\n }}\n onKeyDown={event => this.handleListKeyDown(event)}\n />\n )}\n <div\n id={this.listboxId}\n class=\"ds-choice-list\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n aria-label={this.ariaLabel ?? this.placeholder}\n aria-busy={this.isLoading ? 'true' : undefined}\n >\n {this.isLoading ? (\n <div\n class=\"ds-choice-loading\"\n role=\"option\"\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.loadingLabel}\n aria-live=\"polite\"\n >\n <ds-loader size=\"md\" color=\"inherit\" />\n </div>\n ) : this.visibleOptions.length === 0 ? (\n <div\n class=\"ds-choice-empty\"\n role=\"option\"\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.noResultsText}\n aria-live=\"polite\"\n >\n <ds-empty-state body={this.noResultsText} />\n </div>\n ) : (\n this.visibleSections.map(section => (\n <div\n class={{\n 'ds-choice-section': true,\n 'ds-choice-section--divided': !!section.divider,\n }}\n role={section.header ? 'group' : undefined}\n aria-label={section.header}\n >\n {section.header && (\n <ds-text\n class=\"ds-choice-section__header ds-control--md\"\n as=\"span\"\n variant=\"text-body-small\"\n emphasis\n color=\"primary\"\n aria-hidden=\"true\"\n >\n {section.header}\n </ds-text>\n )}\n {section.options.map(option => this.renderOption(\n option,\n flatIndex++,\n usesOptionSubtext,\n ))}\n </div>\n ))\n )}\n </div>\n {this.allowClear && this.hasSelection && !this.isLoading && (\n <ChoiceFooter\n summary={`${count} ${this.selectedLabel}`}\n clearLabel={this.clearLabel}\n onClear={this.clearSelection}\n />\n )}\n </div>\n )}\n\n {showError && (\n <ds-text\n class=\"error-text\"\n as=\"div\"\n variant=\"text-body-small\"\n color=\"negative\"\n textId={this.errorId}\n role=\"alert\"\n >\n {this.errorMessage}\n </ds-text>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["selectMultiCss","ICON_SIZE","lg","md","sm","xs","selectMultiId","SelectMulti","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","options","sections","values","open","disabled","required","requiredMessage","DEFAULT_REQUIRED_MESSAGE","placeholder","size","width","isInactive","isLoading","activeFill","hasBorder","allowClear","clearLabel","selectedLabel","searchable","searchPlaceholder","noResultsText","loadingLabel","error","ariaLabel","activeIndex","searchTerm","formDisabled","position","x","y","positionReady","focusRingVisible","generatedId","listboxId","errorId","initialValues","controller","createController","clearSelection","event","preventDefault","stopPropagation","dsChange","emit","dsClear","focusSearchOrTrigger","handleListKeyDown","handleTriggerKeyDown","owner","SelectController","host","el","visibleOptions","isDisabled","preferredIndex","value","selectOption","option","toggleOption","componentWillLoad","syncFormValue","componentDidLoad","connect","disconnectedCallback","disconnect","resolvedValues","name","length","internals","setFormValue","data","FormData","forEach","append","JSON","stringify","missing","setRequiredValidity","optionsChanged","onLoadingChange","loadingChanged","onOpenChange","dsOpenChange","openChanged","onSearchTermChange","searchChanged","onActiveIndexChange","activeIndexChanged","formDisabledCallback","formResetCallback","closePopup","formStateRestoreCallback","state","restored","parse","Array","isArray","filter","setFocus","allSections","resolveChoiceSections","allOptions","flattenChoiceSections","visibleSections","filterChoiceSections","valid","Set","map","has","hasSelection","activeOptionId","restoreFocus","openPopup","focusVisible","edge","current","next","includes","renderOption","index","usesSubtext","selected","active","h","ChoiceOptionRow","id","leading","class","label","checked","presentation","onHover","onSelect","render","inactive","count","textVariant","CONTROL_TEXT_VARIANT","iconSize","usesOptionSubtext","choiceListUsesSubtext","showError","Boolean","errorMessage","describedBy","ariaDescribedby","undefined","join","popupStyle","left","top","transform","Math","round","zIndex","visibility","flatIndex","Host","key","controlWidthClass","background","ref","element","setTriggerElement","inputId","type","trigger","choiceBackgroundClassMap","role","String","ariaLabelledby","onClick","onKeyDown","icon","color","as","variant","lineTruncation","setPopupElement","style","ChoiceSearch","controls","activeDescendant","inputRef","setSearchElement","onValueChange","body","section","divider","header","CONTROL_SUPPORTING_TEXT_VARIANT","emphasis","ChoiceFooter","summary","onClear","textId"],"sources":["src/wc/components/SelectMulti/SelectMulti.css?tag=ds-select-multi&encapsulation=scoped","src/wc/components/SelectMulti/SelectMulti.tsx"],"sourcesContent":["@import '../Select/Select.css';\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n controlWidthClass,\n CONTROL_SUPPORTING_TEXT_VARIANT,\n CONTROL_TEXT_VARIANT,\n DEFAULT_REQUIRED_MESSAGE,\n setRequiredValidity,\n type ControlWidth,\n} from '../../utils';\nimport { ChoiceFooter, ChoiceOptionRow, ChoiceSearch } from '../../utils/choice-list-parts';\nimport {\n choiceBackgroundClassMap,\n choiceListUsesSubtext,\n filterChoiceSections,\n flattenChoiceSections,\n resolveChoiceSections,\n} from '../../utils/choice-list';\nimport { SelectController } from '../../utils/select-controller';\nimport type {\n SelectBackground,\n SelectOption,\n SelectSection,\n SelectSize,\n} from '../Select/Select';\n\nexport type SelectMultiOption = Omit<SelectOption, 'icon'>;\nexport type SelectMultiSection = Omit<SelectSection, 'options'> & {\n options: SelectMultiOption[];\n};\nexport type SelectMultiBackground = SelectBackground;\nexport type SelectMultiSize = SelectSize;\nexport type SelectMultiWidth = ControlWidth;\n\nconst ICON_SIZE: Record<SelectMultiSize, 'lg' | 'md' | 'sm' | 'xs'> = {\n lg: 'lg',\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\nlet selectMultiId = 0;\n\n@Component({\n tag: 'ds-select-multi',\n styleUrl: 'SelectMulti.css',\n scoped: true,\n formAssociated: true,\n})\nexport class SelectMulti {\n @Element() el!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n /** Flat choices. Assign arrays through the JavaScript property. */\n @Prop() options: SelectMultiOption[] = [];\n /** Grouped choices; takes precedence over options. Assign through JavaScript. */\n @Prop() sections: SelectMultiSection[] = [];\n /** Selected values. Assign arrays through the JavaScript property. */\n @Prop({ mutable: true }) values: string[] = [];\n /** Controlled popup visibility. */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n /** Native form field name used for each repeated selected-value entry. */\n @Prop({ reflect: true }) name: string | undefined;\n /** Native disabled state. */\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Require at least one valid selected value. */\n @Prop({ reflect: true }) required: boolean = false;\n /** Validation message used when required is missing. */\n @Prop() requiredMessage: string = DEFAULT_REQUIRED_MESSAGE;\n /** Persistent trigger label; selected option labels never replace it. */\n @Prop() placeholder: string = 'Select';\n /** Control density. */\n @Prop() size: SelectMultiSize = 'md';\n /** Width fit — hug content (default) or fill the parent. */\n @Prop() width: SelectMultiWidth = 'hug';\n /** Shared inactive treatment; removes interaction and form submission. */\n @Prop() isInactive: boolean = false;\n /** Replace the prefix with a loader and disable option interaction. */\n @Prop() isLoading: boolean = false;\n /** Show the selected interaction fill when at least one value exists. */\n @Prop() activeFill: boolean = true;\n /** Show the surface-aware inset border. */\n @Prop() hasBorder: boolean = true;\n /** Optional trigger prefix icon name. */\n @Prop() icon: string | undefined;\n /** Show the clear-all footer action when values exist. */\n @Prop() allowClear: boolean = true;\n /** Localized clear-all action label. */\n @Prop() clearLabel: string = 'Clear';\n /** Localized noun displayed after the selected count. */\n @Prop() selectedLabel: string = 'selected';\n /** Show immediate local filtering over option labels, subtext, and section headings. */\n @Prop() searchable: boolean = false;\n /** Localized search-field placeholder and accessible name. */\n @Prop() searchPlaceholder: string = 'Search';\n /** Localized empty-filter result text. */\n @Prop() noResultsText: string = 'No results found';\n /** Accessible loading status label. */\n @Prop() loadingLabel: string = 'Loading';\n /** Actual parent surface context; omit on primary and secondary surfaces. */\n @Prop() background: SelectMultiBackground | undefined;\n /** Show invalid visual state. */\n @Prop() error: boolean = false;\n /** Error text rendered below the trigger when error is true. */\n @Prop() errorMessage: string | undefined;\n /** ID applied to the internal combobox trigger for external labels. */\n @Prop() inputId: string | undefined;\n /** Direct accessible name when no external label is available. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** IDs of elements that label the combobox. */\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined;\n /** Additional IDs that describe the combobox. */\n @Prop({ attribute: 'aria-describedby' }) ariaDescribedby: string | undefined;\n\n /** Emitted after user toggles or clearing with a new values array. */\n @Event() dsChange!: EventEmitter<string[]>;\n /** Emitted after the footer clear-all action. */\n @Event() dsClear!: EventEmitter<void>;\n /** Emitted whenever popup visibility changes. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n\n @State() private activeIndex = -1;\n @State() private searchTerm = '';\n @State() private formDisabled = false;\n @State() private position = { x: 0, y: 0 };\n @State() private positionReady = false;\n @State() private focusRingVisible = false;\n\n private readonly generatedId = `ds-select-multi-${++selectMultiId}`;\n private readonly listboxId = `${this.generatedId}-listbox`;\n private readonly errorId = `${this.generatedId}-error`;\n private initialValues: string[] = [];\n private readonly controller = this.createController();\n\n private createController() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- adapter getters preserve reactive component ownership without inheritance.\n const owner = this;\n return new SelectController<SelectMultiOption>({\n get host() { return owner.el; },\n generatedId: owner.generatedId,\n get options() { return owner.visibleOptions; },\n get searchable() { return owner.searchable; },\n get isLoading() { return owner.isLoading; },\n get isDisabled() { return owner.isDisabled; },\n get preferredIndex() { return -1; },\n get open() { return owner.open; },\n set open(value) { owner.open = value; },\n get activeIndex() { return owner.activeIndex; },\n set activeIndex(value) { owner.activeIndex = value; },\n get searchTerm() { return owner.searchTerm; },\n set searchTerm(value) { owner.searchTerm = value; },\n get focusRingVisible() { return owner.focusRingVisible; },\n set focusRingVisible(value) { owner.focusRingVisible = value; },\n get position() { return owner.position; },\n set position(value) { owner.position = value; },\n get positionReady() { return owner.positionReady; },\n set positionReady(value) { owner.positionReady = value; },\n selectOption: option => owner.toggleOption(option),\n });\n }\n\n componentWillLoad() {\n this.initialValues = [...this.values];\n this.syncFormValue();\n }\n\n componentDidLoad() {\n this.controller.connect();\n }\n\n disconnectedCallback() {\n this.controller.disconnect();\n }\n\n @Watch('values')\n @Watch('disabled')\n @Watch('isInactive')\n @Watch('required')\n @Watch('name')\n @Watch('options')\n @Watch('sections')\n syncFormValue() {\n const resolvedValues = this.resolvedValues;\n if (this.isDisabled || !this.name || resolvedValues.length === 0) {\n this.internals.setFormValue(null);\n } else {\n const data = new FormData();\n resolvedValues.forEach(value => data.append(this.name as string, value));\n this.internals.setFormValue(data, JSON.stringify(resolvedValues));\n }\n const missing = this.required && !this.isDisabled && resolvedValues.length === 0;\n setRequiredValidity(this.internals, missing, this.requiredMessage);\n this.controller.optionsChanged();\n }\n\n @Watch('isLoading')\n onLoadingChange() {\n this.controller.loadingChanged();\n }\n\n @Watch('open')\n onOpenChange(open: boolean) {\n this.dsOpenChange.emit(open);\n this.controller.openChanged(open);\n }\n\n @Watch('searchTerm')\n onSearchTermChange() {\n this.controller.searchChanged();\n }\n\n @Watch('activeIndex')\n onActiveIndexChange() {\n this.controller.activeIndexChanged();\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.values = [...this.initialValues];\n this.closePopup();\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n if (typeof state !== 'string') {\n this.values = [];\n return;\n }\n try {\n const restored = JSON.parse(state);\n this.values = Array.isArray(restored)\n ? restored.filter((value): value is string => typeof value === 'string')\n : [];\n } catch {\n this.values = [];\n }\n }\n\n @Method()\n async setFocus() {\n this.controller.setFocus();\n }\n\n private get isDisabled(): boolean {\n return this.disabled || this.isInactive || this.formDisabled;\n }\n\n private get allSections(): SelectMultiSection[] {\n return resolveChoiceSections(this.options, this.sections);\n }\n\n private get allOptions(): SelectMultiOption[] {\n return flattenChoiceSections(this.allSections);\n }\n\n private get visibleSections(): SelectMultiSection[] {\n return this.searchable\n ? filterChoiceSections(this.allSections, this.searchTerm)\n : this.allSections;\n }\n\n private get visibleOptions(): SelectMultiOption[] {\n return flattenChoiceSections(this.visibleSections);\n }\n\n private get resolvedValues(): string[] {\n const valid = new Set(this.allOptions.map(option => option.value));\n return [...new Set(this.values.filter(value => valid.has(value)))];\n }\n\n private get hasSelection(): boolean {\n return this.resolvedValues.length > 0;\n }\n\n private get activeOptionId(): string | undefined {\n return this.controller.activeOptionId;\n }\n\n private closePopup(restoreFocus = false) {\n this.controller.closePopup(restoreFocus);\n }\n\n private openPopup(focusVisible: boolean, edge?: 'first' | 'last') {\n this.controller.openPopup(focusVisible, edge);\n }\n\n private toggleOption(option: SelectMultiOption) {\n if (option.isInactive || this.isLoading) return;\n const current = this.resolvedValues;\n const next = current.includes(option.value)\n ? current.filter(value => value !== option.value)\n : [...current, option.value];\n this.values = next;\n this.dsChange.emit([...next]);\n }\n\n private clearSelection = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.values = [];\n this.dsChange.emit([]);\n this.dsClear.emit();\n this.controller.focusSearchOrTrigger();\n };\n\n private readonly handleListKeyDown = this.controller.handleListKeyDown;\n private readonly handleTriggerKeyDown = this.controller.handleTriggerKeyDown;\n\n private renderOption(option: SelectMultiOption, index: number, usesSubtext: boolean) {\n const selected = this.values.includes(option.value);\n const active = this.activeIndex === index;\n return (\n <ChoiceOptionRow\n size={this.size}\n id={`${this.generatedId}-option-${index}`}\n option={option}\n selected={selected}\n active={active}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={usesSubtext}\n leading={(\n <span class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\" aria-hidden=\"true\">\n <ds-checkbox\n class=\"select-option__checkbox\"\n label=\"\"\n size={this.size}\n checked={selected}\n presentation\n />\n </span>\n )}\n onHover={() => {\n this.focusRingVisible = false;\n this.activeIndex = index;\n }}\n onSelect={() => this.toggleOption(option)}\n />\n );\n }\n\n render() {\n const inactive = this.isDisabled;\n const count = this.resolvedValues.length;\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n const usesOptionSubtext = choiceListUsesSubtext(this.allOptions);\n const showError = this.error && Boolean(this.errorMessage);\n const describedBy = [this.ariaDescribedby, showError ? this.errorId : undefined]\n .filter(Boolean)\n .join(' ') || undefined;\n const popupStyle = {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: `translate(${Math.round(this.position.x)}px, ${Math.round(this.position.y)}px)`,\n zIndex: 'var(--dimension-z-index-floating)',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n let flatIndex = 0;\n\n return (\n <Host\n class={{\n 'select-host': true,\n 'ds-field-stack': true,\n 'ds-control-inactive': inactive,\n [`ds-control--${this.size}`]: true,\n ...controlWidthClass(this.width),\n [`select-host--background-${this.background}`]: !!this.background,\n }}\n >\n <button\n ref={element => {\n this.controller.setTriggerElement((element as HTMLButtonElement) ?? null);\n }}\n id={this.inputId ?? this.generatedId}\n type=\"button\"\n class={{\n trigger: true,\n 'ds-control-frame': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected':\n !inactive && this.activeFill && this.hasSelection,\n 'trigger--bordered': this.hasBorder || this.error,\n 'trigger--has-value': this.hasSelection,\n 'wrapper--error': this.error,\n [`ds-control--${this.size}`]: true,\n ...choiceBackgroundClassMap(this.background),\n }}\n disabled={inactive}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={String(this.open)}\n aria-controls={this.open ? this.listboxId : undefined}\n aria-activedescendant={this.open && !this.searchable ? this.activeOptionId : undefined}\n aria-label={this.ariaLabel}\n aria-labelledby={this.ariaLabelledby}\n aria-describedby={describedBy}\n aria-invalid={this.error ? 'true' : undefined}\n aria-required={this.required || undefined}\n aria-busy={this.isLoading ? 'true' : undefined}\n onClick={() => (this.open ? this.closePopup() : this.openPopup(false))}\n onKeyDown={this.handleTriggerKeyDown}\n >\n {(this.icon || this.isLoading) && (\n <span class=\"trigger__prefix ds-control-icon-box ds-interaction-fill__content\" aria-hidden=\"true\">\n {this.isLoading ? (\n <ds-loader size={iconSize} color=\"inherit\" />\n ) : (\n <ds-icon name={this.icon} size={iconSize} color=\"inherit\" />\n )}\n </span>\n )}\n <ds-text\n class=\"trigger__label ds-control-label-box ds-interaction-fill__content\"\n as=\"span\"\n variant={textVariant}\n color=\"inherit\"\n lineTruncation={1}\n >\n {`${this.placeholder}${count > 0 ? ` · ${count}` : ''}`}\n </ds-text>\n <span class=\"trigger__chevron ds-control-icon-box ds-interaction-fill__content\" aria-hidden=\"true\">\n <ds-icon name=\"ChevronDown\" size={iconSize} color=\"inherit\" />\n </span>\n </button>\n\n {this.open && (\n <div\n ref={element => {\n this.controller.setPopupElement((element as HTMLDivElement) ?? null);\n }}\n class=\"select-popup ds-choice-popup\"\n style={popupStyle}\n >\n {this.searchable && (\n <ChoiceSearch\n size={this.size}\n value={this.searchTerm}\n placeholder={this.searchPlaceholder}\n controls={this.listboxId}\n activeDescendant={this.activeOptionId}\n inputRef={this.controller.setSearchElement}\n clearLabel={this.clearLabel}\n onValueChange={value => {\n this.searchTerm = value;\n }}\n onKeyDown={event => this.handleListKeyDown(event)}\n />\n )}\n <div\n id={this.listboxId}\n class=\"ds-choice-list\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n aria-label={this.ariaLabel ?? this.placeholder}\n aria-busy={this.isLoading ? 'true' : undefined}\n >\n {this.isLoading ? (\n <div\n class=\"ds-choice-loading\"\n role=\"option\"\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.loadingLabel}\n aria-live=\"polite\"\n >\n <ds-loader size={this.size} color=\"inherit\" />\n </div>\n ) : this.visibleOptions.length === 0 ? (\n <div\n class=\"ds-choice-empty ds-empty-region\"\n role=\"option\"\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.noResultsText}\n aria-live=\"polite\"\n >\n <ds-empty-state body={this.noResultsText} />\n </div>\n ) : (\n this.visibleSections.map(section => (\n <div\n class={{\n 'ds-choice-section': true,\n 'ds-chrome-column': true,\n 'ds-chrome-space--sm': true,\n 'ds-choice-section--divided': !!section.divider,\n }}\n role={section.header ? 'group' : undefined}\n aria-label={section.header}\n >\n {section.header && (\n <ds-text\n class={`ds-choice-section__header ds-control--${this.size}`}\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n emphasis\n color=\"primary\"\n aria-hidden=\"true\"\n >\n {section.header}\n </ds-text>\n )}\n {section.options.map(option => this.renderOption(\n option,\n flatIndex++,\n usesOptionSubtext,\n ))}\n </div>\n ))\n )}\n </div>\n {this.allowClear && this.hasSelection && !this.isLoading && (\n <ChoiceFooter\n size={this.size}\n summary={`${count} ${this.selectedLabel}`}\n clearLabel={this.clearLabel}\n onClear={this.clearSelection}\n />\n )}\n </div>\n )}\n\n {showError && (\n <ds-text\n class=\"error-text\"\n as=\"div\"\n variant=\"text-body-small\"\n color=\"negative\"\n textId={this.errorId}\n role=\"alert\"\n >\n {this.errorMessage}\n </ds-text>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as e,H as s,c as t,h as i,a as o,t as r}from"./index.js";import{c as n,a as c,r as a}from"./p-CydY-v7X.js";import{a as d,C as l,b as h}from"./p-DbpfpeQT.js";import{e as g,r as p,f,a as u,m as v,b as m,c as b,d as y,g as x}from"./p-BhC1YyId.js";import{d as w}from"./p-CaRyxTMz.js";import{d as k}from"./p-DPME1wUJ.js";import{d as _}from"./p-BY0PzkUp.js";import{d as z}from"./p-BAfG3M8z.js";import{d as C}from"./p-Ca-I2UnB.js";import{d as F}from"./p-BwGnhInj.js";import{d as j}from"./p-DWdRSOBV.js";import{D as A,s as I}from"./p-BgGP65Nn.js";import{r as L}from"./p-BJMRBHKW.js";import{r as D,T as V}from"./p-Dg3xLna0.js";import{C as O}from"./p-Cx-ywr1e.js";import{c as P}from"./p-DuFm-ieS.js";const E=()=>`.sc-ds-select-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-select-h,.ds-focus-ring.sc-ds-select,.ds-focus-ring-inset.sc-ds-select-h,.ds-focus-ring-inset.sc-ds-select{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-select-h:focus-visible,.ds-focus-ring.sc-ds-select:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-select-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-select{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-select-h:focus-visible,.ds-focus-ring-inset.sc-ds-select:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-select-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-select:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-select-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-select{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-select-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-select::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-interaction-fill.sc-ds-select-h,.ds-interaction-fill.sc-ds-select{position:relative;z-index:0;cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent}.ds-interaction-fill.sc-ds-select-h::before,.ds-interaction-fill.sc-ds-select::before,.ds-interaction-fill.sc-ds-select-h::after,.ds-interaction-fill.sc-ds-select::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-select-h::before,.ds-interaction-fill.sc-ds-select::before{z-index:1}.ds-interaction-fill.sc-ds-select-h::after,.ds-interaction-fill.sc-ds-select::after{z-index:3;box-shadow:inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-select-h,.ds-interaction-fill--bordered.sc-ds-select{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-select-h::before,.ds-interaction-fill--selected.sc-ds-select::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-select-h,.ds-interaction-fill--selected.sc-ds-select{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-select-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-select:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-select-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-select:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill.sc-ds-select-h>.ds-interaction-fill__content.sc-ds-select,.ds-interaction-fill.sc-ds-select>.ds-interaction-fill__content.sc-ds-select,.ds-interaction-fill__content.sc-ds-select{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-select-h,.ds-interaction-fill--on-faint.sc-ds-select{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-select-h,.ds-interaction-fill--on-medium.sc-ds-select{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-select-h,.ds-interaction-fill--on-bold.sc-ds-select{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-select-h,.ds-interaction-fill--on-strong.sc-ds-select{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-select-h,.ds-interaction-fill--on-translucent.sc-ds-select{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-select-h,.ds-interaction-fill--on-inverted.sc-ds-select{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-select-h,.ds-interaction-fill--on-media.sc-ds-select{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-select-h,.ds-interaction-fill--on-always-dark.sc-ds-select{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-select-h,.ds-interaction-fill--on-navigation.sc-ds-select{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}.ds-control-inactive.sc-ds-select-h,.ds-control-inactive.sc-ds-select{opacity:0.5;pointer-events:none;cursor:not-allowed}.ds-control--lg.sc-ds-select,.ds-control--lg.sc-ds-select-h,.ds-control--md.sc-ds-select-h,.ds-control--md.sc-ds-select,.ds-control--sm.sc-ds-select-h,.ds-control--sm.sc-ds-select,.ds-control--xs.sc-ds-select-h,.ds-control--xs.sc-ds-select{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-select-h,.ds-control--lg.sc-ds-select{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-select-h,.ds-control--md.sc-ds-select{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050)}.ds-control--sm.sc-ds-select-h,.ds-control--sm.sc-ds-select{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025)}.ds-control--xs.sc-ds-select-h,.ds-control--xs.sc-ds-select{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.ds-choice-popup.sc-ds-select{box-sizing:border-box;display:flex;flex-direction:column;min-width:var(--dimension-menu-width-xs);max-width:min( var(--dimension-panel-width-lg), calc(100vw - var(--dimension-space-200)) );max-height:calc(100vh - var(--dimension-space-200));overflow:hidden;inset:auto;margin:0;padding:0;border:0;background-color:var(--color-background-primary);border-radius:var(--dimension-radius-075);box-shadow:var(--effect-shadow-elevated-floating);animation:dsChoiceFadeIn var(--effect-motion-short-2) forwards;backface-visibility:hidden;will-change:transform;text-align:start}.ds-choice-popup.sc-ds-select::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:var(--effect-highlight-elevated-floating)}.ds-choice-popup--closing.sc-ds-select{animation:dsChoiceFadeOut var(--effect-motion-short-2) forwards}@keyframes dsChoiceFadeIn{from{opacity:0;transform:inherit scale(0.97)}to{opacity:1}}@keyframes dsChoiceFadeOut{from{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.ds-choice-popup.sc-ds-select{animation:none;opacity:1}.ds-choice-popup--closing.sc-ds-select{opacity:0}}.ds-choice-list.sc-ds-select{display:flex;flex-direction:column;min-height:0;overflow-y:auto;overscroll-behavior:contain}.ds-choice-section.sc-ds-select{display:flex;flex-direction:column;gap:var(--dimension-space-050);padding:var(--dimension-space-050)}.ds-choice-section--divided.sc-ds-select{border-bottom:var(--dimension-stroke-width-015) solid var(--color-border-tertiary)}ds-text.ds-choice-section__header.sc-ds-select{display:flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding:0 calc( var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) );text-align:start;-webkit-user-select:none;user-select:none}.ds-choice-item.sc-ds-select{display:flex;align-items:center;gap:var(--ds-control-gap, var(--dimension-space-050));width:100%;height:var(--ds-control-height, var(--dimension-size-400));padding:0 var(--ds-control-padding-inline, var(--dimension-space-075));box-sizing:border-box;border:none;border-radius:var(--ds-control-radius, var(--dimension-radius-025));background:transparent;cursor:default;-webkit-user-select:none;user-select:none;text-align:left;color:inherit}.ds-choice-item.sc-ds-select:has(.ds-choice-item__subtext){height:auto;min-height:var(--ds-control-height, var(--dimension-size-400));padding-block:var(--ds-control-padding-inline, var(--dimension-space-075));align-items:flex-start}.ds-choice-item__content.sc-ds-select{display:flex;flex:1;flex-direction:column;gap:var(--dimension-space-025);min-width:0}ds-text.ds-choice-item__label.sc-ds-select,.ds-choice-item__subtext.sc-ds-select,ds-text.ds-choice-item__subtext.sc-ds-select{padding:0 var(--ds-control-label-inset, var(--dimension-space-025))}ds-text.ds-choice-item__label.sc-ds-select{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ds-text.ds-choice-item__subtext.sc-ds-select{display:-webkit-box;overflow:hidden;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}.ds-choice-item__icon.sc-ds-select,.ds-choice-item__suffix.sc-ds-select{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md));pointer-events:none}.ds-choice-empty.sc-ds-select,.ds-choice-loading.sc-ds-select{display:flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:var(--dimension-size-600);padding:var(--dimension-space-100)}.ds-choice-footer.sc-ds-select{position:relative;box-sizing:border-box;padding-block:var(--dimension-space-050)}.ds-choice-footer.sc-ds-select::before{content:'';position:absolute;inset:0 0 auto;height:var(--dimension-stroke-width-012);background-color:var(--color-border-tertiary);pointer-events:none}.ds-choice-footer__content.sc-ds-select{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--dimension-size-400)}.ds-choice-footer__summary.sc-ds-select,.ds-choice-footer__clear.sc-ds-select ds-text.sc-ds-select{padding-inline:calc( var(--dimension-space-050) + var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) )}.ds-choice-footer__clear.sc-ds-select{appearance:none;display:inline-flex;align-items:center;padding:0;border:0;border-radius:var(--dimension-radius-025);background:transparent;color:var(--color-foreground-bold-brand);cursor:default}.ds-choice-footer__clear.sc-ds-select:hover{text-decoration:underline;text-decoration-color:var(--color-foreground-tertiary)}.ds-control-width--hug.sc-ds-select-h,.ds-control-width--hug.sc-ds-select{width:fit-content;max-width:100%;flex:0 0 auto;align-self:flex-start}.ds-control-width--fill.sc-ds-select-h,.ds-control-width--fill.sc-ds-select{width:100%;min-width:0;flex:1 1 auto;align-self:stretch}.select-search.sc-ds-select{position:relative;box-sizing:border-box;padding:var(--dimension-space-050);background:transparent}.select-search.sc-ds-select::after{content:'';position:absolute;inset:auto 0 0;height:var(--dimension-stroke-width-012);background-color:var(--color-border-tertiary);pointer-events:none}.select-search.sc-ds-select:focus-within::after{height:var(--dimension-stroke-width-018);background-color:var(--color-border-bold-brand)}.select-search__control.sc-ds-select{display:flex;align-items:center;box-sizing:border-box;gap:var(--ds-control-gap, var(--dimension-space-050));height:var(--ds-control-height, var(--dimension-size-400));padding:0 var(--ds-control-padding-inline, var(--dimension-space-075));border:0;border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.select-search__control.sc-ds-select:has(.select-search__clear){padding-right:0}.select-search__control.sc-ds-select>ds-icon.sc-ds-select{flex-shrink:0;color:var(--color-foreground-secondary)}.select-search.sc-ds-select .select-search__control.sc-ds-select .select-search__clear.sc-ds-select{align-self:center;flex-shrink:0;margin-right:var(--dimension-space-050)}.select-search__control.sc-ds-select input.sc-ds-select{flex:1;min-width:0;height:100%;padding:0 var(--ds-control-label-inset, var(--dimension-space-025));border:0;outline:none;background:transparent;color:var(--color-foreground-primary);font-family:inherit}.select-search__control.sc-ds-select input.sc-ds-select::placeholder{color:var(--color-foreground-secondary)}.select-search__control.sc-ds-select input.sc-ds-select:focus::placeholder{color:var(--color-foreground-quaternary)}.select-search__control.sc-ds-select input[type='search'].sc-ds-select::-webkit-search-cancel-button,.select-search__control.sc-ds-select input[type='search'].sc-ds-select::-webkit-search-decoration{display:none}.ds-text--display-medium.sc-ds-select-h,.ds-text--display-medium.sc-ds-select{font-size:var(--typography-fontsize-3xl);line-height:var(--typography-lineheight-3xl)}.ds-text--display-small.sc-ds-select-h,.ds-text--display-small.sc-ds-select{font-size:var(--typography-fontsize-2xl);line-height:var(--typography-lineheight-2xl)}.ds-text--title-large.sc-ds-select-h,.ds-text--title-large.sc-ds-select{font-size:var(--typography-fontsize-xl);line-height:var(--typography-lineheight-xl)}.ds-text--title-medium.sc-ds-select-h,.ds-text--title-medium.sc-ds-select{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg)}.ds-text--title-small.sc-ds-select-h,.ds-text--title-small.sc-ds-select{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md)}.ds-text--body-large.sc-ds-select-h,.ds-text--body-large.sc-ds-select{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg)}.ds-text--body-medium.sc-ds-select-h,.ds-text--body-medium.sc-ds-select{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md)}.ds-text--body-small.sc-ds-select-h,.ds-text--body-small.sc-ds-select{font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm)}.ds-text--caption.sc-ds-select-h,.ds-text--caption.sc-ds-select{font-size:var(--typography-fontsize-xs);line-height:var(--typography-lineheight-xs);text-transform:uppercase}.ds-text--display-medium.ds-text--emphasis.sc-ds-select-h,.ds-text--display-small.ds-text--emphasis.sc-ds-select-h,.ds-text--display-medium.ds-text--emphasis.sc-ds-select,.ds-text--display-small.ds-text--emphasis.sc-ds-select{font-weight:var(--typography-weight-bold);letter-spacing:var(--typography-letterspacing-negative-double)}.ds-text--display-medium.ds-text--regular.sc-ds-select-h,.ds-text--display-small.ds-text--regular.sc-ds-select-h,.ds-text--display-medium.ds-text--regular.sc-ds-select,.ds-text--display-small.ds-text--regular.sc-ds-select{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-large.ds-text--emphasis.sc-ds-select-h,.ds-text--title-large.ds-text--emphasis.sc-ds-select{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative-double)}.ds-text--title-large.ds-text--regular.sc-ds-select-h,.ds-text--title-large.ds-text--regular.sc-ds-select{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-medium.ds-text--emphasis.sc-ds-select-h,.ds-text--title-small.ds-text--emphasis.sc-ds-select-h,.ds-text--title-medium.ds-text--emphasis.sc-ds-select,.ds-text--title-small.ds-text--emphasis.sc-ds-select{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-medium.ds-text--regular.sc-ds-select-h,.ds-text--title-small.ds-text--regular.sc-ds-select-h,.ds-text--title-medium.ds-text--regular.sc-ds-select,.ds-text--title-small.ds-text--regular.sc-ds-select{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-large.ds-text--emphasis.sc-ds-select-h,.ds-text--body-medium.ds-text--emphasis.sc-ds-select-h,.ds-text--body-large.ds-text--emphasis.sc-ds-select,.ds-text--body-medium.ds-text--emphasis.sc-ds-select{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--body-large.ds-text--regular.sc-ds-select-h,.ds-text--body-medium.ds-text--regular.sc-ds-select-h,.ds-text--body-large.ds-text--regular.sc-ds-select,.ds-text--body-medium.ds-text--regular.sc-ds-select{font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-small.ds-text--emphasis.sc-ds-select-h,.ds-text--body-small.ds-text--emphasis.sc-ds-select{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-small.ds-text--regular.sc-ds-select-h,.ds-text--body-small.ds-text--regular.sc-ds-select{font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-none)}.ds-text--caption.ds-text--emphasis.sc-ds-select-h,.ds-text--caption.ds-text--emphasis.sc-ds-select{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-positive)}.ds-text--caption.ds-text--regular.sc-ds-select-h,.ds-text--caption.ds-text--regular.sc-ds-select{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-positive)}.select-host.sc-ds-select-h{display:inline-flex;flex-direction:column;gap:var(--dimension-space-050);position:relative;outline:none;--ds-select-fg:var(--color-foreground-secondary);--ds-select-fg-active:var(--color-foreground-primary);--ds-select-prefix-fg:var(--ds-select-fg);--ds-select-chevron-fg:var(--ds-select-fg);--ds-select-border:var(--color-border-secondary)}.ds-control-width--fill.sc-ds-select-h,.ds-control-width--fill.sc-ds-select-h .trigger.sc-ds-select{width:100%}.trigger.sc-ds-select{display:inline-flex;align-items:center;justify-content:flex-start;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding:0 var(--ds-control-padding-inline, var(--dimension-space-075));gap:var(--ds-control-gap, var(--dimension-space-050));background:transparent;border:none;border-radius:var(--ds-control-radius, var(--dimension-radius-025));color:var(--ds-select-fg);cursor:default;font-family:inherit;-webkit-user-select:none;user-select:none;overflow:hidden;transition:color var(--effect-motion-short-2)}.trigger--bordered.sc-ds-select{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--ds-select-border)}.trigger--has-value.sc-ds-select .trigger__label.sc-ds-select{color:var(--ds-select-fg-active)}.wrapper--error.sc-ds-select{--ds-interaction-border-width:var(--dimension-stroke-width-018);--ds-interaction-border-color:var(--color-border-bold-negative)}.trigger__prefix.sc-ds-select,.trigger__chevron.sc-ds-select{position:relative;z-index:2;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md));display:inline-flex;align-items:center;justify-content:center}.trigger__prefix.sc-ds-select{color:var(--ds-select-prefix-fg)}.trigger__chevron.sc-ds-select{color:var(--ds-select-chevron-fg)}.trigger__label.sc-ds-select{position:relative;z-index:2;flex:1 1 auto;min-width:0;padding:0 var(--ds-control-label-inset, var(--dimension-space-025));text-align:left;color:inherit;transition:color var(--effect-motion-short-2)}.select-popup.sc-ds-select{color:var(--color-foreground-secondary)}.select-option[aria-selected='true'].sc-ds-select .ds-choice-item__icon.sc-ds-select{color:var(--color-foreground-primary)}.error-text.sc-ds-select{width:100%}.select-host--background-medium.sc-ds-select-h{--ds-select-fg:var(--color-foreground-on-medium-background-secondary);--ds-select-fg-active:var(--color-foreground-on-medium-background-primary);--ds-select-border:var(--color-border-on-medium-background-secondary)}.select-host--background-bold.sc-ds-select-h{--ds-select-fg:var(--color-foreground-on-bold-background-secondary);--ds-select-fg-active:var(--color-foreground-on-bold-background-primary);--ds-select-border:var(--color-border-on-bold-background-secondary)}.select-host--background-strong.sc-ds-select-h{--ds-select-fg:var(--color-foreground-on-strong-background-secondary);--ds-select-fg-active:var(--color-foreground-on-strong-background-primary);--ds-select-border:var(--color-border-on-strong-background-secondary)}.select-host--background-translucent.sc-ds-select-h{--ds-select-fg:var(--color-translucent-foreground-secondary);--ds-select-fg-active:var(--color-translucent-foreground-primary);--ds-select-border:var(--color-translucent-border-secondary)}.select-host--background-inverted.sc-ds-select-h{--ds-select-fg:var(--color-inverted-foreground-secondary);--ds-select-fg-active:var(--color-inverted-foreground-primary);--ds-select-border:var(--color-inverted-border-secondary)}.select-host--background-media.sc-ds-select-h{--ds-select-fg:var(--color-media-foreground-secondary);--ds-select-fg-active:var(--color-media-foreground-primary);--ds-select-border:var(--color-media-border-secondary)}.select-host--background-always-dark.sc-ds-select-h{--ds-select-fg:var(--color-always-dark-foreground-secondary);--ds-select-fg-active:var(--color-always-dark-foreground-primary);--ds-select-border:var(--color-always-dark-border-secondary)}`;const T={md:"md",sm:"sm",xs:"xs"};let q=0;const $=8;const S=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.dsChange=t(this,"dsChange");this.dsClear=t(this,"dsClear");this.dsOpenChange=t(this,"dsOpenChange");this.internals=this.attachInternals();this.options=[];this.sections=[];this.value="";this.open=false;this.disabled=false;this.required=false;this.requiredMessage=A;this.placeholder="Select";this.size="md";this.width="hug";this.isInactive=false;this.isLoading=false;this.activeFill=true;this.hasBorder=true;this.allowClear=true;this.clearLabel="Clear";this.searchable=false;this.searchPlaceholder="Search";this.noResultsText="No results found";this.loadingLabel="Loading";this.error=false;this.ariaLabel=null;this.activeIndex=-1;this.searchTerm="";this.formDisabled=false;this.position={x:0,y:0};this.positionReady=false;this.focusRingVisible=false;this.generatedId=`ds-select-${++q}`;this.listboxId=`${this.generatedId}-listbox`;this.errorId=`${this.generatedId}-error`;this.triggerEl=null;this.popupEl=null;this.searchEl=null;this.initialValue="";this.typeahead="";this.typeaheadTimer=null;this.outsideHandler=null;this.repositionHandler=null;this.positionRetryRaf=null;this.clearSelection=e=>{e.preventDefault();e.stopPropagation();this.value="";this.dsChange.emit("");this.dsClear.emit();const s=g(this.visibleOptions);this.activeIndex=s[0]??-1;requestAnimationFrame((()=>this.searchable?this.searchEl?.focus():this.triggerEl?.focus()))};this.handleTriggerKeyDown=e=>{if(!this.open){if(["ArrowDown","ArrowUp","Enter"," "].includes(e.key)){e.preventDefault();this.openPopup(true,e.key==="ArrowUp"?"last":"first")}else if(e.key.length===1&&!e.metaKey&&!e.ctrlKey&&!e.altKey){e.preventDefault();this.openPopup(true);if(this.searchable){this.searchTerm=e.key}else{this.handleTypeahead(e.key)}}return}this.handleListKeyDown(e)}}componentWillLoad(){this.initialValue=this.value;this.syncFormValue()}componentDidLoad(){if(this.open)this.onOpenChange(true)}disconnectedCallback(){this.cancelPositionRetry();this.unbindPopupListeners();if(this.typeaheadTimer)clearTimeout(this.typeaheadTimer)}syncFormValue(){const e=this.isDisabled;const s=this.hasSelection?this.value:"";this.internals.setFormValue(e?null:s);const t=this.required&&!e&&!s;I(this.internals,t,this.requiredMessage);if(this.open){const e=g(this.visibleOptions);if(!e.includes(this.activeIndex))this.activeIndex=e[0]??-1;requestAnimationFrame((()=>this.updatePosition()))}}onLoadingChange(){if(this.open)requestAnimationFrame((()=>this.updatePosition()))}onOpenChange(e){this.dsOpenChange.emit(e);if(e){this.bindPopupListeners();this.schedulePositionUpdate((()=>{this.scrollActiveOptionIntoView();if(this.searchable)this.searchEl?.focus()}))}else{this.cancelPositionRetry();this.unbindPopupListeners();this.searchTerm="";this.positionReady=false}}onSearchTermChange(){const e=g(this.visibleOptions);this.activeIndex=e[0]??-1;requestAnimationFrame((()=>{this.updatePosition();this.scrollActiveOptionIntoView()}))}onActiveIndexChange(){requestAnimationFrame((()=>this.scrollActiveOptionIntoView()))}formDisabledCallback(e){this.formDisabled=e;this.syncFormValue()}formResetCallback(){this.value=this.initialValue;this.closePopup()}formStateRestoreCallback(e){this.value=typeof e==="string"?e:""}async setFocus(){this.triggerEl?.focus()}get isDisabled(){return this.disabled||this.isInactive||this.formDisabled}get allSections(){return p(this.options,this.sections)}get allOptions(){return f(this.allSections)}get visibleSections(){return this.searchable?u(this.allSections,this.searchTerm):this.allSections}get visibleOptions(){return f(this.visibleSections)}get selectedOption(){return this.allOptions.find((e=>e.value===this.value))}get hasSelection(){return Boolean(this.selectedOption)}get activeOptionId(){return!this.isLoading&&this.activeIndex>=0?`${this.generatedId}-option-${this.activeIndex}`:undefined}scrollActiveOptionIntoView(){if(!this.open||!this.activeOptionId)return;this.el.querySelector(`#${this.activeOptionId}`)?.scrollIntoView({block:"nearest",inline:"nearest"})}bindPopupListeners(){this.unbindPopupListeners();this.outsideHandler=e=>{const s=e.target;if(this.el.contains(s))return;this.closePopup()};this.repositionHandler=()=>this.updatePosition();document.addEventListener("mousedown",this.outsideHandler,true);window.addEventListener("scroll",this.repositionHandler,true);window.addEventListener("resize",this.repositionHandler)}unbindPopupListeners(){if(this.outsideHandler){document.removeEventListener("mousedown",this.outsideHandler,true);this.outsideHandler=null}if(this.repositionHandler){window.removeEventListener("scroll",this.repositionHandler,true);window.removeEventListener("resize",this.repositionHandler);this.repositionHandler=null}}cancelPositionRetry(){if(this.positionRetryRaf!==null){cancelAnimationFrame(this.positionRetryRaf);this.positionRetryRaf=null}}schedulePositionUpdate(e){if(!this.open)return;this.cancelPositionRetry();this.positionReady=false;let s=$;const t=()=>{this.positionRetryRaf=null;if(!this.open)return;if(this.updatePosition()){e?.();return}if(s>0){s-=1;this.positionRetryRaf=requestAnimationFrame(t)}};this.positionRetryRaf=requestAnimationFrame(t)}updatePosition(){if(!this.open||!this.triggerEl||!this.popupEl||!this.popupEl.isConnected||!this.el.contains(this.popupEl))return false;const e=L(V.space050,V.space050);this.popupEl.style.minWidth=`${n(this.triggerEl.offsetWidth,e)}px`;this.position=c({anchorRect:this.triggerEl.getBoundingClientRect(),popupWidth:this.popupEl.offsetWidth,popupHeight:this.popupEl.offsetHeight,side:"bottom",align:"start",sideOffsetPx:e,alignOffsetPx:a({align:"start",alignOffsetPx:0,sectionInsetPx:e}),viewportPadPx:e,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight});this.positionReady=true;return true}openPopup(e,s){if(this.isDisabled||!this.allOptions.length&&!this.isLoading)return;const t=g(this.visibleOptions);const i=this.visibleOptions.findIndex((e=>e.value===this.value&&!e.isInactive));this.activeIndex=s==="last"?t[t.length-1]??-1:i>=0?i:t[0]??-1;this.focusRingVisible=e;this.open=true}closePopup(e=false){if(!this.open)return;this.open=false;if(e)requestAnimationFrame((()=>this.triggerEl?.focus()))}selectOption(e){if(e.isInactive||this.isLoading)return;this.value=e.value;this.dsChange.emit(this.value);this.closePopup(true)}moveActive(e){this.activeIndex=v(this.visibleOptions,this.activeIndex,e)}setActiveEdge(e){const s=g(this.visibleOptions);this.activeIndex=e==="first"?s[0]??-1:s[s.length-1]??-1}handleTypeahead(e){if(this.typeaheadTimer)clearTimeout(this.typeaheadTimer);this.focusRingVisible=true;const s=e.toLocaleLowerCase();const t=this.typeahead.length>0&&[...this.typeahead].every((e=>e===s));this.typeahead=t?s:`${this.typeahead}${s}`;const i=m(this.visibleOptions,this.typeahead,this.activeIndex);if(i>=0)this.activeIndex=i;const o=D(V.animationDurationMedium1,V.animationDurationMedium1);this.typeaheadTimer=setTimeout((()=>{this.typeahead="";this.typeaheadTimer=null}),o)}handleListKeyDown(e){switch(e.key){case"ArrowDown":e.preventDefault();this.focusRingVisible=true;this.moveActive(1);break;case"ArrowUp":e.preventDefault();this.focusRingVisible=true;this.moveActive(-1);break;case"Home":e.preventDefault();this.focusRingVisible=true;this.setActiveEdge("first");break;case"End":e.preventDefault();this.focusRingVisible=true;this.setActiveEdge("last");break;case"Enter":case" ":{if(e.key===" "&&this.searchable&&e.target===this.searchEl)break;e.preventDefault();const s=this.visibleOptions[this.activeIndex];if(s)this.selectOption(s);break}case"Escape":e.preventDefault();this.closePopup(true);break;case"Tab":this.closePopup();break;default:if(!this.searchable&&e.key.length===1&&!e.metaKey&&!e.ctrlKey&&!e.altKey){this.handleTypeahead(e.key)}}}renderOption(e,s,t,o){const r=e.value===this.value;const n=s===this.activeIndex;return i(d,{id:`${this.generatedId}-option-${s}`,option:e,selected:r,active:n,focusRingVisible:this.focusRingVisible,usesSubtext:o,leading:t&&e.icon?i("span",{class:"ds-choice-item__icon ds-interaction-fill__content","aria-hidden":"true"},i("ds-icon",{name:e.icon,size:"md",color:"inherit"})):undefined,onHover:()=>{this.focusRingVisible=false;this.activeIndex=s},onSelect:()=>this.selectOption(e)})}render(){const e=this.isDisabled;const s=!this.hasSelection;const t=s?this.placeholder:this.selectedOption?.label;const r=O[this.size];const n=T[this.size];const c=b(this.allOptions);const a=y(this.allOptions);const d=this.error&&Boolean(this.errorMessage);const g=[this.ariaDescribedby,d?this.errorId:undefined].filter(Boolean).join(" ")||undefined;const p={position:"fixed",left:"0",top:"0",transform:`translate(${Math.round(this.position.x)}px, ${Math.round(this.position.y)}px)`,zIndex:"var(--dimension-z-index-floating)",visibility:this.positionReady?"visible":"hidden"};let f=0;return i(o,{key:"b9027edac05420f1148c143d967f5e41822bc1f2",class:{"select-host":true,"ds-control-inactive":e,"ds-control--md":this.size==="md","ds-control--sm":this.size==="sm","ds-control--xs":this.size==="xs",...P(this.width),[`select-host--background-${this.background}`]:!!this.background}},i("button",{key:"6812f8f8b2a8d42a026424c4788f19e3e0527d0e",ref:e=>{this.triggerEl=e??null},id:this.inputId??this.generatedId,type:"button",class:{trigger:true,"ds-focus-ring-inset":true,"ds-interaction-fill":true,"ds-interaction-fill--selected":!e&&this.activeFill&&this.hasSelection,"trigger--bordered":this.hasBorder||this.error,"trigger--placeholder":s,"trigger--has-value":this.hasSelection,"wrapper--error":this.error,[`ds-control--${this.size}`]:true,...x(this.background)},disabled:e,role:"combobox","aria-haspopup":"listbox","aria-expanded":String(this.open),"aria-controls":this.open?this.listboxId:undefined,"aria-activedescendant":this.open&&!this.searchable?this.activeOptionId:undefined,"aria-label":this.ariaLabel,"aria-labelledby":this.ariaLabelledby,"aria-describedby":g,"aria-invalid":this.error?"true":undefined,"aria-required":this.required||undefined,"aria-busy":this.isLoading?"true":undefined,onClick:()=>this.open?this.closePopup():this.openPopup(false),onKeyDown:this.handleTriggerKeyDown},(this.icon||this.isLoading)&&i("span",{key:"8423d81aa4d7b7a48ffa3227bb0f54986a917fe6",class:"trigger__prefix ds-interaction-fill__content","aria-hidden":"true"},this.isLoading?i("ds-loader",{size:n,color:"inherit"}):i("ds-icon",{name:this.icon,size:n,color:"inherit"})),i("ds-text",{key:"96e24034319dc3ccfd2dbbeaa54d5aee59020bfa",class:"trigger__label ds-interaction-fill__content",as:"span",variant:r,color:"inherit",lineTruncation:1},t),i("span",{key:"1216096c5bf366f5684d80561d067b92c4ba3950",class:"trigger__chevron ds-interaction-fill__content","aria-hidden":"true"},i("ds-icon",{key:"90d9c47edba3169953f542018b9a57d06dc84130",name:"ChevronDown",size:n,color:"inherit"}))),this.open&&i("div",{key:"b62542272f670eddb385fc1ceeb5171686d9cf76",ref:e=>{this.popupEl=e??null},class:"select-popup ds-choice-popup",style:p},this.searchable&&i(l,{key:"553150b90dbbfe9a729ac4aea2a87d716a67fc7d",value:this.searchTerm,placeholder:this.searchPlaceholder,controls:this.listboxId,activeDescendant:this.activeOptionId,inputRef:e=>{this.searchEl=e},clearLabel:this.clearLabel,onValueChange:e=>{this.searchTerm=e},onKeyDown:e=>this.handleListKeyDown(e)}),i("div",{key:"fbac10962f0b34e656cd62fbc53cbee8aa03be12",id:this.listboxId,class:"ds-choice-list",role:"listbox","aria-label":this.ariaLabel??this.placeholder,"aria-busy":this.isLoading?"true":undefined},this.isLoading?i("div",{class:"ds-choice-loading",role:"option","aria-selected":"false","aria-disabled":"true","aria-label":this.loadingLabel,"aria-live":"polite"},i("ds-loader",{size:"md",color:"inherit"})):this.visibleOptions.length===0?i("div",{class:"ds-choice-empty",role:"option","aria-selected":"false","aria-disabled":"true","aria-label":this.noResultsText,"aria-live":"polite"},i("ds-empty-state",{body:this.noResultsText})):this.visibleSections.map((e=>i("div",{class:{"ds-choice-section":true,"ds-choice-section--divided":!!e.divider},role:e.header?"group":undefined,"aria-label":e.header},e.header&&i("ds-text",{class:"ds-choice-section__header ds-control--md",as:"span",variant:"text-body-small",emphasis:true,color:"primary","aria-hidden":"true"},e.header),e.options.map((e=>this.renderOption(e,f++,c,a))))))),this.allowClear&&this.hasSelection&&!this.isLoading&&i(h,{key:"9dfb878dd313866442caa72cf465f59ebf9ab998",clearLabel:this.clearLabel,onClear:this.clearSelection})),d&&i("ds-text",{key:"fde6a4e32f6a859a3e1a942c59bd5e6ccc8eb5b4",class:"error-text",as:"div",variant:"text-body-small",color:"negative",textId:this.errorId,role:"alert"},this.errorMessage))}static get formAssociated(){return true}get el(){return this}static get watchers(){return{value:[{syncFormValue:0}],disabled:[{syncFormValue:0}],isInactive:[{syncFormValue:0}],required:[{syncFormValue:0}],options:[{syncFormValue:0}],sections:[{syncFormValue:0}],isLoading:[{onLoadingChange:0}],open:[{onOpenChange:0}],searchTerm:[{onSearchTermChange:0}],activeIndex:[{onActiveIndexChange:0}]}}static get style(){return E()}},[66,"ds-select",{options:[16],sections:[16],value:[1025],open:[1540],name:[513],disabled:[516],required:[516],requiredMessage:[1,"required-message"],placeholder:[1],size:[1],width:[1],isInactive:[4,"is-inactive"],isLoading:[4,"is-loading"],activeFill:[4,"active-fill"],hasBorder:[4,"has-border"],icon:[1],allowClear:[4,"allow-clear"],clearLabel:[1,"clear-label"],searchable:[4],searchPlaceholder:[1,"search-placeholder"],noResultsText:[1,"no-results-text"],loadingLabel:[1,"loading-label"],background:[1],error:[4],errorMessage:[1,"error-message"],inputId:[1,"input-id"],ariaLabel:[1,"aria-label"],ariaLabelledby:[1,"aria-labelledby"],ariaDescribedby:[1,"aria-describedby"],activeIndex:[32],searchTerm:[32],formDisabled:[32],position:[32],positionReady:[32],focusRingVisible:[32],setFocus:[64]},undefined,{value:[{syncFormValue:0}],disabled:[{syncFormValue:0}],isInactive:[{syncFormValue:0}],required:[{syncFormValue:0}],options:[{syncFormValue:0}],sections:[{syncFormValue:0}],isLoading:[{onLoadingChange:0}],open:[{onOpenChange:0}],searchTerm:[{onSearchTermChange:0}],activeIndex:[{onActiveIndexChange:0}]}]);function B(){if(typeof customElements==="undefined"){return}const e=["ds-select","ds-badge","ds-button-unfilled","ds-empty-state","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-select":if(!customElements.get(r(e))){customElements.define(r(e),S)}break;case"ds-badge":if(!customElements.get(r(e))){w()}break;case"ds-button-unfilled":if(!customElements.get(r(e))){k()}break;case"ds-empty-state":if(!customElements.get(r(e))){_()}break;case"ds-icon":if(!customElements.get(r(e))){z()}break;case"ds-loader":if(!customElements.get(r(e))){C()}break;case"ds-text":if(!customElements.get(r(e))){F()}break;case"ds-tooltip":if(!customElements.get(r(e))){j()}break}}))}B();const R=S;const M=B;export{R as DsSelect,M as defineCustomElement};
|
|
1
|
+
import{p as e,H as s,c as t,h as i,a as o,t as r}from"./index.js";import{a as c,C as n,b as d}from"./p-DjbTFy2B.js";import{e as a,S as l,r as h,f as g,a as p,c as f,b as u,d as v}from"./p-D1bNvIpb.js";import{d as m}from"./p-BFRMwl93.js";import{d as b}from"./p-huw1oRbt.js";import{d as y}from"./p-ukB-dPOK.js";import{d as x}from"./p-BAfG3M8z.js";import{d as w}from"./p-Ca-I2UnB.js";import{d as k}from"./p-CPwpgUWT.js";import{d as _}from"./p-69lHhJiX.js";import{D as z,s as C}from"./p-BgGP65Nn.js";import{a as F,C as I}from"./p-CuwopElg.js";import{c as j}from"./p-C61yJkfr.js";const V=()=>`.sc-ds-select-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-select-h,.ds-focus-ring.sc-ds-select,.ds-focus-ring-inset.sc-ds-select-h,.ds-focus-ring-inset.sc-ds-select{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-select-h:focus-visible,.ds-focus-ring.sc-ds-select:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-select-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-select{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-select-h:focus-visible,.ds-focus-ring-inset.sc-ds-select:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-select-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-select:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-select-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-select{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-select-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-select::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-interaction-fill.sc-ds-select-h,.ds-interaction-fill.sc-ds-select{position:relative;z-index:0;cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent}.ds-interaction-fill.sc-ds-select-h::before,.ds-interaction-fill.sc-ds-select::before,.ds-interaction-fill.sc-ds-select-h::after,.ds-interaction-fill.sc-ds-select::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-select-h::before,.ds-interaction-fill.sc-ds-select::before{z-index:1}.ds-interaction-fill.sc-ds-select-h::after,.ds-interaction-fill.sc-ds-select::after{z-index:3;box-shadow:inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-select-h,.ds-interaction-fill--bordered.sc-ds-select{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-select-h::before,.ds-interaction-fill--selected.sc-ds-select::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-select-h,.ds-interaction-fill--selected.sc-ds-select{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-select-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-select:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-select-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-select:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill.sc-ds-select-h>.ds-interaction-fill__content.sc-ds-select,.ds-interaction-fill.sc-ds-select>.ds-interaction-fill__content.sc-ds-select,.ds-interaction-fill__content.sc-ds-select{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-select-h,.ds-interaction-fill--on-faint.sc-ds-select{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-select-h,.ds-interaction-fill--on-medium.sc-ds-select{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-select-h,.ds-interaction-fill--on-bold.sc-ds-select{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-select-h,.ds-interaction-fill--on-strong.sc-ds-select{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-select-h,.ds-interaction-fill--on-translucent.sc-ds-select{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-select-h,.ds-interaction-fill--on-inverted.sc-ds-select{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-select-h,.ds-interaction-fill--on-media.sc-ds-select{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-select-h,.ds-interaction-fill--on-always-dark.sc-ds-select{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-select-h,.ds-interaction-fill--on-navigation.sc-ds-select{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}.ds-control-inactive.sc-ds-select-h,.ds-control-inactive.sc-ds-select{opacity:0.5;pointer-events:none;cursor:not-allowed}.ds-control--lg.sc-ds-select,.ds-control--lg.sc-ds-select-h,.ds-control--md.sc-ds-select-h,.ds-control--md.sc-ds-select,.ds-control--sm.sc-ds-select-h,.ds-control--sm.sc-ds-select,.ds-control--xs.sc-ds-select-h,.ds-control--xs.sc-ds-select{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-select-h,.ds-control--lg.sc-ds-select{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-select-h,.ds-control--md.sc-ds-select{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050)}.ds-control--sm.sc-ds-select-h,.ds-control--sm.sc-ds-select{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025)}.ds-control--xs.sc-ds-select-h,.ds-control--xs.sc-ds-select{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.ds-chrome-space--sm.sc-ds-select-h,.ds-chrome-space--sm.sc-ds-select{--ds-chrome-padding:var(--dimension-space-050);--ds-chrome-gap:var(--dimension-space-050)}.ds-chrome-space--md.sc-ds-select-h,.ds-chrome-space--md.sc-ds-select{--ds-chrome-padding:var(--dimension-space-100);--ds-chrome-gap:var(--dimension-space-100)}.ds-chrome-space--lg.sc-ds-select-h,.ds-chrome-space--lg.sc-ds-select{--ds-chrome-padding:var(--dimension-space-200);--ds-chrome-gap:var(--dimension-space-200)}.ds-chrome-row.sc-ds-select-h,.ds-chrome-row.sc-ds-select,.ds-chrome-column.sc-ds-select-h,.ds-chrome-column.sc-ds-select,.ds-chrome-grid.sc-ds-select-h,.ds-chrome-grid.sc-ds-select{display:flex;box-sizing:border-box;gap:var(--ds-chrome-gap, var(--dimension-space-100));padding:var(--ds-chrome-padding, var(--dimension-space-100))}.ds-chrome-row.sc-ds-select-h,.ds-chrome-row.sc-ds-select{flex-direction:row;align-items:center}.ds-chrome-column.sc-ds-select-h,.ds-chrome-column.sc-ds-select{flex-direction:column}.ds-chrome-grid.sc-ds-select-h,.ds-chrome-grid.sc-ds-select{display:grid;align-items:center}.ds-control-frame.sc-ds-select{display:inline-flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:var(--ds-control-padding-inline, var(--dimension-space-075));gap:var(--ds-control-gap, var(--dimension-space-050));border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.ds-control-icon-box.sc-ds-select{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md))}.ds-control-label-box.sc-ds-select{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-empty-region.sc-ds-select{display:flex;flex:1 1 auto;align-items:center;justify-content:center;box-sizing:border-box;min-width:0;min-height:0}.ds-empty-region--padded.sc-ds-select{padding:var(--dimension-space-200)}.ds-choice-popup.sc-ds-select{box-sizing:border-box;display:flex;flex-direction:column;min-width:var(--dimension-menu-width-xs);max-width:min( var(--dimension-panel-width-lg), calc(100vw - var(--dimension-space-200)) );max-height:calc(100vh - var(--dimension-space-200));overflow:hidden;inset:auto;margin:0;padding:0;border:0;background-color:var(--color-background-primary);border-radius:var(--dimension-radius-075);box-shadow:var(--effect-shadow-elevated-floating);animation:dsChoiceFadeIn var(--effect-motion-short-2) forwards;backface-visibility:hidden;will-change:transform;text-align:start}.ds-choice-popup.sc-ds-select::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:var(--effect-highlight-elevated-floating)}.ds-choice-popup--closing.sc-ds-select{animation:dsChoiceFadeOut var(--effect-motion-short-2) forwards}@keyframes dsChoiceFadeIn{from{opacity:0;transform:inherit scale(0.97)}to{opacity:1}}@keyframes dsChoiceFadeOut{from{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.ds-choice-popup.sc-ds-select{animation:none;opacity:1}.ds-choice-popup--closing.sc-ds-select{opacity:0}}.ds-choice-list.sc-ds-select{display:flex;flex-direction:column;min-height:0;overflow-y:auto;overscroll-behavior:contain}.ds-choice-section--divided.sc-ds-select{border-bottom:var(--dimension-stroke-width-015) solid var(--color-border-tertiary)}ds-text.ds-choice-section__header.sc-ds-select{display:flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding:0 calc( var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) );text-align:start;-webkit-user-select:none;user-select:none}.ds-choice-item.sc-ds-select{width:100%;border:none;border-radius:var(--ds-control-radius, var(--dimension-radius-025));background:transparent;cursor:default;-webkit-user-select:none;user-select:none;text-align:left;color:inherit}.ds-choice-item.sc-ds-select:has(.ds-choice-item__subtext){height:auto;min-height:var(--ds-control-height, var(--dimension-size-400));padding-block:var(--ds-control-padding-inline, var(--dimension-space-075));align-items:flex-start}.ds-choice-item__content.sc-ds-select{display:flex;flex:1;flex-direction:column;gap:var(--dimension-space-025);min-width:0}ds-text.ds-choice-item__label.sc-ds-select{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ds-text.ds-choice-item__subtext.sc-ds-select{display:-webkit-box;overflow:hidden;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}.ds-choice-item__icon.sc-ds-select,.ds-choice-item__suffix.sc-ds-select{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md));pointer-events:none}.ds-choice-empty.sc-ds-select,.ds-choice-loading.sc-ds-select{min-height:var(--dimension-size-600);padding:var(--dimension-space-100)}.ds-choice-footer.sc-ds-select{position:relative;box-sizing:border-box;padding-block:var(--dimension-space-050)}.ds-choice-footer.sc-ds-select::before{content:'';position:absolute;inset:0 0 auto;height:var(--dimension-stroke-width-012);background-color:var(--color-border-tertiary);pointer-events:none}.ds-choice-footer__content.sc-ds-select{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400))}.ds-choice-footer__summary.sc-ds-select,.ds-choice-footer__clear.sc-ds-select ds-text.sc-ds-select{padding-inline:calc( var(--dimension-space-050) + var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) )}.ds-choice-footer__clear.sc-ds-select{appearance:none;display:inline-flex;align-items:center;padding:0;border:0;border-radius:var(--dimension-radius-025);background:transparent;color:var(--color-foreground-bold-brand);cursor:default}.ds-choice-footer__clear.sc-ds-select:hover{text-decoration:underline;text-decoration-color:var(--color-foreground-tertiary)}.ds-control-frame.sc-ds-select{display:inline-flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:var(--ds-control-padding-inline, var(--dimension-space-075));gap:var(--ds-control-gap, var(--dimension-space-050));border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.ds-control-icon-box.sc-ds-select{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md))}.ds-control-label-box.sc-ds-select{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-control-width--hug.sc-ds-select-h,.ds-control-width--hug.sc-ds-select{width:fit-content;max-width:100%;flex:0 0 auto;align-self:flex-start}.ds-control-width--fill.sc-ds-select-h,.ds-control-width--fill.sc-ds-select{width:100%;min-width:0;flex:1 1 auto;align-self:stretch}.ds-field-stack.sc-ds-select-h,.ds-field-stack.sc-ds-select{display:flex;flex-direction:column;gap:var(--dimension-space-050)}.select-search.sc-ds-select{position:relative;box-sizing:border-box;padding:var(--dimension-space-050);background:transparent}.select-search.sc-ds-select::after{content:'';position:absolute;inset:auto 0 0;height:var(--dimension-stroke-width-012);background-color:var(--color-border-tertiary);pointer-events:none}.select-search.sc-ds-select:focus-within::after{height:var(--dimension-stroke-width-018);background-color:var(--color-border-bold-brand)}.select-search__control.sc-ds-select{display:flex;align-items:center;box-sizing:border-box;gap:var(--ds-control-gap, var(--dimension-space-050));height:var(--ds-control-height, var(--dimension-size-400));padding:0 var(--ds-control-padding-inline, var(--dimension-space-075));border:0;border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.select-search__control.sc-ds-select:has(.select-search__clear){padding-right:0}.select-search__control.sc-ds-select>ds-icon.sc-ds-select{flex-shrink:0;color:var(--color-foreground-secondary)}.select-search.sc-ds-select .select-search__control.sc-ds-select .select-search__clear.sc-ds-select{align-self:center;flex-shrink:0;margin-right:var(--dimension-space-050)}.select-search__control.sc-ds-select input.sc-ds-select{flex:1;min-width:0;height:100%;padding:0 var(--ds-control-label-inset, var(--dimension-space-025));border:0;outline:none;background:transparent;color:var(--color-foreground-primary);font-family:inherit}.select-search__control.sc-ds-select input.sc-ds-select::placeholder{color:var(--color-foreground-secondary)}.select-search__control.sc-ds-select input.sc-ds-select:focus::placeholder{color:var(--color-foreground-quaternary)}.select-search__control.sc-ds-select input[type='search'].sc-ds-select::-webkit-search-cancel-button,.select-search__control.sc-ds-select input[type='search'].sc-ds-select::-webkit-search-decoration{display:none}.ds-text--display-medium.sc-ds-select-h,.ds-text--display-medium.sc-ds-select{font-size:var(--typography-fontsize-3xl);line-height:var(--typography-lineheight-3xl)}.ds-text--display-small.sc-ds-select-h,.ds-text--display-small.sc-ds-select{font-size:var(--typography-fontsize-2xl);line-height:var(--typography-lineheight-2xl)}.ds-text--title-large.sc-ds-select-h,.ds-text--title-large.sc-ds-select{font-size:var(--typography-fontsize-xl);line-height:var(--typography-lineheight-xl)}.ds-text--title-medium.sc-ds-select-h,.ds-text--title-medium.sc-ds-select{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg)}.ds-text--title-small.sc-ds-select-h,.ds-text--title-small.sc-ds-select{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md)}.ds-text--body-large.sc-ds-select-h,.ds-text--body-large.sc-ds-select{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg)}.ds-text--body-medium.sc-ds-select-h,.ds-text--body-medium.sc-ds-select{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md)}.ds-text--body-small.sc-ds-select-h,.ds-text--body-small.sc-ds-select{font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm)}.ds-text--caption.sc-ds-select-h,.ds-text--caption.sc-ds-select{font-size:var(--typography-fontsize-xs);line-height:var(--typography-lineheight-xs);text-transform:uppercase}.ds-text--display-medium.ds-text--emphasis.sc-ds-select-h,.ds-text--display-small.ds-text--emphasis.sc-ds-select-h,.ds-text--display-medium.ds-text--emphasis.sc-ds-select,.ds-text--display-small.ds-text--emphasis.sc-ds-select{font-weight:var(--typography-weight-bold);letter-spacing:var(--typography-letterspacing-negative-double)}.ds-text--display-medium.ds-text--regular.sc-ds-select-h,.ds-text--display-small.ds-text--regular.sc-ds-select-h,.ds-text--display-medium.ds-text--regular.sc-ds-select,.ds-text--display-small.ds-text--regular.sc-ds-select{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-large.ds-text--emphasis.sc-ds-select-h,.ds-text--title-large.ds-text--emphasis.sc-ds-select{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative-double)}.ds-text--title-large.ds-text--regular.sc-ds-select-h,.ds-text--title-large.ds-text--regular.sc-ds-select{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-medium.ds-text--emphasis.sc-ds-select-h,.ds-text--title-small.ds-text--emphasis.sc-ds-select-h,.ds-text--title-medium.ds-text--emphasis.sc-ds-select,.ds-text--title-small.ds-text--emphasis.sc-ds-select{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-medium.ds-text--regular.sc-ds-select-h,.ds-text--title-small.ds-text--regular.sc-ds-select-h,.ds-text--title-medium.ds-text--regular.sc-ds-select,.ds-text--title-small.ds-text--regular.sc-ds-select{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-large.ds-text--emphasis.sc-ds-select-h,.ds-text--body-medium.ds-text--emphasis.sc-ds-select-h,.ds-text--body-large.ds-text--emphasis.sc-ds-select,.ds-text--body-medium.ds-text--emphasis.sc-ds-select{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--body-large.ds-text--regular.sc-ds-select-h,.ds-text--body-medium.ds-text--regular.sc-ds-select-h,.ds-text--body-large.ds-text--regular.sc-ds-select,.ds-text--body-medium.ds-text--regular.sc-ds-select{font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-small.ds-text--emphasis.sc-ds-select-h,.ds-text--body-small.ds-text--emphasis.sc-ds-select{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-small.ds-text--regular.sc-ds-select-h,.ds-text--body-small.ds-text--regular.sc-ds-select{font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-none)}.ds-text--caption.ds-text--emphasis.sc-ds-select-h,.ds-text--caption.ds-text--emphasis.sc-ds-select{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-positive)}.ds-text--caption.ds-text--regular.sc-ds-select-h,.ds-text--caption.ds-text--regular.sc-ds-select{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-positive)}.select-host.sc-ds-select-h{display:inline-flex;position:relative;outline:none;--ds-select-fg:var(--color-foreground-secondary);--ds-select-fg-active:var(--color-foreground-primary);--ds-select-prefix-fg:var(--ds-select-fg);--ds-select-chevron-fg:var(--ds-select-fg);--ds-select-border:var(--color-border-secondary)}.ds-control-width--fill.sc-ds-select-h,.ds-control-width--fill.sc-ds-select-h .trigger.sc-ds-select{width:100%}.trigger.sc-ds-select{justify-content:flex-start;background:transparent;border:none;border-radius:var(--ds-control-radius, var(--dimension-radius-025));color:var(--ds-select-fg);cursor:default;font-family:inherit;-webkit-user-select:none;user-select:none;overflow:hidden;transition:color var(--effect-motion-short-2)}.trigger--bordered.sc-ds-select{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--ds-select-border)}.trigger--has-value.sc-ds-select .trigger__label.sc-ds-select{color:var(--ds-select-fg-active)}.wrapper--error.sc-ds-select{--ds-interaction-border-width:var(--dimension-stroke-width-018);--ds-interaction-border-color:var(--color-border-bold-negative)}.trigger__prefix.sc-ds-select,.trigger__chevron.sc-ds-select{position:relative;z-index:2}.trigger__prefix.sc-ds-select{color:var(--ds-select-prefix-fg)}.trigger__chevron.sc-ds-select{color:var(--ds-select-chevron-fg)}.trigger__label.sc-ds-select{position:relative;z-index:2;flex:1 1 auto;text-align:left;color:inherit;transition:color var(--effect-motion-short-2)}.select-popup.sc-ds-select{color:var(--color-foreground-secondary)}.select-option[aria-selected='true'].sc-ds-select .ds-choice-item__icon.sc-ds-select{color:var(--color-foreground-primary)}.error-text.sc-ds-select{width:100%}.select-host--background-medium.sc-ds-select-h{--ds-select-fg:var(--color-foreground-on-medium-background-secondary);--ds-select-fg-active:var(--color-foreground-on-medium-background-primary);--ds-select-border:var(--color-border-on-medium-background-secondary)}.select-host--background-bold.sc-ds-select-h{--ds-select-fg:var(--color-foreground-on-bold-background-secondary);--ds-select-fg-active:var(--color-foreground-on-bold-background-primary);--ds-select-border:var(--color-border-on-bold-background-secondary)}.select-host--background-strong.sc-ds-select-h{--ds-select-fg:var(--color-foreground-on-strong-background-secondary);--ds-select-fg-active:var(--color-foreground-on-strong-background-primary);--ds-select-border:var(--color-border-on-strong-background-secondary)}.select-host--background-translucent.sc-ds-select-h{--ds-select-fg:var(--color-translucent-foreground-secondary);--ds-select-fg-active:var(--color-translucent-foreground-primary);--ds-select-border:var(--color-translucent-border-secondary)}.select-host--background-inverted.sc-ds-select-h{--ds-select-fg:var(--color-inverted-foreground-secondary);--ds-select-fg-active:var(--color-inverted-foreground-primary);--ds-select-border:var(--color-inverted-border-secondary)}.select-host--background-media.sc-ds-select-h{--ds-select-fg:var(--color-media-foreground-secondary);--ds-select-fg-active:var(--color-media-foreground-primary);--ds-select-border:var(--color-media-border-secondary)}.select-host--background-always-dark.sc-ds-select-h{--ds-select-fg:var(--color-always-dark-foreground-secondary);--ds-select-fg-active:var(--color-always-dark-foreground-primary);--ds-select-border:var(--color-always-dark-border-secondary)}`;const L={lg:"lg",md:"md",sm:"sm",xs:"xs"};let O=0;const D=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.dsChange=t(this,"dsChange");this.dsClear=t(this,"dsClear");this.dsOpenChange=t(this,"dsOpenChange");this.internals=this.attachInternals();this.options=[];this.sections=[];this.value="";this.open=false;this.disabled=false;this.required=false;this.requiredMessage=z;this.placeholder="Select";this.size="md";this.width="hug";this.isInactive=false;this.isLoading=false;this.activeFill=true;this.hasBorder=true;this.allowClear=true;this.clearLabel="Clear";this.searchable=false;this.searchPlaceholder="Search";this.noResultsText="No results found";this.loadingLabel="Loading";this.error=false;this.ariaLabel=null;this.activeIndex=-1;this.searchTerm="";this.formDisabled=false;this.position={x:0,y:0};this.positionReady=false;this.focusRingVisible=false;this.generatedId=`ds-select-${++O}`;this.listboxId=`${this.generatedId}-listbox`;this.errorId=`${this.generatedId}-error`;this.initialValue="";this.controller=this.createController();this.clearSelection=e=>{e.preventDefault();e.stopPropagation();this.value="";this.dsChange.emit("");this.dsClear.emit();const s=a(this.visibleOptions);this.activeIndex=s[0]??-1;this.controller.focusSearchOrTrigger()};this.handleListKeyDown=this.controller.handleListKeyDown;this.handleTriggerKeyDown=this.controller.handleTriggerKeyDown}createController(){const e=this;return new l({get host(){return e.el},generatedId:e.generatedId,get options(){return e.visibleOptions},get searchable(){return e.searchable},get isLoading(){return e.isLoading},get isDisabled(){return e.isDisabled},get preferredIndex(){return e.visibleOptions.findIndex((s=>s.value===e.value&&!s.isInactive))},get open(){return e.open},set open(s){e.open=s},get activeIndex(){return e.activeIndex},set activeIndex(s){e.activeIndex=s},get searchTerm(){return e.searchTerm},set searchTerm(s){e.searchTerm=s},get focusRingVisible(){return e.focusRingVisible},set focusRingVisible(s){e.focusRingVisible=s},get position(){return e.position},set position(s){e.position=s},get positionReady(){return e.positionReady},set positionReady(s){e.positionReady=s},selectOption:s=>e.selectOption(s)})}componentWillLoad(){this.initialValue=this.value;this.syncFormValue()}componentDidLoad(){this.controller.connect()}disconnectedCallback(){this.controller.disconnect()}syncFormValue(){const e=this.isDisabled;const s=this.hasSelection?this.value:"";this.internals.setFormValue(e?null:s);const t=this.required&&!e&&!s;C(this.internals,t,this.requiredMessage);this.controller.optionsChanged()}onLoadingChange(){this.controller.loadingChanged()}onOpenChange(e){this.dsOpenChange.emit(e);this.controller.openChanged(e)}onSearchTermChange(){this.controller.searchChanged()}onActiveIndexChange(){this.controller.activeIndexChanged()}formDisabledCallback(e){this.formDisabled=e;this.syncFormValue()}formResetCallback(){this.value=this.initialValue;this.closePopup()}formStateRestoreCallback(e){this.value=typeof e==="string"?e:""}async setFocus(){this.controller.setFocus()}get isDisabled(){return this.disabled||this.isInactive||this.formDisabled}get allSections(){return h(this.options,this.sections)}get allOptions(){return g(this.allSections)}get visibleSections(){return this.searchable?p(this.allSections,this.searchTerm):this.allSections}get visibleOptions(){return g(this.visibleSections)}get selectedOption(){return this.allOptions.find((e=>e.value===this.value))}get hasSelection(){return Boolean(this.selectedOption)}get activeOptionId(){return this.controller.activeOptionId}closePopup(e=false){this.controller.closePopup(e)}openPopup(e,s){this.controller.openPopup(e,s)}selectOption(e){if(e.isInactive||this.isLoading)return;this.value=e.value;this.dsChange.emit(this.value);this.controller.closePopup(true)}renderOption(e,s,t,o){const r=e.value===this.value;const n=s===this.activeIndex;return i(c,{size:this.size,id:`${this.generatedId}-option-${s}`,option:e,selected:r,active:n,focusRingVisible:this.focusRingVisible,usesSubtext:o,leading:t&&e.icon?i("span",{class:"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content","aria-hidden":"true"},i("ds-icon",{name:e.icon,size:this.size,color:"inherit"})):undefined,onHover:()=>{this.focusRingVisible=false;this.activeIndex=s},onSelect:()=>this.selectOption(e)})}render(){const e=this.isDisabled;const s=!this.hasSelection;const t=s?this.placeholder:this.selectedOption?.label;const r=I[this.size];const c=L[this.size];const a=f(this.allOptions);const l=u(this.allOptions);const h=this.error&&Boolean(this.errorMessage);const g=[this.ariaDescribedby,h?this.errorId:undefined].filter(Boolean).join(" ")||undefined;const p={position:"fixed",left:"0",top:"0",transform:`translate(${Math.round(this.position.x)}px, ${Math.round(this.position.y)}px)`,zIndex:"var(--dimension-z-index-floating)",visibility:this.positionReady?"visible":"hidden"};let m=0;return i(o,{key:"95499bc4ac872efe6d4e66d0e818bf014127b4c0",class:{"select-host":true,"ds-field-stack":true,"ds-control-inactive":e,[`ds-control--${this.size}`]:true,...j(this.width),[`select-host--background-${this.background}`]:!!this.background}},i("button",{key:"d5c6cba34c69f56424e0e34c18d522dbf46e2b94",ref:e=>{this.controller.setTriggerElement(e??null)},id:this.inputId??this.generatedId,type:"button",class:{trigger:true,"ds-control-frame":true,"ds-focus-ring-inset":true,"ds-interaction-fill":true,"ds-interaction-fill--selected":!e&&this.activeFill&&this.hasSelection,"trigger--bordered":this.hasBorder||this.error,"trigger--placeholder":s,"trigger--has-value":this.hasSelection,"wrapper--error":this.error,[`ds-control--${this.size}`]:true,...v(this.background)},disabled:e,role:"combobox","aria-haspopup":"listbox","aria-expanded":String(this.open),"aria-controls":this.open?this.listboxId:undefined,"aria-activedescendant":this.open&&!this.searchable?this.activeOptionId:undefined,"aria-label":this.ariaLabel,"aria-labelledby":this.ariaLabelledby,"aria-describedby":g,"aria-invalid":this.error?"true":undefined,"aria-required":this.required||undefined,"aria-busy":this.isLoading?"true":undefined,onClick:()=>this.open?this.closePopup():this.openPopup(false),onKeyDown:this.handleTriggerKeyDown},(this.icon||this.isLoading)&&i("span",{key:"f24d07ca97138fc9716b361a7e3da5576fa67e9b",class:"trigger__prefix ds-control-icon-box ds-interaction-fill__content","aria-hidden":"true"},this.isLoading?i("ds-loader",{size:c,color:"inherit"}):i("ds-icon",{name:this.icon,size:c,color:"inherit"})),i("ds-text",{key:"0736c5a7a6d72f635767b77a9a0a6b0589388f78",class:"trigger__label ds-control-label-box ds-interaction-fill__content",as:"span",variant:r,color:"inherit",lineTruncation:1},t),i("span",{key:"9c29fbefd490350136fee59530c658398e6ff74c",class:"trigger__chevron ds-control-icon-box ds-interaction-fill__content","aria-hidden":"true"},i("ds-icon",{key:"c345cbe6565b4c27a3e6de104a4cfc816e66215c",name:"ChevronDown",size:c,color:"inherit"}))),this.open&&i("div",{key:"73c098968625fa20139bc7aa80da52092d6c55a9",ref:e=>{this.controller.setPopupElement(e??null)},class:"select-popup ds-choice-popup",style:p},this.searchable&&i(n,{key:"4c2f8eb6cff8817ac3ca88739b8ad79f7bbbfb56",size:this.size,value:this.searchTerm,placeholder:this.searchPlaceholder,controls:this.listboxId,activeDescendant:this.activeOptionId,inputRef:this.controller.setSearchElement,clearLabel:this.clearLabel,onValueChange:e=>{this.searchTerm=e},onKeyDown:e=>this.handleListKeyDown(e)}),i("div",{key:"188b9795155f6c5fe7b047a704e768f721768a52",id:this.listboxId,class:"ds-choice-list",role:"listbox","aria-label":this.ariaLabel??this.placeholder,"aria-busy":this.isLoading?"true":undefined},this.isLoading?i("div",{class:"ds-choice-loading",role:"option","aria-selected":"false","aria-disabled":"true","aria-label":this.loadingLabel,"aria-live":"polite"},i("ds-loader",{size:this.size,color:"inherit"})):this.visibleOptions.length===0?i("div",{class:"ds-choice-empty ds-empty-region",role:"option","aria-selected":"false","aria-disabled":"true","aria-label":this.noResultsText,"aria-live":"polite"},i("ds-empty-state",{body:this.noResultsText})):this.visibleSections.map((e=>i("div",{class:{"ds-choice-section":true,"ds-chrome-column":true,"ds-chrome-space--sm":true,"ds-choice-section--divided":!!e.divider},role:e.header?"group":undefined,"aria-label":e.header},e.header&&i("ds-text",{class:`ds-choice-section__header ds-control--${this.size}`,as:"span",variant:F[this.size],emphasis:true,color:"primary","aria-hidden":"true"},e.header),e.options.map((e=>this.renderOption(e,m++,a,l))))))),this.allowClear&&this.hasSelection&&!this.isLoading&&i(d,{key:"9539dafb4f6f342d9d6587dffd7fb1830598ca17",size:this.size,clearLabel:this.clearLabel,onClear:this.clearSelection})),h&&i("ds-text",{key:"ac0570890a3d6b0c8688973176c6616d1dd2d83b",class:"error-text",as:"div",variant:"text-body-small",color:"negative",textId:this.errorId,role:"alert"},this.errorMessage))}static get formAssociated(){return true}get el(){return this}static get watchers(){return{value:[{syncFormValue:0}],disabled:[{syncFormValue:0}],isInactive:[{syncFormValue:0}],required:[{syncFormValue:0}],options:[{syncFormValue:0}],sections:[{syncFormValue:0}],isLoading:[{onLoadingChange:0}],open:[{onOpenChange:0}],searchTerm:[{onSearchTermChange:0}],activeIndex:[{onActiveIndexChange:0}]}}static get style(){return V()}},[66,"ds-select",{options:[16],sections:[16],value:[1025],open:[1540],name:[513],disabled:[516],required:[516],requiredMessage:[1,"required-message"],placeholder:[1],size:[1],width:[1],isInactive:[4,"is-inactive"],isLoading:[4,"is-loading"],activeFill:[4,"active-fill"],hasBorder:[4,"has-border"],icon:[1],allowClear:[4,"allow-clear"],clearLabel:[1,"clear-label"],searchable:[4],searchPlaceholder:[1,"search-placeholder"],noResultsText:[1,"no-results-text"],loadingLabel:[1,"loading-label"],background:[1],error:[4],errorMessage:[1,"error-message"],inputId:[1,"input-id"],ariaLabel:[1,"aria-label"],ariaLabelledby:[1,"aria-labelledby"],ariaDescribedby:[1,"aria-describedby"],activeIndex:[32],searchTerm:[32],formDisabled:[32],position:[32],positionReady:[32],focusRingVisible:[32],setFocus:[64]},undefined,{value:[{syncFormValue:0}],disabled:[{syncFormValue:0}],isInactive:[{syncFormValue:0}],required:[{syncFormValue:0}],options:[{syncFormValue:0}],sections:[{syncFormValue:0}],isLoading:[{onLoadingChange:0}],open:[{onOpenChange:0}],searchTerm:[{onSearchTermChange:0}],activeIndex:[{onActiveIndexChange:0}]}]);function R(){if(typeof customElements==="undefined"){return}const e=["ds-select","ds-badge","ds-button-unfilled","ds-empty-state","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-select":if(!customElements.get(r(e))){customElements.define(r(e),D)}break;case"ds-badge":if(!customElements.get(r(e))){m()}break;case"ds-button-unfilled":if(!customElements.get(r(e))){b()}break;case"ds-empty-state":if(!customElements.get(r(e))){y()}break;case"ds-icon":if(!customElements.get(r(e))){x()}break;case"ds-loader":if(!customElements.get(r(e))){w()}break;case"ds-text":if(!customElements.get(r(e))){k()}break;case"ds-tooltip":if(!customElements.get(r(e))){_()}break}}))}R();const S=D;const T=R;export{S as DsSelect,T as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-select.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["selectCss","ICON_SIZE","md","sm","xs","selectId","POSITION_RETRY_BUDGET","Select","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","options","sections","value","open","disabled","required","requiredMessage","DEFAULT_REQUIRED_MESSAGE","placeholder","size","width","isInactive","isLoading","activeFill","hasBorder","allowClear","clearLabel","searchable","searchPlaceholder","noResultsText","loadingLabel","error","ariaLabel","activeIndex","searchTerm","formDisabled","position","x","y","positionReady","focusRingVisible","generatedId","listboxId","errorId","triggerEl","popupEl","searchEl","initialValue","typeahead","typeaheadTimer","outsideHandler","repositionHandler","positionRetryRaf","clearSelection","event","preventDefault","stopPropagation","dsChange","emit","dsClear","enabled","enabledChoiceIndexes","visibleOptions","requestAnimationFrame","focus","handleTriggerKeyDown","includes","key","openPopup","length","metaKey","ctrlKey","altKey","handleTypeahead","handleListKeyDown","componentWillLoad","syncFormValue","componentDidLoad","onOpenChange","disconnectedCallback","cancelPositionRetry","unbindPopupListeners","clearTimeout","inactive","isDisabled","resolvedValue","hasSelection","internals","setFormValue","missing","setRequiredValidity","updatePosition","onLoadingChange","dsOpenChange","bindPopupListeners","schedulePositionUpdate","scrollActiveOptionIntoView","onSearchTermChange","onActiveIndexChange","formDisabledCallback","formResetCallback","closePopup","formStateRestoreCallback","state","setFocus","allSections","resolveChoiceSections","allOptions","flattenChoiceSections","visibleSections","filterChoiceSections","selectedOption","find","option","Boolean","activeOptionId","undefined","el","querySelector","scrollIntoView","block","inline","target","contains","document","addEventListener","window","removeEventListener","cancelAnimationFrame","onReady","remaining","attempt","isConnected","sectionPadding","resolveCssLengthPx","TOKEN_DEFAULTS","space050","style","minWidth","choicePopupMinWidth","offsetWidth","computeAnchoredPopupPosition","anchorRect","getBoundingClientRect","popupWidth","popupHeight","offsetHeight","side","align","sideOffsetPx","alignOffsetPx","resolveChoicePopupAlignOffset","sectionInsetPx","viewportPadPx","viewportWidth","innerWidth","viewportHeight","innerHeight","focusVisible","edge","selectedIndex","findIndex","restoreFocus","selectOption","moveActive","direction","moveChoiceIndex","setActiveEdge","normalized","toLocaleLowerCase","repeatedCharacter","every","character","match","findChoiceTypeaheadMatch","resetMs","resolveCssTimeMs","animationDurationMedium1","setTimeout","renderOption","index","usesIcons","usesSubtext","selected","active","h","ChoiceOptionRow","id","leading","icon","class","name","color","onHover","onSelect","render","showPlaceholder","label","textVariant","CONTROL_TEXT_VARIANT","iconSize","usesOptionIcons","choiceListUsesIcons","usesOptionSubtext","choiceListUsesSubtext","showError","errorMessage","describedBy","ariaDescribedby","filter","join","popupStyle","left","top","transform","Math","round","zIndex","visibility","flatIndex","Host","controlWidthClass","background","ref","element","inputId","type","trigger","choiceBackgroundClassMap","role","String","ariaLabelledby","onClick","onKeyDown","as","variant","lineTruncation","ChoiceSearch","controls","activeDescendant","inputRef","onValueChange","body","map","section","divider","header","emphasis","ChoiceFooter","onClear","textId"],"sources":["src/wc/components/Select/Select.css?tag=ds-select&encapsulation=scoped","src/wc/components/Select/Select.tsx"],"sourcesContent":["@import '../../utils/choice-list.css';\n@import '../../utils/control-width.css';\n@import '../../utils/search-control.css';\n@import '../../utils/typography.css';\n\n:host(.select-host) {\n display: inline-flex;\n flex-direction: column;\n gap: var(--dimension-space-050);\n position: relative;\n outline: none;\n --ds-select-fg: var(--color-foreground-secondary);\n --ds-select-fg-active: var(--color-foreground-primary);\n --ds-select-prefix-fg: var(--ds-select-fg);\n --ds-select-chevron-fg: var(--ds-select-fg);\n --ds-select-border: var(--color-border-secondary);\n}\n\n:host(.ds-control-width--fill),\n:host(.ds-control-width--fill) .trigger {\n width: 100%;\n}\n\n.trigger {\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n box-sizing: border-box;\n height: var(--ds-control-height, var(--dimension-size-400));\n padding: 0 var(--ds-control-padding-inline, var(--dimension-space-075));\n gap: var(--ds-control-gap, var(--dimension-space-050));\n background: transparent;\n border: none;\n border-radius: var(--ds-control-radius, var(--dimension-radius-025));\n color: var(--ds-select-fg);\n cursor: default;\n font-family: inherit;\n -webkit-user-select: none;\n user-select: none;\n overflow: hidden;\n transition: color var(--effect-motion-short-2);\n}\n\n.trigger--bordered {\n --ds-interaction-border-width: var(--dimension-stroke-width-012);\n --ds-interaction-border-color: var(--ds-select-border);\n}\n\n.trigger--has-value .trigger__label {\n color: var(--ds-select-fg-active);\n}\n\n.wrapper--error {\n --ds-interaction-border-width: var(--dimension-stroke-width-018);\n --ds-interaction-border-color: var(--color-border-bold-negative);\n}\n\n.trigger__prefix,\n.trigger__chevron {\n position: relative;\n z-index: 2;\n flex-shrink: 0;\n width: var(--ds-control-icon, var(--dimension-iconography-md));\n height: var(--ds-control-icon, var(--dimension-iconography-md));\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.trigger__prefix {\n color: var(--ds-select-prefix-fg);\n}\n\n.trigger__chevron {\n color: var(--ds-select-chevron-fg);\n}\n\n.trigger__label {\n position: relative;\n z-index: 2;\n flex: 1 1 auto;\n min-width: 0;\n padding: 0 var(--ds-control-label-inset, var(--dimension-space-025));\n text-align: left;\n color: inherit;\n transition: color var(--effect-motion-short-2);\n}\n\n.select-popup {\n color: var(--color-foreground-secondary);\n}\n\n.select-option[aria-selected='true'] .ds-choice-item__icon {\n color: var(--color-foreground-primary);\n}\n\n.error-text {\n width: 100%;\n}\n\n:host(.select-host--background-medium) {\n --ds-select-fg: var(--color-foreground-on-medium-background-secondary);\n --ds-select-fg-active: var(--color-foreground-on-medium-background-primary);\n --ds-select-border: var(--color-border-on-medium-background-secondary);\n}\n\n:host(.select-host--background-bold) {\n --ds-select-fg: var(--color-foreground-on-bold-background-secondary);\n --ds-select-fg-active: var(--color-foreground-on-bold-background-primary);\n --ds-select-border: var(--color-border-on-bold-background-secondary);\n}\n\n:host(.select-host--background-strong) {\n --ds-select-fg: var(--color-foreground-on-strong-background-secondary);\n --ds-select-fg-active: var(--color-foreground-on-strong-background-primary);\n --ds-select-border: var(--color-border-on-strong-background-secondary);\n}\n\n:host(.select-host--background-translucent) {\n --ds-select-fg: var(--color-translucent-foreground-secondary);\n --ds-select-fg-active: var(--color-translucent-foreground-primary);\n --ds-select-border: var(--color-translucent-border-secondary);\n}\n\n:host(.select-host--background-inverted) {\n --ds-select-fg: var(--color-inverted-foreground-secondary);\n --ds-select-fg-active: var(--color-inverted-foreground-primary);\n --ds-select-border: var(--color-inverted-border-secondary);\n}\n\n:host(.select-host--background-media) {\n --ds-select-fg: var(--color-media-foreground-secondary);\n --ds-select-fg-active: var(--color-media-foreground-primary);\n --ds-select-border: var(--color-media-border-secondary);\n}\n\n:host(.select-host--background-always-dark) {\n --ds-select-fg: var(--color-always-dark-foreground-secondary);\n --ds-select-fg-active: var(--color-always-dark-foreground-primary);\n --ds-select-border: var(--color-always-dark-border-secondary);\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n controlWidthClass,\n CONTROL_TEXT_VARIANT,\n choicePopupMinWidth,\n resolveCssLengthPx,\n resolveCssTimeMs,\n resolveChoicePopupAlignOffset,\n TOKEN_DEFAULTS,\n DEFAULT_REQUIRED_MESSAGE,\n setRequiredValidity,\n type ControlWidth,\n} from '../../utils';\nimport { computeAnchoredPopupPosition } from '../../utils/anchored-popup';\nimport { ChoiceFooter, ChoiceOptionRow, ChoiceSearch } from '../../utils/choice-list-parts';\nimport {\n choiceBackgroundClassMap,\n choiceListUsesIcons,\n choiceListUsesSubtext,\n enabledChoiceIndexes,\n filterChoiceSections,\n findChoiceTypeaheadMatch,\n flattenChoiceSections,\n moveChoiceIndex,\n resolveChoiceSections,\n type ChoiceBackground,\n type ChoiceOption,\n type ChoiceSection,\n} from '../../utils/choice-list';\n\nexport type SelectOption = ChoiceOption;\nexport type SelectSection = ChoiceSection;\nexport type SelectBackground = ChoiceBackground;\nexport type SelectSize = 'md' | 'sm' | 'xs';\nexport type SelectWidth = ControlWidth;\n\nconst ICON_SIZE: Record<SelectSize, 'md' | 'sm' | 'xs'> = {\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\nlet selectId = 0;\n/** rAF retries while the conditionally rendered popup mounts. */\nconst POSITION_RETRY_BUDGET = 8;\n\n@Component({\n tag: 'ds-select',\n styleUrl: 'Select.css',\n scoped: true,\n formAssociated: true,\n})\nexport class Select {\n @Element() el!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n /** Flat choices. Assign arrays through the JavaScript property. */\n @Prop() options: SelectOption[] = [];\n /** Grouped choices; takes precedence over options. Assign through JavaScript. */\n @Prop() sections: SelectSection[] = [];\n /** Selected string value. Unknown values render the placeholder and are not submitted. */\n @Prop({ mutable: true }) value: string = '';\n /** Controlled popup visibility. */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n /** Native form field name. */\n @Prop({ reflect: true }) name: string | undefined;\n /** Native disabled state. */\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Require one valid selected value. */\n @Prop({ reflect: true }) required: boolean = false;\n /** Validation message used when required is missing. */\n @Prop() requiredMessage: string = DEFAULT_REQUIRED_MESSAGE;\n /** Trigger text shown when no valid value is selected. */\n @Prop() placeholder: string = 'Select';\n /** Control density. */\n @Prop() size: SelectSize = 'md';\n /** Width fit — hug content (default) or fill the parent. */\n @Prop() width: SelectWidth = 'hug';\n /** Shared inactive treatment; removes interaction and form submission. */\n @Prop() isInactive: boolean = false;\n /** Replace the prefix with a loader and disable option interaction. */\n @Prop() isLoading: boolean = false;\n /** Show the selected interaction fill when a valid value exists. */\n @Prop() activeFill: boolean = true;\n /** Show the surface-aware inset border. */\n @Prop() hasBorder: boolean = true;\n /** Optional trigger prefix icon name. */\n @Prop() icon: string | undefined;\n /** Show the clear footer action when a value exists. */\n @Prop() allowClear: boolean = true;\n /** Localized clear action label. */\n @Prop() clearLabel: string = 'Clear';\n /** Show immediate local filtering over option labels, subtext, and section headings. */\n @Prop() searchable: boolean = false;\n /** Localized search-field placeholder and accessible name. */\n @Prop() searchPlaceholder: string = 'Search';\n /** Localized empty-filter result text. */\n @Prop() noResultsText: string = 'No results found';\n /** Accessible loading status label. */\n @Prop() loadingLabel: string = 'Loading';\n /** Actual parent surface context; omit on primary and secondary surfaces. */\n @Prop() background: SelectBackground | undefined;\n /** Show invalid visual state. */\n @Prop() error: boolean = false;\n /** Error text rendered below the trigger when error is true. */\n @Prop() errorMessage: string | undefined;\n /** ID applied to the internal combobox trigger for external labels. */\n @Prop() inputId: string | undefined;\n /** Direct accessible name when no external label is available. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** IDs of elements that label the combobox. */\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined;\n /** Additional IDs that describe the combobox. */\n @Prop({ attribute: 'aria-describedby' }) ariaDescribedby: string | undefined;\n\n /** Emitted after user selection or clearing with the next scalar value. */\n @Event() dsChange!: EventEmitter<string>;\n /** Emitted after the footer clear action. */\n @Event() dsClear!: EventEmitter<void>;\n /** Emitted whenever popup visibility changes. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n\n @State() private activeIndex = -1;\n @State() private searchTerm = '';\n @State() private formDisabled = false;\n @State() private position = { x: 0, y: 0 };\n @State() private positionReady = false;\n @State() private focusRingVisible = false;\n\n private readonly generatedId = `ds-select-${++selectId}`;\n private readonly listboxId = `${this.generatedId}-listbox`;\n private readonly errorId = `${this.generatedId}-error`;\n private triggerEl: HTMLButtonElement | null = null;\n private popupEl: HTMLDivElement | null = null;\n private searchEl: HTMLInputElement | null = null;\n private initialValue = '';\n private typeahead = '';\n private typeaheadTimer: ReturnType<typeof setTimeout> | null = null;\n private outsideHandler: ((event: MouseEvent) => void) | null = null;\n private repositionHandler: (() => void) | null = null;\n private positionRetryRaf: number | null = null;\n\n componentWillLoad() {\n this.initialValue = this.value;\n this.syncFormValue();\n }\n\n componentDidLoad() {\n if (this.open) this.onOpenChange(true);\n }\n\n disconnectedCallback() {\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n }\n\n @Watch('value')\n @Watch('disabled')\n @Watch('isInactive')\n @Watch('required')\n @Watch('options')\n @Watch('sections')\n syncFormValue() {\n const inactive = this.isDisabled;\n const resolvedValue = this.hasSelection ? this.value : '';\n this.internals.setFormValue(inactive ? null : resolvedValue);\n const missing = this.required && !inactive && !resolvedValue;\n setRequiredValidity(this.internals, missing, this.requiredMessage);\n if (this.open) {\n const enabled = enabledChoiceIndexes(this.visibleOptions);\n if (!enabled.includes(this.activeIndex)) this.activeIndex = enabled[0] ?? -1;\n requestAnimationFrame(() => this.updatePosition());\n }\n }\n\n @Watch('isLoading')\n onLoadingChange() {\n if (this.open) requestAnimationFrame(() => this.updatePosition());\n }\n\n @Watch('open')\n onOpenChange(open: boolean) {\n this.dsOpenChange.emit(open);\n if (open) {\n this.bindPopupListeners();\n this.schedulePositionUpdate(() => {\n this.scrollActiveOptionIntoView();\n if (this.searchable) this.searchEl?.focus();\n });\n } else {\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n this.searchTerm = '';\n this.positionReady = false;\n }\n }\n\n @Watch('searchTerm')\n onSearchTermChange() {\n const enabled = enabledChoiceIndexes(this.visibleOptions);\n this.activeIndex = enabled[0] ?? -1;\n requestAnimationFrame(() => {\n this.updatePosition();\n this.scrollActiveOptionIntoView();\n });\n }\n\n @Watch('activeIndex')\n onActiveIndexChange() {\n requestAnimationFrame(() => this.scrollActiveOptionIntoView());\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.value = this.initialValue;\n this.closePopup();\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n this.value = typeof state === 'string' ? state : '';\n }\n\n @Method()\n async setFocus() {\n this.triggerEl?.focus();\n }\n\n private get isDisabled(): boolean {\n return this.disabled || this.isInactive || this.formDisabled;\n }\n\n private get allSections(): SelectSection[] {\n return resolveChoiceSections(this.options, this.sections);\n }\n\n private get allOptions(): SelectOption[] {\n return flattenChoiceSections(this.allSections);\n }\n\n private get visibleSections(): SelectSection[] {\n return this.searchable\n ? filterChoiceSections(this.allSections, this.searchTerm)\n : this.allSections;\n }\n\n private get visibleOptions(): SelectOption[] {\n return flattenChoiceSections(this.visibleSections);\n }\n\n private get selectedOption(): SelectOption | undefined {\n return this.allOptions.find(option => option.value === this.value);\n }\n\n private get hasSelection(): boolean {\n return Boolean(this.selectedOption);\n }\n\n private get activeOptionId(): string | undefined {\n return !this.isLoading && this.activeIndex >= 0\n ? `${this.generatedId}-option-${this.activeIndex}`\n : undefined;\n }\n\n private scrollActiveOptionIntoView() {\n if (!this.open || !this.activeOptionId) return;\n this.el\n .querySelector<HTMLElement>(`#${this.activeOptionId}`)\n ?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n\n private bindPopupListeners() {\n this.unbindPopupListeners();\n this.outsideHandler = event => {\n const target = event.target as Node;\n if (this.el.contains(target)) return;\n this.closePopup();\n };\n this.repositionHandler = () => this.updatePosition();\n document.addEventListener('mousedown', this.outsideHandler, true);\n window.addEventListener('scroll', this.repositionHandler, true);\n window.addEventListener('resize', this.repositionHandler);\n }\n\n private unbindPopupListeners() {\n if (this.outsideHandler) {\n document.removeEventListener('mousedown', this.outsideHandler, true);\n this.outsideHandler = null;\n }\n if (this.repositionHandler) {\n window.removeEventListener('scroll', this.repositionHandler, true);\n window.removeEventListener('resize', this.repositionHandler);\n this.repositionHandler = null;\n }\n }\n\n private cancelPositionRetry() {\n if (this.positionRetryRaf !== null) {\n cancelAnimationFrame(this.positionRetryRaf);\n this.positionRetryRaf = null;\n }\n }\n\n /** Retry until the conditionally rendered popup is mounted and measurable. */\n private schedulePositionUpdate(onReady?: () => void) {\n if (!this.open) return;\n\n this.cancelPositionRetry();\n this.positionReady = false;\n let remaining = POSITION_RETRY_BUDGET;\n\n const attempt = () => {\n this.positionRetryRaf = null;\n if (!this.open) return;\n\n if (this.updatePosition()) {\n onReady?.();\n return;\n }\n\n if (remaining > 0) {\n remaining -= 1;\n this.positionRetryRaf = requestAnimationFrame(attempt);\n }\n };\n\n this.positionRetryRaf = requestAnimationFrame(attempt);\n }\n\n /** @returns `true` when the current popup was found and positioned. */\n private updatePosition(): boolean {\n if (\n !this.open ||\n !this.triggerEl ||\n !this.popupEl ||\n !this.popupEl.isConnected ||\n !this.el.contains(this.popupEl)\n ) return false;\n const sectionPadding = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n this.popupEl.style.minWidth = `${choicePopupMinWidth(this.triggerEl.offsetWidth, sectionPadding)}px`;\n this.position = computeAnchoredPopupPosition({\n anchorRect: this.triggerEl.getBoundingClientRect(),\n popupWidth: this.popupEl.offsetWidth,\n popupHeight: this.popupEl.offsetHeight,\n side: 'bottom',\n align: 'start',\n sideOffsetPx: sectionPadding,\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align: 'start',\n alignOffsetPx: 0,\n sectionInsetPx: sectionPadding,\n }),\n viewportPadPx: sectionPadding,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n });\n this.positionReady = true;\n return true;\n }\n\n private openPopup(focusVisible: boolean, edge?: 'first' | 'last') {\n if (this.isDisabled || (!this.allOptions.length && !this.isLoading)) return;\n const enabled = enabledChoiceIndexes(this.visibleOptions);\n const selectedIndex = this.visibleOptions.findIndex(\n option => option.value === this.value && !option.isInactive,\n );\n this.activeIndex =\n edge === 'last'\n ? (enabled[enabled.length - 1] ?? -1)\n : selectedIndex >= 0\n ? selectedIndex\n : (enabled[0] ?? -1);\n this.focusRingVisible = focusVisible;\n this.open = true;\n }\n\n private closePopup(restoreFocus = false) {\n if (!this.open) return;\n this.open = false;\n if (restoreFocus) requestAnimationFrame(() => this.triggerEl?.focus());\n }\n\n private selectOption(option: SelectOption) {\n if (option.isInactive || this.isLoading) return;\n this.value = option.value;\n this.dsChange.emit(this.value);\n this.closePopup(true);\n }\n\n private clearSelection = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.value = '';\n this.dsChange.emit('');\n this.dsClear.emit();\n const enabled = enabledChoiceIndexes(this.visibleOptions);\n this.activeIndex = enabled[0] ?? -1;\n requestAnimationFrame(() => (this.searchable ? this.searchEl?.focus() : this.triggerEl?.focus()));\n };\n\n private moveActive(direction: 1 | -1) {\n this.activeIndex = moveChoiceIndex(this.visibleOptions, this.activeIndex, direction);\n }\n\n private setActiveEdge(edge: 'first' | 'last') {\n const enabled = enabledChoiceIndexes(this.visibleOptions);\n this.activeIndex =\n edge === 'first' ? (enabled[0] ?? -1) : (enabled[enabled.length - 1] ?? -1);\n }\n\n private handleTypeahead(key: string) {\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n this.focusRingVisible = true;\n const normalized = key.toLocaleLowerCase();\n const repeatedCharacter =\n this.typeahead.length > 0 &&\n [...this.typeahead].every(character => character === normalized);\n this.typeahead = repeatedCharacter ? normalized : `${this.typeahead}${normalized}`;\n const match = findChoiceTypeaheadMatch(this.visibleOptions, this.typeahead, this.activeIndex);\n if (match >= 0) this.activeIndex = match;\n const resetMs = resolveCssTimeMs(\n TOKEN_DEFAULTS.animationDurationMedium1,\n TOKEN_DEFAULTS.animationDurationMedium1,\n );\n this.typeaheadTimer = setTimeout(() => {\n this.typeahead = '';\n this.typeaheadTimer = null;\n }, resetMs);\n }\n\n private handleListKeyDown(event: KeyboardEvent) {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.focusRingVisible = true;\n this.moveActive(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.focusRingVisible = true;\n this.moveActive(-1);\n break;\n case 'Home':\n event.preventDefault();\n this.focusRingVisible = true;\n this.setActiveEdge('first');\n break;\n case 'End':\n event.preventDefault();\n this.focusRingVisible = true;\n this.setActiveEdge('last');\n break;\n case 'Enter':\n case ' ': {\n if (event.key === ' ' && this.searchable && event.target === this.searchEl) break;\n event.preventDefault();\n const option = this.visibleOptions[this.activeIndex];\n if (option) this.selectOption(option);\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.closePopup(true);\n break;\n case 'Tab':\n this.closePopup();\n break;\n default:\n if (!this.searchable && event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey) {\n this.handleTypeahead(event.key);\n }\n }\n }\n\n private handleTriggerKeyDown = (event: KeyboardEvent) => {\n if (!this.open) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n this.openPopup(true, event.key === 'ArrowUp' ? 'last' : 'first');\n } else if (event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey) {\n event.preventDefault();\n this.openPopup(true);\n if (this.searchable) {\n this.searchTerm = event.key;\n } else {\n this.handleTypeahead(event.key);\n }\n }\n return;\n }\n this.handleListKeyDown(event);\n };\n\n private renderOption(\n option: SelectOption,\n index: number,\n usesIcons: boolean,\n usesSubtext: boolean,\n ) {\n const selected = option.value === this.value;\n const active = index === this.activeIndex;\n return (\n <ChoiceOptionRow\n id={`${this.generatedId}-option-${index}`}\n option={option}\n selected={selected}\n active={active}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={usesSubtext}\n leading={usesIcons && option.icon ? (\n <span class=\"ds-choice-item__icon ds-interaction-fill__content\" aria-hidden=\"true\">\n <ds-icon name={option.icon} size=\"md\" color=\"inherit\" />\n </span>\n ) : undefined}\n onHover={() => {\n this.focusRingVisible = false;\n this.activeIndex = index;\n }}\n onSelect={() => this.selectOption(option)}\n />\n );\n }\n\n render() {\n const inactive = this.isDisabled;\n const showPlaceholder = !this.hasSelection;\n const label = showPlaceholder ? this.placeholder : this.selectedOption?.label;\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n const usesOptionIcons = choiceListUsesIcons(this.allOptions);\n const usesOptionSubtext = choiceListUsesSubtext(this.allOptions);\n const showError = this.error && Boolean(this.errorMessage);\n const describedBy = [this.ariaDescribedby, showError ? this.errorId : undefined]\n .filter(Boolean)\n .join(' ') || undefined;\n const popupStyle = {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: `translate(${Math.round(this.position.x)}px, ${Math.round(this.position.y)}px)`,\n zIndex: 'var(--dimension-z-index-floating)',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n let flatIndex = 0;\n\n return (\n <Host\n class={{\n 'select-host': true,\n 'ds-control-inactive': inactive,\n 'ds-control--md': this.size === 'md',\n 'ds-control--sm': this.size === 'sm',\n 'ds-control--xs': this.size === 'xs',\n ...controlWidthClass(this.width),\n [`select-host--background-${this.background}`]: !!this.background,\n }}\n >\n <button\n ref={element => {\n this.triggerEl = (element as HTMLButtonElement) ?? null;\n }}\n id={this.inputId ?? this.generatedId}\n type=\"button\"\n class={{\n trigger: true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected':\n !inactive && this.activeFill && this.hasSelection,\n 'trigger--bordered': this.hasBorder || this.error,\n 'trigger--placeholder': showPlaceholder,\n 'trigger--has-value': this.hasSelection,\n 'wrapper--error': this.error,\n [`ds-control--${this.size}`]: true,\n ...choiceBackgroundClassMap(this.background),\n }}\n disabled={inactive}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={String(this.open)}\n aria-controls={this.open ? this.listboxId : undefined}\n aria-activedescendant={this.open && !this.searchable ? this.activeOptionId : undefined}\n aria-label={this.ariaLabel}\n aria-labelledby={this.ariaLabelledby}\n aria-describedby={describedBy}\n aria-invalid={this.error ? 'true' : undefined}\n aria-required={this.required || undefined}\n aria-busy={this.isLoading ? 'true' : undefined}\n onClick={() => (this.open ? this.closePopup() : this.openPopup(false))}\n onKeyDown={this.handleTriggerKeyDown}\n >\n {(this.icon || this.isLoading) && (\n <span class=\"trigger__prefix ds-interaction-fill__content\" aria-hidden=\"true\">\n {this.isLoading ? (\n <ds-loader size={iconSize} color=\"inherit\" />\n ) : (\n <ds-icon name={this.icon} size={iconSize} color=\"inherit\" />\n )}\n </span>\n )}\n <ds-text\n class=\"trigger__label ds-interaction-fill__content\"\n as=\"span\"\n variant={textVariant}\n color=\"inherit\"\n lineTruncation={1}\n >\n {label}\n </ds-text>\n <span class=\"trigger__chevron ds-interaction-fill__content\" aria-hidden=\"true\">\n <ds-icon name=\"ChevronDown\" size={iconSize} color=\"inherit\" />\n </span>\n </button>\n\n {this.open && (\n <div\n ref={element => {\n this.popupEl = (element as HTMLDivElement) ?? null;\n }}\n class=\"select-popup ds-choice-popup\"\n style={popupStyle}\n >\n {this.searchable && (\n <ChoiceSearch\n value={this.searchTerm}\n placeholder={this.searchPlaceholder}\n controls={this.listboxId}\n activeDescendant={this.activeOptionId}\n inputRef={element => {\n this.searchEl = element;\n }}\n clearLabel={this.clearLabel}\n onValueChange={value => {\n this.searchTerm = value;\n }}\n onKeyDown={event => this.handleListKeyDown(event)}\n />\n )}\n <div\n id={this.listboxId}\n class=\"ds-choice-list\"\n role=\"listbox\"\n aria-label={this.ariaLabel ?? this.placeholder}\n aria-busy={this.isLoading ? 'true' : undefined}\n >\n {this.isLoading ? (\n <div\n class=\"ds-choice-loading\"\n role=\"option\"\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.loadingLabel}\n aria-live=\"polite\"\n >\n <ds-loader size=\"md\" color=\"inherit\" />\n </div>\n ) : this.visibleOptions.length === 0 ? (\n <div\n class=\"ds-choice-empty\"\n role=\"option\"\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.noResultsText}\n aria-live=\"polite\"\n >\n <ds-empty-state body={this.noResultsText} />\n </div>\n ) : (\n this.visibleSections.map(section => (\n <div\n class={{\n 'ds-choice-section': true,\n 'ds-choice-section--divided': !!section.divider,\n }}\n role={section.header ? 'group' : undefined}\n aria-label={section.header}\n >\n {section.header && (\n <ds-text\n class=\"ds-choice-section__header ds-control--md\"\n as=\"span\"\n variant=\"text-body-small\"\n emphasis\n color=\"primary\"\n aria-hidden=\"true\"\n >\n {section.header}\n </ds-text>\n )}\n {section.options.map(option => this.renderOption(\n option,\n flatIndex++,\n usesOptionIcons,\n usesOptionSubtext,\n ))}\n </div>\n ))\n )}\n </div>\n {this.allowClear && this.hasSelection && !this.isLoading && (\n <ChoiceFooter clearLabel={this.clearLabel} onClear={this.clearSelection} />\n )}\n </div>\n )}\n\n {showError && (\n <ds-text\n class=\"error-text\"\n as=\"div\"\n variant=\"text-body-small\"\n color=\"negative\"\n textId={this.errorId}\n role=\"alert\"\n >\n {this.errorMessage}\n </ds-text>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["selectCss","ICON_SIZE","lg","md","sm","xs","selectId","Select","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","options","sections","value","open","disabled","required","requiredMessage","DEFAULT_REQUIRED_MESSAGE","placeholder","size","width","isInactive","isLoading","activeFill","hasBorder","allowClear","clearLabel","searchable","searchPlaceholder","noResultsText","loadingLabel","error","ariaLabel","activeIndex","searchTerm","formDisabled","position","x","y","positionReady","focusRingVisible","generatedId","listboxId","errorId","initialValue","controller","createController","clearSelection","event","preventDefault","stopPropagation","dsChange","emit","dsClear","enabled","enabledChoiceIndexes","visibleOptions","focusSearchOrTrigger","handleListKeyDown","handleTriggerKeyDown","owner","SelectController","host","el","isDisabled","preferredIndex","findIndex","option","selectOption","componentWillLoad","syncFormValue","componentDidLoad","connect","disconnectedCallback","disconnect","inactive","resolvedValue","hasSelection","internals","setFormValue","missing","setRequiredValidity","optionsChanged","onLoadingChange","loadingChanged","onOpenChange","dsOpenChange","openChanged","onSearchTermChange","searchChanged","onActiveIndexChange","activeIndexChanged","formDisabledCallback","formResetCallback","closePopup","formStateRestoreCallback","state","setFocus","allSections","resolveChoiceSections","allOptions","flattenChoiceSections","visibleSections","filterChoiceSections","selectedOption","find","Boolean","activeOptionId","restoreFocus","openPopup","focusVisible","edge","renderOption","index","usesIcons","usesSubtext","selected","active","h","ChoiceOptionRow","id","leading","icon","class","name","color","undefined","onHover","onSelect","render","showPlaceholder","label","textVariant","CONTROL_TEXT_VARIANT","iconSize","usesOptionIcons","choiceListUsesIcons","usesOptionSubtext","choiceListUsesSubtext","showError","errorMessage","describedBy","ariaDescribedby","filter","join","popupStyle","left","top","transform","Math","round","zIndex","visibility","flatIndex","Host","key","controlWidthClass","background","ref","element","setTriggerElement","inputId","type","trigger","choiceBackgroundClassMap","role","String","ariaLabelledby","onClick","onKeyDown","as","variant","lineTruncation","setPopupElement","style","ChoiceSearch","controls","activeDescendant","inputRef","setSearchElement","onValueChange","length","body","map","section","divider","header","CONTROL_SUPPORTING_TEXT_VARIANT","emphasis","ChoiceFooter","onClear","textId"],"sources":["src/wc/components/Select/Select.css?tag=ds-select&encapsulation=scoped","src/wc/components/Select/Select.tsx"],"sourcesContent":["@import '../../utils/choice-list.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/control-width.css';\n@import '../../utils/field-stack.css';\n@import '../../utils/search-control.css';\n@import '../../utils/typography.css';\n\n:host(.select-host) {\n display: inline-flex;\n position: relative;\n outline: none;\n --ds-select-fg: var(--color-foreground-secondary);\n --ds-select-fg-active: var(--color-foreground-primary);\n --ds-select-prefix-fg: var(--ds-select-fg);\n --ds-select-chevron-fg: var(--ds-select-fg);\n --ds-select-border: var(--color-border-secondary);\n}\n\n:host(.ds-control-width--fill),\n:host(.ds-control-width--fill) .trigger {\n width: 100%;\n}\n\n.trigger {\n justify-content: flex-start;\n background: transparent;\n border: none;\n border-radius: var(--ds-control-radius, var(--dimension-radius-025));\n color: var(--ds-select-fg);\n cursor: default;\n font-family: inherit;\n -webkit-user-select: none;\n user-select: none;\n overflow: hidden;\n transition: color var(--effect-motion-short-2);\n}\n\n.trigger--bordered {\n --ds-interaction-border-width: var(--dimension-stroke-width-012);\n --ds-interaction-border-color: var(--ds-select-border);\n}\n\n.trigger--has-value .trigger__label {\n color: var(--ds-select-fg-active);\n}\n\n.wrapper--error {\n --ds-interaction-border-width: var(--dimension-stroke-width-018);\n --ds-interaction-border-color: var(--color-border-bold-negative);\n}\n\n.trigger__prefix,\n.trigger__chevron {\n position: relative;\n z-index: 2;\n}\n\n.trigger__prefix {\n color: var(--ds-select-prefix-fg);\n}\n\n.trigger__chevron {\n color: var(--ds-select-chevron-fg);\n}\n\n.trigger__label {\n position: relative;\n z-index: 2;\n flex: 1 1 auto;\n text-align: left;\n color: inherit;\n transition: color var(--effect-motion-short-2);\n}\n\n.select-popup {\n color: var(--color-foreground-secondary);\n}\n\n.select-option[aria-selected='true'] .ds-choice-item__icon {\n color: var(--color-foreground-primary);\n}\n\n.error-text {\n width: 100%;\n}\n\n:host(.select-host--background-medium) {\n --ds-select-fg: var(--color-foreground-on-medium-background-secondary);\n --ds-select-fg-active: var(--color-foreground-on-medium-background-primary);\n --ds-select-border: var(--color-border-on-medium-background-secondary);\n}\n\n:host(.select-host--background-bold) {\n --ds-select-fg: var(--color-foreground-on-bold-background-secondary);\n --ds-select-fg-active: var(--color-foreground-on-bold-background-primary);\n --ds-select-border: var(--color-border-on-bold-background-secondary);\n}\n\n:host(.select-host--background-strong) {\n --ds-select-fg: var(--color-foreground-on-strong-background-secondary);\n --ds-select-fg-active: var(--color-foreground-on-strong-background-primary);\n --ds-select-border: var(--color-border-on-strong-background-secondary);\n}\n\n:host(.select-host--background-translucent) {\n --ds-select-fg: var(--color-translucent-foreground-secondary);\n --ds-select-fg-active: var(--color-translucent-foreground-primary);\n --ds-select-border: var(--color-translucent-border-secondary);\n}\n\n:host(.select-host--background-inverted) {\n --ds-select-fg: var(--color-inverted-foreground-secondary);\n --ds-select-fg-active: var(--color-inverted-foreground-primary);\n --ds-select-border: var(--color-inverted-border-secondary);\n}\n\n:host(.select-host--background-media) {\n --ds-select-fg: var(--color-media-foreground-secondary);\n --ds-select-fg-active: var(--color-media-foreground-primary);\n --ds-select-border: var(--color-media-border-secondary);\n}\n\n:host(.select-host--background-always-dark) {\n --ds-select-fg: var(--color-always-dark-foreground-secondary);\n --ds-select-fg-active: var(--color-always-dark-foreground-primary);\n --ds-select-border: var(--color-always-dark-border-secondary);\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n controlWidthClass,\n CONTROL_SUPPORTING_TEXT_VARIANT,\n CONTROL_TEXT_VARIANT,\n DEFAULT_REQUIRED_MESSAGE,\n setRequiredValidity,\n type ControlWidth,\n} from '../../utils';\nimport { ChoiceFooter, ChoiceOptionRow, ChoiceSearch } from '../../utils/choice-list-parts';\nimport {\n choiceBackgroundClassMap,\n choiceListUsesIcons,\n choiceListUsesSubtext,\n enabledChoiceIndexes,\n filterChoiceSections,\n flattenChoiceSections,\n resolveChoiceSections,\n type ChoiceBackground,\n type ChoiceOption,\n type ChoiceSection,\n} from '../../utils/choice-list';\nimport { SelectController } from '../../utils/select-controller';\n\nexport type SelectOption = ChoiceOption;\nexport type SelectSection = ChoiceSection;\nexport type SelectBackground = ChoiceBackground;\nexport type SelectSize = 'lg' | 'md' | 'sm' | 'xs';\nexport type SelectWidth = ControlWidth;\n\nconst ICON_SIZE: Record<SelectSize, 'lg' | 'md' | 'sm' | 'xs'> = {\n lg: 'lg',\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\nlet selectId = 0;\n\n@Component({\n tag: 'ds-select',\n styleUrl: 'Select.css',\n scoped: true,\n formAssociated: true,\n})\nexport class Select {\n @Element() el!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n /** Flat choices. Assign arrays through the JavaScript property. */\n @Prop() options: SelectOption[] = [];\n /** Grouped choices; takes precedence over options. Assign through JavaScript. */\n @Prop() sections: SelectSection[] = [];\n /** Selected string value. Unknown values render the placeholder and are not submitted. */\n @Prop({ mutable: true }) value: string = '';\n /** Controlled popup visibility. */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n /** Native form field name. */\n @Prop({ reflect: true }) name: string | undefined;\n /** Native disabled state. */\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Require one valid selected value. */\n @Prop({ reflect: true }) required: boolean = false;\n /** Validation message used when required is missing. */\n @Prop() requiredMessage: string = DEFAULT_REQUIRED_MESSAGE;\n /** Trigger text shown when no valid value is selected. */\n @Prop() placeholder: string = 'Select';\n /** Control density. */\n @Prop() size: SelectSize = 'md';\n /** Width fit — hug content (default) or fill the parent. */\n @Prop() width: SelectWidth = 'hug';\n /** Shared inactive treatment; removes interaction and form submission. */\n @Prop() isInactive: boolean = false;\n /** Replace the prefix with a loader and disable option interaction. */\n @Prop() isLoading: boolean = false;\n /** Show the selected interaction fill when a valid value exists. */\n @Prop() activeFill: boolean = true;\n /** Show the surface-aware inset border. */\n @Prop() hasBorder: boolean = true;\n /** Optional trigger prefix icon name. */\n @Prop() icon: string | undefined;\n /** Show the clear footer action when a value exists. */\n @Prop() allowClear: boolean = true;\n /** Localized clear action label. */\n @Prop() clearLabel: string = 'Clear';\n /** Show immediate local filtering over option labels, subtext, and section headings. */\n @Prop() searchable: boolean = false;\n /** Localized search-field placeholder and accessible name. */\n @Prop() searchPlaceholder: string = 'Search';\n /** Localized empty-filter result text. */\n @Prop() noResultsText: string = 'No results found';\n /** Accessible loading status label. */\n @Prop() loadingLabel: string = 'Loading';\n /** Actual parent surface context; omit on primary and secondary surfaces. */\n @Prop() background: SelectBackground | undefined;\n /** Show invalid visual state. */\n @Prop() error: boolean = false;\n /** Error text rendered below the trigger when error is true. */\n @Prop() errorMessage: string | undefined;\n /** ID applied to the internal combobox trigger for external labels. */\n @Prop() inputId: string | undefined;\n /** Direct accessible name when no external label is available. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** IDs of elements that label the combobox. */\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined;\n /** Additional IDs that describe the combobox. */\n @Prop({ attribute: 'aria-describedby' }) ariaDescribedby: string | undefined;\n\n /** Emitted after user selection or clearing with the next scalar value. */\n @Event() dsChange!: EventEmitter<string>;\n /** Emitted after the footer clear action. */\n @Event() dsClear!: EventEmitter<void>;\n /** Emitted whenever popup visibility changes. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n\n @State() private activeIndex = -1;\n @State() private searchTerm = '';\n @State() private formDisabled = false;\n @State() private position = { x: 0, y: 0 };\n @State() private positionReady = false;\n @State() private focusRingVisible = false;\n\n private readonly generatedId = `ds-select-${++selectId}`;\n private readonly listboxId = `${this.generatedId}-listbox`;\n private readonly errorId = `${this.generatedId}-error`;\n private initialValue = '';\n private readonly controller = this.createController();\n\n private createController() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- adapter getters preserve reactive component ownership without inheritance.\n const owner = this;\n return new SelectController<SelectOption>({\n get host() { return owner.el; },\n generatedId: owner.generatedId,\n get options() { return owner.visibleOptions; },\n get searchable() { return owner.searchable; },\n get isLoading() { return owner.isLoading; },\n get isDisabled() { return owner.isDisabled; },\n get preferredIndex() {\n return owner.visibleOptions.findIndex(\n option => option.value === owner.value && !option.isInactive,\n );\n },\n get open() { return owner.open; },\n set open(value) { owner.open = value; },\n get activeIndex() { return owner.activeIndex; },\n set activeIndex(value) { owner.activeIndex = value; },\n get searchTerm() { return owner.searchTerm; },\n set searchTerm(value) { owner.searchTerm = value; },\n get focusRingVisible() { return owner.focusRingVisible; },\n set focusRingVisible(value) { owner.focusRingVisible = value; },\n get position() { return owner.position; },\n set position(value) { owner.position = value; },\n get positionReady() { return owner.positionReady; },\n set positionReady(value) { owner.positionReady = value; },\n selectOption: option => owner.selectOption(option),\n });\n }\n\n componentWillLoad() {\n this.initialValue = this.value;\n this.syncFormValue();\n }\n\n componentDidLoad() {\n this.controller.connect();\n }\n\n disconnectedCallback() {\n this.controller.disconnect();\n }\n\n @Watch('value')\n @Watch('disabled')\n @Watch('isInactive')\n @Watch('required')\n @Watch('options')\n @Watch('sections')\n syncFormValue() {\n const inactive = this.isDisabled;\n const resolvedValue = this.hasSelection ? this.value : '';\n this.internals.setFormValue(inactive ? null : resolvedValue);\n const missing = this.required && !inactive && !resolvedValue;\n setRequiredValidity(this.internals, missing, this.requiredMessage);\n this.controller.optionsChanged();\n }\n\n @Watch('isLoading')\n onLoadingChange() {\n this.controller.loadingChanged();\n }\n\n @Watch('open')\n onOpenChange(open: boolean) {\n this.dsOpenChange.emit(open);\n this.controller.openChanged(open);\n }\n\n @Watch('searchTerm')\n onSearchTermChange() {\n this.controller.searchChanged();\n }\n\n @Watch('activeIndex')\n onActiveIndexChange() {\n this.controller.activeIndexChanged();\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.value = this.initialValue;\n this.closePopup();\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n this.value = typeof state === 'string' ? state : '';\n }\n\n @Method()\n async setFocus() {\n this.controller.setFocus();\n }\n\n private get isDisabled(): boolean {\n return this.disabled || this.isInactive || this.formDisabled;\n }\n\n private get allSections(): SelectSection[] {\n return resolveChoiceSections(this.options, this.sections);\n }\n\n private get allOptions(): SelectOption[] {\n return flattenChoiceSections(this.allSections);\n }\n\n private get visibleSections(): SelectSection[] {\n return this.searchable\n ? filterChoiceSections(this.allSections, this.searchTerm)\n : this.allSections;\n }\n\n private get visibleOptions(): SelectOption[] {\n return flattenChoiceSections(this.visibleSections);\n }\n\n private get selectedOption(): SelectOption | undefined {\n return this.allOptions.find(option => option.value === this.value);\n }\n\n private get hasSelection(): boolean {\n return Boolean(this.selectedOption);\n }\n\n private get activeOptionId(): string | undefined {\n return this.controller.activeOptionId;\n }\n\n private closePopup(restoreFocus = false) {\n this.controller.closePopup(restoreFocus);\n }\n\n private openPopup(focusVisible: boolean, edge?: 'first' | 'last') {\n this.controller.openPopup(focusVisible, edge);\n }\n\n private selectOption(option: SelectOption) {\n if (option.isInactive || this.isLoading) return;\n this.value = option.value;\n this.dsChange.emit(this.value);\n this.controller.closePopup(true);\n }\n\n private clearSelection = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.value = '';\n this.dsChange.emit('');\n this.dsClear.emit();\n const enabled = enabledChoiceIndexes(this.visibleOptions);\n this.activeIndex = enabled[0] ?? -1;\n this.controller.focusSearchOrTrigger();\n };\n\n private readonly handleListKeyDown = this.controller.handleListKeyDown;\n private readonly handleTriggerKeyDown = this.controller.handleTriggerKeyDown;\n\n private renderOption(\n option: SelectOption,\n index: number,\n usesIcons: boolean,\n usesSubtext: boolean,\n ) {\n const selected = option.value === this.value;\n const active = index === this.activeIndex;\n return (\n <ChoiceOptionRow\n size={this.size}\n id={`${this.generatedId}-option-${index}`}\n option={option}\n selected={selected}\n active={active}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={usesSubtext}\n leading={usesIcons && option.icon ? (\n <span class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\" aria-hidden=\"true\">\n <ds-icon name={option.icon} size={this.size} color=\"inherit\" />\n </span>\n ) : undefined}\n onHover={() => {\n this.focusRingVisible = false;\n this.activeIndex = index;\n }}\n onSelect={() => this.selectOption(option)}\n />\n );\n }\n\n render() {\n const inactive = this.isDisabled;\n const showPlaceholder = !this.hasSelection;\n const label = showPlaceholder ? this.placeholder : this.selectedOption?.label;\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n const usesOptionIcons = choiceListUsesIcons(this.allOptions);\n const usesOptionSubtext = choiceListUsesSubtext(this.allOptions);\n const showError = this.error && Boolean(this.errorMessage);\n const describedBy = [this.ariaDescribedby, showError ? this.errorId : undefined]\n .filter(Boolean)\n .join(' ') || undefined;\n const popupStyle = {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: `translate(${Math.round(this.position.x)}px, ${Math.round(this.position.y)}px)`,\n zIndex: 'var(--dimension-z-index-floating)',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n let flatIndex = 0;\n\n return (\n <Host\n class={{\n 'select-host': true,\n 'ds-field-stack': true,\n 'ds-control-inactive': inactive,\n [`ds-control--${this.size}`]: true,\n ...controlWidthClass(this.width),\n [`select-host--background-${this.background}`]: !!this.background,\n }}\n >\n <button\n ref={element => {\n this.controller.setTriggerElement((element as HTMLButtonElement) ?? null);\n }}\n id={this.inputId ?? this.generatedId}\n type=\"button\"\n class={{\n trigger: true,\n 'ds-control-frame': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected':\n !inactive && this.activeFill && this.hasSelection,\n 'trigger--bordered': this.hasBorder || this.error,\n 'trigger--placeholder': showPlaceholder,\n 'trigger--has-value': this.hasSelection,\n 'wrapper--error': this.error,\n [`ds-control--${this.size}`]: true,\n ...choiceBackgroundClassMap(this.background),\n }}\n disabled={inactive}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={String(this.open)}\n aria-controls={this.open ? this.listboxId : undefined}\n aria-activedescendant={this.open && !this.searchable ? this.activeOptionId : undefined}\n aria-label={this.ariaLabel}\n aria-labelledby={this.ariaLabelledby}\n aria-describedby={describedBy}\n aria-invalid={this.error ? 'true' : undefined}\n aria-required={this.required || undefined}\n aria-busy={this.isLoading ? 'true' : undefined}\n onClick={() => (this.open ? this.closePopup() : this.openPopup(false))}\n onKeyDown={this.handleTriggerKeyDown}\n >\n {(this.icon || this.isLoading) && (\n <span class=\"trigger__prefix ds-control-icon-box ds-interaction-fill__content\" aria-hidden=\"true\">\n {this.isLoading ? (\n <ds-loader size={iconSize} color=\"inherit\" />\n ) : (\n <ds-icon name={this.icon} size={iconSize} color=\"inherit\" />\n )}\n </span>\n )}\n <ds-text\n class=\"trigger__label ds-control-label-box ds-interaction-fill__content\"\n as=\"span\"\n variant={textVariant}\n color=\"inherit\"\n lineTruncation={1}\n >\n {label}\n </ds-text>\n <span class=\"trigger__chevron ds-control-icon-box ds-interaction-fill__content\" aria-hidden=\"true\">\n <ds-icon name=\"ChevronDown\" size={iconSize} color=\"inherit\" />\n </span>\n </button>\n\n {this.open && (\n <div\n ref={element => {\n this.controller.setPopupElement((element as HTMLDivElement) ?? null);\n }}\n class=\"select-popup ds-choice-popup\"\n style={popupStyle}\n >\n {this.searchable && (\n <ChoiceSearch\n size={this.size}\n value={this.searchTerm}\n placeholder={this.searchPlaceholder}\n controls={this.listboxId}\n activeDescendant={this.activeOptionId}\n inputRef={this.controller.setSearchElement}\n clearLabel={this.clearLabel}\n onValueChange={value => {\n this.searchTerm = value;\n }}\n onKeyDown={event => this.handleListKeyDown(event)}\n />\n )}\n <div\n id={this.listboxId}\n class=\"ds-choice-list\"\n role=\"listbox\"\n aria-label={this.ariaLabel ?? this.placeholder}\n aria-busy={this.isLoading ? 'true' : undefined}\n >\n {this.isLoading ? (\n <div\n class=\"ds-choice-loading\"\n role=\"option\"\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.loadingLabel}\n aria-live=\"polite\"\n >\n <ds-loader size={this.size} color=\"inherit\" />\n </div>\n ) : this.visibleOptions.length === 0 ? (\n <div\n class=\"ds-choice-empty ds-empty-region\"\n role=\"option\"\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.noResultsText}\n aria-live=\"polite\"\n >\n <ds-empty-state body={this.noResultsText} />\n </div>\n ) : (\n this.visibleSections.map(section => (\n <div\n class={{\n 'ds-choice-section': true,\n 'ds-chrome-column': true,\n 'ds-chrome-space--sm': true,\n 'ds-choice-section--divided': !!section.divider,\n }}\n role={section.header ? 'group' : undefined}\n aria-label={section.header}\n >\n {section.header && (\n <ds-text\n class={`ds-choice-section__header ds-control--${this.size}`}\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n emphasis\n color=\"primary\"\n aria-hidden=\"true\"\n >\n {section.header}\n </ds-text>\n )}\n {section.options.map(option => this.renderOption(\n option,\n flatIndex++,\n usesOptionIcons,\n usesOptionSubtext,\n ))}\n </div>\n ))\n )}\n </div>\n {this.allowClear && this.hasSelection && !this.isLoading && (\n <ChoiceFooter size={this.size} clearLabel={this.clearLabel} onClear={this.clearSelection} />\n )}\n </div>\n )}\n\n {showError && (\n <ds-text\n class=\"error-text\"\n as=\"div\"\n variant=\"text-body-small\"\n color=\"negative\"\n textId={this.errorId}\n role=\"alert\"\n >\n {this.errorMessage}\n </ds-text>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|