@ds-mo/ui 14.35.0 → 14.36.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/dist/.package-ready.json +1 -1
- package/dist/agent-patterns.json +1 -1
- package/dist/agent.json +1105 -187
- package/dist/angular/ds-button-inverted.d.ts +17 -0
- package/dist/angular/ds-button-inverted.js +46 -0
- package/dist/angular/ds-calendar.d.ts +15 -0
- package/dist/angular/ds-calendar.js +43 -0
- package/dist/angular/ds-field.d.ts +1 -1
- package/dist/angular/ds-field.js +1 -1
- package/dist/angular/ds-input-date.d.ts +15 -0
- package/dist/angular/ds-input-date.js +43 -0
- package/dist/angular/ds-input-time.d.ts +15 -0
- package/dist/angular/ds-input-time.js +43 -0
- package/dist/angular/ds-input.d.ts +1 -1
- package/dist/angular/ds-input.js +3 -3
- package/dist/angular/ds-select.d.ts +1 -1
- package/dist/angular/ds-select.js +3 -3
- package/dist/angular/ds-time-picker.d.ts +15 -0
- package/dist/angular/ds-time-picker.js +43 -0
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +5 -0
- package/dist/angular/proxies.d.ts +5 -0
- package/dist/angular/proxies.js +5 -0
- package/dist/angular/text-value-accessor.d.ts +1 -1
- package/dist/angular/text-value-accessor.js +2 -2
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-questionnaire.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-banner.js +1 -1
- package/dist/components/ds-bar-action.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-page-title.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-inverted.d.ts +11 -0
- package/dist/components/ds-button-inverted.js +2 -0
- package/dist/components/ds-button-inverted.js.map +1 -0
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-calendar.d.ts +11 -0
- package/dist/components/ds-calendar.js +2 -0
- package/dist/components/ds-calendar.js.map +1 -0
- package/dist/components/ds-card-action-center.js +1 -1
- package/dist/components/ds-card-chart.js +1 -1
- package/dist/components/ds-card-navigation.js +1 -1
- package/dist/components/ds-card-navigation.js.map +1 -1
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-settings-scope.js +1 -1
- package/dist/components/ds-card-settings-scope.js.map +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart.js +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-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-filter-menu.js +1 -1
- package/dist/components/ds-input-date.d.ts +11 -0
- package/dist/components/ds-input-date.js +2 -0
- package/dist/components/ds-input-date.js.map +1 -0
- package/dist/components/ds-input-time.d.ts +11 -0
- package/dist/components/ds-input-time.js +2 -0
- package/dist/components/ds-input-time.js.map +1 -0
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-actions.js +1 -1
- package/dist/components/ds-message-bubble.js +1 -1
- package/dist/components/ds-message-bubble.js.map +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-scroller.js +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-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-modal.js +1 -1
- package/dist/components/ds-pagination.js +1 -1
- package/dist/components/ds-panel-nav.js +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-tools.js +1 -1
- package/dist/components/ds-paper-texture.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-score.js +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +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-table-filter.js +1 -1
- package/dist/components/ds-table-filter.js.map +1 -1
- package/dist/components/ds-table-group.js +1 -1
- package/dist/components/ds-table-preferences.js +1 -1
- package/dist/components/ds-table-preferences.js.map +1 -1
- package/dist/components/ds-table-saved-views.js +1 -1
- package/dist/components/ds-table-saved-views.js.map +1 -1
- package/dist/components/ds-table-search.js +1 -1
- package/dist/components/ds-table-search.js.map +1 -1
- package/dist/components/ds-table-sort.js +1 -1
- package/dist/components/ds-table-sort.js.map +1 -1
- package/dist/components/ds-table-toolbar.js +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-textarea.js +1 -1
- package/dist/components/ds-textarea.js.map +1 -1
- package/dist/components/ds-time-picker.d.ts +11 -0
- package/dist/components/ds-time-picker.js +2 -0
- package/dist/components/ds-time-picker.js.map +1 -0
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-tooltip-chart.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/{p-CI7VfYC3.js → p-2GVGhrh0.js} +2 -2
- package/dist/components/p-7O-2D29W.js +2 -0
- package/dist/components/p-7O-2D29W.js.map +1 -0
- package/dist/components/{p-CE540WZ7.js → p-8oRkhvjy.js} +2 -2
- package/dist/components/p-B27_chI7.js +2 -0
- package/dist/components/p-B27_chI7.js.map +1 -0
- package/dist/components/{p-xHGqrz_p.js → p-BOhpMUwO.js} +2 -2
- package/dist/components/{p-DdspY23v.js → p-BV5T1hzN.js} +2 -2
- package/dist/components/{p-DTDLlinw.js → p-BWfzaSc3.js} +2 -2
- package/dist/components/{p-CLGtPE0K.js → p-BgLI9JoT.js} +2 -2
- package/dist/components/{p-DGzn4k4h.js → p-C-dHtQMi.js} +2 -2
- package/dist/components/p-C0CE2v5D.js +2 -0
- package/dist/components/{p-yZRXPHDe.js → p-C2JnoaWI.js} +2 -2
- package/dist/components/{p-umAf0fBn.js → p-C4m8y9ki.js} +2 -2
- package/dist/components/{p-CAxDdYjh.js → p-CDJ2Ntcq.js} +2 -2
- package/dist/components/{p-DQQFN2sw.js → p-CMQUuGvl.js} +2 -2
- package/dist/components/{p-BQaO7cg_.js → p-CQ5RwY2C.js} +2 -2
- package/dist/components/p-CQIh2yRP.js +2 -0
- package/dist/components/{p-C1_3CVma.js.map → p-CQIh2yRP.js.map} +1 -1
- package/dist/components/{p-DEGNrPLe.js → p-CWPT3aOB.js} +2 -2
- package/dist/components/p-CWog26I_.js +2 -0
- package/dist/components/p-CWog26I_.js.map +1 -0
- package/dist/components/{p-beRFLHbB.js → p-CaNCGKEJ.js} +2 -2
- package/dist/components/p-CbSUyv5B.js +2 -0
- package/dist/components/{p-BINSI_KF.js.map → p-CbSUyv5B.js.map} +1 -1
- package/dist/components/{p-Dhw_W8nk.js → p-Cc3ZUQlJ.js} +2 -2
- package/dist/components/p-Cc3ZUQlJ.js.map +1 -0
- package/dist/components/{p-DFjIBS5B.js → p-Ce4zy8q1.js} +2 -2
- package/dist/components/{p-BcdHgPi5.js → p-CeXf9-X3.js} +2 -2
- package/dist/components/{p-omPm8_vx.js → p-Cga6Ex0E.js} +2 -2
- package/dist/components/{p-y06IxxoN.js → p-Cl9phSf0.js} +2 -2
- package/dist/components/{p-Dk-8Ju0Q.js → p-ClJhuG5Y.js} +2 -2
- package/dist/components/{p-BmFeeR4q.js → p-CqW2eyiF.js} +2 -2
- package/dist/components/p-Cus1Sigh.js +2 -0
- package/dist/components/{p-N5SHSVo2.js.map → p-Cus1Sigh.js.map} +1 -1
- package/dist/components/{p-CzbsTZt7.js → p-Cxr0IQjC.js} +2 -2
- package/dist/components/{p-CwqFJMvP.js → p-D7yBIPB6.js} +2 -2
- package/dist/components/p-D8rpKod8.js +2 -0
- package/dist/components/p-D8rpKod8.js.map +1 -0
- package/dist/components/{p-DtLQIMsa.js → p-DBwa1OXP.js} +2 -2
- package/dist/components/{p-BQsVI_vO.js → p-DK9Ex3aY.js} +2 -2
- package/dist/components/{p-CqlBlv55.js → p-DLXXGgmf.js} +2 -2
- package/dist/components/{p-BnzsBNUY.js → p-DVd1TIxi.js} +2 -2
- package/dist/components/p-DZ58Sg5a.js.map +1 -1
- package/dist/components/{p-CZOiTaNa.js → p-DgG9W9N4.js} +2 -2
- package/dist/components/{p-mpk_Mm8_.js → p-DkfM55x8.js} +2 -2
- package/dist/components/p-DkikNSSO.js +2 -0
- package/dist/components/p-DkikNSSO.js.map +1 -0
- package/dist/components/{p-C7CZ9pnP.js → p-Dryt3COt.js} +2 -2
- package/dist/components/{p-eo_pmPqp.js → p-Ds51RgCi.js} +2 -2
- package/dist/components/p-DtkLtKY0.js +2 -0
- package/dist/components/p-DtkLtKY0.js.map +1 -0
- package/dist/components/{p-C8ek-1SP.js → p-DvzI2A_M.js} +2 -2
- package/dist/components/p-J5x-QtlD.js +2 -0
- package/dist/components/{p-beCz9OnD.js.map → p-J5x-QtlD.js.map} +1 -1
- package/dist/components/{p-CSnsz3Eb.js → p-Jaqdfw4E.js} +2 -2
- package/dist/components/p-MQ36mEgn.js +2 -0
- package/dist/components/{p-UAIxh67Q.js.map → p-MQ36mEgn.js.map} +1 -1
- package/dist/components/{p-BnWxbhFP.js → p-PmcUwTQ_.js} +2 -2
- package/dist/components/p-TjXGRPik.js +2 -0
- package/dist/components/{p-B-9fdIWv.js.map → p-TjXGRPik.js.map} +1 -1
- package/dist/components/{p-Cq_Qpe_C.js → p-bM3LH3kc.js} +2 -2
- package/dist/components/{p-BPhbwXOv.js → p-ji09W9el.js} +2 -2
- package/dist/components/{p-n68x-ZKp.js → p-neWTRxmf.js} +2 -2
- package/dist/components/{p-BPlWEidl.js → p-rYePOPbJ.js} +2 -2
- package/dist/components/{p-D44g2Kw1.js → p-su6y4hLK.js} +2 -2
- package/dist/components/p-su6y4hLK.js.map +1 -0
- package/dist/components/{p-DC69DgAR.js → p-tNQ0YulU.js} +2 -2
- package/dist/components/{p-Cwz9TPVS.js → p-x1wf38q3.js} +2 -2
- package/dist/docs/components.json +6485 -3451
- package/dist/lib/utils/button-render.d.ts +1 -1
- package/dist/lib/utils/clock-time.d.ts +22 -0
- package/dist/lib/utils/date-filter-value.d.ts +4 -0
- package/dist/lib/utils/index.d.ts +3 -1
- package/dist/lib/utils/index.js +133 -0
- package/dist/lib/utils/index.js.map +4 -4
- package/dist/mcp-data/registry/bar-title.json +2 -2
- package/dist/mcp-data/registry/button-inverted.json +580 -0
- package/dist/mcp-data/registry/calendar.json +273 -0
- package/dist/mcp-data/registry/card-navigation.json +4 -2
- package/dist/mcp-data/registry/field.json +19 -14
- package/dist/mcp-data/registry/filter-menu.json +6 -10
- package/dist/mcp-data/registry/input-date.json +516 -0
- package/dist/mcp-data/registry/input-time.json +535 -0
- package/dist/mcp-data/registry/input.json +56 -8
- package/dist/mcp-data/registry/registry.json +1118 -185
- package/dist/mcp-data/registry/select.json +63 -7
- package/dist/mcp-data/registry/table-saved-views.json +6 -4
- package/dist/mcp-data/registry/textarea.json +2 -2
- package/dist/mcp-data/registry/time-picker.json +259 -0
- package/dist/react/components.d.ts +5 -0
- package/dist/react/components.js +5 -0
- package/dist/react/ds-button-inverted.d.ts +13 -0
- package/dist/react/ds-button-inverted.js +15 -0
- package/dist/react/ds-calendar.d.ts +12 -0
- package/dist/react/ds-calendar.js +12 -0
- package/dist/react/ds-field.d.ts +1 -1
- package/dist/react/ds-input-date.d.ts +12 -0
- package/dist/react/ds-input-date.js +12 -0
- package/dist/react/ds-input-time.d.ts +12 -0
- package/dist/react/ds-input-time.js +12 -0
- package/dist/react/ds-time-picker.d.ts +12 -0
- package/dist/react/ds-time-picker.js +12 -0
- package/dist/types/components/BarTitle/BarTitle.d.ts +1 -0
- package/dist/types/components/BarTitle/bar-title-action-chrome.d.ts +2 -0
- package/dist/types/components/ButtonInverted/ButtonInverted.d.ts +83 -0
- package/dist/types/components/ButtonInverted/index.d.ts +2 -0
- package/dist/types/components/Calendar/Calendar.d.ts +32 -0
- package/dist/types/components/Calendar/calendar-grid.d.ts +19 -0
- package/dist/types/components/Field/Field.d.ts +7 -2
- package/dist/types/components/FilterMenu/FilterMenu.d.ts +0 -10
- package/dist/types/components/Input/Input.d.ts +10 -0
- package/dist/types/components/InputDate/InputDate.d.ts +78 -0
- package/dist/types/components/InputTime/InputTime.d.ts +80 -0
- package/dist/types/components/Select/Select.d.ts +8 -1
- package/dist/types/components/TimePicker/TimePicker.d.ts +33 -0
- package/dist/types/components.d.ts +858 -27
- package/dist/types/utils/button-render.d.ts +1 -1
- package/dist/types/utils/clock-time.d.ts +23 -0
- package/dist/types/utils/date-filter-value.d.ts +4 -0
- package/dist/types/utils/index.d.ts +3 -1
- package/dist/vue/components.d.ts +5 -0
- package/dist/vue/components.js +5 -0
- package/dist/vue/ds-button-inverted.d.ts +3 -0
- package/dist/vue/ds-button-inverted.js +33 -0
- package/dist/vue/ds-calendar.d.ts +3 -0
- package/dist/vue/ds-calendar.js +16 -0
- package/dist/vue/ds-input-date.d.ts +3 -0
- package/dist/vue/ds-input-date.js +31 -0
- package/dist/vue/ds-input-time.d.ts +3 -0
- package/dist/vue/ds-input-time.js +32 -0
- package/dist/vue/ds-input.js +2 -0
- package/dist/vue/ds-select.js +3 -0
- package/dist/vue/ds-time-picker.d.ts +3 -0
- package/dist/vue/ds-time-picker.js +16 -0
- package/package.json +1 -1
- package/dist/components/p-B-9fdIWv.js +0 -2
- package/dist/components/p-BINSI_KF.js +0 -2
- package/dist/components/p-BbfBvMRR.js +0 -2
- package/dist/components/p-BbfBvMRR.js.map +0 -1
- package/dist/components/p-C1_3CVma.js +0 -2
- package/dist/components/p-Cmj04E5Q.js +0 -2
- package/dist/components/p-Cmj04E5Q.js.map +0 -1
- package/dist/components/p-D44g2Kw1.js.map +0 -1
- package/dist/components/p-D_u8WhlU.js +0 -2
- package/dist/components/p-Dhw_W8nk.js.map +0 -1
- package/dist/components/p-FPZbS19l.js +0 -2
- package/dist/components/p-FPZbS19l.js.map +0 -1
- package/dist/components/p-N5SHSVo2.js +0 -2
- package/dist/components/p-QjkufCcn.js +0 -2
- package/dist/components/p-QjkufCcn.js.map +0 -1
- package/dist/components/p-UAIxh67Q.js +0 -2
- package/dist/components/p-beCz9OnD.js +0 -2
- package/dist/types/components/FilterMenu/filter-menu-calendar.d.ts +0 -13
- /package/dist/components/{p-CI7VfYC3.js.map → p-2GVGhrh0.js.map} +0 -0
- /package/dist/components/{p-CE540WZ7.js.map → p-8oRkhvjy.js.map} +0 -0
- /package/dist/components/{p-xHGqrz_p.js.map → p-BOhpMUwO.js.map} +0 -0
- /package/dist/components/{p-DdspY23v.js.map → p-BV5T1hzN.js.map} +0 -0
- /package/dist/components/{p-DTDLlinw.js.map → p-BWfzaSc3.js.map} +0 -0
- /package/dist/components/{p-CLGtPE0K.js.map → p-BgLI9JoT.js.map} +0 -0
- /package/dist/components/{p-DGzn4k4h.js.map → p-C-dHtQMi.js.map} +0 -0
- /package/dist/components/{p-D_u8WhlU.js.map → p-C0CE2v5D.js.map} +0 -0
- /package/dist/components/{p-yZRXPHDe.js.map → p-C2JnoaWI.js.map} +0 -0
- /package/dist/components/{p-umAf0fBn.js.map → p-C4m8y9ki.js.map} +0 -0
- /package/dist/components/{p-CAxDdYjh.js.map → p-CDJ2Ntcq.js.map} +0 -0
- /package/dist/components/{p-DQQFN2sw.js.map → p-CMQUuGvl.js.map} +0 -0
- /package/dist/components/{p-BQaO7cg_.js.map → p-CQ5RwY2C.js.map} +0 -0
- /package/dist/components/{p-DEGNrPLe.js.map → p-CWPT3aOB.js.map} +0 -0
- /package/dist/components/{p-beRFLHbB.js.map → p-CaNCGKEJ.js.map} +0 -0
- /package/dist/components/{p-DFjIBS5B.js.map → p-Ce4zy8q1.js.map} +0 -0
- /package/dist/components/{p-BcdHgPi5.js.map → p-CeXf9-X3.js.map} +0 -0
- /package/dist/components/{p-omPm8_vx.js.map → p-Cga6Ex0E.js.map} +0 -0
- /package/dist/components/{p-y06IxxoN.js.map → p-Cl9phSf0.js.map} +0 -0
- /package/dist/components/{p-Dk-8Ju0Q.js.map → p-ClJhuG5Y.js.map} +0 -0
- /package/dist/components/{p-BmFeeR4q.js.map → p-CqW2eyiF.js.map} +0 -0
- /package/dist/components/{p-CzbsTZt7.js.map → p-Cxr0IQjC.js.map} +0 -0
- /package/dist/components/{p-CwqFJMvP.js.map → p-D7yBIPB6.js.map} +0 -0
- /package/dist/components/{p-DtLQIMsa.js.map → p-DBwa1OXP.js.map} +0 -0
- /package/dist/components/{p-BQsVI_vO.js.map → p-DK9Ex3aY.js.map} +0 -0
- /package/dist/components/{p-CqlBlv55.js.map → p-DLXXGgmf.js.map} +0 -0
- /package/dist/components/{p-BnzsBNUY.js.map → p-DVd1TIxi.js.map} +0 -0
- /package/dist/components/{p-CZOiTaNa.js.map → p-DgG9W9N4.js.map} +0 -0
- /package/dist/components/{p-mpk_Mm8_.js.map → p-DkfM55x8.js.map} +0 -0
- /package/dist/components/{p-C7CZ9pnP.js.map → p-Dryt3COt.js.map} +0 -0
- /package/dist/components/{p-eo_pmPqp.js.map → p-Ds51RgCi.js.map} +0 -0
- /package/dist/components/{p-C8ek-1SP.js.map → p-DvzI2A_M.js.map} +0 -0
- /package/dist/components/{p-CSnsz3Eb.js.map → p-Jaqdfw4E.js.map} +0 -0
- /package/dist/components/{p-BnWxbhFP.js.map → p-PmcUwTQ_.js.map} +0 -0
- /package/dist/components/{p-Cq_Qpe_C.js.map → p-bM3LH3kc.js.map} +0 -0
- /package/dist/components/{p-BPhbwXOv.js.map → p-ji09W9el.js.map} +0 -0
- /package/dist/components/{p-n68x-ZKp.js.map → p-neWTRxmf.js.map} +0 -0
- /package/dist/components/{p-BPlWEidl.js.map → p-rYePOPbJ.js.map} +0 -0
- /package/dist/components/{p-DC69DgAR.js.map → p-tNQ0YulU.js.map} +0 -0
- /package/dist/components/{p-Cwz9TPVS.js.map → p-x1wf38q3.js.map} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
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 n,b as c,c as d,d as a}from"./p-CAxDdYjh.js";import{e as l,m as h,f as p,r as g,a as u,b as f,c as v,d as m,g as b}from"./p-CzbsTZt7.js";import{A as x,r as y}from"./p-B8ZonS3S.js";import{c as w,r as k,e as _}from"./p-etg-Uk1u.js";import{r as z}from"./p-CochmPyg.js";import{T as C,r as F}from"./p-BcdHgPi5.js";import{o as A,d as T}from"./p-xHGqrz_p.js";import{d as L}from"./p-DtLQIMsa.js";import{d as O}from"./p-C7CZ9pnP.js";import{d as j}from"./p-D_u8WhlU.js";import{d as S}from"./p-Cea7rROU.js";import{d as P}from"./p-FPZbS19l.js";import{d as $}from"./p-0XTyQNRG.js";import{d as I}from"./p-CLGtPE0K.js";import{d as V}from"./p-BINSI_KF.js";import{D as R,s as D}from"./p-DOUk4KoT.js";import{a as E,s as q,r as B,b as H}from"./p-C0qN3PSb.js";import{a as U,C as K}from"./p-CuwopElg.js";import{c as M}from"./p-DuFm-ieS.js";class N{constructor(e){this.state=e;this.triggerEl=null;this.popupEl=null;this.searchEl=null;this.typeahead="";this.typeaheadTimer=null;this.outsideHandler=null;this.setTriggerElement=e=>{this.triggerEl=e};this.setPopupElement=e=>{this.popupEl=e};this.setSearchElement=e=>{this.searchEl=e};this.handleTriggerKeyDown=e=>{if(!this.state.open){if(["ArrowDown","ArrowUp","Enter"," "].includes(e.key)){e.preventDefault();this.openPopup(true,e.key==="ArrowUp"?"last":"first")}else if(this.isTypeaheadKey(e)){e.preventDefault();this.openPopup(true);if(this.state.searchable)this.state.searchTerm=e.key;else this.handleTypeahead(e.key)}return}this.handleListKeyDown(e)};this.handleListKeyDown=e=>{switch(e.key){case"ArrowDown":e.preventDefault();this.state.focusRingVisible=true;this.state.activeIndex=h(this.state.options,this.state.activeIndex,1);break;case"ArrowUp":e.preventDefault();this.state.focusRingVisible=true;this.state.activeIndex=h(this.state.options,this.state.activeIndex,-1);break;case"Home":e.preventDefault();this.state.focusRingVisible=true;this.state.activeIndex=l(this.state.options)[0]??-1;break;case"End":{e.preventDefault();this.state.focusRingVisible=true;const s=l(this.state.options);this.state.activeIndex=s[s.length-1]??-1;break}case"Enter":case" ":{if(e.key===" "&&this.state.searchable&&e.target instanceof Node&&this.searchEl?.contains(e.target))break;e.preventDefault();const s=this.state.options[this.state.activeIndex];if(s)this.state.selectOption(s);break}case"Escape":e.preventDefault();this.closePopup(true);break;case"Tab":this.closePopup();break;default:if(!this.state.searchable&&this.isTypeaheadKey(e)){this.handleTypeahead(e.key)}}};this.position=new x({getAnchor:()=>this.triggerEl,getPopup:()=>this.popupEl,measure:(e,s)=>{if(!this.state.open||!s.isConnected||!this.state.host.contains(s))return null;const t=z(C.space050,C.space050);s.style.minWidth=`max(var(--ds-choice-popup-min-inline-size, ${C.menuWidthXs}), ${w(e.offsetWidth,t)}px)`;const i=this.state.popupAlign;return{anchorRect:e.getBoundingClientRect(),popupWidth:s.offsetWidth,popupHeight:s.offsetHeight,side:"bottom",align:i,sideOffsetPx:t,alignOffsetPx:k({align:i,alignOffsetPx:0,sectionInsetPx:t}),viewportPadPx:t,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,collisionRect:y(e,this.state.boundary)}},apply:({x:e,y:s})=>{this.state.position={x:e,y:s};this.state.positionReady=true},topLayer:true})}get activeOptionId(){return!this.state.isLoading&&this.state.activeIndex>=0?`${this.state.generatedId}-option-${this.state.activeIndex}`:undefined}connect(){if(this.state.open)this.openChanged(true)}disconnect(){this.cancelPositionRetry();this.unbindPopupListeners();if(this.typeaheadTimer)clearTimeout(this.typeaheadTimer)}setFocus(){this.triggerEl?.focus()}optionsChanged(){if(!this.state.open)return;const e=l(this.state.options);if(!e.includes(this.state.activeIndex))this.state.activeIndex=e[0]??-1;requestAnimationFrame((()=>this.updatePosition()))}loadingChanged(){if(this.state.open)requestAnimationFrame((()=>this.updatePosition()))}positionChanged(){if(this.state.open)requestAnimationFrame((()=>this.updatePosition()))}openChanged(e){if(e){this.bindPopupListeners();this.schedulePositionUpdate((()=>{this.scrollActiveOptionIntoView();if(this.state.searchable)void this.searchEl?.setFocus()}));return}this.cancelPositionRetry();this.unbindPopupListeners();this.state.searchTerm="";this.state.positionReady=false}searchChanged(){this.state.activeIndex=l(this.state.options)[0]??-1;requestAnimationFrame((()=>{this.updatePosition();this.scrollActiveOptionIntoView()}))}activeIndexChanged(){requestAnimationFrame((()=>this.scrollActiveOptionIntoView()))}openPopup(e,s){if(this.state.isDisabled||!this.state.options.length&&!this.state.isLoading)return;const t=l(this.state.options);this.state.activeIndex=s==="last"?t[t.length-1]??-1:this.state.preferredIndex>=0?this.state.preferredIndex:t[0]??-1;this.state.focusRingVisible=e;this.state.open=true}closePopup(e=false){if(!this.state.open)return;this.state.open=false;if(e)requestAnimationFrame((()=>this.triggerEl?.focus()))}focusSearchOrTrigger(){requestAnimationFrame((()=>{if(this.state.searchable)void this.searchEl?.setFocus();else this.triggerEl?.focus()}))}isTypeaheadKey(e){return e.key.length===1&&!e.metaKey&&!e.ctrlKey&&!e.altKey}handleTypeahead(e){if(this.typeaheadTimer)clearTimeout(this.typeaheadTimer);this.state.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=p(this.state.options,this.typeahead,this.state.activeIndex);if(i>=0)this.state.activeIndex=i;const o=F(C.animationDurationMedium1,C.animationDurationMedium1);this.typeaheadTimer=setTimeout((()=>{this.typeahead="";this.typeaheadTimer=null}),o)}scrollActiveOptionIntoView(){if(!this.state.open||!this.activeOptionId)return;this.state.host.querySelector(`#${this.activeOptionId}`)?.scrollIntoView({block:"nearest",inline:"nearest"})}bindPopupListeners(){this.unbindPopupListeners();this.outsideHandler=e=>{if(_(e,this.state.host))return;this.closePopup()};document.addEventListener("mousedown",this.outsideHandler,true);this.position.observe()}unbindPopupListeners(){if(this.outsideHandler){document.removeEventListener("mousedown",this.outsideHandler,true);this.outsideHandler=null}this.position.unobserve()}cancelPositionRetry(){this.position.cancel()}schedulePositionUpdate(e){if(!this.state.open)return;this.state.positionReady=false;this.position.schedule(e)}updatePosition(){return this.position.update()}}const G=()=>`.sc-ds-select-h,.sc-ds-select:where(.ds-table),.sc-ds-select:where(.tooltip-popup),.sc-ds-select:where(.ds-radius){--ds-radius-control:var(--dimension-radius-025);--ds-radius-card:var(--dimension-radius-050);--ds-radius-modal:var(--dimension-radius-050);--ds-radius-menu:var(--dimension-radius-075);--ds-radius-tooltip-control:var(--dimension-radius-025);--ds-radius-tooltip-menu:var(--dimension-radius-075);--ds-radius-table:var(--dimension-radius-050)}@media (forced-colors: active){.sc-ds-select:root,.sc-ds-select-h,.ds-forced-colors-scope.sc-ds-select{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.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))}@media (forced-colors: active){.sc-ds-select-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-select:root,.sc-ds-select-h,.ds-forced-colors-scope.sc-ds-select{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}@media (forced-colors: active){.sc-ds-select:root,.sc-ds-select-h,.ds-forced-colors-scope.sc-ds-select{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-interaction-fill.sc-ds-select-h,.ds-interaction-fill.sc-ds-select{position:var(--ds-interaction-position, relative);z-index:var(--ds-interaction-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-divider-width:0px;--ds-interaction-divider-color:transparent;--ds-interaction-divider-inline-start-width:0px;--ds-interaction-divider-inline-start-color:transparent;--ds-interaction-divider-inline-end-width:0px;--ds-interaction-divider-inline-end-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 calc(-1 * var(--ds-interaction-divider-width)) 0 var(--ds-interaction-divider-color), inset var(--ds-interaction-divider-inline-start-width) 0 0 var(--ds-interaction-divider-inline-start-color), inset calc(-1 * var(--ds-interaction-divider-inline-end-width)) 0 0 var(--ds-interaction-divider-inline-end-color), 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--grouped.sc-ds-select-h::after,.ds-interaction-fill--grouped.sc-ds-select::after,.ds-interaction-fill--grouped.sc-ds-select-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-select:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-select-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-select:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-select-h,.ds-interaction-fill--grouped.sc-ds-select{--ds-interaction-divider-width:var(--ds-interaction-group-divider-width, 0px);--ds-interaction-divider-color:var(--ds-interaction-group-divider-color, transparent);--ds-interaction-divider-inline-start-width:var( --ds-interaction-group-divider-inline-start-width, 0px );--ds-interaction-divider-inline-start-color:var( --ds-interaction-group-divider-inline-start-color, transparent );--ds-interaction-divider-inline-end-width:var( --ds-interaction-group-divider-inline-end-width, 0px );--ds-interaction-divider-inline-end-color:var( --ds-interaction-group-divider-inline-end-color, transparent )}.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-brand);--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-brand);--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-brand);--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-interaction-fill.ds-interaction-fill--surface-open.sc-ds-select-h:not(:disabled)::after,.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-select:not(:disabled)::after{background:var(--ds-interaction-pressed)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-select-h::after,.ds-interaction-fill.sc-ds-select::after{box-shadow:none;outline:var(--ds-interaction-border-width) solid var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--ds-interaction-border-width))}.ds-interaction-fill--surface-open.sc-ds-select-h:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill--surface-open.sc-ds-select:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline:var(--dimension-stroke-width-025) dashed var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}.ds-interaction-fill--selected.sc-ds-select-h::before,.ds-interaction-fill--selected.sc-ds-select::before{background:transparent;outline:var(--dimension-stroke-width-025) solid var(--ds-forced-color-selected);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}}@media (forced-colors: active) and (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-select-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-select:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline-color:var(--ds-forced-color-selected);outline-width:var(--dimension-stroke-width-012)}}@media (forced-colors: active){.sc-ds-select:root,.sc-ds-select-h,.ds-forced-colors-scope.sc-ds-select{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-control-inactive.sc-ds-select-h,.ds-control-inactive.sc-ds-select{opacity:var(--effect-opacity-medium);pointer-events:none;cursor:not-allowed}@media (forced-colors: active){.ds-control-inactive.sc-ds-select-h,.ds-control-inactive.sc-ds-select{color:var(--ds-forced-color-disabled);opacity:1}}.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(--ds-radius-control)}.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-section-heading.sc-ds-select{display:flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:calc( var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-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-label-dot.sc-ds-select{position:relative;padding-inline-end:calc( var(--ds-control-label-inset, var(--dimension-space-025)) + var(--ds-control-gap, var(--dimension-space-050)) )}.ds-control-label-dot__badge.sc-ds-select{position:absolute;inset-block-start:0;inset-inline-end:0;pointer-events:none}.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)}.sc-ds-select:where(.ds-text-decoration,.ds-text-action).sc-ds-select{text-decoration-color:var(--ds-text-decoration-color, var(--color-foreground-tertiary));text-decoration-thickness:var(--ds-text-decoration-thickness, var(--dimension-stroke-width-012));text-underline-offset:var(--ds-text-decoration-offset, var(--dimension-space-025))}.ds-text-action.sc-ds-select{--ds-text-action-foreground:var(--color-foreground-bold-brand);--ds-text-decoration-color:var(--ds-text-action-foreground);color:var(--ds-text-action-foreground);text-decoration-line:none}.ds-text-action--on-medium.sc-ds-select{--ds-text-action-foreground:var(--color-foreground-on-medium-background-primary);--ds-text-decoration-color:var(--color-foreground-on-medium-background-secondary);text-decoration-line:underline}.ds-text-action--on-strong.sc-ds-select{--ds-text-action-foreground:var(--color-foreground-on-strong-background-primary);--ds-text-decoration-color:var(--color-foreground-on-strong-background-secondary);text-decoration-line:underline}.ds-text-action--on-bold.sc-ds-select{--ds-text-action-foreground:var(--color-foreground-on-bold-background-primary);--ds-text-decoration-color:var(--color-foreground-on-bold-background-secondary);text-decoration-line:underline}@media (hover: hover) and (pointer: fine){.ds-text-action.sc-ds-select:hover{text-decoration-line:underline}}@media (forced-colors: active){.ds-text-action.sc-ds-select{text-decoration-line:underline;text-decoration-color:currentcolor}}.ds-choice-popup.sc-ds-select{box-sizing:border-box;display:flex;flex-direction:column;min-width:var(--ds-choice-popup-min-inline-size, 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(--ds-radius-menu);box-shadow:var(--effect-shadow-elevated-floating);color:var(--color-foreground-secondary);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{text-align:start;-webkit-user-select:none;user-select:none}.ds-choice-section--headed-after-first.sc-ds-select{margin-block-start:var(--dimension-space-050)}.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-item.ds-interaction-fill--selected.sc-ds-select .ds-choice-item__icon.sc-ds-select{color:var(--color-foreground-primary)}.ds-choice-item__tag.sc-ds-select{flex-shrink:0;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;column-gap:var(--dimension-space-050);box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400))}.ds-choice-footer__summary.sc-ds-select,.ds-choice-footer__summary-measure.sc-ds-select,.ds-choice-footer__clear.sc-ds-select ds-text.sc-ds-select,.ds-choice-footer__action.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__summary.sc-ds-select,.ds-choice-footer__summary-measure.sc-ds-select,.ds-choice-footer__clear.sc-ds-select,.ds-choice-footer__action.sc-ds-select{white-space:nowrap}.ds-choice-footer__summary-measure.sc-ds-select{position:absolute;visibility:hidden;pointer-events:none}.ds-choice-footer__clear.sc-ds-select,.ds-choice-footer__action.sc-ds-select{appearance:none;display:inline-flex;align-items:center;padding:0;border:0;border-radius:var(--dimension-radius-025);background:transparent;cursor:default}@media (forced-colors: active){.ds-choice-popup.sc-ds-select{outline:var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);outline-offset:calc(-1 * var(--dimension-stroke-width-012))}.ds-choice-popup.sc-ds-select::after{box-shadow:none}.ds-choice-section--divided.sc-ds-select{border-bottom-color:var(--ds-forced-color-content)}.ds-choice-footer.sc-ds-select::before{background-color:var(--ds-forced-color-content)}}.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-section-heading.sc-ds-select{display:flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:calc( var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-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-label-dot.sc-ds-select{position:relative;padding-inline-end:calc( var(--ds-control-label-inset, var(--dimension-space-025)) + var(--ds-control-gap, var(--dimension-space-050)) )}.ds-control-label-dot__badge.sc-ds-select{position:absolute;inset-block-start:0;inset-inline-end:0;pointer-events:none}.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}.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--without-focus-boundary.sc-ds-select::after{display:none}.select-search__control.sc-ds-select{display:flex;width:100%;min-width:0}.ds-select-trigger-host.sc-ds-select-h{display:inline-flex;position:relative;min-inline-size:0;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 .trigger.sc-ds-select{width:100%}.trigger.sc-ds-select{justify-content:flex-start;box-sizing:border-box;inline-size:100%;max-inline-size:100%;min-inline-size:0;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-box.sc-ds-select{color:var(--ds-select-fg-active)}.trigger--label-placeholder.sc-ds-select .trigger__label-box.sc-ds-select{color:var(--ds-select-fg)}.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-box.sc-ds-select{position:relative;z-index:2;display:flex;align-items:center;flex:1 1 auto;overflow:hidden;text-align:left;color:inherit;transition:color var(--effect-motion-short-2)}.trigger__label-content.sc-ds-select{display:inline-flex;align-items:center;flex:1 1 auto;max-width:100%;min-width:0;overflow:hidden}.trigger__label.sc-ds-select{flex:1 1 auto;min-width:0;max-width:100%;overflow:hidden}.ds-select-trigger-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)}.ds-select-trigger-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)}.ds-select-trigger-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)}.ds-select-trigger-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)}.ds-select-trigger-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)}.ds-select-trigger-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)}.ds-select-trigger-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)}.ds-table-caption-control.sc-ds-select-h{--ds-choice-popup-min-inline-size:var(--dimension-menu-width-xs)}.ds-table-caption-control.ds-table-caption-control--compact.sc-ds-select-h{flex:0 0 auto;width:var(--ds-control-height, var(--dimension-size-400));height:var(--ds-control-height, var(--dimension-size-400));min-width:var(--ds-control-height, var(--dimension-size-400));min-height:var(--ds-control-height, var(--dimension-size-400));max-width:var(--ds-control-height, var(--dimension-size-400));inline-size:var(--ds-control-height, var(--dimension-size-400));min-inline-size:var(--ds-control-height, var(--dimension-size-400));max-inline-size:var(--ds-control-height, var(--dimension-size-400))}.ds-table-caption-control.ds-table-caption-control--compact.sc-ds-select-h .trigger.sc-ds-select{justify-content:center;inline-size:100%;min-inline-size:100%;height:100%;padding-inline:0}.ds-table-caption-control.ds-table-caption-control--compact.sc-ds-select-h .trigger--has-value.sc-ds-select:not(.trigger--label-placeholder){--ds-select-prefix-fg:var(--ds-select-fg-active)}@container ds-table (max-width: 899px){.sc-ds-select-h.ds-table-caption-control{flex:0 0 auto;inline-size:var(--ds-control-height, var(--dimension-size-400));min-inline-size:var(--ds-control-height, var(--dimension-size-400));max-inline-size:var(--ds-control-height, var(--dimension-size-400))}.sc-ds-select-h.ds-table-caption-control .trigger{justify-content:center;inline-size:100%;min-inline-size:100%;padding-inline:0}.sc-ds-select-h.ds-table-caption-control .trigger--has-value:not(.trigger--label-placeholder){--ds-select-prefix-fg:var(--ds-select-fg-active)}}.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)}.ds-control-elevation.sc-ds-select-h,.ds-control-elevation.sc-ds-select{position:relative;overflow:visible;box-shadow:var(--ds-control-elevation-shadow, none)}.ds-control-elevation.sc-ds-select-h::after,.ds-control-elevation.sc-ds-select::after{content:'';position:absolute;inset:0;z-index:4;border-radius:inherit;box-shadow:var(--ds-control-elevation-highlight, none);pointer-events:none}.ds-control-elevation--sm.sc-ds-select-h,.ds-control-elevation--sm.sc-ds-select{--ds-control-elevation-shadow:var(--effect-shadow-elevated-sm);--ds-control-elevation-highlight:var(--effect-highlight-elevated-sm)}.ds-control-elevation--md.sc-ds-select-h,.ds-control-elevation--md.sc-ds-select{--ds-control-elevation-shadow:var(--effect-shadow-elevated-md);--ds-control-elevation-highlight:var(--effect-highlight-elevated-md)}.ds-control-elevation--floating.sc-ds-select-h,.ds-control-elevation--floating.sc-ds-select{--ds-control-elevation-shadow:var(--effect-shadow-elevated-floating);--ds-control-elevation-highlight:var(--effect-highlight-elevated-floating)}.ds-control-elevation--press-scale.sc-ds-select{--ds-control-press-active-scale:var(--dimension-scale-default);transition:scale var(--effect-motion-short-2)}.ds-control-elevation--press-scale[data-ds-press-active].sc-ds-select{scale:var(--dimension-scale-subtle)}@media (prefers-reduced-motion: reduce){.ds-control-elevation--press-scale.sc-ds-select,.ds-control-elevation--press-scale[data-ds-press-active].sc-ds-select{scale:none;transition:none}}.wrapper--error.sc-ds-select{--ds-interaction-border-width:var(--dimension-stroke-width-018);--ds-interaction-border-color:var(--color-border-bold-negative)}.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)}.select-option-row.sc-ds-select{position:relative;isolation:isolate}.select-option-row__action.sc-ds-select{position:absolute;top:50%;right:var(--dimension-space-050);z-index:var(--dimension-z-index-floating);display:flex;align-items:center;justify-content:center;border-radius:var(--dimension-radius-half);background:var(--color-background-transparent);-webkit-backdrop-filter:blur(var(--effect-blur-sm));backdrop-filter:blur(var(--effect-blur-sm));opacity:0;pointer-events:none;transform:translateY(-50%)}.select-option-row.sc-ds-select:has(:focus-visible) .select-option-row__action.sc-ds-select,.select-option-row--action-open.sc-ds-select .select-option-row__action.sc-ds-select,.select-option-row--keyboard-active.sc-ds-select .select-option-row__action.sc-ds-select{opacity:1;pointer-events:auto}.select-option-row--action-open.sc-ds-select .select-option.sc-ds-select::after{background:var(--ds-interaction-hover)}.select-option__subtext-actions.sc-ds-select{display:flex;align-items:center;gap:var(--dimension-space-050);min-inline-size:0;color:var(--color-foreground-secondary)}.select-option__subtext-action.sc-ds-select{appearance:none;display:inline-flex;align-items:center;padding:0;border:0;border-radius:var(--dimension-radius-025);background:transparent;cursor:pointer}.select-option__subtext-action--negative.sc-ds-select{--ds-text-action-foreground:var(--color-foreground-bold-negative)}.select-option__subtext-action-separator.sc-ds-select{color:var(--color-foreground-tertiary);pointer-events:none}@media (hover: hover) and (pointer: fine){.select-option-row.sc-ds-select:hover .select-option-row__action.sc-ds-select{opacity:1;pointer-events:auto}.select-option-row.sc-ds-select:hover .select-option.sc-ds-select::after{background:var(--ds-interaction-hover)}}@media (hover: none){.select-option-row__action.sc-ds-select{opacity:1;pointer-events:auto}.select-option-row--has-action.sc-ds-select .ds-choice-item__content.sc-ds-select{padding-inline-end:var(--dimension-size-400)}}.error-text.sc-ds-select{width:100%}`;const W={lg:"lg",md:"md",sm:"sm",xs:"xs"};const Z={lg:"md",md:"sm",sm:"xs",xs:"xs"};let Q=0;const Y=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.dsChange=t(this,"dsChange",7);this.dsClear=t(this,"dsClear",7);this.dsOpenChange=t(this,"dsOpenChange",7);this.dsFooterAction=t(this,"dsFooterAction",7);this.dsOptionAction=t(this,"dsOptionAction",7);this.dsOptionSubtextAction=t(this,"dsOptionSubtextAction",7);this.internals=this.attachInternals();this.options=[];this.sections=[];this.multiple=false;this.value="";this.open=false;this.disabled=false;this.required=false;this.requiredMessage=R;this.placeholder="Select";this.triggerLabelPlaceholder=false;this.dot=false;this.size="md";this.width="hug";this.popupAlign="start";this.isInactive=false;this.isLoading=false;this.neutralTrigger=false;this.activeFill=false;this.collapseLabel=false;this.iconOnly=false;this.hasBorder=true;this.indicator="down";this.allowClear=true;this.clearLabel="Clear";this.selectedLabel="selected";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.compactFooterSummary=false;this.captionCompact=false;this.generatedId=`ds-select-${++Q}`;this.listboxId=`${this.generatedId}-listbox`;this.errorId=`${this.generatedId}-error`;this.initialValue="";this.controller=this.createController();this.hasLoaded=false;this.clearSelection=e=>{e.preventDefault();e.stopPropagation();this.value=this.multiple?[]:"";this.dsChange.emit(this.multiple?[]:"");this.dsClear.emit();if(!this.multiple){const e=l(this.visibleOptions);this.activeIndex=e[0]??-1}this.controller.focusSearchOrTrigger()};this.activateFooterAction=e=>{e.preventDefault();e.stopPropagation();this.dsFooterAction.emit();this.closePopup()};this.handleListKeyDown=this.controller.handleListKeyDown;this.handleTriggerKeyDown=this.controller.handleTriggerKeyDown}createController(){const e=this;return new N({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(){if(e.multiple)return-1;return e.visibleOptions.findIndex((s=>s.value===e.scalarValue&&!s.isInactive))},get popupAlign(){return e.popupAlign},get boundary(){return e.boundary},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.value=this.normalizeValueForMode(this.value);this.initialValue=Array.isArray(this.value)?[...this.value]:this.value;this.syncFormValue()}componentDidLoad(){this.hasLoaded=true;this.controller.connect();this.observeFooterContent();this.syncCaptionCompactObserver()}connectedCallback(){if(!this.hasLoaded)return;this.controller.connect();this.observeFooterContent();this.syncCaptionCompactObserver()}componentDidRender(){this.observeFooterContent();this.scheduleFooterSummaryMeasurement()}disconnectedCallback(){this.controller.disconnect();this.footerResizeObserver?.disconnect();this.observedFooterContentElement=undefined;if(this.footerMeasurementFrame!==undefined){cancelAnimationFrame(this.footerMeasurementFrame);this.footerMeasurementFrame=undefined}this.disconnectCaptionCompactObserver()}onCollapseLabelChange(){this.syncCaptionCompactObserver()}syncFormValue(){if(this.multiple&&!Array.isArray(this.value)||!this.multiple&&Array.isArray(this.value)){this.value=this.normalizeValueForMode(this.value)}const e=this.isDisabled;if(this.multiple){const s=this.resolvedValues;E(this.internals,this.name,s,{inactive:e})}else{const s=this.hasSelection?this.scalarValue:"";q(this.internals,s,{inactive:e})}const s=this.required&&!e&&!this.hasSelection;D(this.internals,s,this.requiredMessage);this.controller.optionsChanged()}onLoadingChange(){this.controller.loadingChanged()}onPopupAlignChange(){this.controller.positionChanged()}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.normalizeValueForMode(this.initialValue);this.closePopup()}formStateRestoreCallback(e){if(!this.multiple){this.value=B(e);return}this.value=H(e)}async setFocus(){this.controller.setFocus()}get isDisabled(){return this.disabled||this.isInactive||this.formDisabled}normalizeValueForMode(e){if(this.multiple){return Array.isArray(e)?[...e]:e?[e]:[]}return Array.isArray(e)?e[0]??"":e}get allSections(){return g(this.options,this.sections)}get allOptions(){return u(this.allSections)}get visibleSections(){return this.searchable?f(this.allSections,this.searchTerm):this.allSections}get visibleOptions(){return u(this.visibleSections)}get scalarValue(){return typeof this.value==="string"?this.value:""}get resolvedValues(){if(!this.multiple||!Array.isArray(this.value))return[];const e=new Set(this.allOptions.map((e=>e.value)));return[...new Set(this.value.filter((s=>e.has(s))))]}get selectedOption(){if(this.multiple)return undefined;return this.allOptions.find((e=>e.value===this.scalarValue))}get hasSelection(){return this.multiple?this.resolvedValues.length>0:Boolean(this.selectedOption)}get activeOptionId(){return this.controller.activeOptionId}get popupRole(){return this.allOptions.some((e=>Boolean(e.action)))?"grid":"listbox"}observeFooterContent(){const e=this.open&&this.multiple&&this.hasSelection?this.footerContentElement:undefined;if(!e?.isConnected){this.footerResizeObserver?.disconnect();this.observedFooterContentElement=undefined;return}if(this.observedFooterContentElement===e)return;this.footerResizeObserver?.disconnect();if(typeof ResizeObserver!=="undefined"){this.footerResizeObserver=new ResizeObserver((()=>this.scheduleFooterSummaryMeasurement()));this.footerResizeObserver.observe(e)}this.observedFooterContentElement=e}scheduleFooterSummaryMeasurement(){if(!this.open||!this.multiple||!this.hasSelection||this.footerMeasurementFrame!==undefined){return}this.footerMeasurementFrame=requestAnimationFrame((()=>{this.footerMeasurementFrame=undefined;this.measureFooterSummary()}))}measureFooterSummary(){const e=this.footerContentElement;const s=this.footerSummaryMeasureElement;const t=this.footerClearElement;if(!e?.isConnected||!s?.isConnected||!t?.isConnected)return;const i=getComputedStyle(e);const o=e.clientWidth-Number.parseFloat(i.paddingInlineStart||"0")-Number.parseFloat(i.paddingInlineEnd||"0");const r=s.getBoundingClientRect().width+t.getBoundingClientRect().width+Number.parseFloat(i.columnGap||"0");const n=r>o+.5;if(n!==this.compactFooterSummary){this.compactFooterSummary=n}}closePopup(e=false){this.controller.closePopup(e)}openPopup(e,s){this.controller.openPopup(e,s)}selectOption(e){if(e.isInactive||this.isLoading)return;if(this.multiple){const s=this.resolvedValues;const t=s.includes(e.value)?s.filter((s=>s!==e.value)):[...s,e.value];this.value=t;this.dsChange.emit([...t]);return}this.value=e.value;this.dsChange.emit(e.value);this.controller.closePopup(true)}renderOption(e,s,t,o){const r=this.multiple?this.resolvedValues.includes(e.value):e.value===this.scalarValue;const c=s===this.activeIndex;const d=`${this.generatedId}-option-action-${s}`;return i(n,{size:this.size,id:`${this.generatedId}-option-${s}`,option:e,selected:r,active:c,focusRingVisible:this.focusRingVisible,usesSubtext:o,actionOpen:e.action?.surfaceOpen??e.action?.expanded,popupRole:this.popupRole,leading:this.multiple?i("span",{class:"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content","aria-hidden":"true"},i("ds-checkbox",{class:"select-option__checkbox",label:"",size:this.size,checked:r,presentation:true})):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,supporting:e.subtextActions?.length?i("span",{class:"ds-choice-item__subtext ds-control-label-box select-option__subtext-actions"},e.subtextActions.map(((s,t)=>[t>0?i("ds-text",{class:"select-option__subtext-action-separator",as:"span",variant:U[this.size],color:"inherit","aria-hidden":"true"},"·"):null,i("button",{type:"button",class:{"select-option__subtext-action":true,"select-option__subtext-action--negative":s.tone==="negative","ds-text-action":true,"ds-focus-ring":true},onKeyDown:e=>e.stopPropagation(),onClick:t=>{t.preventDefault();t.stopPropagation();this.dsOptionSubtextAction.emit({value:e.value,actionValue:s.value,originalEvent:t})}},i("ds-text",{as:"span",variant:U[this.size],color:"inherit"},s.label))]))):undefined,action:e.action?i("ds-tooltip",{label:e.action.label,side:"left",size:"sm"},i("ds-button-unfilled",{id:d,variant:"icon",size:Z[this.size],icon:"Ellipses",rounded:true,hasBorder:false,activeFill:false,ariaLabel:e.action.label,haspopup:"menu",controls:e.action.controls,expanded:e.action.expanded,surfaceOpen:e.action.surfaceOpen,onKeyDown:e=>{e.stopPropagation();if(e.key==="Escape"||e.key==="ArrowLeft"){e.preventDefault();this.controller.focusSearchOrTrigger()}},onDsClick:s=>{s.stopPropagation();this.dsOptionAction.emit({value:e.value,anchorId:d,originalEvent:s.detail})}})):undefined,onHover:()=>{this.focusRingVisible=false;this.activeIndex=s},onSelect:()=>this.selectOption(e)})}get captionIconOnly(){return(this.iconOnly||this.collapseLabel&&this.captionCompact)&&Boolean(this.icon||this.isLoading)}syncCaptionCompactObserver(){this.disconnectCaptionCompactObserver();if(!this.collapseLabel){if(this.captionCompact)this.captionCompact=false;return}this.captionCompactDisconnect=A(this.el,(e=>{if(this.captionCompact!==e)this.captionCompact=e}))}disconnectCaptionCompactObserver(){this.captionCompactDisconnect?.();this.captionCompactDisconnect=undefined}renderCaptionTooltip(e,s){if(!this.collapseLabel)return e;return i("ds-tooltip",{label:s,side:"top",size:"sm"},e)}render(){const e=this.isDisabled;const s=!this.hasSelection;const t=this.resolvedValues.length;const r=this.multiple?`${this.placeholder}${t>0?` · ${t}`:""}`:s?this.placeholder:this.triggerLabel??this.selectedOption?.label;const n=K[this.size];const l=W[this.size];const h=!this.multiple&&v(this.allOptions);const p=m(this.allOptions);const g=this.error&&Boolean(this.errorMessage);const u=[this.ariaDescribedby,g?this.errorId:undefined].filter(Boolean).join(" ")||undefined;const f={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 x=0;return i(o,{key:"d572ef373958c61578f2491808b8d740f14647f0",class:{"select-host":true,"ds-select-trigger-host":true,"select-host--multiple":this.multiple,"ds-field-stack":true,"ds-control-inactive":e,[`ds-control--${this.size}`]:true,"ds-table-caption-control":this.collapseLabel,"ds-table-caption-control--compact":this.captionIconOnly,...M(this.width),[`select-host--background-${this.background}`]:!!this.background,[`ds-select-trigger-host--background-${this.background}`]:!!this.background}},this.renderCaptionTooltip(i("button",{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--expanded":!e&&this.open,"ds-interaction-fill--surface-open":!e&&this.open,"trigger--bordered":this.hasBorder,"trigger--placeholder":s&&!this.multiple,"trigger--has-value":this.hasSelection&&!this.neutralTrigger,"trigger--label-placeholder":!this.multiple&&Boolean(this.triggerLabel)&&this.triggerLabelPlaceholder,"wrapper--error":this.hasBorder&&this.error,[`ds-control--${this.size}`]:true,...b(this.background)},disabled:e,role:"combobox","aria-haspopup":this.popupRole,"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??(this.captionIconOnly?r:undefined),"aria-labelledby":this.ariaLabelledby,"aria-describedby":u,"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:e=>{const s=this.visibleOptions[this.activeIndex]?.action;if(this.open&&s&&(e.key==="ArrowRight"||e.key==="F10"&&e.shiftKey)){e.preventDefault();document.getElementById(`${this.generatedId}-option-action-${this.activeIndex}`)?.querySelector("button")?.focus();return}this.handleTriggerKeyDown(e)}},(this.icon||this.isLoading)&&i("span",{class:"trigger__prefix ds-control-icon-box ds-interaction-fill__content","aria-hidden":"true"},this.isLoading?i("ds-loader",{size:l,color:"inherit"}):i("ds-icon",{name:this.icon,size:l,color:"inherit"})),this.captionIconOnly?null:i("span",{class:{"trigger__label-box":true,"ds-interaction-fill__content":true}},i("span",{class:{"trigger__label-content":true,"ds-control-label-box":true,"ds-control-label-dot":this.dot,"trigger__label-content--dot":this.dot}},i("ds-text",{class:"trigger__label",as:"span",variant:n,color:"inherit",lineTruncation:1},r),this.dot&&i("ds-badge",{class:"trigger__dot ds-control-label-dot__badge",variant:"dot",hasRing:false,label:"","aria-hidden":"true"}))),this.captionIconOnly||this.indicator==="none"?null:i("span",{class:"trigger__chevron ds-control-icon-box ds-interaction-fill__content","aria-hidden":"true"},i("ds-icon",{name:this.indicator==="up-down"?"ChevronUpDown":"ChevronDown",size:l,color:"inherit"}))),this.captionIconOnly?this.ariaLabel?.trim()||this.placeholder:""),this.open&&i("div",{key:"614f37ef230b5d8adba15519f19af6d2115f254f",popover:"manual",ref:e=>{this.controller.setPopupElement(e??null)},class:"select-popup ds-choice-popup",style:f},this.searchable&&i(c,{key:"776e7ab3a453c35fc92b927680364afd03827998",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:"ea6f13dbeb8ad1c0e4f591e7d9c417057e214b2a",id:this.listboxId,class:"ds-choice-list",role:this.popupRole,"aria-multiselectable":this.multiple?"true":undefined,"aria-label":this.ariaLabel??this.placeholder,"aria-busy":this.isLoading?"true":undefined},this.isLoading?i("div",{class:"ds-choice-loading ds-empty-region",role:this.popupRole==="grid"?"row":"option","aria-selected":"false","aria-disabled":"true","aria-label":this.loadingLabel,"aria-live":"polite"},this.popupRole==="grid"?i("span",{role:"gridcell"},i("ds-loader",{size:this.size,color:"inherit"})):i("ds-loader",{size:this.size,color:"inherit"})):this.visibleOptions.length===0?i("div",{class:"ds-choice-empty ds-empty-region",role:this.popupRole==="grid"?"row":"option","aria-selected":"false","aria-disabled":"true","aria-label":this.noResultsText,"aria-live":"polite"},this.popupRole==="grid"?i("span",{role:"gridcell"},i("ds-empty-state",{body:this.noResultsText})):i("ds-empty-state",{body:this.noResultsText})):this.visibleSections.map(((e,s)=>i("div",{class:{"ds-choice-section":true,"ds-chrome-column":true,"ds-chrome-space--sm":true,"ds-choice-section--divided":!!e.divider,"ds-choice-section--headed-after-first":s>0&&Boolean(e.header)},role:this.popupRole==="grid"?"rowgroup":e.header?"group":undefined,"aria-label":e.header},e.header&&this.popupRole==="grid"?i("ds-text",{class:`ds-choice-section__header ds-control-section-heading ds-control--${this.size}`,as:"span",variant:U[this.size],emphasis:true,color:"primary",role:"row"},i("span",{class:"ds-choice-section__header-label",role:"gridcell"},e.header)):e.header?i("ds-text",{class:`ds-choice-section__header ds-control-section-heading ds-control--${this.size}`,as:"span",variant:U[this.size],emphasis:true,color:"primary","aria-hidden":"true"},i("span",{class:"ds-choice-section__header-label"},e.header)):null,e.options.map((e=>this.renderOption(e,x++,h,p))))))),this.footerActionLabel&&!this.isLoading?i(d,{size:this.size,label:this.footerActionLabel,onAction:this.activateFooterAction}):this.allowClear&&this.hasSelection&&!this.isLoading?i(a,{size:this.size,summary:this.multiple?`${t} ${this.selectedLabel}`:undefined,compactSummary:this.multiple?String(t):undefined,useCompactSummary:this.compactFooterSummary,contentRef:e=>{this.footerContentElement=e??undefined},summaryMeasureRef:e=>{this.footerSummaryMeasureElement=e??undefined},clearRef:e=>{this.footerClearElement=e??undefined},clearLabel:this.clearLabel,onClear:this.clearSelection}):null),g&&i("ds-text",{key:"ea678ca720792854c8d355f1e9cf1848ba4fc0a7",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{collapseLabel:[{onCollapseLabelChange:0}],value:[{syncFormValue:0}],multiple:[{syncFormValue:0}],disabled:[{syncFormValue:0}],isInactive:[{syncFormValue:0}],required:[{syncFormValue:0}],name:[{syncFormValue:0}],options:[{syncFormValue:0}],sections:[{syncFormValue:0}],isLoading:[{onLoadingChange:0}],popupAlign:[{onPopupAlignChange:0}],boundary:[{onPopupAlignChange:0}],open:[{onOpenChange:0}],searchTerm:[{onSearchTermChange:0}],activeIndex:[{onActiveIndexChange:0}]}}static get style(){return G()}},[66,"ds-select",{options:[16],sections:[16],multiple:[516],value:[1025],open:[1540],name:[513],disabled:[516],required:[516],requiredMessage:[1,"required-message"],placeholder:[1],triggerLabel:[1,"trigger-label"],triggerLabelPlaceholder:[4,"trigger-label-placeholder"],dot:[4],size:[1],width:[1],popupAlign:[1,"popup-align"],boundary:[16],isInactive:[4,"is-inactive"],isLoading:[4,"is-loading"],neutralTrigger:[4,"neutral-trigger"],activeFill:[4,"active-fill"],collapseLabel:[516,"collapse-label"],iconOnly:[4,"icon-only"],hasBorder:[4,"has-border"],icon:[1],indicator:[1],allowClear:[4,"allow-clear"],clearLabel:[1,"clear-label"],selectedLabel:[1,"selected-label"],footerActionLabel:[1,"footer-action-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],compactFooterSummary:[32],captionCompact:[32],setFocus:[64]},undefined,{collapseLabel:[{onCollapseLabelChange:0}],value:[{syncFormValue:0}],multiple:[{syncFormValue:0}],disabled:[{syncFormValue:0}],isInactive:[{syncFormValue:0}],required:[{syncFormValue:0}],name:[{syncFormValue:0}],options:[{syncFormValue:0}],sections:[{syncFormValue:0}],isLoading:[{onLoadingChange:0}],popupAlign:[{onPopupAlignChange:0}],boundary:[{onPopupAlignChange:0}],open:[{onOpenChange:0}],searchTerm:[{onSearchTermChange:0}],activeIndex:[{onActiveIndexChange:0}]}]);function X(){if(typeof customElements==="undefined"){return}const e=["ds-select","ds-badge","ds-button-unfilled","ds-checkbox","ds-empty-state","ds-icon","ds-input","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-select":if(!customElements.get(r(e))){customElements.define(r(e),Y)}break;case"ds-badge":if(!customElements.get(r(e))){L()}break;case"ds-button-unfilled":if(!customElements.get(r(e))){T()}break;case"ds-checkbox":if(!customElements.get(r(e))){O()}break;case"ds-empty-state":if(!customElements.get(r(e))){j()}break;case"ds-icon":if(!customElements.get(r(e))){S()}break;case"ds-input":if(!customElements.get(r(e))){P()}break;case"ds-loader":if(!customElements.get(r(e))){$()}break;case"ds-text":if(!customElements.get(r(e))){I()}break;case"ds-tooltip":if(!customElements.get(r(e))){V()}break}}))}X();export{Y as S,X as d};
|
|
2
|
-
//# sourceMappingURL=p-Cmj04E5Q.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["SelectController","constructor","state","this","triggerEl","popupEl","searchEl","typeahead","typeaheadTimer","outsideHandler","setTriggerElement","element","setPopupElement","setSearchElement","handleTriggerKeyDown","event","open","includes","key","preventDefault","openPopup","isTypeaheadKey","searchable","searchTerm","handleTypeahead","handleListKeyDown","focusRingVisible","activeIndex","moveChoiceIndex","options","enabledChoiceIndexes","enabled","length","target","Node","contains","option","selectOption","closePopup","position","AnchoredPositionController","getAnchor","getPopup","measure","trigger","popup","isConnected","host","sectionPadding","resolveCssLengthPx","TOKEN_DEFAULTS","space050","style","minWidth","menuWidthXs","choicePopupMinWidth","offsetWidth","align","popupAlign","anchorRect","getBoundingClientRect","popupWidth","popupHeight","offsetHeight","side","sideOffsetPx","alignOffsetPx","resolveChoicePopupAlignOffset","sectionInsetPx","viewportPadPx","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","boundary","apply","x","y","positionReady","topLayer","activeOptionId","isLoading","generatedId","undefined","connect","openChanged","disconnect","cancelPositionRetry","unbindPopupListeners","clearTimeout","setFocus","focus","optionsChanged","requestAnimationFrame","updatePosition","loadingChanged","positionChanged","bindPopupListeners","schedulePositionUpdate","scrollActiveOptionIntoView","searchChanged","activeIndexChanged","focusVisible","edge","isDisabled","preferredIndex","restoreFocus","focusSearchOrTrigger","metaKey","ctrlKey","altKey","normalized","toLocaleLowerCase","repeatedCharacter","every","character","match","findChoiceTypeaheadMatch","resetMs","resolveCssTimeMs","animationDurationMedium1","setTimeout","querySelector","scrollIntoView","block","inline","eventIntersectsComposedBoundary","document","addEventListener","observe","removeEventListener","unobserve","cancel","onReady","schedule","update","selectCss","ICON_SIZE","lg","md","sm","xs","OPTION_ACTION_SIZE","selectId","Select","__stencil_proxyCustomElement","HTMLElement","registerHost","sections","multiple","value","disabled","required","requiredMessage","DEFAULT_REQUIRED_MESSAGE","placeholder","triggerLabelPlaceholder","dot","size","width","isInactive","neutralTrigger","activeFill","collapseLabel","iconOnly","hasBorder","indicator","allowClear","clearLabel","selectedLabel","searchPlaceholder","noResultsText","loadingLabel","error","ariaLabel","formDisabled","compactFooterSummary","captionCompact","listboxId","errorId","initialValue","controller","createController","hasLoaded","clearSelection","stopPropagation","dsChange","emit","dsClear","visibleOptions","activateFooterAction","dsFooterAction","owner","el","findIndex","scalarValue","componentWillLoad","normalizeValueForMode","Array","isArray","syncFormValue","componentDidLoad","observeFooterContent","syncCaptionCompactObserver","connectedCallback","componentDidRender","scheduleFooterSummaryMeasurement","disconnectedCallback","footerResizeObserver","observedFooterContentElement","footerMeasurementFrame","cancelAnimationFrame","disconnectCaptionCompactObserver","onCollapseLabelChange","inactive","values","resolvedValues","setRepeatedFormControlValue","internals","name","hasSelection","setFormControlValue","missing","setRequiredValidity","onLoadingChange","onPopupAlignChange","onOpenChange","dsOpenChange","onSearchTermChange","onActiveIndexChange","formDisabledCallback","formResetCallback","formStateRestoreCallback","restoreStringFormState","restoreStringArrayFormState","allSections","resolveChoiceSections","allOptions","flattenChoiceSections","visibleSections","filterChoiceSections","valid","Set","map","filter","has","selectedOption","find","Boolean","popupRole","some","action","content","footerContentElement","ResizeObserver","measureFooterSummary","summary","footerSummaryMeasureElement","clear","footerClearElement","styles","getComputedStyle","clientWidth","Number","parseFloat","paddingInlineStart","paddingInlineEnd","requiredWidth","columnGap","nextCompact","current","next","renderOption","index","usesIcons","usesSubtext","selected","active","actionId","h","ChoiceOptionRow","id","actionOpen","surfaceOpen","expanded","leading","class","label","checked","presentation","icon","color","supporting","subtextActions","actionIndex","as","variant","CONTROL_SUPPORTING_TEXT_VARIANT","type","tone","onKeyDown","onClick","dsOptionSubtextAction","actionValue","originalEvent","rounded","haspopup","controls","onDsClick","dsOptionAction","anchorId","detail","onHover","onSelect","captionIconOnly","captionCompactDisconnect","observeTableCaptionCompact","compact","renderCaptionTooltip","render","showPlaceholder","count","triggerLabel","textVariant","CONTROL_TEXT_VARIANT","iconSize","usesOptionIcons","choiceListUsesIcons","usesOptionSubtext","choiceListUsesSubtext","showError","errorMessage","describedBy","ariaDescribedby","join","popupStyle","left","top","transform","Math","round","zIndex","visibility","flatIndex","Host","controlWidthClass","background","ref","inputId","choiceBackgroundClassMap","role","String","ariaLabelledby","shiftKey","getElementById","lineTruncation","hasRing","trim","popover","ChoiceSearch","activeDescendant","inputRef","onValueChange","body","section","sectionIndex","divider","header","emphasis","footerActionLabel","ChoiceActionFooter","onAction","ChoiceFooter","compactSummary","useCompactSummary","contentRef","summaryMeasureRef","clearRef","onClear","textId"],"sources":["src/wc/utils/select-controller.ts","src/wc/components/Select/Select.css?tag=ds-select&encapsulation=scoped","src/wc/components/Select/Select.tsx"],"sourcesContent":["import { AnchoredPositionController } from './anchored-position-controller';\nimport {\n enabledChoiceIndexes,\n findChoiceTypeaheadMatch,\n moveChoiceIndex,\n type ChoiceOption,\n} from './choice-list';\nimport { choicePopupMinWidth, resolveChoicePopupAlignOffset } from './choice-popup-alignment';\nimport { resolveCssLengthPx } from './resolve-css-length-px';\nimport { resolveCssTimeMs } from './resolve-css-time-ms';\nimport { TOKEN_DEFAULTS } from './token-defaults';\nimport { eventIntersectsComposedBoundary } from './anchored-overlay-interaction-controller';\nimport { resolveAnchoredOverlayBoundaryRect } from './anchored-overlay-boundary';\n\ntype PopupPosition = { x: number; y: number };\n\nexport interface SelectControllerState<T extends ChoiceOption> {\n readonly host: HTMLElement;\n readonly generatedId: string;\n readonly options: T[];\n readonly searchable: boolean;\n readonly isLoading: boolean;\n readonly isDisabled: boolean;\n readonly preferredIndex: number;\n readonly popupAlign: 'start' | 'end';\n readonly boundary: HTMLElement | undefined;\n open: boolean;\n activeIndex: number;\n searchTerm: string;\n focusRingVisible: boolean;\n position: PopupPosition;\n positionReady: boolean;\n selectOption(option: T): void;\n}\n\n/**\n * Shared single/multiple Select interaction controller.\n *\n * Decorated Stencil state and scalar/array selection remain in each component;\n * this controller owns only popup lifecycle, focus, positioning, typeahead,\n * and listbox keyboard traversal. Anchored placement is delegated to\n * `AnchoredPositionController`; only the choice-cell measurement stays here.\n */\nexport class SelectController<T extends ChoiceOption> {\n private triggerEl: HTMLButtonElement | null = null;\n private popupEl: HTMLDivElement | null = null;\n private searchEl: HTMLDsInputElement | null = null;\n private typeahead = '';\n private typeaheadTimer: ReturnType<typeof setTimeout> | null = null;\n private outsideHandler: ((event: MouseEvent) => void) | null = null;\n private readonly position: AnchoredPositionController;\n\n constructor(private readonly state: SelectControllerState<T>) {\n this.position = new AnchoredPositionController({\n getAnchor: () => this.triggerEl,\n getPopup: () => this.popupEl,\n measure: (trigger, popup) => {\n if (!this.state.open || !popup.isConnected || !this.state.host.contains(popup)) return null;\n\n const sectionPadding = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n popup.style.minWidth = `max(var(--ds-choice-popup-min-inline-size, ${TOKEN_DEFAULTS.menuWidthXs}), ${choicePopupMinWidth(trigger.offsetWidth, sectionPadding)}px)`;\n\n const align = this.state.popupAlign;\n return {\n anchorRect: trigger.getBoundingClientRect(),\n popupWidth: popup.offsetWidth,\n popupHeight: popup.offsetHeight,\n side: 'bottom',\n align,\n sideOffsetPx: sectionPadding,\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align,\n alignOffsetPx: 0,\n sectionInsetPx: sectionPadding,\n }),\n viewportPadPx: sectionPadding,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(trigger, this.state.boundary),\n };\n },\n apply: ({ x, y }) => {\n this.state.position = { x, y };\n this.state.positionReady = true;\n },\n topLayer: true,\n });\n }\n\n get activeOptionId(): string | undefined {\n return !this.state.isLoading && this.state.activeIndex >= 0\n ? `${this.state.generatedId}-option-${this.state.activeIndex}`\n : undefined;\n }\n\n setTriggerElement = (element: HTMLButtonElement | null) => {\n this.triggerEl = element;\n };\n\n setPopupElement = (element: HTMLDivElement | null) => {\n this.popupEl = element;\n };\n\n setSearchElement = (element: HTMLDsInputElement | null) => {\n this.searchEl = element;\n };\n\n connect() {\n if (this.state.open) this.openChanged(true);\n }\n\n disconnect() {\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n }\n\n setFocus() {\n this.triggerEl?.focus();\n }\n\n optionsChanged() {\n if (!this.state.open) return;\n const enabled = enabledChoiceIndexes(this.state.options);\n if (!enabled.includes(this.state.activeIndex)) this.state.activeIndex = enabled[0] ?? -1;\n requestAnimationFrame(() => this.updatePosition());\n }\n\n loadingChanged() {\n if (this.state.open) requestAnimationFrame(() => this.updatePosition());\n }\n\n positionChanged() {\n if (this.state.open) requestAnimationFrame(() => this.updatePosition());\n }\n\n openChanged(open: boolean) {\n if (open) {\n this.bindPopupListeners();\n this.schedulePositionUpdate(() => {\n this.scrollActiveOptionIntoView();\n if (this.state.searchable) void this.searchEl?.setFocus();\n });\n return;\n }\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n this.state.searchTerm = '';\n this.state.positionReady = false;\n }\n\n searchChanged() {\n this.state.activeIndex = enabledChoiceIndexes(this.state.options)[0] ?? -1;\n requestAnimationFrame(() => {\n this.updatePosition();\n this.scrollActiveOptionIntoView();\n });\n }\n\n activeIndexChanged() {\n requestAnimationFrame(() => this.scrollActiveOptionIntoView());\n }\n\n openPopup(focusVisible: boolean, edge?: 'first' | 'last') {\n if (this.state.isDisabled || (!this.state.options.length && !this.state.isLoading)) return;\n const enabled = enabledChoiceIndexes(this.state.options);\n this.state.activeIndex =\n edge === 'last'\n ? (enabled[enabled.length - 1] ?? -1)\n : this.state.preferredIndex >= 0\n ? this.state.preferredIndex\n : (enabled[0] ?? -1);\n this.state.focusRingVisible = focusVisible;\n this.state.open = true;\n }\n\n closePopup(restoreFocus = false) {\n if (!this.state.open) return;\n this.state.open = false;\n if (restoreFocus) requestAnimationFrame(() => this.triggerEl?.focus());\n }\n\n focusSearchOrTrigger() {\n requestAnimationFrame(() => {\n if (this.state.searchable) void this.searchEl?.setFocus();\n else this.triggerEl?.focus();\n });\n }\n\n handleTriggerKeyDown = (event: KeyboardEvent) => {\n if (!this.state.open) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n this.openPopup(true, event.key === 'ArrowUp' ? 'last' : 'first');\n } else if (this.isTypeaheadKey(event)) {\n event.preventDefault();\n this.openPopup(true);\n if (this.state.searchable) this.state.searchTerm = event.key;\n else this.handleTypeahead(event.key);\n }\n return;\n }\n this.handleListKeyDown(event);\n };\n\n handleListKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = moveChoiceIndex(this.state.options, this.state.activeIndex, 1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = moveChoiceIndex(this.state.options, this.state.activeIndex, -1);\n break;\n case 'Home':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = enabledChoiceIndexes(this.state.options)[0] ?? -1;\n break;\n case 'End': {\n event.preventDefault();\n this.state.focusRingVisible = true;\n const enabled = enabledChoiceIndexes(this.state.options);\n this.state.activeIndex = enabled[enabled.length - 1] ?? -1;\n break;\n }\n case 'Enter':\n case ' ': {\n if (\n event.key === ' ' &&\n this.state.searchable &&\n event.target instanceof Node &&\n this.searchEl?.contains(event.target)\n )\n break;\n event.preventDefault();\n const option = this.state.options[this.state.activeIndex];\n if (option) this.state.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.state.searchable && this.isTypeaheadKey(event)) {\n this.handleTypeahead(event.key);\n }\n }\n };\n\n private isTypeaheadKey(event: KeyboardEvent) {\n return event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey;\n }\n\n private handleTypeahead(key: string) {\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n this.state.focusRingVisible = true;\n const normalized = key.toLocaleLowerCase();\n const repeatedCharacter =\n this.typeahead.length > 0 && [...this.typeahead].every(character => character === normalized);\n this.typeahead = repeatedCharacter ? normalized : `${this.typeahead}${normalized}`;\n const match = findChoiceTypeaheadMatch(\n this.state.options,\n this.typeahead,\n this.state.activeIndex\n );\n if (match >= 0) this.state.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 scrollActiveOptionIntoView() {\n if (!this.state.open || !this.activeOptionId) return;\n this.state.host\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 (eventIntersectsComposedBoundary(event, this.state.host)) return;\n this.closePopup();\n };\n document.addEventListener('mousedown', this.outsideHandler, true);\n this.position.observe();\n }\n\n private unbindPopupListeners() {\n if (this.outsideHandler) {\n document.removeEventListener('mousedown', this.outsideHandler, true);\n this.outsideHandler = null;\n }\n this.position.unobserve();\n }\n\n private cancelPositionRetry() {\n this.position.cancel();\n }\n\n private schedulePositionUpdate(onReady?: () => void) {\n if (!this.state.open) return;\n this.state.positionReady = false;\n this.position.schedule(onReady);\n }\n\n private updatePosition(): boolean {\n return this.position.update();\n }\n}\n","@import '../../utils/radius.css';\n@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/select-trigger.css';\n@import '../../utils/table-caption-control.css';\n@import '../../utils/typography.css';\n@import '../../styles/control-elevation.css';\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.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.select-option-row {\n position: relative;\n isolation: isolate;\n}\n\n.select-option-row__action {\n position: absolute;\n top: 50%;\n right: var(--dimension-space-050);\n z-index: var(--dimension-z-index-floating);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dimension-radius-half);\n background: var(--color-background-transparent);\n -webkit-backdrop-filter: blur(var(--effect-blur-sm));\n backdrop-filter: blur(var(--effect-blur-sm));\n opacity: 0;\n pointer-events: none;\n transform: translateY(-50%);\n}\n\n.select-option-row:has(:focus-visible) .select-option-row__action,\n.select-option-row--action-open .select-option-row__action,\n.select-option-row--keyboard-active .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n}\n\n.select-option-row--action-open .select-option::after {\n background: var(--ds-interaction-hover);\n}\n\n.select-option__subtext-actions {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n min-inline-size: 0;\n color: var(--color-foreground-secondary);\n}\n\n.select-option__subtext-action {\n appearance: none;\n display: inline-flex;\n align-items: center;\n padding: 0;\n border: 0;\n border-radius: var(--dimension-radius-025);\n background: transparent;\n cursor: pointer;\n}\n\n.select-option__subtext-action--negative {\n --ds-text-action-foreground: var(--color-foreground-bold-negative);\n}\n\n.select-option__subtext-action-separator {\n color: var(--color-foreground-tertiary);\n pointer-events: none;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .select-option-row:hover .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n }\n\n .select-option-row:hover .select-option::after {\n background: var(--ds-interaction-hover);\n }\n}\n\n@media (hover: none) {\n .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n }\n\n .select-option-row--has-action .ds-choice-item__content {\n padding-inline-end: var(--dimension-size-400);\n }\n}\n\n.error-text {\n width: 100%;\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n type VNode,\n Watch,\n} from '@stencil/core';\nimport {\n controlWidthClass,\n CONTROL_SUPPORTING_TEXT_VARIANT,\n CONTROL_TEXT_VARIANT,\n DEFAULT_REQUIRED_MESSAGE,\n restoreStringArrayFormState,\n restoreStringFormState,\n setFormControlValue,\n setRepeatedFormControlValue,\n setRequiredValidity,\n type ControlWidth,\n} from '../../utils';\nimport {\n ChoiceActionFooter,\n ChoiceFooter,\n ChoiceOptionRow,\n ChoiceSearch,\n} 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';\nimport { observeTableCaptionCompact } from '../../utils/table-caption-compact';\n\nexport type SelectOption = ChoiceOption;\nexport type SelectSection = ChoiceSection;\nexport type SelectBackground = ChoiceBackground;\nexport type SelectSize = 'lg' | 'md' | 'sm' | 'xs';\nexport type SelectWidth = ControlWidth;\nexport type SelectPopupAlign = 'start' | 'end';\nexport type SelectValue = string | string[];\nexport type SelectIndicator = 'down' | 'up-down' | 'none';\n\nexport interface SelectOptionActionDetail {\n value: string;\n anchorId: string;\n originalEvent: MouseEvent;\n}\n\nexport interface SelectOptionSubtextActionDetail {\n value: string;\n actionValue: string;\n originalEvent: MouseEvent;\n}\n\nconst ICON_SIZE: Record<SelectSize, 'lg' | 'md' | 'sm' | 'xs'> = {\n lg: 'lg',\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\nconst OPTION_ACTION_SIZE: Record<SelectSize, 'md' | 'sm' | 'xs'> = {\n lg: 'md',\n md: 'sm',\n sm: 'xs',\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 /** Enable independent multi-value selection while keeping the popup open. */\n @Prop({ reflect: true }) multiple: boolean = false;\n /** Selected scalar or array value according to `multiple`. */\n @Prop({ mutable: true }) value: SelectValue = '';\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 /** Optional scalar-mode trigger text that does not change the selected option label. */\n @Prop() triggerLabel: string | undefined;\n /** Present triggerLabel with placeholder emphasis while preserving the selected value. */\n @Prop() triggerLabelPlaceholder: boolean = false;\n /** Show a supplemental notification dot beside the trigger label. */\n @Prop() dot: boolean = false;\n /** Control density. */\n @Prop() size: SelectSize = 'md';\n /** Width fit — hug content (default) or fill the parent. */\n @Prop() width: SelectWidth = 'hug';\n /** Align the popup's choice edge to the trigger start or end edge. */\n @Prop() popupAlign: SelectPopupAlign = 'start';\n /** Explicit collision owner; otherwise the nearest data-ds-overlay-boundary ancestor is used. */\n @Prop() boundary: HTMLElement | undefined;\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 /** Keep trigger colors neutral when a value is selected. */\n @Prop() neutralTrigger: boolean = false;\n @Prop() activeFill: boolean = false;\n /**\n * Opt into table-caption icon-only chrome below 900px. The trigger omits its\n * visible label and chevron; keep an accessible name via aria-label.\n */\n @Prop({ reflect: true }) collapseLabel: boolean = false;\n /** Always show only the prefix icon; retain an accessible name via aria-label. */\n @Prop() iconOnly: boolean = false;\n /** Show the surface-aware inset border, including focused and invalid strokes. */\n @Prop() hasBorder: boolean = true;\n /** Optional trigger prefix icon name. */\n @Prop() icon: string | undefined;\n /** Trailing choice indicator. Use up-down for compact value steppers such as page size. */\n @Prop() indicator: SelectIndicator = 'down';\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 /** Localized noun displayed after the selected count in multiple mode. */\n @Prop() selectedLabel: string = 'selected';\n /** Optional text action shown in the popup footer instead of the clear action. */\n @Prop() footerActionLabel: string | undefined;\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 selection or clearing with the next scalar or array value. */\n @Event() dsChange!: EventEmitter<SelectValue>;\n /** Emitted after the footer clear action. */\n @Event() dsClear!: EventEmitter<void>;\n /** Emitted whenever popup visibility changes. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n /** Emitted when the optional popup footer action is activated. */\n @Event() dsFooterAction!: EventEmitter<void>;\n /** Emitted when an option's contextual ellipsis action is activated. */\n @Event() dsOptionAction!: EventEmitter<SelectOptionActionDetail>;\n /** Emitted when an option's supporting text action is activated. */\n @Event() dsOptionSubtextAction!: EventEmitter<SelectOptionSubtextActionDetail>;\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 @State() private compactFooterSummary = false;\n @State() private captionCompact = 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: SelectValue = '';\n private readonly controller = this.createController();\n private footerContentElement?: HTMLDivElement;\n private footerSummaryMeasureElement?: HTMLElement;\n private footerClearElement?: HTMLButtonElement;\n private footerResizeObserver?: ResizeObserver;\n private observedFooterContentElement?: HTMLDivElement;\n private footerMeasurementFrame?: number;\n private captionCompactDisconnect: (() => void) | undefined;\n private hasLoaded = false;\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() {\n return owner.el;\n },\n generatedId: owner.generatedId,\n get options() {\n return owner.visibleOptions;\n },\n get searchable() {\n return owner.searchable;\n },\n get isLoading() {\n return owner.isLoading;\n },\n get isDisabled() {\n return owner.isDisabled;\n },\n get preferredIndex() {\n if (owner.multiple) return -1;\n return owner.visibleOptions.findIndex(\n option => option.value === owner.scalarValue && !option.isInactive\n );\n },\n get popupAlign() {\n return owner.popupAlign;\n },\n get boundary() {\n return owner.boundary;\n },\n get open() {\n return owner.open;\n },\n set open(value) {\n owner.open = value;\n },\n get activeIndex() {\n return owner.activeIndex;\n },\n set activeIndex(value) {\n owner.activeIndex = value;\n },\n get searchTerm() {\n return owner.searchTerm;\n },\n set searchTerm(value) {\n owner.searchTerm = value;\n },\n get focusRingVisible() {\n return owner.focusRingVisible;\n },\n set focusRingVisible(value) {\n owner.focusRingVisible = value;\n },\n get position() {\n return owner.position;\n },\n set position(value) {\n owner.position = value;\n },\n get positionReady() {\n return owner.positionReady;\n },\n set positionReady(value) {\n owner.positionReady = value;\n },\n selectOption: option => owner.selectOption(option),\n });\n }\n\n componentWillLoad() {\n this.value = this.normalizeValueForMode(this.value);\n this.initialValue = Array.isArray(this.value) ? [...this.value] : this.value;\n this.syncFormValue();\n }\n\n componentDidLoad() {\n this.hasLoaded = true;\n this.controller.connect();\n this.observeFooterContent();\n this.syncCaptionCompactObserver();\n }\n\n connectedCallback() {\n if (!this.hasLoaded) return;\n this.controller.connect();\n this.observeFooterContent();\n this.syncCaptionCompactObserver();\n }\n\n componentDidRender() {\n this.observeFooterContent();\n this.scheduleFooterSummaryMeasurement();\n }\n\n disconnectedCallback() {\n this.controller.disconnect();\n this.footerResizeObserver?.disconnect();\n this.observedFooterContentElement = undefined;\n if (this.footerMeasurementFrame !== undefined) {\n cancelAnimationFrame(this.footerMeasurementFrame);\n this.footerMeasurementFrame = undefined;\n }\n this.disconnectCaptionCompactObserver();\n }\n\n @Watch('collapseLabel')\n onCollapseLabelChange() {\n this.syncCaptionCompactObserver();\n }\n\n @Watch('value')\n @Watch('multiple')\n @Watch('disabled')\n @Watch('isInactive')\n @Watch('required')\n @Watch('name')\n @Watch('options')\n @Watch('sections')\n syncFormValue() {\n if (\n (this.multiple && !Array.isArray(this.value)) ||\n (!this.multiple && Array.isArray(this.value))\n ) {\n this.value = this.normalizeValueForMode(this.value);\n }\n const inactive = this.isDisabled;\n if (this.multiple) {\n const values = this.resolvedValues;\n setRepeatedFormControlValue(this.internals, this.name, values, { inactive });\n } else {\n const value = this.hasSelection ? this.scalarValue : '';\n setFormControlValue(this.internals, value, { inactive });\n }\n const missing = this.required && !inactive && !this.hasSelection;\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('popupAlign')\n @Watch('boundary')\n onPopupAlignChange() {\n this.controller.positionChanged();\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.normalizeValueForMode(this.initialValue);\n this.closePopup();\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n if (!this.multiple) {\n this.value = restoreStringFormState(state);\n return;\n }\n this.value = restoreStringArrayFormState(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 normalizeValueForMode(value: SelectValue): SelectValue {\n if (this.multiple) {\n return Array.isArray(value) ? [...value] : value ? [value] : [];\n }\n return Array.isArray(value) ? (value[0] ?? '') : value;\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 scalarValue(): string {\n return typeof this.value === 'string' ? this.value : '';\n }\n\n private get resolvedValues(): string[] {\n if (!this.multiple || !Array.isArray(this.value)) return [];\n const valid = new Set(this.allOptions.map(option => option.value));\n return [...new Set(this.value.filter(value => valid.has(value)))];\n }\n\n private get selectedOption(): SelectOption | undefined {\n if (this.multiple) return undefined;\n return this.allOptions.find(option => option.value === this.scalarValue);\n }\n\n private get hasSelection(): boolean {\n return this.multiple ? this.resolvedValues.length > 0 : Boolean(this.selectedOption);\n }\n\n private get activeOptionId(): string | undefined {\n return this.controller.activeOptionId;\n }\n\n private get popupRole(): 'listbox' | 'grid' {\n return this.allOptions.some(option => Boolean(option.action)) ? 'grid' : 'listbox';\n }\n\n private observeFooterContent() {\n const content =\n this.open && this.multiple && this.hasSelection ? this.footerContentElement : undefined;\n if (!content?.isConnected) {\n this.footerResizeObserver?.disconnect();\n this.observedFooterContentElement = undefined;\n return;\n }\n if (this.observedFooterContentElement === content) return;\n\n this.footerResizeObserver?.disconnect();\n if (typeof ResizeObserver !== 'undefined') {\n this.footerResizeObserver = new ResizeObserver(() => this.scheduleFooterSummaryMeasurement());\n this.footerResizeObserver.observe(content);\n }\n this.observedFooterContentElement = content;\n }\n\n private scheduleFooterSummaryMeasurement() {\n if (\n !this.open ||\n !this.multiple ||\n !this.hasSelection ||\n this.footerMeasurementFrame !== undefined\n ) {\n return;\n }\n this.footerMeasurementFrame = requestAnimationFrame(() => {\n this.footerMeasurementFrame = undefined;\n this.measureFooterSummary();\n });\n }\n\n private measureFooterSummary() {\n const content = this.footerContentElement;\n const summary = this.footerSummaryMeasureElement;\n const clear = this.footerClearElement;\n if (!content?.isConnected || !summary?.isConnected || !clear?.isConnected) return;\n\n const styles = getComputedStyle(content);\n const innerWidth =\n content.clientWidth -\n Number.parseFloat(styles.paddingInlineStart || '0') -\n Number.parseFloat(styles.paddingInlineEnd || '0');\n const requiredWidth =\n summary.getBoundingClientRect().width +\n clear.getBoundingClientRect().width +\n Number.parseFloat(styles.columnGap || '0');\n const nextCompact = requiredWidth > innerWidth + 0.5;\n if (nextCompact !== this.compactFooterSummary) {\n this.compactFooterSummary = nextCompact;\n }\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 if (this.multiple) {\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.value = next;\n this.dsChange.emit([...next]);\n return;\n }\n this.value = option.value;\n this.dsChange.emit(option.value);\n this.controller.closePopup(true);\n }\n\n private clearSelection = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.value = this.multiple ? [] : '';\n this.dsChange.emit(this.multiple ? [] : '');\n this.dsClear.emit();\n if (!this.multiple) {\n const enabled = enabledChoiceIndexes(this.visibleOptions);\n this.activeIndex = enabled[0] ?? -1;\n }\n this.controller.focusSearchOrTrigger();\n };\n\n private activateFooterAction = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.dsFooterAction.emit();\n this.closePopup();\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 = this.multiple\n ? this.resolvedValues.includes(option.value)\n : option.value === this.scalarValue;\n const active = index === this.activeIndex;\n const actionId = `${this.generatedId}-option-action-${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 actionOpen={option.action?.surfaceOpen ?? option.action?.expanded}\n popupRole={this.popupRole}\n leading={\n this.multiple ? (\n <span\n class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-checkbox\n class=\"select-option__checkbox\"\n label=\"\"\n size={this.size}\n checked={selected}\n presentation\n />\n </span>\n ) : usesIcons && option.icon ? (\n <span\n class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon name={option.icon} size={this.size} color=\"inherit\" />\n </span>\n ) : undefined\n }\n supporting={\n option.subtextActions?.length ? (\n <span class=\"ds-choice-item__subtext ds-control-label-box select-option__subtext-actions\">\n {option.subtextActions.map((action, actionIndex) => [\n actionIndex > 0 ? (\n <ds-text\n class=\"select-option__subtext-action-separator\"\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n color=\"inherit\"\n aria-hidden=\"true\"\n >\n ·\n </ds-text>\n ) : null,\n <button\n type=\"button\"\n class={{\n 'select-option__subtext-action': true,\n 'select-option__subtext-action--negative': action.tone === 'negative',\n 'ds-text-action': true,\n 'ds-focus-ring': true,\n }}\n onKeyDown={(event: KeyboardEvent) => event.stopPropagation()}\n onClick={(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.dsOptionSubtextAction.emit({\n value: option.value,\n actionValue: action.value,\n originalEvent: event,\n });\n }}\n >\n <ds-text\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n color=\"inherit\"\n >\n {action.label}\n </ds-text>\n </button>,\n ])}\n </span>\n ) : undefined\n }\n action={\n option.action ? (\n <ds-tooltip label={option.action.label} side=\"left\" size=\"sm\">\n <ds-button-unfilled\n id={actionId}\n variant=\"icon\"\n size={OPTION_ACTION_SIZE[this.size]}\n icon=\"Ellipses\"\n rounded\n hasBorder={false}\n activeFill={false}\n ariaLabel={option.action.label}\n haspopup=\"menu\"\n controls={option.action.controls}\n expanded={option.action.expanded}\n surfaceOpen={option.action.surfaceOpen}\n onKeyDown={event => {\n event.stopPropagation();\n if (event.key === 'Escape' || event.key === 'ArrowLeft') {\n event.preventDefault();\n this.controller.focusSearchOrTrigger();\n }\n }}\n onDsClick={(event: CustomEvent<MouseEvent>) => {\n event.stopPropagation();\n this.dsOptionAction.emit({\n value: option.value,\n anchorId: actionId,\n originalEvent: event.detail,\n });\n }}\n />\n </ds-tooltip>\n ) : undefined\n }\n onHover={() => {\n this.focusRingVisible = false;\n this.activeIndex = index;\n }}\n onSelect={() => this.selectOption(option)}\n />\n );\n }\n\n private get captionIconOnly(): boolean {\n return (\n (this.iconOnly || (this.collapseLabel && this.captionCompact)) &&\n Boolean(this.icon || this.isLoading)\n );\n }\n\n private syncCaptionCompactObserver(): void {\n this.disconnectCaptionCompactObserver();\n if (!this.collapseLabel) {\n if (this.captionCompact) this.captionCompact = false;\n return;\n }\n this.captionCompactDisconnect = observeTableCaptionCompact(this.el, compact => {\n if (this.captionCompact !== compact) this.captionCompact = compact;\n });\n }\n\n private disconnectCaptionCompactObserver(): void {\n this.captionCompactDisconnect?.();\n this.captionCompactDisconnect = undefined;\n }\n\n private renderCaptionTooltip(trigger: VNode, label: string): VNode {\n if (!this.collapseLabel) return trigger;\n return (\n <ds-tooltip label={label} side=\"top\" size=\"sm\">\n {trigger}\n </ds-tooltip>\n );\n }\n\n render() {\n const inactive = this.isDisabled;\n const showPlaceholder = !this.hasSelection;\n const count = this.resolvedValues.length;\n const label = this.multiple\n ? `${this.placeholder}${count > 0 ? ` · ${count}` : ''}`\n : showPlaceholder\n ? this.placeholder\n : (this.triggerLabel ?? this.selectedOption?.label);\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n const usesOptionIcons = !this.multiple && choiceListUsesIcons(this.allOptions);\n const usesOptionSubtext = choiceListUsesSubtext(this.allOptions);\n const showError = this.error && Boolean(this.errorMessage);\n const describedBy =\n [this.ariaDescribedby, showError ? this.errorId : undefined].filter(Boolean).join(' ') ||\n 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-select-trigger-host': true,\n 'select-host--multiple': this.multiple,\n 'ds-field-stack': true,\n 'ds-control-inactive': inactive,\n [`ds-control--${this.size}`]: true,\n 'ds-table-caption-control': this.collapseLabel,\n 'ds-table-caption-control--compact': this.captionIconOnly,\n ...controlWidthClass(this.width),\n [`select-host--background-${this.background}`]: !!this.background,\n [`ds-select-trigger-host--background-${this.background}`]: !!this.background,\n }}\n >\n {this.renderCaptionTooltip(\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': !inactive && this.activeFill && this.hasSelection,\n 'trigger--expanded': !inactive && this.open,\n 'ds-interaction-fill--surface-open': !inactive && this.open,\n 'trigger--bordered': this.hasBorder,\n 'trigger--placeholder': showPlaceholder && !this.multiple,\n 'trigger--has-value': this.hasSelection && !this.neutralTrigger,\n 'trigger--label-placeholder':\n !this.multiple && Boolean(this.triggerLabel) && this.triggerLabelPlaceholder,\n 'wrapper--error': this.hasBorder && this.error,\n [`ds-control--${this.size}`]: true,\n ...choiceBackgroundClassMap(this.background),\n }}\n disabled={inactive}\n role=\"combobox\"\n aria-haspopup={this.popupRole}\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 ?? (this.captionIconOnly ? label : undefined)}\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={event => {\n const action = this.visibleOptions[this.activeIndex]?.action;\n if (\n this.open &&\n action &&\n (event.key === 'ArrowRight' || (event.key === 'F10' && event.shiftKey))\n ) {\n event.preventDefault();\n document\n .getElementById(`${this.generatedId}-option-action-${this.activeIndex}`)\n ?.querySelector<HTMLElement>('button')\n ?.focus();\n return;\n }\n this.handleTriggerKeyDown(event);\n }}\n >\n {(this.icon || this.isLoading) && (\n <span\n class=\"trigger__prefix ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\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 {this.captionIconOnly ? null : (\n <span\n class={{\n 'trigger__label-box': true,\n 'ds-interaction-fill__content': true,\n }}\n >\n <span\n class={{\n 'trigger__label-content': true,\n 'ds-control-label-box': true,\n 'ds-control-label-dot': this.dot,\n 'trigger__label-content--dot': this.dot,\n }}\n >\n <ds-text\n class=\"trigger__label\"\n as=\"span\"\n variant={textVariant}\n color=\"inherit\"\n lineTruncation={1}\n >\n {label}\n </ds-text>\n {this.dot && (\n <ds-badge\n class=\"trigger__dot ds-control-label-dot__badge\"\n variant=\"dot\"\n hasRing={false}\n label=\"\"\n aria-hidden=\"true\"\n />\n )}\n </span>\n </span>\n )}\n {this.captionIconOnly || this.indicator === 'none' ? null : (\n <span\n class=\"trigger__chevron ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon\n name={this.indicator === 'up-down' ? 'ChevronUpDown' : 'ChevronDown'}\n size={iconSize}\n color=\"inherit\"\n />\n </span>\n )}\n </button>,\n this.captionIconOnly ? this.ariaLabel?.trim() || this.placeholder : ''\n )}\n\n {this.open && (\n <div\n popover=\"manual\"\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={this.popupRole}\n aria-multiselectable={this.multiple ? 'true' : undefined}\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 ds-empty-region\"\n role={this.popupRole === 'grid' ? 'row' : 'option'}\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.loadingLabel}\n aria-live=\"polite\"\n >\n {this.popupRole === 'grid' ? (\n <span role=\"gridcell\">\n <ds-loader size={this.size} color=\"inherit\" />\n </span>\n ) : (\n <ds-loader size={this.size} color=\"inherit\" />\n )}\n </div>\n ) : this.visibleOptions.length === 0 ? (\n <div\n class=\"ds-choice-empty ds-empty-region\"\n role={this.popupRole === 'grid' ? 'row' : 'option'}\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.noResultsText}\n aria-live=\"polite\"\n >\n {this.popupRole === 'grid' ? (\n <span role=\"gridcell\">\n <ds-empty-state body={this.noResultsText} />\n </span>\n ) : (\n <ds-empty-state body={this.noResultsText} />\n )}\n </div>\n ) : (\n this.visibleSections.map((section, sectionIndex) => (\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 'ds-choice-section--headed-after-first':\n sectionIndex > 0 && Boolean(section.header),\n }}\n role={\n this.popupRole === 'grid' ? 'rowgroup' : section.header ? 'group' : undefined\n }\n aria-label={section.header}\n >\n {section.header && this.popupRole === 'grid' ? (\n <ds-text\n class={`ds-choice-section__header ds-control-section-heading ds-control--${this.size}`}\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n emphasis\n color=\"primary\"\n role=\"row\"\n >\n <span class=\"ds-choice-section__header-label\" role=\"gridcell\">\n {section.header}\n </span>\n </ds-text>\n ) : section.header ? (\n <ds-text\n class={`ds-choice-section__header ds-control-section-heading 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 <span class=\"ds-choice-section__header-label\">{section.header}</span>\n </ds-text>\n ) : null}\n {section.options.map(option =>\n this.renderOption(option, flatIndex++, usesOptionIcons, usesOptionSubtext)\n )}\n </div>\n ))\n )}\n </div>\n {this.footerActionLabel && !this.isLoading ? (\n <ChoiceActionFooter\n size={this.size}\n label={this.footerActionLabel}\n onAction={this.activateFooterAction}\n />\n ) : this.allowClear && this.hasSelection && !this.isLoading ? (\n <ChoiceFooter\n size={this.size}\n summary={this.multiple ? `${count} ${this.selectedLabel}` : undefined}\n compactSummary={this.multiple ? String(count) : undefined}\n useCompactSummary={this.compactFooterSummary}\n contentRef={element => {\n this.footerContentElement = element ?? undefined;\n }}\n summaryMeasureRef={element => {\n this.footerSummaryMeasureElement = element ?? undefined;\n }}\n clearRef={element => {\n this.footerClearElement = element ?? undefined;\n }}\n clearLabel={this.clearLabel}\n onClear={this.clearSelection}\n />\n ) : null}\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 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["barTitleCss","nextBarTitleId","BarTitle","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","description","showBack","backAriaLabel","backLabel","breadcrumbs","breadcrumbAriaLabel","sections","value","sectionsAriaLabel","primaryAction","actions","actionsAriaLabel","variant","placement","showDivider","sectionMenuOpen","openActionMenuId","surfaceActionMenuId","sectionSurfaceOpen","sectionMenuInitialFocusVisible","actionMenuInitialFocusVisible","instanceId","sectionMenuTriggerId","sectionMenuId","actionMenuTriggerId","actionMenuId","sectionTriggerEl","actionTriggerEl","actionTriggerEls","Map","toggleSectionMenu","event","detail","closeSectionMenu","handleSectionSelect","id","String","selected","selectableSections","find","section","isInactive","dsSectionChange","emit","requestAnimationFrame","focus","toggleActionMenu","finishActionMenuClose","domId","barTitleActionMenuDomId","resolvedActionItems","target","closeActionMenu","handleActionSelect","action","findBarTitleAction","isLoading","menuId","dsAction","restoreBarTitleActionFocus","overflowTrigger","actionTriggers","handleBreadcrumbSelect","length","dsBack","originalEvent","forwarded","dsBreadcrumbSelect","defaultPrevented","preventDefault","componentWillLoad","el","closest","setAttribute","reportActionIdIssues","handleSectionsChange","hasSectionSelector","handleActionsChange","availableActionMenuIds","has","issue","barTitleActionIdIssues","console","warn","compact","effectiveVariant","dividerVisible","showCompactDivider","expandedBreadcrumbItems","label","ariaLabel","primaryCollapsed","actionItems","undefined","collapse","selectableBarTitleSections","effectiveValue","effectiveBarTitleSectionValue","selectedSectionLabel","selectedBarTitleSectionLabel","sectionTriggerAriaLabel","barTitleSectionTriggerAriaLabel","sectionMenuSections","barTitleSectionMenuSections","resolveBarTitleActionItems","visibleActions","visibleBarTitleActions","actionMenuSections","overflowBarTitleActionSections","showActionMenuTrigger","availableBarTitleActionMenuIds","chromeActionOptions","classPrefix","showOverflowTrigger","setOverflowTriggerEl","emitAction","renderSectionSelector","h","class","renderBarTitleSectionTrigger","triggerId","open","surfaceOpen","selectedLabel","setTriggerEl","onToggle","renderActions","renderBarTitleActions","renderActionMenus","renderBarTitleActionMenus","renderBreadcrumb","items","onDsSelect","renderBack","renderBarTitleBack","onBack","render","Host","key","emphasis","color","as","lineTruncation","heading","wrap","anchorId","menuLabel","initialFocusVisible","onDsClose","onDsAfterClose","renderBarTitleOverflowMenu"],"sources":["src/wc/components/BarTitle/BarTitle.css?tag=ds-bar-title&encapsulation=scoped","src/wc/components/BarTitle/BarTitle.tsx"],"sourcesContent":["@import '../../utils/radius.css';\n@import '../../utils/control-density.css';\n@import '../../utils/chrome-header.css';\n@import '../../utils/focus-ring.css';\n@import '../../utils/interaction-fill.css';\n\n:host {\n display: block;\n min-width: 0;\n box-sizing: border-box;\n background: var(--_shell-page-header-background, var(--color-background-primary));\n}\n\n:host([placement='shell-bar']) {\n --_shell-page-header-background: var(--color-background-secondary);\n}\n\n:host-context(ds-shell-app:not([gradient-preset='none']))[placement='shell-bar'],\n:host-context(ds-shell-app:not([gradient-preset='none']))[placement='shell-bar'] .bar-title,\n:host-context(ds-shell-app.shell-app--paper-texture)[placement='shell-bar'],\n:host-context(ds-shell-app.shell-app--paper-texture)[placement='shell-bar'] .bar-title {\n background: transparent;\n}\n\n:host([data-shell-page-syncing]) {\n visibility: hidden;\n}\n\n.bar-title {\n position: relative;\n min-width: 0;\n box-sizing: border-box;\n background: var(--_shell-page-header-background, var(--color-background-primary));\n}\n\n.bar-title::after {\n content: '';\n position: absolute;\n inset: auto var(--ds-bar-title-divider-inset, var(--dimension-space-400)) 0;\n height: var(--dimension-stroke-width-012);\n background: var(--color-border-tertiary);\n pointer-events: none;\n}\n\n.bar-title--divider-hidden::after {\n display: none;\n}\n\n.bar-title__inner {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--dimension-space-100);\n padding: var(--dimension-space-400);\n box-sizing: border-box;\n}\n\n.bar-title__row {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--dimension-space-100);\n min-height: var(--dimension-size-400);\n min-width: 0;\n}\n\n:host(.bar-title-host--expanded) .bar-title__row {\n gap: var(--dimension-space-400);\n}\n\n.bar-title__leading {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n gap: var(--dimension-space-100);\n min-width: 0;\n}\n\n.bar-title__title-row {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-100);\n min-width: 0;\n min-height: var(--dimension-size-400);\n}\n\n.bar-title__identity {\n display: flex;\n flex: 0 1 auto;\n align-items: center;\n gap: var(--dimension-space-050);\n min-width: 0;\n}\n\n.bar-title__back,\n.bar-title__section-chevron {\n flex: 0 0 auto;\n}\n\n.bar-title__breadcrumb {\n display: block;\n width: 100%;\n min-width: 0;\n}\n\n.bar-title__heading {\n display: block;\n width: auto;\n min-width: 0;\n user-select: none;\n}\n\n.bar-title__divider {\n width: var(--dimension-stroke-width-012);\n height: var(--dimension-size-250);\n margin-inline-start: var(--dimension-space-100);\n flex: 0 0 var(--dimension-stroke-width-012);\n background: var(--color-border-tertiary);\n}\n\n.bar-title__section-selector {\n display: flex;\n flex: 0 1 auto;\n min-width: 0;\n max-width: var(--dimension-panel-width-sm);\n}\n\n.bar-title__section-trigger {\n --ds-control-radius: var(--dimension-radius-half);\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--ds-control-gap);\n height: var(--ds-control-height);\n min-width: 0;\n max-width: 100%;\n padding-inline: var(--ds-control-padding-inline);\n border: none;\n border-radius: var(--ds-control-radius);\n box-sizing: border-box;\n background: transparent;\n color: var(--color-foreground-secondary);\n cursor: default;\n font-family: inherit;\n user-select: none;\n}\n\n.bar-title__section-label {\n min-width: 0;\n padding-inline: var(--ds-control-label-inset);\n}\n\n.bar-title__actions {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-100);\n flex: 0 0 auto;\n}\n\n.bar-title__description {\n display: block;\n min-width: 0;\n max-width: 100%;\n}\n\n:host(.bar-title-host--compact) .bar-title {\n height: var(--dimension-size-600);\n}\n\n:host(.bar-title-host--compact) .bar-title::after {\n inset-inline: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__inner {\n flex: 1 1 auto;\n height: 100%;\n min-width: 0;\n padding: 0;\n gap: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__row {\n height: 100%;\n align-items: center;\n}\n\n:host(.bar-title-host--compact) .bar-title__identity {\n height: var(--dimension-size-400);\n}\n\n:host(.bar-title-host--compact) .bar-title__divider {\n margin-inline-start: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__heading {\n display: inline-flex;\n flex: 1 1 auto;\n align-items: center;\n height: var(--dimension-size-400);\n padding-inline: calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));\n box-sizing: border-box;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport type { BreadcrumbItem, BreadcrumbSelectDetail } from '../Breadcrumb/breadcrumb-types';\nimport type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport {\n type BarTitleActionConfigItem,\n type BarTitleActionItem,\n type BarTitlePrimaryAction,\n type BarTitleSectionItem,\n type BarTitlePlacement,\n type BarTitleVariant,\n} from './bar-title-types';\nimport {\n availableBarTitleActionMenuIds,\n barTitleActionIdIssues,\n findBarTitleAction,\n overflowBarTitleActionSections,\n resolveBarTitleActionItems,\n visibleBarTitleActions,\n} from './bar-title-actions';\nimport {\n type FocusableBarTitleButton,\n barTitleActionMenuDomId,\n renderBarTitleActionMenus,\n renderBarTitleActions,\n renderBarTitleBack,\n renderBarTitleOverflowMenu,\n renderBarTitleSectionTrigger,\n restoreBarTitleActionFocus,\n} from './bar-title-action-chrome';\nimport {\n barTitleSectionMenuSections,\n barTitleSectionTriggerAriaLabel,\n effectiveBarTitleSectionValue,\n selectableBarTitleSections,\n selectedBarTitleSectionLabel,\n} from './bar-title-sections';\n\nlet nextBarTitleId = 0;\n\n@Component({\n tag: 'ds-bar-title',\n styleUrl: 'BarTitle.css',\n scoped: true,\n})\nexport class BarTitle {\n @Element() el!: HTMLElement;\n\n /** The page's single visible h1. */\n @Prop() heading!: string;\n\n /** Optional supporting copy shown in the expanded presentation. */\n @Prop() description: string = '';\n\n /** Show the leading page-level Back action. */\n @Prop({ attribute: 'show-back' }) showBack: boolean = false;\n\n /** Accessible name for the leading Back action. */\n @Prop() backAriaLabel: string = 'Back';\n\n /** Visible parent-page label used by the expanded breadcrumb when breadcrumbs is empty. */\n @Prop() backLabel: string = 'Back';\n\n /** Optional expanded ancestor path. Compact variants continue to use the Back action. */\n @Prop() breadcrumbs: BreadcrumbItem[] = [];\n\n /** Accessible name for the expanded breadcrumb navigation landmark. */\n @Prop() breadcrumbAriaLabel: string = 'Breadcrumb';\n\n /** Optional page sections exposed through the active-section menu. */\n @Prop() sections: BarTitleSectionItem[] = [];\n\n /** Id of the active page section. */\n @Prop() value: string = '';\n\n /** Accessible name for the page-section menu. */\n @Prop() sectionsAriaLabel: string = 'Change page section';\n\n /** The one highest-emphasis page action. */\n @Prop() primaryAction: BarTitlePrimaryAction | null = null;\n\n /** Secondary page actions shown in the overflow menu. Dividers create groups. */\n @Prop() actions: BarTitleActionItem[] = [];\n\n /**\n * Ordered page-header actions. When supplied, this replaces the legacy\n * primaryAction/actions presentation while preserving the same dsAction event.\n */\n @Prop() actionItems?: BarTitleActionConfigItem[];\n\n /** Accessible name for the page-actions menu. */\n @Prop() actionsAriaLabel: string = 'More page actions';\n\n /** Explicit visual/capacity variant. ShellPage owns automatic selection. */\n @Prop() variant: BarTitleVariant = 'expanded';\n\n /** Page-header placement, or compact application-shell bar placement. */\n @Prop({ reflect: true }) placement: BarTitlePlacement = 'page';\n\n /** Draw the page-title divider beneath the header. */\n @Prop() showDivider: boolean = true;\n\n /** Override divider visibility for compact and constrained variants. */\n @Prop() showCompactDivider?: boolean;\n\n /** Emitted when the leading Back action is activated. */\n @Event() dsBack!: EventEmitter<MouseEvent>;\n\n /** Emitted when an authored expanded breadcrumb item is activated. */\n @Event({ cancelable: true }) dsBreadcrumbSelect!: EventEmitter<BreadcrumbSelectDetail>;\n\n /** Emitted with the newly selected page-section id. */\n @Event() dsSectionChange!: EventEmitter<string>;\n\n /** Emitted with the activated primary or overflow action id. */\n @Event() dsAction!: EventEmitter<string>;\n\n @State() private sectionMenuOpen = false;\n @State() private openActionMenuId = '';\n @State() private surfaceActionMenuId = '';\n @State() private sectionSurfaceOpen = false;\n @State() private sectionMenuInitialFocusVisible = false;\n @State() private actionMenuInitialFocusVisible = false;\n\n private readonly instanceId = nextBarTitleId++;\n private readonly sectionMenuTriggerId = `bar-title-section-trigger-${this.instanceId}`;\n private readonly sectionMenuId = `bar-title-section-menu-${this.instanceId}`;\n private readonly actionMenuTriggerId = `bar-title-action-trigger-${this.instanceId}`;\n private readonly actionMenuId = `bar-title-action-menu-${this.instanceId}`;\n private sectionTriggerEl: HTMLButtonElement | null = null;\n private actionTriggerEl: FocusableBarTitleButton | null = null;\n private actionTriggerEls = new Map<string, FocusableBarTitleButton>();\n\n componentWillLoad() {\n if (this.el.closest('ds-shell-page')) {\n this.el.setAttribute('data-shell-page-syncing', '');\n }\n this.reportActionIdIssues();\n }\n\n @Watch('sections')\n handleSectionsChange() {\n if (!this.hasSectionSelector) {\n this.closeSectionMenu();\n this.sectionSurfaceOpen = false;\n }\n }\n\n @Watch('actions')\n @Watch('primaryAction')\n @Watch('actionItems')\n handleActionsChange() {\n this.reportActionIdIssues();\n if (!this.availableActionMenuIds.has(this.openActionMenuId)) this.closeActionMenu();\n if (!this.availableActionMenuIds.has(this.surfaceActionMenuId)) this.surfaceActionMenuId = '';\n }\n\n private reportActionIdIssues() {\n for (const issue of barTitleActionIdIssues(this.resolvedActionItems)) {\n console.warn(`[ds-bar-title] ${issue}`);\n }\n }\n\n private get compact(): boolean {\n return this.effectiveVariant !== 'expanded';\n }\n\n private get effectiveVariant(): BarTitleVariant {\n return this.placement === 'shell-bar' ? 'compact' : this.variant;\n }\n\n private get dividerVisible(): boolean {\n return this.compact ? (this.showCompactDivider ?? this.showDivider) : this.showDivider;\n }\n\n private get expandedBreadcrumbItems(): BreadcrumbItem[] {\n if (this.breadcrumbs.length > 0) return this.breadcrumbs;\n if (!this.showBack) return [];\n return [\n {\n id: 'back',\n label: this.backLabel,\n ariaLabel: this.backAriaLabel,\n },\n ];\n }\n\n private get primaryCollapsed(): boolean {\n return (\n this.actionItems === undefined &&\n this.effectiveVariant === 'constrained' &&\n this.primaryAction !== null &&\n (this.primaryAction.collapse ?? 'auto') === 'auto'\n );\n }\n\n private get selectableSections() {\n return selectableBarTitleSections(this.sections);\n }\n\n private get hasSectionSelector(): boolean {\n return this.selectableSections.length > 1;\n }\n\n private get effectiveValue(): string {\n return effectiveBarTitleSectionValue(this.sections, this.value);\n }\n\n private get selectedSectionLabel(): string {\n return selectedBarTitleSectionLabel(this.sections, this.value);\n }\n\n private get sectionTriggerAriaLabel(): string {\n return barTitleSectionTriggerAriaLabel(this.sectionsAriaLabel, this.selectedSectionLabel);\n }\n\n private get sectionMenuSections() {\n return barTitleSectionMenuSections(this.sections, this.effectiveValue);\n }\n\n private get resolvedActionItems(): BarTitleActionConfigItem[] {\n return resolveBarTitleActionItems(this.actionItems, this.primaryAction, this.actions);\n }\n\n private get visibleActions(): BarTitleActionConfigItem[] {\n return visibleBarTitleActions(this.resolvedActionItems, this.effectiveVariant);\n }\n\n private get actionMenuSections(): MenuSection[] {\n return overflowBarTitleActionSections(this.resolvedActionItems, this.effectiveVariant);\n }\n\n private get showActionMenuTrigger(): boolean {\n return this.actionMenuSections.length > 0;\n }\n\n private get availableActionMenuIds(): Set<string> {\n return availableBarTitleActionMenuIds(this.visibleActions, this.showActionMenuTrigger);\n }\n\n private toggleSectionMenu = (event: MouseEvent) => {\n this.sectionMenuInitialFocusVisible = event.detail === 0;\n this.openActionMenuId = '';\n this.sectionMenuOpen = !this.sectionMenuOpen;\n if (this.sectionMenuOpen) this.sectionSurfaceOpen = true;\n };\n\n private closeSectionMenu = () => {\n this.sectionMenuOpen = false;\n };\n\n private handleSectionSelect = (event: CustomEvent<MenuItemData>) => {\n const id = String(event.detail?.value ?? '');\n const selected = this.selectableSections.find(section => section.id === id);\n if (!selected || selected.isInactive) return;\n this.closeSectionMenu();\n this.dsSectionChange.emit(id);\n requestAnimationFrame(() => this.sectionTriggerEl?.focus());\n };\n\n private toggleActionMenu = (id: string, event: MouseEvent) => {\n this.actionMenuInitialFocusVisible = event.detail === 0;\n this.sectionMenuOpen = false;\n this.openActionMenuId = this.openActionMenuId === id ? '' : id;\n if (this.openActionMenuId) this.surfaceActionMenuId = this.openActionMenuId;\n };\n\n private finishActionMenuClose = (event: CustomEvent<void>) => {\n const id = this.surfaceActionMenuId;\n const domId =\n id === '__overflow'\n ? this.actionMenuId\n : barTitleActionMenuDomId('bar-title', this.instanceId, this.resolvedActionItems, id);\n if (this.openActionMenuId !== id && (event.target as HTMLElement).id === domId) {\n this.surfaceActionMenuId = '';\n }\n };\n\n private closeActionMenu = () => {\n this.openActionMenuId = '';\n };\n\n private handleActionSelect = (event: CustomEvent<MenuItemData>) => {\n const id = String(event.detail?.value ?? '');\n const action = findBarTitleAction(this.resolvedActionItems, id);\n if (!action || action.isInactive || ('isLoading' in action && action.isLoading)) return;\n const menuId = this.openActionMenuId;\n this.closeActionMenu();\n this.dsAction.emit(id);\n requestAnimationFrame(() => {\n void restoreBarTitleActionFocus({\n menuId,\n overflowTrigger: this.actionTriggerEl,\n actionTriggers: this.actionTriggerEls,\n resolvedActionItems: this.resolvedActionItems,\n });\n });\n };\n\n private chromeActionOptions() {\n return {\n classPrefix: 'bar-title',\n compact: this.compact,\n visibleActions: this.visibleActions,\n showOverflowTrigger: this.showActionMenuTrigger,\n actionItems: this.actionItems,\n primaryAction: this.primaryAction,\n resolvedActionItems: this.resolvedActionItems,\n instanceId: this.instanceId,\n openActionMenuId: this.openActionMenuId,\n surfaceActionMenuId: this.surfaceActionMenuId,\n actionsAriaLabel: this.actionsAriaLabel,\n actionMenuTriggerId: this.actionMenuTriggerId,\n actionMenuId: this.actionMenuId,\n actionTriggers: this.actionTriggerEls,\n setOverflowTriggerEl: (el: FocusableBarTitleButton | null) => {\n this.actionTriggerEl = el;\n },\n toggleActionMenu: this.toggleActionMenu,\n emitAction: (id: string) => this.dsAction.emit(id),\n };\n }\n\n private renderSectionSelector() {\n if (!this.hasSectionSelector) return null;\n return [\n <div class=\"bar-title__divider\" aria-hidden=\"true\" />,\n renderBarTitleSectionTrigger({\n classPrefix: 'bar-title',\n triggerId: this.sectionMenuTriggerId,\n menuId: this.sectionMenuId,\n open: this.sectionMenuOpen,\n surfaceOpen: this.sectionSurfaceOpen,\n ariaLabel: this.sectionTriggerAriaLabel,\n selectedLabel: this.selectedSectionLabel,\n setTriggerEl: el => {\n this.sectionTriggerEl = el;\n },\n onToggle: this.toggleSectionMenu,\n }),\n ];\n }\n\n private renderActions() {\n return renderBarTitleActions(this.chromeActionOptions());\n }\n\n private renderActionMenus() {\n return renderBarTitleActionMenus({\n classPrefix: 'bar-title',\n visibleActions: this.visibleActions,\n instanceId: this.instanceId,\n resolvedActionItems: this.resolvedActionItems,\n openActionMenuId: this.openActionMenuId,\n actionMenuInitialFocusVisible: this.actionMenuInitialFocusVisible,\n overflowTrigger: this.actionTriggerEl,\n actionTriggers: this.actionTriggerEls,\n closeActionMenu: this.closeActionMenu,\n finishActionMenuClose: this.finishActionMenuClose,\n handleActionSelect: this.handleActionSelect,\n });\n }\n\n private handleBreadcrumbSelect = (event: CustomEvent<BreadcrumbSelectDetail>) => {\n if (this.breadcrumbs.length === 0) {\n this.dsBack.emit(event.detail.originalEvent);\n return;\n }\n const forwarded = this.dsBreadcrumbSelect.emit(event.detail);\n if (forwarded.defaultPrevented) event.preventDefault();\n };\n\n private renderBreadcrumb() {\n const items = this.expandedBreadcrumbItems;\n if (items.length === 0) return null;\n return (\n <ds-breadcrumb\n class=\"bar-title__breadcrumb\"\n items={items}\n ariaLabel={this.breadcrumbAriaLabel}\n onDsSelect={this.handleBreadcrumbSelect}\n />\n );\n }\n\n private renderBack() {\n return renderBarTitleBack({\n classPrefix: 'bar-title',\n showBack: this.showBack,\n backAriaLabel: this.backAriaLabel,\n onBack: event => this.dsBack.emit(event),\n });\n }\n\n render() {\n const compact = this.compact;\n return (\n <Host\n class={{\n 'bar-title-host--compact': compact,\n 'bar-title-host--expanded': this.effectiveVariant === 'expanded',\n 'bar-title-host--constrained': this.effectiveVariant === 'constrained',\n 'bar-title-host--has-description': !!this.description,\n 'bar-title-host--has-back': this.showBack,\n 'bar-title-host--has-breadcrumb': !compact && this.expandedBreadcrumbItems.length > 0,\n 'bar-title-host--shell-bar': this.placement === 'shell-bar',\n }}\n >\n <div\n class={{\n 'bar-title': true,\n 'bar-title--divider-hidden': !this.dividerVisible,\n 'ds-chrome-header': compact,\n }}\n >\n <div class=\"bar-title__inner\">\n {!compact ? this.renderBreadcrumb() : null}\n <div class=\"bar-title__row\">\n <div class=\"bar-title__leading\">\n <div class=\"bar-title__title-row\" data-shell-page-header-anchor>\n <div class=\"bar-title__identity\">\n {compact ? this.renderBack() : null}\n <ds-text\n class=\"bar-title__heading ds-control--md\"\n variant={compact ? 'text-title-small' : 'text-title-medium'}\n emphasis\n color=\"primary\"\n as=\"h1\"\n lineTruncation={1}\n >\n {this.heading}\n </ds-text>\n </div>\n {this.renderSectionSelector()}\n </div>\n {this.description && !compact ? (\n <ds-text\n class=\"bar-title__description\"\n variant=\"text-body-small\"\n color=\"secondary\"\n lineTruncation={2}\n wrap=\"wrap\"\n as=\"p\"\n >\n {this.description}\n </ds-text>\n ) : null}\n </div>\n {this.renderActions()}\n </div>\n </div>\n </div>\n\n {this.hasSectionSelector ? (\n <ds-menu\n id={this.sectionMenuId}\n class=\"bar-title__section-menu\"\n anchorId={this.sectionMenuTriggerId}\n menuLabel={this.sectionsAriaLabel}\n open={this.sectionMenuOpen}\n initialFocusVisible={this.sectionMenuInitialFocusVisible}\n sections={this.sectionMenuSections}\n onDsClose={this.closeSectionMenu}\n onDsAfterClose={() => {\n if (!this.sectionMenuOpen) this.sectionSurfaceOpen = false;\n }}\n onDsSelect={this.handleSectionSelect}\n />\n ) : null}\n\n {this.renderActionMenus()}\n\n {renderBarTitleOverflowMenu({\n classPrefix: 'bar-title',\n showOverflowTrigger: this.showActionMenuTrigger,\n actionMenuId: this.actionMenuId,\n actionMenuTriggerId: this.actionMenuTriggerId,\n actionsAriaLabel: this.actionsAriaLabel,\n open: this.openActionMenuId === '__overflow',\n actionMenuInitialFocusVisible: this.actionMenuInitialFocusVisible,\n actionMenuSections: this.actionMenuSections,\n closeActionMenu: this.closeActionMenu,\n finishActionMenuClose: this.finishActionMenuClose,\n handleActionSelect: this.handleActionSelect,\n })}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as e,H as t,h as s,a,t as c}from"./index.js";import{d as i}from"./p-Cea7rROU.js";import{d}from"./p-CLGtPE0K.js";const n=()=>`.sc-ds-empty-state-h{display:block;width:100%;height:100%}.sc-ds-empty-state-h,.empty-state.sc-ds-empty-state,.empty-state__text.sc-ds-empty-state{box-sizing:border-box}.empty-state.sc-ds-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--dimension-space-100);height:100%;width:100%;text-align:center}.empty-state__icon.sc-ds-empty-state{flex:0 0 auto}.empty-state__text.sc-ds-empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--dimension-space-050);width:100%}`;const o=e(class e extends t{constructor(e){super();if(e!==false){this.__registerHost()}this.body=""}render(){const e=Boolean(this.heading?.trim());const t=e&&Boolean(this.icon);return s(a,{key:"7bd70a555ccd0ae7b7c8eda368ce052cf262ad64"},s("div",{key:"570a3f4e27c7607c1da55b3b270ce3695149e796",class:"empty-state"},t&&s("ds-icon",{key:"49a27853e858895f6534b218d2a9b4f8df00962c",class:"empty-state__icon",name:this.icon,size:"xl",color:"primary"}),s("div",{key:"935e06341ef58c81bca5f0c99e30d08e0932cfca",class:"empty-state__text"},e&&s("ds-text",{key:"c34d79b990fe9fc8c1f3cf1f8401b16f67445f02",class:"empty-state__title",as:"div",variant:"text-title-small",color:"primary",align:"center"},this.heading),this.body&&s("ds-text",{key:"684ecbe24dbda9eb84feb6f364b5de49847ecee8",class:"empty-state__body",as:"p",variant:"text-body-medium",color:"secondary",align:"center"},this.body))))}static get style(){return n()}},[2,"ds-empty-state",{icon:[1],heading:[1],body:[1]}]);function m(){if(typeof customElements==="undefined"){return}const e=["ds-empty-state","ds-icon","ds-text"];e.forEach((e=>{switch(e){case"ds-empty-state":if(!customElements.get(c(e))){customElements.define(c(e),o)}break;case"ds-icon":if(!customElements.get(c(e))){i()}break;case"ds-text":if(!customElements.get(c(e))){d()}break}}))}m();export{o as E,m as d};
|
|
2
|
-
//# sourceMappingURL=p-D_u8WhlU.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["isBarTitleActionDivider","item","type","resolveBarTitleActionItems","actionItems","primaryAction","actions","undefined","resolved","primary","push","buttonType","appearance","action","nestedChoices","choices","barTitleActionIdIssues","items","seen","Set","issues","visit","id","trim","has","add","choice","actionCollapses","presentation","mobile","collapse","visibleBarTitleActions","find","menuItem","includeIcon","label","value","icon","isInactive","isDestructive","appendChoices","output","includeIcons","toSections","sections","current","commit","length","barTitleChoiceSections","rows","overflowBarTitleActionSections","visibleAction","availableBarTitleActionMenuIds","visibleActions","showOverflowTrigger","ids","findBarTitleAction","candidate","isBarTitleDivider","barTitleActionMenuDomId","classPrefix","instanceId","resolvedActionItems","index","findIndex","barTitleActionMenuAnchor","overflowTrigger","actionTriggers","trigger","get","splitMenu","querySelector","async","restoreBarTitleActionFocus","options","menuId","setFocus","split","some","className","prefix","part","renderBarTitleBack","showBack","h","side","size","class","variant","backAriaLabel","activeFill","hasBorder","onDsClick","event","onBack","detail","renderBarTitleSectionTrigger","ref","el","setTriggerEl","triggerId","open","surfaceOpen","String","ariaLabel","onClick","onToggle","as","emphasis","color","lineTruncation","selectedLabel","name","renderVisibleAction","menu","splitMenuId","splitProps","key","set","delete","menuAriaLabel","controls","expanded","openActionMenuId","surfaceActionMenuId","isLoading","emitAction","onDsMenuClick","toggleActionMenu","intent","contrast","buttonProps","hasMenu","button","renderBarTitleActions","map","setOverflowTriggerEl","actionMenuTriggerId","actionsAriaLabel","compact","haspopup","actionMenuId","renderBarTitleActionMenus","flatMap","menuAction","menuLabel","anchor","align","initialFocusVisible","actionMenuInitialFocusVisible","onDsClose","closeActionMenu","onDsAfterClose","finishActionMenuClose","onDsSelect","handleActionSelect","renderBarTitleOverflowMenu","anchorId","actionMenuSections","selectableBarTitleSections","filter","effectiveBarTitleSectionValue","selectable","section","selectedBarTitleSectionLabel","selectedId","barTitleSectionTriggerAriaLabel","sectionsAriaLabel","barTitleSectionMenuSections","groups","isSelected","barTitleSectionsToTabs","barTitleSectionsDigest","join"],"sources":["src/wc/components/BarTitle/bar-title-actions.ts","src/wc/components/BarTitle/bar-title-types.ts","src/wc/components/BarTitle/bar-title-action-chrome.tsx","src/wc/components/BarTitle/bar-title-sections.ts"],"sourcesContent":["import type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport type {\n BarTitleAction,\n BarTitleActionConfigItem,\n BarTitleActionItem,\n BarTitleDivider,\n BarTitleMenuChoiceItem,\n BarTitlePrimaryAction,\n BarTitleVariant,\n} from './bar-title-types';\n\nexport type BarTitleActionPresentation = BarTitleVariant | 'mobile';\n\nexport function isBarTitleActionDivider(\n item: BarTitleActionConfigItem | BarTitleMenuChoiceItem\n): item is BarTitleDivider {\n return 'type' in item && item.type === 'divider';\n}\n\nexport function resolveBarTitleActionItems(\n actionItems: BarTitleActionConfigItem[] | undefined,\n primaryAction: BarTitlePrimaryAction | null,\n actions: BarTitleActionItem[]\n): BarTitleActionConfigItem[] {\n if (actionItems !== undefined) return actionItems;\n\n const resolved: BarTitleActionConfigItem[] = [];\n if (primaryAction) {\n const { type, ...primary } = primaryAction;\n resolved.push({\n ...primary,\n type: 'button',\n buttonType: type,\n appearance: 'filled',\n });\n }\n for (const action of actions) {\n resolved.push(\n 'type' in action\n ? action\n : {\n ...action,\n type: 'overflow',\n }\n );\n }\n return resolved;\n}\n\nfunction nestedChoices(item: BarTitleActionConfigItem): BarTitleMenuChoiceItem[] | undefined {\n return item.type === 'menu' || item.type === 'split' ? item.choices : undefined;\n}\n\nexport function barTitleActionIdIssues(items: BarTitleActionConfigItem[]): string[] {\n const seen = new Set<string>();\n const issues: string[] = [];\n const visit = (id: string) => {\n if (!id.trim()) {\n issues.push('Action ids must be non-empty.');\n return;\n }\n if (seen.has(id)) {\n issues.push(`Duplicate action id: ${id}`);\n return;\n }\n seen.add(id);\n };\n\n for (const item of items) {\n if (isBarTitleActionDivider(item)) continue;\n visit(item.id);\n for (const choice of nestedChoices(item) ?? []) {\n if (!isBarTitleActionDivider(choice)) visit(choice.id);\n }\n }\n return issues;\n}\n\nfunction actionCollapses(\n item: BarTitleActionConfigItem,\n presentation: BarTitleActionPresentation\n): boolean {\n if (isBarTitleActionDivider(item) || item.type === 'overflow') return false;\n if (presentation === 'mobile') {\n if (item.type !== 'icon') return true;\n return (item.mobile ?? 'auto') === 'overflow';\n }\n return presentation === 'constrained' && (item.collapse ?? 'auto') === 'auto';\n}\n\nexport function visibleBarTitleActions(\n items: BarTitleActionConfigItem[],\n presentation: BarTitleActionPresentation\n): BarTitleActionConfigItem[] {\n const primary = items.find(\n item =>\n !isBarTitleActionDivider(item) &&\n item.type !== 'overflow' &&\n !actionCollapses(item, presentation)\n );\n return primary ? [primary] : [];\n}\n\nfunction menuItem(action: BarTitleAction, includeIcon: boolean = true): MenuItemData {\n return {\n label: action.label,\n value: action.id,\n icon: includeIcon ? action.icon : undefined,\n isInactive: action.isInactive,\n isDestructive: action.isDestructive,\n };\n}\n\nfunction appendChoices(\n output: Array<MenuItemData | BarTitleDivider>,\n choices: BarTitleMenuChoiceItem[],\n includeIcons: boolean = true\n) {\n for (const choice of choices) {\n output.push(isBarTitleActionDivider(choice) ? choice : menuItem(choice, includeIcons));\n }\n}\n\nfunction toSections(items: Array<MenuItemData | BarTitleDivider>): MenuSection[] {\n const sections: MenuSection[] = [];\n let current: MenuItemData[] = [];\n const commit = () => {\n if (current.length > 0) sections.push({ items: current });\n current = [];\n };\n\n for (const item of items) {\n if ('type' in item && item.type === 'divider') commit();\n else current.push(item as MenuItemData);\n }\n commit();\n return sections;\n}\n\nexport function barTitleChoiceSections(choices: BarTitleMenuChoiceItem[]): MenuSection[] {\n const rows: Array<MenuItemData | BarTitleDivider> = [];\n appendChoices(rows, choices);\n return toSections(rows);\n}\n\nexport function overflowBarTitleActionSections(\n items: BarTitleActionConfigItem[],\n presentation: BarTitleActionPresentation\n): MenuSection[] {\n const rows: Array<MenuItemData | BarTitleDivider> = [];\n const [visibleAction] = visibleBarTitleActions(items, presentation);\n\n for (const item of items) {\n if (isBarTitleActionDivider(item)) {\n rows.push(item);\n continue;\n }\n if (item.type === 'overflow') {\n rows.push(menuItem(item, false));\n continue;\n }\n if (item === visibleAction) continue;\n\n if (item.type === 'menu') {\n appendChoices(rows, item.choices, false);\n continue;\n }\n if (item.type === 'split') {\n rows.push(menuItem(item, false));\n appendChoices(rows, item.choices, false);\n continue;\n }\n rows.push(menuItem(item, false));\n }\n\n return toSections(rows);\n}\n\nexport function availableBarTitleActionMenuIds(\n visibleActions: BarTitleActionConfigItem[],\n showOverflowTrigger: boolean\n): Set<string> {\n const ids = new Set<string>();\n if (showOverflowTrigger) ids.add('__overflow');\n for (const item of visibleActions) {\n if (!isBarTitleActionDivider(item) && (item.type === 'menu' || item.type === 'split')) {\n ids.add(item.id);\n }\n }\n return ids;\n}\n\nexport function findBarTitleAction(\n items: BarTitleActionConfigItem[],\n id: string\n): BarTitleAction | undefined {\n for (const item of items) {\n if (isBarTitleActionDivider(item)) continue;\n if (item.id === id) return item;\n const choice = nestedChoices(item)?.find(\n candidate => !isBarTitleActionDivider(candidate) && candidate.id === id\n );\n if (choice && !isBarTitleActionDivider(choice)) return choice;\n }\n return undefined;\n}\n","import type { ButtonFilledContrast, ButtonFilledIntent } from '../ButtonFilled/ButtonFilled';\n\nexport interface BarTitleSection {\n id: string;\n label: string;\n isInactive?: boolean;\n}\n\nexport interface BarTitleDivider {\n type: 'divider';\n}\n\nexport type BarTitleSectionItem = BarTitleSection | BarTitleDivider;\n\nexport interface BarTitleAction {\n id: string;\n label: string;\n ariaLabel?: string;\n icon?: string;\n isInactive?: boolean;\n isDestructive?: boolean;\n}\n\nexport interface BarTitlePrimaryAction extends BarTitleAction {\n intent?: ButtonFilledIntent;\n contrast?: ButtonFilledContrast;\n isLoading?: boolean;\n type?: 'button' | 'submit' | 'reset';\n collapse?: BarTitlePrimaryActionCollapse;\n}\n\nexport type BarTitleActionItem = BarTitleAction | BarTitleDivider;\n\nexport type BarTitleActionAppearance = 'filled' | 'unfilled';\nexport type BarTitleActionCollapse = 'auto' | 'never';\nexport type BarTitleActionMobile = 'auto' | 'visible' | 'overflow';\n\ninterface BarTitleVisibleActionBase extends BarTitleAction {\n appearance?: BarTitleActionAppearance;\n intent?: ButtonFilledIntent;\n contrast?: ButtonFilledContrast;\n isLoading?: boolean;\n buttonType?: 'button' | 'submit' | 'reset';\n /** Auto moves the action into overflow only in constrained presentation. */\n collapse?: BarTitleActionCollapse;\n /**\n * Mobile defaults icon actions to visible and all labeled actions to overflow.\n * `visible` is supported only by icon actions.\n */\n mobile?: BarTitleActionMobile;\n}\n\n/** Visible labeled command in the authored action order. */\nexport interface BarTitleButtonAction extends BarTitleVisibleActionBase {\n type: 'button';\n}\n\n/** Visible icon-only command. ariaLabel is required because label is not rendered. */\nexport interface BarTitleIconAction extends BarTitleVisibleActionBase {\n type: 'icon';\n icon: string;\n ariaLabel: string;\n}\n\nexport type BarTitleMenuChoice = BarTitleAction;\nexport type BarTitleMenuChoiceItem = BarTitleMenuChoice | BarTitleDivider;\n\n/** Visible labeled menu button. Selecting a choice emits that choice's flat id. */\nexport interface BarTitleMenuAction extends BarTitleVisibleActionBase {\n type: 'menu';\n choices: BarTitleMenuChoiceItem[];\n menuAriaLabel?: string;\n}\n\n/** Command with a dedicated menu segment; defaults filled when appearance is omitted. */\nexport interface BarTitleSplitAction extends BarTitleVisibleActionBase {\n type: 'split';\n choices: BarTitleMenuChoiceItem[];\n menuAriaLabel: string;\n}\n\n/** Command that is always presented in the shared overflow menu. */\nexport interface BarTitleOverflowAction extends BarTitleAction {\n type: 'overflow';\n}\n\n/**\n * Ordered page-header action model. IDs must be non-empty and unique across\n * top-level actions and every nested menu choice. At most the first eligible\n * action renders beside the title; remaining actions use the text-only overflow.\n */\nexport type BarTitleActionConfigItem =\n | BarTitleButtonAction\n | BarTitleIconAction\n | BarTitleMenuAction\n | BarTitleSplitAction\n | BarTitleOverflowAction\n | BarTitleDivider;\n\nexport type BarTitleVariant = 'expanded' | 'compact' | 'constrained';\nexport type BarTitlePlacement = 'page' | 'shell-bar';\n\nexport type BarTitlePrimaryActionCollapse = 'auto' | 'never';\n\nexport function isBarTitleDivider(\n item: BarTitleSectionItem | BarTitleActionItem\n): item is BarTitleDivider {\n return 'type' in item && item.type === 'divider';\n}\n","import { h } from '@stencil/core';\nimport type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport { isBarTitleDivider } from './bar-title-types';\nimport type {\n BarTitleActionConfigItem,\n BarTitleMenuAction,\n BarTitlePrimaryAction,\n BarTitleSplitAction,\n} from './bar-title-types';\nimport { barTitleChoiceSections } from './bar-title-actions';\n\nexport type FocusableBarTitleButton = HTMLElement & {\n setFocus?: (segment?: 'primary' | 'menu') => Promise<void>;\n};\n\nexport function barTitleActionMenuDomId(\n classPrefix: string,\n instanceId: number,\n resolvedActionItems: BarTitleActionConfigItem[],\n id: string\n): string {\n const index = resolvedActionItems.findIndex(item => !isBarTitleDivider(item) && item.id === id);\n return `${classPrefix}-action-menu-${instanceId}-${index}`;\n}\n\nexport function barTitleActionMenuAnchor(\n id: string,\n overflowTrigger: FocusableBarTitleButton | null,\n actionTriggers: Map<string, FocusableBarTitleButton>\n): HTMLElement | undefined {\n if (id === '__overflow') return overflowTrigger ?? undefined;\n const trigger = actionTriggers.get(id);\n if (!trigger) return undefined;\n const splitMenu = trigger.querySelector<HTMLElement>('.ds-button-split__menu');\n return splitMenu ?? trigger;\n}\n\nexport async function restoreBarTitleActionFocus(options: {\n menuId: string;\n overflowTrigger: FocusableBarTitleButton | null;\n actionTriggers: Map<string, FocusableBarTitleButton>;\n resolvedActionItems: BarTitleActionConfigItem[];\n}): Promise<void> {\n if (options.menuId === '__overflow') {\n await options.overflowTrigger?.setFocus?.();\n return;\n }\n const trigger = options.actionTriggers.get(options.menuId);\n if (!trigger || !('setFocus' in trigger)) return;\n const split = options.resolvedActionItems.some(\n item => !isBarTitleDivider(item) && item.id === options.menuId && item.type === 'split'\n );\n await trigger.setFocus?.(split ? 'menu' : undefined);\n}\n\nfunction className(prefix: string, part: string): string {\n return `${prefix}__${part}`;\n}\n\nexport function renderBarTitleBack(options: {\n classPrefix: string;\n showBack: boolean;\n backAriaLabel: string;\n onBack: (event: MouseEvent) => void;\n}) {\n if (!options.showBack) return null;\n return (\n <ds-tooltip label=\"Go back\" side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n class={className(options.classPrefix, 'back')}\n variant=\"icon\"\n icon=\"ChevronLeft\"\n aria-label={options.backAriaLabel}\n size=\"md\"\n activeFill={false}\n hasBorder={false}\n onDsClick={(event: CustomEvent<MouseEvent>) => options.onBack(event.detail)}\n />\n </ds-tooltip>\n );\n}\n\nexport function renderBarTitleSectionTrigger(options: {\n classPrefix: string;\n triggerId: string;\n menuId: string;\n open: boolean;\n surfaceOpen: boolean;\n ariaLabel: string;\n selectedLabel: string;\n setTriggerEl: (el: HTMLButtonElement | null) => void;\n onToggle: (event: MouseEvent) => void;\n}) {\n const prefix = options.classPrefix;\n return (\n <div class={className(prefix, 'section-selector')}>\n <button\n ref={el => {\n options.setTriggerEl((el as HTMLButtonElement | null) ?? null);\n }}\n id={options.triggerId}\n class={{\n [className(prefix, 'section-trigger')]: true,\n [`${className(prefix, 'section-trigger')}--expanded`]: options.open,\n 'ds-interaction-fill--surface-open': options.surfaceOpen,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n }}\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-controls={options.menuId}\n aria-expanded={String(options.open)}\n aria-label={options.ariaLabel}\n onClick={options.onToggle}\n >\n <ds-text\n class={`${className(prefix, 'section-label')} ds-interaction-fill__content`}\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis\n color=\"primary\"\n lineTruncation={1}\n >\n {options.selectedLabel}\n </ds-text>\n <ds-icon\n class={`${className(prefix, 'section-chevron')} ds-interaction-fill__content`}\n name=\"ChevronUpDown\"\n size=\"md\"\n color=\"inherit\"\n aria-hidden=\"true\"\n />\n </button>\n </div>\n );\n}\n\nfunction renderVisibleAction(\n action: BarTitleActionConfigItem,\n options: {\n classPrefix: string;\n compact: boolean;\n actionItems: BarTitleActionConfigItem[] | undefined;\n primaryAction: BarTitlePrimaryAction | null;\n resolvedActionItems: BarTitleActionConfigItem[];\n instanceId: number;\n openActionMenuId: string;\n surfaceActionMenuId: string;\n actionTriggers: Map<string, FocusableBarTitleButton>;\n toggleActionMenu: (id: string, event: MouseEvent) => void;\n emitAction: (id: string) => void;\n }\n) {\n if (isBarTitleDivider(action) || action.type === 'overflow') return null;\n const appearance = action.appearance ?? (action.type === 'split' ? 'filled' : 'unfilled');\n const variant: 'icon' | 'icon-label' | 'label' =\n action.type === 'icon' ? 'icon' : action.icon ? 'icon-label' : 'label';\n const menu = action.type === 'menu';\n const menuId = menu\n ? barTitleActionMenuDomId(\n options.classPrefix,\n options.instanceId,\n options.resolvedActionItems,\n action.id\n )\n : undefined;\n const prefix = options.classPrefix;\n\n if (action.type === 'split') {\n const splitMenuId = barTitleActionMenuDomId(\n options.classPrefix,\n options.instanceId,\n options.resolvedActionItems,\n action.id\n );\n const splitProps = {\n key: action.id,\n ref: (el: FocusableBarTitleButton | undefined) => {\n if (el) options.actionTriggers.set(action.id, el);\n else options.actionTriggers.delete(action.id);\n },\n class: `${className(prefix, 'action')} ${className(prefix, 'split-action')}`,\n split: true,\n variant,\n label: action.label,\n icon: action.icon ?? '',\n menuAriaLabel: action.menuAriaLabel,\n controls: splitMenuId,\n expanded: options.openActionMenuId === action.id,\n surfaceOpen: options.surfaceActionMenuId === action.id,\n size: 'md' as const,\n type: action.buttonType ?? 'button',\n isInactive: action.isInactive,\n isLoading: action.isLoading,\n onDsClick: () => options.emitAction(action.id),\n onDsMenuClick: (event: CustomEvent<MouseEvent>) =>\n options.toggleActionMenu(action.id, event.detail),\n };\n return appearance === 'filled' ? (\n <ds-button-filled\n {...splitProps}\n intent={action.intent ?? 'brand'}\n contrast={action.contrast ?? 'bold'}\n />\n ) : (\n <ds-button-unfilled {...splitProps} />\n );\n }\n\n const buttonProps = {\n key: action.id,\n ref: (el: FocusableBarTitleButton | undefined) => {\n if (el) options.actionTriggers.set(action.id, el);\n else options.actionTriggers.delete(action.id);\n },\n class: `${className(prefix, 'action')} ${className(prefix, 'action')}--${action.type}${\n options.actionItems === undefined && action.id === options.primaryAction?.id\n ? ` ${className(prefix, 'primary-action')}`\n : ''\n }`,\n variant,\n icon: action.icon ?? '',\n label: action.label,\n ariaLabel: action.ariaLabel ?? (action.type === 'icon' ? action.label : undefined),\n size: 'md' as const,\n type: action.buttonType ?? 'button',\n isInactive: action.isInactive,\n isLoading: action.isLoading,\n controls: menuId,\n expanded: menu ? options.openActionMenuId === action.id : undefined,\n surfaceOpen: menu && options.surfaceActionMenuId === action.id,\n hasMenu: menu,\n onDsClick: (event: CustomEvent<MouseEvent>) => {\n if (menu) options.toggleActionMenu(action.id, event.detail);\n else options.emitAction(action.id);\n },\n };\n\n const button =\n appearance === 'filled' ? (\n <ds-button-filled\n {...buttonProps}\n intent={action.intent ?? 'brand'}\n contrast={action.contrast ?? 'bold'}\n />\n ) : (\n <ds-button-unfilled {...buttonProps} />\n );\n\n return action.type === 'icon' ? (\n <ds-tooltip key={action.id} label={action.label} side=\"bottom\" size=\"sm\">\n {button}\n </ds-tooltip>\n ) : (\n button\n );\n}\n\nexport function renderBarTitleActions(options: {\n classPrefix: string;\n compact: boolean;\n visibleActions: BarTitleActionConfigItem[];\n showOverflowTrigger: boolean;\n actionItems: BarTitleActionConfigItem[] | undefined;\n primaryAction: BarTitlePrimaryAction | null;\n resolvedActionItems: BarTitleActionConfigItem[];\n instanceId: number;\n openActionMenuId: string;\n surfaceActionMenuId: string;\n actionsAriaLabel: string;\n actionMenuTriggerId: string;\n actionMenuId: string;\n actionTriggers: Map<string, FocusableBarTitleButton>;\n setOverflowTriggerEl: (el: FocusableBarTitleButton | null) => void;\n toggleActionMenu: (id: string, event: MouseEvent) => void;\n emitAction: (id: string) => void;\n}) {\n if (options.visibleActions.length === 0 && !options.showOverflowTrigger) return null;\n const prefix = options.classPrefix;\n\n return (\n <div class={className(prefix, 'actions')}>\n {options.visibleActions.map(action => renderVisibleAction(action, options))}\n {options.showOverflowTrigger ? (\n <ds-tooltip label=\"Page options\" side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n ref={el => {\n options.setOverflowTriggerEl((el as FocusableBarTitleButton | null) ?? null);\n }}\n id={options.actionMenuTriggerId}\n class={className(prefix, 'more-actions')}\n variant=\"icon\"\n icon=\"Ellipses\"\n aria-label={options.actionsAriaLabel}\n size=\"md\"\n activeFill={!options.compact}\n hasBorder={options.visibleActions.length > 0}\n haspopup=\"menu\"\n controls={options.actionMenuId}\n expanded={options.openActionMenuId === '__overflow'}\n surfaceOpen={options.surfaceActionMenuId === '__overflow'}\n onDsClick={(event: CustomEvent<MouseEvent>) =>\n options.toggleActionMenu('__overflow', event.detail)\n }\n />\n </ds-tooltip>\n ) : null}\n </div>\n );\n}\n\nexport function renderBarTitleActionMenus(options: {\n classPrefix: string;\n visibleActions: BarTitleActionConfigItem[];\n instanceId: number;\n resolvedActionItems: BarTitleActionConfigItem[];\n openActionMenuId: string;\n actionMenuInitialFocusVisible: boolean;\n overflowTrigger: FocusableBarTitleButton | null;\n actionTriggers: Map<string, FocusableBarTitleButton>;\n closeActionMenu: () => void;\n finishActionMenuClose: (event: CustomEvent<void>) => void;\n handleActionSelect: (event: CustomEvent<MenuItemData>) => void;\n}) {\n const prefix = options.classPrefix;\n return options.visibleActions.flatMap(action => {\n if (isBarTitleDivider(action) || (action.type !== 'menu' && action.type !== 'split')) {\n return [];\n }\n const menuAction = action as BarTitleMenuAction | BarTitleSplitAction;\n const menuLabel = menuAction.menuAriaLabel ?? menuAction.ariaLabel ?? menuAction.label;\n return [\n <ds-menu\n key={action.id}\n id={barTitleActionMenuDomId(\n options.classPrefix,\n options.instanceId,\n options.resolvedActionItems,\n action.id\n )}\n class={className(prefix, 'action-menu')}\n anchor={barTitleActionMenuAnchor(\n action.id,\n options.overflowTrigger,\n options.actionTriggers\n )}\n align=\"end\"\n menuLabel={menuLabel}\n open={options.openActionMenuId === action.id}\n initialFocusVisible={options.actionMenuInitialFocusVisible}\n sections={barTitleChoiceSections(menuAction.choices)}\n onDsClose={options.closeActionMenu}\n onDsAfterClose={options.finishActionMenuClose}\n onDsSelect={options.handleActionSelect}\n />,\n ];\n });\n}\n\nexport function renderBarTitleOverflowMenu(options: {\n classPrefix: string;\n showOverflowTrigger: boolean;\n actionMenuId: string;\n actionMenuTriggerId: string;\n actionsAriaLabel: string;\n open: boolean;\n actionMenuInitialFocusVisible: boolean;\n actionMenuSections: MenuSection[];\n closeActionMenu: () => void;\n finishActionMenuClose: (event: CustomEvent<void>) => void;\n handleActionSelect: (event: CustomEvent<MenuItemData>) => void;\n}) {\n if (!options.showOverflowTrigger) return null;\n return (\n <ds-menu\n id={options.actionMenuId}\n class={className(options.classPrefix, 'action-menu')}\n anchorId={options.actionMenuTriggerId}\n align=\"end\"\n menuLabel={options.actionsAriaLabel}\n open={options.open}\n initialFocusVisible={options.actionMenuInitialFocusVisible}\n sections={options.actionMenuSections}\n onDsClose={options.closeActionMenu}\n onDsAfterClose={options.finishActionMenuClose}\n onDsSelect={options.handleActionSelect}\n />\n );\n}\n","import type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport type { TabItem } from '../TabGroup/tab-item-utils';\nimport {\n isBarTitleDivider,\n type BarTitleSection,\n type BarTitleSectionItem,\n} from './bar-title-types';\n\nexport function selectableBarTitleSections(sections: BarTitleSectionItem[]): BarTitleSection[] {\n return sections.filter((item): item is BarTitleSection => !isBarTitleDivider(item));\n}\n\nexport function effectiveBarTitleSectionValue(\n sections: BarTitleSectionItem[],\n value: string\n): string {\n const selectable = selectableBarTitleSections(sections);\n return selectable.some(section => section.id === value) ? value : (selectable[0]?.id ?? '');\n}\n\nexport function selectedBarTitleSectionLabel(\n sections: BarTitleSectionItem[],\n value: string\n): string {\n const selectedId = effectiveBarTitleSectionValue(sections, value);\n return (\n selectableBarTitleSections(sections).find(section => section.id === selectedId)?.label ?? ''\n );\n}\n\nexport function barTitleSectionTriggerAriaLabel(\n sectionsAriaLabel: string,\n selectedLabel: string\n): string {\n return `${sectionsAriaLabel}. Current section: ${selectedLabel}`;\n}\n\nexport function barTitleSectionMenuSections(\n sections: BarTitleSectionItem[],\n selectedId: string\n): MenuSection[] {\n const groups: MenuSection[] = [];\n let items: MenuItemData[] = [];\n const commit = () => {\n if (items.length > 0) groups.push({ items });\n items = [];\n };\n\n for (const item of sections) {\n if (isBarTitleDivider(item)) {\n commit();\n } else {\n items.push({\n label: item.label,\n value: item.id,\n isSelected: item.id === selectedId,\n isInactive: item.isInactive,\n });\n }\n }\n commit();\n return groups;\n}\n\nexport function barTitleSectionsToTabs(sections: BarTitleSectionItem[]): TabItem[] {\n return sections.map(item =>\n isBarTitleDivider(item)\n ? { type: 'divider' }\n : {\n id: item.id,\n label: item.label,\n isInactive: item.isInactive,\n }\n );\n}\n\nexport function barTitleSectionsDigest(sections: BarTitleSectionItem[] | undefined): string {\n return (sections ?? [])\n .map(item =>\n isBarTitleDivider(item) ? '|' : `${item.id}\\0${item.label}\\0${item.isInactive ? '1' : '0'}`\n )\n .join('\\n');\n}\n"],"mappings":"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","ignoreList":[]}
|