@ds-mo/ui 14.34.0 → 14.35.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 +310 -23
- package/dist/angular/ds-filter-menu.d.ts +1 -1
- package/dist/angular/ds-filter-menu.js +3 -3
- package/dist/angular/ds-menu.d.ts +1 -1
- package/dist/angular/ds-menu.js +3 -3
- package/dist/angular/ds-select.d.ts +1 -1
- package/dist/angular/ds-select.js +3 -3
- package/dist/angular/ds-tab-group.d.ts +1 -1
- package/dist/angular/ds-tab-group.js +3 -3
- package/dist/angular/ds-table-filter.d.ts +1 -1
- package/dist/angular/ds-table-filter.js +3 -3
- package/dist/angular/ds-table-group.d.ts +1 -1
- package/dist/angular/ds-table-group.js +3 -3
- package/dist/angular/ds-table-preferences.d.ts +39 -0
- package/dist/angular/ds-table-preferences.js +69 -0
- package/dist/angular/ds-table-saved-views.d.ts +1 -1
- package/dist/angular/ds-table-saved-views.js +3 -3
- package/dist/angular/ds-table-search.d.ts +1 -1
- package/dist/angular/ds-table-search.js +3 -3
- package/dist/angular/ds-table-sort.d.ts +1 -1
- package/dist/angular/ds-table-sort.js +3 -3
- package/dist/angular/ds-table-toolbar.d.ts +1 -1
- package/dist/angular/ds-table-toolbar.js +3 -3
- package/dist/angular/ds-table.d.ts +3 -1
- package/dist/angular/ds-table.js +8 -5
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +1 -0
- package/dist/angular/proxies.d.ts +1 -0
- package/dist/angular/proxies.js +1 -0
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-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-unfilled.js +1 -1
- 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-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-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-section.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.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-app.js.map +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-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-group.js.map +1 -1
- package/dist/components/ds-table-preferences.d.ts +11 -0
- package/dist/components/ds-table-preferences.js +2 -0
- package/dist/components/ds-table-preferences.js.map +1 -0
- 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-toolbar.js.map +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-table.js.map +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-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-ByoywoBH.js → p-B-9fdIWv.js} +2 -2
- package/dist/components/{p-CnK36Be0.js → p-BINSI_KF.js} +2 -2
- package/dist/components/{p-CK2S28gU.js → p-BPhbwXOv.js} +2 -2
- package/dist/components/{p-CMq-jKEI.js → p-BPlWEidl.js} +2 -2
- package/dist/components/{p-DyyfWSLB.js → p-BQaO7cg_.js} +2 -2
- package/dist/components/{p-Br0dx2uP.js → p-BQsVI_vO.js} +2 -2
- package/dist/components/{p-B_nPct4G.js → p-BbfBvMRR.js} +2 -2
- package/dist/components/p-BcdHgPi5.js +2 -0
- package/dist/components/p-BcdHgPi5.js.map +1 -0
- package/dist/components/{p-D_QtZZR8.js → p-BmFeeR4q.js} +2 -2
- package/dist/components/{p-CXAa9TUM.js → p-BnWxbhFP.js} +2 -2
- package/dist/components/{p-CvplapTD.js → p-BnzsBNUY.js} +2 -2
- package/dist/components/{p-BlWNMytv.js → p-C1_3CVma.js} +2 -2
- package/dist/components/p-C1_3CVma.js.map +1 -0
- package/dist/components/{p-DjCnGxSd.js → p-C7CZ9pnP.js} +2 -2
- package/dist/components/{p-DBZwI7HY.js → p-C8ek-1SP.js} +2 -2
- package/dist/components/{p-BEttT0UB.js → p-CAxDdYjh.js} +2 -2
- package/dist/components/{p-BqGdNrVl.js → p-CE540WZ7.js} +2 -2
- package/dist/components/{p-B5QVra1K.js → p-CI7VfYC3.js} +2 -2
- package/dist/components/p-CKarsuR2.js +2 -0
- package/dist/components/p-CKarsuR2.js.map +1 -0
- package/dist/components/{p-AkSwrAKR.js → p-CLGtPE0K.js} +2 -2
- package/dist/components/{p-C51ytXM6.js → p-CSnsz3Eb.js} +2 -2
- package/dist/components/{p-Dx7WcWW1.js → p-CZOiTaNa.js} +2 -2
- package/dist/components/{p-xxuHxP3u.js → p-Cmj04E5Q.js} +2 -2
- package/dist/components/p-Cmj04E5Q.js.map +1 -0
- package/dist/components/{p-zZuAAiiI.js → p-Cq_Qpe_C.js} +2 -2
- package/dist/components/{p-CweS0FfJ.js → p-CqlBlv55.js} +2 -2
- package/dist/components/p-CwqFJMvP.js +2 -0
- package/dist/components/{p-DEyvEIYL.js.map → p-CwqFJMvP.js.map} +1 -1
- package/dist/components/{p-C8XJgV1n.js → p-Cwz9TPVS.js} +2 -2
- package/dist/components/{p-C1QHxVvP.js → p-D44g2Kw1.js} +2 -2
- package/dist/components/{p-CKo2nySr.js → p-DC69DgAR.js} +2 -2
- package/dist/components/{p-CQqZgTYk.js → p-DEGNrPLe.js} +2 -2
- package/dist/components/{p-OxdAzO4v.js → p-DFjIBS5B.js} +2 -2
- package/dist/components/{p-BwsS_Hyr.js → p-DGzn4k4h.js} +2 -2
- package/dist/components/{p-Dj296RmE.js → p-DQQFN2sw.js} +2 -2
- package/dist/components/{p-CIoeHcCk.js → p-DTDLlinw.js} +2 -2
- package/dist/components/p-D_u8WhlU.js +2 -0
- package/dist/components/{p-CHBuzAYH.js.map → p-D_u8WhlU.js.map} +1 -1
- package/dist/components/{p-CqeMumqy.js → p-DdspY23v.js} +2 -2
- package/dist/components/{p-DzbEJN1A.js → p-Dk-8Ju0Q.js} +2 -2
- package/dist/components/{p-Da9VpZX2.js → p-DtLQIMsa.js} +2 -2
- package/dist/components/{p-Cw_npFwN.js → p-FPZbS19l.js} +2 -2
- package/dist/components/{p-BMERUCe1.js → p-KBrC9IG4.js} +2 -2
- package/dist/components/p-N5SHSVo2.js +2 -0
- package/dist/components/{p-CHUdAW1Q.js.map → p-N5SHSVo2.js.map} +1 -1
- package/dist/components/p-QjkufCcn.js +2 -0
- package/dist/components/p-QjkufCcn.js.map +1 -0
- package/dist/components/p-UAIxh67Q.js +2 -0
- package/dist/components/p-UAIxh67Q.js.map +1 -0
- package/dist/components/{p-CIYJhyKt.js → p-beCz9OnD.js} +2 -2
- package/dist/components/{p-LZ8F08Fj.js → p-beRFLHbB.js} +2 -2
- package/dist/components/p-beRFLHbB.js.map +1 -0
- package/dist/components/{p-4DNyCYKM.js → p-mpk_Mm8_.js} +2 -2
- package/dist/components/{p-DrjY8Mpy.js → p-n68x-ZKp.js} +2 -2
- package/dist/components/{p-CNDTHTf6.js → p-omPm8_vx.js} +2 -2
- package/dist/components/{p-lv4YQEsa.js → p-umAf0fBn.js} +2 -2
- package/dist/components/{p-ya8A_SMw.js → p-xHGqrz_p.js} +2 -2
- package/dist/components/{p-ya8A_SMw.js.map → p-xHGqrz_p.js.map} +1 -1
- package/dist/components/{p-CBQzTgvI.js → p-y06IxxoN.js} +2 -2
- package/dist/components/{p-CoE7yza3.js → p-yZRXPHDe.js} +2 -2
- package/dist/docs/components.json +2242 -720
- package/dist/lib/components/ShellApp/shell-app-types.d.ts +3 -1
- package/dist/mcp-data/registry/filter-menu.json +102 -15
- package/dist/mcp-data/registry/menu.json +22 -3
- package/dist/mcp-data/registry/registry.json +312 -22
- package/dist/mcp-data/registry/select.json +43 -8
- package/dist/mcp-data/registry/shell-app.json +4 -3
- package/dist/mcp-data/registry/tab-group.json +20 -3
- package/dist/mcp-data/registry/table-filter.json +26 -6
- package/dist/mcp-data/registry/table-group.json +59 -7
- package/dist/mcp-data/registry/table-preferences.json +511 -0
- package/dist/mcp-data/registry/table-saved-views.json +45 -7
- package/dist/mcp-data/registry/table-search.json +24 -6
- package/dist/mcp-data/registry/table-sort.json +22 -4
- package/dist/mcp-data/registry/table-toolbar.json +26 -6
- package/dist/mcp-data/registry/table.json +70 -4
- package/dist/react/components.d.ts +1 -0
- package/dist/react/components.js +1 -0
- package/dist/react/ds-table-preferences.d.ts +21 -0
- package/dist/react/ds-table-preferences.js +23 -0
- package/dist/react/ds-table.d.ts +1 -0
- package/dist/react/ds-table.js +1 -0
- package/dist/types/components/FilterMenu/FilterMenu.d.ts +16 -0
- package/dist/types/components/Menu/Menu.d.ts +2 -0
- package/dist/types/components/Select/Select.d.ts +5 -1
- package/dist/types/components/ShellApp/shell-app-types.d.ts +3 -1
- package/dist/types/components/TabGroup/TabGroup.d.ts +1 -0
- package/dist/types/components/Table/Table.d.ts +8 -0
- package/dist/types/components/TableFilter/TableFilter.d.ts +2 -0
- package/dist/types/components/TableGroup/TableGroup.d.ts +5 -0
- package/dist/types/components/TablePreferences/TablePreferences.d.ts +56 -0
- package/dist/types/components/TableSavedViews/TableSavedViews.d.ts +4 -0
- package/dist/types/components/TableSearch/TableSearch.d.ts +2 -0
- package/dist/types/components/TableSort/TableSort.d.ts +2 -0
- package/dist/types/components/TableToolbar/TableToolbar.d.ts +2 -0
- package/dist/types/components.d.ts +420 -18
- package/dist/vue/components.d.ts +1 -0
- package/dist/vue/components.js +1 -0
- package/dist/vue/ds-filter-menu.js +5 -0
- package/dist/vue/ds-menu.js +1 -0
- package/dist/vue/ds-select.js +2 -0
- package/dist/vue/ds-tab-group.js +1 -0
- package/dist/vue/ds-table-filter.js +1 -0
- package/dist/vue/ds-table-group.js +3 -0
- package/dist/vue/ds-table-preferences.d.ts +3 -0
- package/dist/vue/ds-table-preferences.js +45 -0
- package/dist/vue/ds-table-saved-views.js +2 -0
- package/dist/vue/ds-table-search.js +1 -0
- package/dist/vue/ds-table-sort.js +1 -0
- package/dist/vue/ds-table-toolbar.js +2 -1
- package/dist/vue/ds-table.js +5 -0
- package/package.json +1 -1
- package/dist/components/p-BlWNMytv.js.map +0 -1
- package/dist/components/p-CHBuzAYH.js +0 -2
- package/dist/components/p-CHUdAW1Q.js +0 -2
- package/dist/components/p-CUL5_8JM.js +0 -2
- package/dist/components/p-CUL5_8JM.js.map +0 -1
- package/dist/components/p-DEyvEIYL.js +0 -2
- package/dist/components/p-DVWOUQfT.js +0 -2
- package/dist/components/p-DVWOUQfT.js.map +0 -1
- package/dist/components/p-LZ8F08Fj.js.map +0 -1
- package/dist/components/p-xxuHxP3u.js.map +0 -1
- /package/dist/components/{p-ByoywoBH.js.map → p-B-9fdIWv.js.map} +0 -0
- /package/dist/components/{p-CnK36Be0.js.map → p-BINSI_KF.js.map} +0 -0
- /package/dist/components/{p-CK2S28gU.js.map → p-BPhbwXOv.js.map} +0 -0
- /package/dist/components/{p-CMq-jKEI.js.map → p-BPlWEidl.js.map} +0 -0
- /package/dist/components/{p-DyyfWSLB.js.map → p-BQaO7cg_.js.map} +0 -0
- /package/dist/components/{p-Br0dx2uP.js.map → p-BQsVI_vO.js.map} +0 -0
- /package/dist/components/{p-B_nPct4G.js.map → p-BbfBvMRR.js.map} +0 -0
- /package/dist/components/{p-D_QtZZR8.js.map → p-BmFeeR4q.js.map} +0 -0
- /package/dist/components/{p-CXAa9TUM.js.map → p-BnWxbhFP.js.map} +0 -0
- /package/dist/components/{p-CvplapTD.js.map → p-BnzsBNUY.js.map} +0 -0
- /package/dist/components/{p-DjCnGxSd.js.map → p-C7CZ9pnP.js.map} +0 -0
- /package/dist/components/{p-DBZwI7HY.js.map → p-C8ek-1SP.js.map} +0 -0
- /package/dist/components/{p-BEttT0UB.js.map → p-CAxDdYjh.js.map} +0 -0
- /package/dist/components/{p-BqGdNrVl.js.map → p-CE540WZ7.js.map} +0 -0
- /package/dist/components/{p-B5QVra1K.js.map → p-CI7VfYC3.js.map} +0 -0
- /package/dist/components/{p-AkSwrAKR.js.map → p-CLGtPE0K.js.map} +0 -0
- /package/dist/components/{p-C51ytXM6.js.map → p-CSnsz3Eb.js.map} +0 -0
- /package/dist/components/{p-Dx7WcWW1.js.map → p-CZOiTaNa.js.map} +0 -0
- /package/dist/components/{p-zZuAAiiI.js.map → p-Cq_Qpe_C.js.map} +0 -0
- /package/dist/components/{p-CweS0FfJ.js.map → p-CqlBlv55.js.map} +0 -0
- /package/dist/components/{p-C8XJgV1n.js.map → p-Cwz9TPVS.js.map} +0 -0
- /package/dist/components/{p-C1QHxVvP.js.map → p-D44g2Kw1.js.map} +0 -0
- /package/dist/components/{p-CKo2nySr.js.map → p-DC69DgAR.js.map} +0 -0
- /package/dist/components/{p-CQqZgTYk.js.map → p-DEGNrPLe.js.map} +0 -0
- /package/dist/components/{p-OxdAzO4v.js.map → p-DFjIBS5B.js.map} +0 -0
- /package/dist/components/{p-BwsS_Hyr.js.map → p-DGzn4k4h.js.map} +0 -0
- /package/dist/components/{p-Dj296RmE.js.map → p-DQQFN2sw.js.map} +0 -0
- /package/dist/components/{p-CIoeHcCk.js.map → p-DTDLlinw.js.map} +0 -0
- /package/dist/components/{p-CqeMumqy.js.map → p-DdspY23v.js.map} +0 -0
- /package/dist/components/{p-DzbEJN1A.js.map → p-Dk-8Ju0Q.js.map} +0 -0
- /package/dist/components/{p-Da9VpZX2.js.map → p-DtLQIMsa.js.map} +0 -0
- /package/dist/components/{p-Cw_npFwN.js.map → p-FPZbS19l.js.map} +0 -0
- /package/dist/components/{p-BMERUCe1.js.map → p-KBrC9IG4.js.map} +0 -0
- /package/dist/components/{p-CIYJhyKt.js.map → p-beCz9OnD.js.map} +0 -0
- /package/dist/components/{p-4DNyCYKM.js.map → p-mpk_Mm8_.js.map} +0 -0
- /package/dist/components/{p-DrjY8Mpy.js.map → p-n68x-ZKp.js.map} +0 -0
- /package/dist/components/{p-CNDTHTf6.js.map → p-omPm8_vx.js.map} +0 -0
- /package/dist/components/{p-lv4YQEsa.js.map → p-umAf0fBn.js.map} +0 -0
- /package/dist/components/{p-CBQzTgvI.js.map → p-y06IxxoN.js.map} +0 -0
- /package/dist/components/{p-CoE7yza3.js.map → p-yZRXPHDe.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DATE_FILTER_RELATIVE_PRESETS","label","value","days","offset","ISO_DATE_PATTERN","isIsoCalendarDate","test","year","month","day","split","map","Number","date","Date","UTC","getUTCFullYear","getUTCMonth","getUTCDate","shiftIsoCalendarDate","toISOString","slice","dateFilterRelativeValue","preset","dateFilterRangeValue","start","end","ordered","parseDateFilterValue","startsWith","length","some","candidate","kind","rest","FILTER_MENU_WEEKDAYS","MONTH_FORMATTER","Intl","DateTimeFormat","timeZone","DATE_FORMATTER","weekday","filterMenuToday","today","getFullYear","String","getMonth","padStart","getDate","filterMenuCalendarMonth","shiftFilterMenuCalendarMonth","filterMenuCalendarMonthLabel","format","filterMenuCalendarDays","firstOfMonth","firstWeekday","getUTCDay","gridStart","Array","from","_","index","dateValue","inMonth","filterMenuCss","filterMenuId","ICON_SIZE","lg","md","sm","xs","DATE_MODE_TABS","id","RELATIVE_DATE_OPTIONS","FilterMenu","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","embedded","vertical","open","triggerLabel","showSelectedCount","icon","size","width","showIndicator","hasBorder","neutralTrigger","applyRequired","activeFill","collapseLabel","ariaLabel","filters","values","matchModes","side","align","sideOffset","TOKEN_CSS_LENGTHS","space050","alignOffset","menuWidth","menuWidthLg","menuLabel","categoriesLabel","clearLabel","searchPlaceholder","noResultsText","footerLayout","initialFocusVisible","shouldRender","closing","positionReady","pos","x","y","focusRingVisible","activeOptionIndex","captionCompact","dateModeByFilter","calendarMonthByFilter","pendingRangeStartByFilter","previewRangeEndByFilter","optionQueryByFilter","generatedId","triggerElement","pendingInitialFocusVisible","closeTimer","hasLoaded","closingSnapshot","position","AnchoredPositionController","getAnchor","resolvedAnchor","getPopup","el","querySelector","getOwnerDocument","ownerDocument","measure","anchor","popup","anchorRect","getBoundingClientRect","sectionInsetPx","resolveCssLengthPx","TOKEN_DEFAULTS","popupWidth","offsetWidth","popupFallbackWidth","popupHeight","offsetHeight","popupFallbackHeight","sideOffsetPx","alignOffsetPx","resolveChoicePopupAlignOffset","viewportPadPx","viewportPad","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","boundary","apply","onReady","liveUpdate","observeResize","topLayer","interaction","AnchoredOverlayInteractionController","onOutsideActivation","close","changeValue","detail","draftValues","filterId","dsChange","emit","changeMode","draftModes","mode","dsMatchModeChange","hasPendingChanges","normalize","isArray","sort","undefined","modes","filter","JSON","stringify","applyDraft","Object","keys","dsClear","Set","componentDidLoad","syncCaptionCompactObserver","onOpenChange","connectedCallback","disconnectedCallback","disconnectCaptionCompactObserver","unobserve","teardownListeners","onCollapseLabelChange","isOpen","setupListeners","schedule","focusInitialCategory","cancel","captureClosingSnapshot","duration","resolveMotionTimeMs","motionShort2","animationDurationShort3","finishClose","setTimeout","onPositionInputChange","handleKeyDown","event","key","preventDefault","tabLeavesPopup","moveFocusAfterTab","shiftKey","anchorId","document","getElementById","usesInternalTrigger","menuFallbackHeight","connect","observe","disconnect","clearTimeout","restoreFocus","focusAnchor","dsOpenChange","dsClose","toggleFromTrigger","handleTriggerKeyDown","matches","hidePopover","dsAfterClose","options","option","fromEntries","entries","activeFilterId","requestAnimationFrame","focus","selectedFilter","find","selectedCount","totalSelected","reduce","total","activeFilterCount","selectCategory","dsActiveFilterChange","handleCategoryKeyDown","currentIndex","findIndex","nextIndex","handlePanelKeyDown","handleOptionKeyDown","visibleOptions","selectOption","includes","enabled","optionIndex","isInactive","current","indexOf","next","direction","optionMatchesQuery","query","normalized","trim","toLocaleLowerCase","description","booleanOption","fieldLabel","setOptionQuery","firstEnabled","content","scrollTop","handleOptionSearchKeyDown","toggleMultiple","checked","selected","add","delete","has","dateMode","setDateMode","parsed","initialDate","clearCalendarRangePreview","calendarMonth","moveCalendarMonth","selectCalendarDate","pendingStart","previewCalendarRange","focusCalendarDate","targetMonth","handleCalendarDayKeyDown","target","renderRelativeDateOptions","relativeFilter","h","class","role","ChoiceOptionRow","active","usesSubtext","tabIndex","onFocus","onKeyDown","onHover","onSelect","renderDateCalendar","range","previewEnd","previewStart","previewFinish","preferredFocus","focusDate","variant","onDsClick","as","emphasis","color","onMouseLeave","selectedInRange","Boolean","previewInRange","inRange","rangeEdge","textColor","type","onMouseEnter","onClick","renderDateFilter","hasContainer","tabs","onDsChange","stopPropagation","renderOptionSearch","ChoiceSearch","hasFocusBoundary","hasInteractionFill","placeholder","controls","inputRef","onValueChange","renderNoOptionResults","body","renderOptions","allOptions","choiceListUsesSubtext","subtext","isSelected","leading","presentation","captionIconOnly","captionCompactDisconnect","observeTableCaptionCompact","compact","renderCaptionTooltip","trigger","renderFooter","categoriesClear","appliedCount","disabled","renderMatchModeFooter","nextMode","render","Host","name","state","activeFilter","hasActiveFilters","categoriesClearFooter","textVariant","CONTROL_TEXT_VARIANT","iconSize","popupId","popupStyle","left","top","transform","Math","round","zIndex","visibility","controlWidthClass","ref","element","inputId","lineTruncation","popover","style","count","divider","onMouseDown","hasRing","intent","contrast","isInset","rounded"],"sources":["src/wc/utils/date-filter-value.ts","src/wc/components/FilterMenu/filter-menu-calendar.ts","src/wc/components/FilterMenu/FilterMenu.css?tag=ds-filter-menu&encapsulation=scoped","src/wc/components/FilterMenu/FilterMenu.tsx"],"sourcesContent":["export const DATE_FILTER_RELATIVE_PRESETS = [\n { label: 'Today', value: 'today', days: 1, offset: 0 },\n { label: 'Yesterday', value: 'yesterday', days: 1, offset: -1 },\n { label: 'Last 7 days', value: 'last-7-days', days: 7, offset: 0 },\n { label: 'Last 14 days', value: 'last-14-days', days: 14, offset: 0 },\n { label: 'Last 30 days', value: 'last-30-days', days: 30, offset: 0 },\n { label: 'Last 60 days', value: 'last-60-days', days: 60, offset: 0 },\n { label: 'Last 90 days', value: 'last-90-days', days: 90, offset: 0 },\n] as const;\n\nexport type DateFilterRelativePreset = (typeof DATE_FILTER_RELATIVE_PRESETS)[number]['value'];\nexport type DateFilterRelativeValue = `relative:${DateFilterRelativePreset}`;\nexport type DateFilterRangeValue = `range:${string}/${string}`;\nexport type DateFilterValue = DateFilterRelativeValue | DateFilterRangeValue;\n\nexport interface DateFilterRange {\n start: string;\n end: string;\n}\n\nexport type ParsedDateFilterValue =\n | { kind: 'relative'; preset: DateFilterRelativePreset }\n | ({ kind: 'range' } & DateFilterRange);\n\nconst ISO_DATE_PATTERN = /^\\d{4}-\\d{2}-\\d{2}$/;\n\nexport function isIsoCalendarDate(value: string): boolean {\n if (!ISO_DATE_PATTERN.test(value)) return false;\n const [year, month, day] = value.split('-').map(Number);\n const date = new Date(Date.UTC(year, month - 1, day));\n return (\n date.getUTCFullYear() === year && date.getUTCMonth() === month - 1 && date.getUTCDate() === day\n );\n}\n\nexport function shiftIsoCalendarDate(value: string, days: number): string {\n if (!isIsoCalendarDate(value)) return '';\n const [year, month, day] = value.split('-').map(Number);\n const date = new Date(Date.UTC(year, month - 1, day + days));\n return date.toISOString().slice(0, 10);\n}\n\nexport function dateFilterRelativeValue(preset: DateFilterRelativePreset): DateFilterRelativeValue {\n return `relative:${preset}`;\n}\n\nexport function dateFilterRangeValue(start: string, end: string = start): DateFilterRangeValue {\n const ordered = start <= end ? [start, end] : [end, start];\n return `range:${ordered[0]}/${ordered[1]}`;\n}\n\nexport function parseDateFilterValue(value: unknown): ParsedDateFilterValue | null {\n if (typeof value !== 'string' || !value) return null;\n\n if (value.startsWith('relative:')) {\n const preset = value.slice('relative:'.length) as DateFilterRelativePreset;\n return DATE_FILTER_RELATIVE_PRESETS.some(candidate => candidate.value === preset)\n ? { kind: 'relative', preset }\n : null;\n }\n\n if (value.startsWith('range:')) {\n const [start, end, ...rest] = value.slice('range:'.length).split('/');\n if (rest.length || !isIsoCalendarDate(start) || !isIsoCalendarDate(end)) return null;\n return start <= end ? { kind: 'range', start, end } : { kind: 'range', start: end, end: start };\n }\n\n // Preserve the previous single-date contract as a one-day range.\n return isIsoCalendarDate(value) ? { kind: 'range', start: value, end: value } : null;\n}\n\nexport function normalizeDateFilterValue(value: unknown): DateFilterValue | '' {\n const parsed = parseDateFilterValue(value);\n if (!parsed) return '';\n return parsed.kind === 'relative'\n ? dateFilterRelativeValue(parsed.preset)\n : dateFilterRangeValue(parsed.start, parsed.end);\n}\n\nexport function resolveDateFilterRange(\n value: unknown,\n referenceDate: string\n): DateFilterRange | null {\n if (!isIsoCalendarDate(referenceDate)) return null;\n const parsed = parseDateFilterValue(value);\n if (!parsed) return null;\n if (parsed.kind === 'range') return { start: parsed.start, end: parsed.end };\n\n const preset = DATE_FILTER_RELATIVE_PRESETS.find(candidate => candidate.value === parsed.preset);\n if (!preset) return null;\n const end = shiftIsoCalendarDate(referenceDate, preset.offset);\n return { start: shiftIsoCalendarDate(end, -(preset.days - 1)), end };\n}\n","import { isIsoCalendarDate, shiftIsoCalendarDate } from '../../utils';\n\nexport interface FilterMenuCalendarDay {\n value: string;\n day: number;\n inMonth: boolean;\n label: string;\n}\n\nexport const FILTER_MENU_WEEKDAYS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\nconst MONTH_FORMATTER = new Intl.DateTimeFormat('en-US', {\n month: 'long',\n year: 'numeric',\n timeZone: 'UTC',\n});\nconst DATE_FORMATTER = new Intl.DateTimeFormat('en-US', {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n timeZone: 'UTC',\n});\n\nexport function filterMenuToday(): string {\n const today = new Date();\n const year = today.getFullYear();\n const month = String(today.getMonth() + 1).padStart(2, '0');\n const day = String(today.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n}\n\nexport function filterMenuCalendarMonth(value: string): string {\n return isIsoCalendarDate(value) ? value.slice(0, 7) : filterMenuToday().slice(0, 7);\n}\n\nexport function shiftFilterMenuCalendarMonth(value: string, offset: number): string {\n const [year, month] = value.split('-').map(Number);\n const date = new Date(Date.UTC(year, month - 1 + offset, 1));\n return `${date.getUTCFullYear()}-${String(date.getUTCMonth() + 1).padStart(2, '0')}`;\n}\n\nexport function filterMenuCalendarMonthLabel(value: string): string {\n const [year, month] = value.split('-').map(Number);\n return MONTH_FORMATTER.format(new Date(Date.UTC(year, month - 1, 1)));\n}\n\nexport function filterMenuCalendarDays(value: string): FilterMenuCalendarDay[] {\n const [year, month] = value.split('-').map(Number);\n const firstOfMonth = `${year}-${String(month).padStart(2, '0')}-01`;\n const firstWeekday = new Date(`${firstOfMonth}T00:00:00Z`).getUTCDay();\n const gridStart = shiftIsoCalendarDate(firstOfMonth, -firstWeekday);\n return Array.from({ length: 42 }, (_, index) => {\n const dateValue = shiftIsoCalendarDate(gridStart, index);\n const date = new Date(`${dateValue}T00:00:00Z`);\n return {\n value: dateValue,\n day: date.getUTCDate(),\n inMonth: dateValue.startsWith(`${value}-`),\n label: DATE_FORMATTER.format(date),\n };\n });\n}\n","@import '../../utils/radius.css';\n@import '../../utils/choice-list.css';\n@import '../../utils/chrome-header.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/control-width.css';\n@import '../../utils/select-trigger.css';\n@import '../../utils/search-control.css';\n@import '../../utils/table-caption-control.css';\n\n:host(.filter-menu-host--external-trigger) {\n display: contents;\n}\n\n.filter-menu {\n display: flex;\n min-height: 0;\n flex-direction: column;\n color: var(--color-foreground-secondary);\n}\n\n.filter-menu__body {\n display: grid;\n grid-template-columns: var(--dimension-menu-width-xs) var(--dimension-menu-width-sm);\n min-height: calc(var(--dimension-size-800) * 4 + var(--dimension-space-150));\n max-height: calc(100vh - var(--dimension-size-800) - var(--dimension-size-600));\n}\n\n.filter-menu__category-pane {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex-direction: column;\n border-inline-end: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n}\n\n.filter-menu__categories {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.filter-menu__category-section {\n display: flex;\n min-width: 0;\n flex-direction: column;\n}\n\n.filter-menu__category-section.ds-choice-section--divided {\n padding-block-end: var(--dimension-space-050);\n}\n\n.filter-menu__category {\n justify-content: space-between;\n width: 100%;\n border: 0;\n background: transparent;\n color: var(--color-foreground-secondary);\n cursor: default;\n text-align: start;\n}\n\n.filter-menu__category--active {\n color: var(--color-foreground-primary);\n}\n\n.filter-menu__category-dot-box {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--ds-control-icon, var(--dimension-iconography-md));\n height: var(--ds-control-icon, var(--dimension-iconography-md));\n pointer-events: none;\n}\n\n.filter-menu__options {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex-direction: column;\n overflow: hidden;\n}\n\n.filter-menu__options-content {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex: 1 1 auto;\n flex-direction: column;\n overflow: auto;\n}\n\n.filter-menu__option-search {\n position: relative;\n flex: 0 0 var(--dimension-size-500);\n min-width: 0;\n min-height: var(--dimension-size-500);\n background: transparent;\n}\n\n.filter-menu__option-search::after {\n content: '';\n position: absolute;\n inset: auto 0 0;\n height: var(--dimension-stroke-width-012);\n background-color: var(--color-border-tertiary);\n pointer-events: none;\n}\n\n.filter-menu__option-search .select-search {\n height: 100%;\n background: transparent;\n}\n\n.filter-menu__options--date,\n.filter-menu__option-list--date,\n.filter-menu__date {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex-direction: column;\n}\n\n.filter-menu__option-list--date,\n.filter-menu__date {\n flex: 1 1 auto;\n}\n\n.filter-menu__date-header {\n flex: 0 0 var(--dimension-size-500);\n justify-content: center;\n min-block-size: var(--dimension-size-500);\n padding: var(--dimension-space-050);\n background: var(--color-background-secondary);\n}\n\n.filter-menu__date-body {\n display: flex;\n flex: 1 1 auto;\n min-height: 0;\n flex-direction: column;\n}\n\n.filter-menu__date-relative {\n flex: 1 1 auto;\n}\n\n.filter-menu__calendar {\n display: flex;\n min-height: 0;\n flex-direction: column;\n padding: var(--dimension-space-100);\n}\n\n.filter-menu__calendar-heading {\n display: grid;\n grid-template-columns: var(--dimension-size-400) minmax(0, 1fr) var(--dimension-size-400);\n align-items: center;\n text-align: center;\n}\n\n.filter-menu__calendar-nav--previous {\n justify-self: start;\n}\n\n.filter-menu__calendar-nav--next {\n justify-self: end;\n}\n\n.filter-menu__calendar-weekdays,\n.filter-menu__calendar-grid {\n display: grid;\n grid-template-columns: repeat(7, minmax(0, 1fr));\n column-gap: var(--dimension-space-050);\n}\n\n.filter-menu__calendar-grid {\n row-gap: var(--dimension-space-050);\n}\n\n.filter-menu__calendar-weekdays {\n align-items: center;\n min-height: var(--dimension-size-400);\n margin-block-start: var(--dimension-space-050);\n color: var(--color-foreground-secondary);\n text-align: center;\n}\n\n.filter-menu__calendar-day {\n appearance: none;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n width: 100%;\n height: var(--dimension-size-400);\n padding: 0;\n border: 0;\n border-radius: var(--dimension-radius-025);\n background: transparent;\n color: var(--color-foreground-primary);\n cursor: default;\n}\n\n.filter-menu__calendar-day--outside {\n color: var(--color-foreground-tertiary);\n}\n\n.filter-menu__calendar-day--in-range {\n background: var(--color-background-faint-brand);\n color: var(--color-foreground-primary);\n}\n\n/* Pending range preview stays faint while the already-selected start keeps its bold edge. */\n.filter-menu__calendar-day--range-preview {\n background: var(--color-background-faint-brand);\n}\n\n.filter-menu__calendar-day--today {\n color: var(--color-foreground-primary);\n}\n\n.filter-menu__calendar-day--range-edge {\n background: var(--color-background-bold-brand);\n color: var(--color-foreground-on-bold-background-primary);\n}\n\n.filter-menu__footer {\n flex: 0 0 auto;\n}\n\n.filter-menu__footer--categories-clear .ds-choice-footer__content {\n justify-content: flex-start;\n}\n\n.filter-menu__footer--categories-clear[aria-hidden='true']::before {\n visibility: hidden;\n}\n\n.ds-choice-footer__content:has(.filter-menu__apply) {\n column-gap: var(--dimension-space-100);\n}\n\n.filter-menu__apply ds-text {\n padding-right: 0;\n}\n\n.filter-menu__action-separator + .filter-menu__clear ds-text {\n padding-left: 0;\n}\n\n.filter-menu__apply {\n color: var(--color-foreground-bold-brand);\n}\n\n.filter-menu__apply:disabled {\n color: var(--color-foreground-tertiary);\n text-decoration-line: none;\n}\n\n.filter-menu__clear {\n --ds-text-action-foreground: var(--color-foreground-bold-negative);\n\n color: var(--ds-text-action-foreground);\n}\n\n.filter-menu__match-mode-footer {\n flex: 0 0 auto;\n}\n\n.filter-menu__match-mode-content {\n justify-content: flex-start;\n padding-inline: calc(\n var(--dimension-space-050) + var(--ds-control-padding-inline, var(--dimension-space-075)) +\n var(--ds-control-label-inset, var(--dimension-space-025))\n );\n}\n\n.filter-menu__match-mode-toggle {\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: default;\n}\n\n@media (forced-colors: active) {\n .filter-menu__category-pane {\n border-inline-end-color: var(--ds-forced-color-content);\n }\n\n .filter-menu__calendar-day--range-edge {\n outline: var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);\n }\n}\n\n.table-preferences-embedded {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n color: var(--color-foreground-secondary);\n}\n\n.table-preferences-embedded .filter-menu__body {\n grid-template-columns: min(var(--dimension-menu-width-xs), 40%) minmax(0, 1fr);\n}\n\n.filter-menu-vertical__section {\n border-bottom: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n}\n.filter-menu-vertical__section > summary {\n cursor: default;\n padding: var(--dimension-space-200);\n}\n.filter-menu-vertical__section > summary ds-text {\n display: inline;\n}\n\n.filter-menu-vertical__section > summary {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-100);\n list-style: none;\n}\n.filter-menu-vertical__section > summary::-webkit-details-marker {\n display: none;\n}\n.filter-menu-vertical__section:not([open]) .filter-menu-vertical__chevron {\n transform: rotate(-90deg);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n type VNode,\n Watch,\n} from '@stencil/core';\nimport {\n CONTROL_TEXT_VARIANT,\n DATE_FILTER_RELATIVE_PRESETS,\n controlWidthClass,\n dateFilterRangeValue,\n dateFilterRelativeValue,\n parseDateFilterValue,\n resolveChoicePopupAlignOffset,\n resolveCssLengthPx,\n resolveMotionTimeMs,\n shiftIsoCalendarDate,\n TOKEN_CSS_LENGTHS,\n TOKEN_DEFAULTS,\n type ControlWidth,\n} from '../../utils';\nimport { observeTableCaptionCompact } from '../../utils/table-caption-compact';\nimport type { AnchoredAlign, AnchoredSide } from '../../utils/anchored-position';\nimport { AnchoredPositionController } from '../../utils/anchored-position-controller';\nimport { AnchoredOverlayInteractionController } from '../../utils/anchored-overlay-interaction-controller';\nimport { resolveAnchoredOverlayBoundaryRect } from '../../utils/anchored-overlay-boundary';\nimport { ChoiceOptionRow, ChoiceSearch } from '../../utils/choice-list-parts';\nimport { choiceListUsesSubtext } from '../../utils/choice-list';\nimport {\n FILTER_MENU_WEEKDAYS,\n filterMenuCalendarDays,\n filterMenuCalendarMonth,\n filterMenuCalendarMonthLabel,\n filterMenuToday,\n shiftFilterMenuCalendarMonth,\n} from './filter-menu-calendar';\n\nexport type FilterMenuFilterKind = 'single' | 'multiple' | 'boolean' | 'date';\nexport type FilterMenuSize = 'lg' | 'md' | 'sm' | 'xs';\nexport type FilterMenuWidth = ControlWidth;\nexport type FilterMenuFooterLayout = 'summary' | 'categories-clear';\nexport type FilterMenuMatchMode = 'any' | 'all';\ntype FilterMenuDateMode = 'range' | 'relative';\n\nexport interface FilterMenuOption {\n label: string;\n value: string;\n description?: string;\n isInactive?: boolean;\n}\n\nexport interface FilterMenuFilter {\n id: string;\n label: string;\n kind: FilterMenuFilterKind;\n options?: FilterMenuOption[];\n description?: string;\n fieldLabel?: string;\n /** Draw a standard menu-section divider after this category. */\n divider?: boolean;\n}\n\nexport type FilterMenuValue = string[] | boolean | string;\nexport type FilterMenuValues = Record<string, FilterMenuValue | undefined>;\nexport type FilterMenuMatchModes = Record<string, FilterMenuMatchMode | undefined>;\n\nexport interface FilterMenuChangeDetail {\n filterId: string;\n value: FilterMenuValue;\n}\n\nexport interface FilterMenuMatchModeChangeDetail {\n filterId: string;\n mode: FilterMenuMatchMode;\n}\n\nlet filterMenuId = 0;\n\nconst ICON_SIZE: Record<FilterMenuSize, 'lg' | 'md' | 'sm' | 'xs'> = {\n lg: 'lg',\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\nconst DATE_MODE_TABS = [\n { id: 'relative', label: 'Relative' },\n { id: 'range', label: 'Range' },\n];\n\nconst RELATIVE_DATE_OPTIONS: FilterMenuOption[] = DATE_FILTER_RELATIVE_PRESETS.map(preset => ({\n label: preset.label,\n value: dateFilterRelativeValue(preset.value),\n}));\n\n@Component({\n tag: 'ds-filter-menu',\n styleUrl: 'FilterMenu.css',\n scoped: true,\n})\nexport class FilterMenu {\n @Element() el!: HTMLElement;\n\n /** Controlled popup visibility. */\n /** Render content inside a parent-owned surface; the parent owns dismissal and positioning. */\n @Prop() embedded: boolean = false;\n /** Stacked, collapsible sections for a configuration panel. */\n @Prop() vertical: boolean = false;\n @Prop({ mutable: true }) open: boolean = false;\n /** Select trigger text. */\n @Prop() triggerLabel: string = 'Filters';\n /** Append the active-filter count to the visible trigger label. */\n @Prop() showSelectedCount: boolean = true;\n /** Optional select trigger prefix icon name. */\n @Prop() icon: string | undefined = 'Filters';\n /** Select trigger density. */\n @Prop() size: FilterMenuSize = 'md';\n /** Select trigger width fit. */\n @Prop() width: FilterMenuWidth = 'hug';\n /** Show the surface-aware inset border around the select trigger. */\n /** Show the trigger chevron. */\n @Prop() showIndicator: boolean = true;\n @Prop() hasBorder: boolean = true;\n /** Show selected interaction fill when one or more criteria are active. */\n /** Keep trigger colors neutral when a value is selected. */\n @Prop() neutralTrigger: boolean = false;\n /** Stage filter edits until Apply is pressed. */\n @Prop() applyRequired: boolean = false;\n @State() private draftValues?: FilterMenuValues;\n @State() private draftModes?: FilterMenuMatchModes;\n\n private changeValue(detail: FilterMenuChangeDetail): void {\n if (this.applyRequired)\n this.draftValues = { ...(this.draftValues ?? this.values), [detail.filterId]: detail.value };\n else this.dsChange.emit(detail);\n }\n private changeMode(detail: FilterMenuMatchModeChangeDetail): void {\n if (this.applyRequired)\n this.draftModes = { ...(this.draftModes ?? this.matchModes), [detail.filterId]: detail.mode };\n else this.dsMatchModeChange.emit(detail);\n }\n private get hasPendingChanges(): boolean {\n const normalize = (value: FilterMenuValue | undefined) =>\n Array.isArray(value) ? (value.length ? [...value].sort() : undefined) : value || undefined;\n const values = this.draftValues ?? this.values;\n const modes = this.draftModes ?? this.matchModes;\n return this.filters.some(\n filter =>\n JSON.stringify(normalize(values[filter.id])) !==\n JSON.stringify(normalize(this.values[filter.id])) ||\n (modes[filter.id] ?? 'any') !== (this.matchModes[filter.id] ?? 'any')\n );\n }\n private applyDraft(): void {\n if (!this.hasPendingChanges) return;\n if (this.draftValues && Object.keys(this.draftValues).length === 0) {\n this.dsClear.emit();\n } else if (this.draftValues) {\n for (const id of new Set([...Object.keys(this.values), ...Object.keys(this.draftValues)])) {\n if (JSON.stringify(this.values[id]) !== JSON.stringify(this.draftValues[id]))\n this.dsChange.emit({\n filterId: id,\n value:\n this.draftValues[id] ??\n (Array.isArray(this.values[id])\n ? []\n : typeof this.values[id] === 'boolean'\n ? false\n : ''),\n });\n }\n }\n if (this.draftModes) {\n for (const filterId of new Set([\n ...Object.keys(this.matchModes),\n ...Object.keys(this.draftModes),\n ])) {\n const mode = this.draftModes[filterId] ?? 'any';\n if ((this.matchModes[filterId] ?? 'any') !== mode)\n this.dsMatchModeChange.emit({ filterId, mode });\n }\n }\n }\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 /** ID applied to the internal select trigger. */\n @Prop() inputId: string | undefined;\n /** Direct accessible name for the internal select trigger. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** Product-owned filter categories and option definitions. */\n @Prop() filters: FilterMenuFilter[] = [];\n /** Controlled values keyed by filter id. */\n @Prop() values: FilterMenuValues = {};\n /** Controlled any/all match mode keyed by multiple-choice filter id. Defaults to any. */\n @Prop() matchModes: FilterMenuMatchModes = {};\n /** Controlled category shown in the option pane. */\n @Prop() activeFilterId: string | undefined;\n /** External trigger element to position against. */\n @Prop() anchor: HTMLElement | undefined;\n /** ID of the external trigger element used for positioning and focus return. */\n @Prop() anchorId: string | undefined;\n /** Explicit collision owner; otherwise the nearest data-ds-overlay-boundary ancestor is used. */\n @Prop() boundary: HTMLElement | undefined;\n /** Preferred popup side; collision handling may flip it. */\n @Prop() side: AnchoredSide = 'bottom';\n /** Cross-axis alignment against the trigger. */\n @Prop() align: AnchoredAlign = 'end';\n /** Gap between trigger and popup — number in px or a TokoMo length. */\n @Prop() sideOffset: number | string = TOKEN_CSS_LENGTHS.space050;\n /** Cross-axis offset — number in px or a TokoMo length. */\n @Prop() alignOffset: number | string = 0;\n /** Popup width. It remains clamped to its collision boundary by the component recipe. */\n @Prop() menuWidth: string = TOKEN_CSS_LENGTHS.menuWidthLg;\n /** Accessible name for the non-modal filter dialog. */\n @Prop() menuLabel: string = 'Filters';\n /** Accessible name for the category tab list. */\n @Prop() categoriesLabel: string = 'Filter categories';\n /** Footer action and date-clear accessible label. */\n @Prop() clearLabel: string = 'Clear';\n /** Placeholder shown in each non-date option search header. */\n @Prop() searchPlaceholder: string = 'Search';\n /** Empty-state text shown when an option search has no matches. */\n @Prop() noResultsText: string = 'No results';\n /** Footer recipe: full-width selected summary or reserved category-pane Clear action. */\n @Prop() footerLayout: FilterMenuFooterLayout = 'summary';\n /** Show a visible focus ring on initial entry after keyboard activation. */\n @Prop() initialFocusVisible: boolean = false;\n\n @State() private shouldRender = false;\n @State() private closing = false;\n @State() private positionReady = false;\n @State() private pos: { x: number; y: number } = { x: 0, y: 0 };\n @State() private focusRingVisible = false;\n @State() private activeOptionIndex = 0;\n @State() private captionCompact = false;\n @State() private dateModeByFilter: Record<string, FilterMenuDateMode> = {};\n @State() private calendarMonthByFilter: Record<string, string> = {};\n @State() private pendingRangeStartByFilter: Record<string, string> = {};\n @State() private previewRangeEndByFilter: Record<string, string> = {};\n @State() private optionQueryByFilter: Record<string, string> = {};\n\n /** Requests a controlled value replacement without closing the popup. */\n @Event() dsChange!: EventEmitter<FilterMenuChangeDetail>;\n /** Requests that the consumer clear every filter value. */\n @Event() dsClear!: EventEmitter<void>;\n /** Requests a controlled any/all mode replacement for a multiple-choice filter. */\n @Event() dsMatchModeChange!: EventEmitter<FilterMenuMatchModeChangeDetail>;\n /** Requests a controlled active-category replacement. */\n @Event() dsActiveFilterChange!: EventEmitter<string>;\n /** Requests that the controlled popup close. */\n @Event() dsClose!: EventEmitter<void>;\n /** Emitted whenever internal select-trigger activation changes popup visibility. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n /** Emitted after exit motion and rendered popup removal complete. */\n @Event() dsAfterClose!: EventEmitter<void>;\n\n private readonly generatedId = `ds-filter-menu-${++filterMenuId}`;\n private triggerElement: HTMLButtonElement | null = null;\n private pendingInitialFocusVisible = false;\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n private captionCompactDisconnect: (() => void) | undefined;\n private hasLoaded = false;\n private closingSnapshot: {\n filters: FilterMenuFilter[];\n values: FilterMenuValues;\n matchModes: FilterMenuMatchModes;\n activeFilterId: string | undefined;\n } | null = null;\n\n private readonly position = new AnchoredPositionController({\n getAnchor: () => this.resolvedAnchor,\n getPopup: () => this.el.querySelector<HTMLElement>('.filter-menu-popup'),\n getOwnerDocument: () => this.el.ownerDocument,\n measure: (anchor, popup) => {\n if (!this.open) return null;\n const anchorRect = anchor.getBoundingClientRect();\n const sectionInsetPx = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n return {\n anchorRect,\n popupWidth: popup.offsetWidth || this.popupFallbackWidth,\n popupHeight: popup.offsetHeight || this.popupFallbackHeight,\n side: this.side,\n align: this.align,\n sideOffsetPx: resolveCssLengthPx(this.sideOffset, TOKEN_DEFAULTS.space050),\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align: this.align,\n alignOffsetPx: resolveCssLengthPx(this.alignOffset, 0),\n sectionInsetPx,\n }),\n viewportPadPx: this.viewportPad,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(anchor, this.boundary),\n };\n },\n apply: ({ x, y }) => {\n this.pos = { x, y };\n },\n onReady: () => {\n this.positionReady = true;\n },\n liveUpdate: 'double-frame',\n observeResize: true,\n topLayer: true,\n });\n private readonly interaction = new AnchoredOverlayInteractionController({\n getAnchor: () => this.resolvedAnchor,\n getPopup: () => this.el.querySelector<HTMLElement>('.filter-menu-popup'),\n getOwnerDocument: () => this.el.ownerDocument,\n onOutsideActivation: () => this.close(),\n });\n\n componentDidLoad() {\n this.hasLoaded = true;\n this.syncCaptionCompactObserver();\n if (this.open) this.onOpenChange(true);\n }\n\n connectedCallback() {\n if (!this.hasLoaded) return;\n this.syncCaptionCompactObserver();\n if (this.open) this.onOpenChange(true);\n }\n\n disconnectedCallback() {\n this.disconnectCaptionCompactObserver();\n this.position.unobserve();\n this.teardownListeners();\n }\n\n @Watch('collapseLabel')\n onCollapseLabelChange() {\n this.syncCaptionCompactObserver();\n }\n\n @Watch('open')\n onOpenChange(isOpen: boolean) {\n if (!isOpen) {\n this.draftValues = undefined;\n this.draftModes = undefined;\n }\n if (this.embedded) return;\n if (isOpen) {\n this.teardownListeners();\n this.closingSnapshot = null;\n this.shouldRender = true;\n this.closing = false;\n this.positionReady = false;\n this.focusRingVisible = this.pendingInitialFocusVisible || this.initialFocusVisible;\n this.setupListeners();\n this.position.schedule(() => this.focusInitialCategory());\n return;\n }\n\n if (!this.shouldRender) return;\n this.position.cancel();\n this.captureClosingSnapshot();\n this.closing = true;\n this.teardownListeners();\n const duration = resolveMotionTimeMs(\n TOKEN_DEFAULTS.motionShort2,\n TOKEN_DEFAULTS.animationDurationShort3\n );\n if (duration <= 0) {\n this.finishClose();\n return;\n }\n this.closeTimer = setTimeout(() => this.finishClose(), duration);\n }\n\n @Watch('anchor')\n @Watch('anchorId')\n @Watch('boundary')\n @Watch('side')\n @Watch('align')\n @Watch('sideOffset')\n @Watch('alignOffset')\n @Watch('menuWidth')\n onPositionInputChange() {\n if (this.open) this.position.schedule();\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (this.embedded && (event.key === 'Escape' || event.key === 'Tab')) return;\n if ((!this.shouldRender && !this.embedded) || this.closing) return;\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n return;\n }\n if (event.key !== 'Tab' || !this.tabLeavesPopup(event)) return;\n event.preventDefault();\n this.close(false);\n this.interaction.moveFocusAfterTab(event.shiftKey);\n }\n\n private get resolvedAnchor(): HTMLElement | null {\n if (this.anchor) return this.anchor;\n if (this.anchorId) return document.getElementById(this.anchorId);\n return this.triggerElement;\n }\n\n private get usesInternalTrigger(): boolean {\n return !this.embedded && !this.anchor && !this.anchorId;\n }\n\n private get viewportPad(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n }\n\n private get popupFallbackWidth(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.menuWidthLg, TOKEN_DEFAULTS.menuWidthLg);\n }\n\n private get popupFallbackHeight(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.menuFallbackHeight, TOKEN_DEFAULTS.menuFallbackHeight);\n }\n\n private setupListeners() {\n this.interaction.connect();\n this.position.observe();\n }\n\n private teardownListeners() {\n this.position.unobserve();\n this.interaction.disconnect();\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n }\n\n private close(restoreFocus = true) {\n this.captureClosingSnapshot();\n if (restoreFocus) this.interaction.focusAnchor();\n this.dsOpenChange.emit(false);\n this.dsClose.emit();\n this.open = false;\n this.onOpenChange(false);\n }\n\n private toggleFromTrigger(event: MouseEvent) {\n if (this.open) {\n this.close();\n return;\n }\n this.pendingInitialFocusVisible = event.detail === 0;\n this.open = true;\n this.dsOpenChange.emit(true);\n this.onOpenChange(true);\n }\n\n private handleTriggerKeyDown(event: KeyboardEvent) {\n if (event.key !== 'ArrowDown' || this.open) return;\n event.preventDefault();\n this.pendingInitialFocusVisible = true;\n this.open = true;\n this.dsOpenChange.emit(true);\n this.onOpenChange(true);\n }\n\n private finishClose() {\n const popup = this.el.querySelector<HTMLElement>('.filter-menu-popup');\n if (popup?.matches(':popover-open')) popup.hidePopover();\n this.shouldRender = false;\n this.closing = false;\n this.closingSnapshot = null;\n this.closeTimer = null;\n this.dateModeByFilter = {};\n this.calendarMonthByFilter = {};\n this.pendingRangeStartByFilter = {};\n this.previewRangeEndByFilter = {};\n this.optionQueryByFilter = {};\n this.dsAfterClose.emit();\n }\n\n private captureClosingSnapshot() {\n if (this.closingSnapshot) return;\n this.closingSnapshot = {\n filters: this.filters.map(filter => ({\n ...filter,\n options: filter.options?.map(option => ({ ...option })),\n })),\n values: Object.fromEntries(\n Object.entries(this.values).map(([key, value]) => [\n key,\n Array.isArray(value) ? [...value] : value,\n ])\n ),\n matchModes: { ...this.matchModes },\n activeFilterId: this.activeFilterId,\n };\n }\n\n private focusInitialCategory() {\n requestAnimationFrame(() => {\n this.el.querySelector<HTMLElement>('.filter-menu__category[tabindex=\"0\"]')?.focus();\n this.pendingInitialFocusVisible = false;\n });\n }\n\n private tabLeavesPopup(event: KeyboardEvent): boolean {\n return this.interaction.tabLeavesPopup(event);\n }\n\n private selectedFilter(filters: FilterMenuFilter[], activeFilterId: string | undefined) {\n return filters.find(filter => filter.id === activeFilterId) ?? filters[0];\n }\n\n private selectedCount(filter: FilterMenuFilter, values: FilterMenuValues): number {\n const value = values[filter.id];\n if (filter.kind === 'multiple') return Array.isArray(value) ? value.length : 0;\n if (filter.kind === 'boolean') return value === true ? 1 : 0;\n return typeof value === 'string' && value.length > 0 ? 1 : 0;\n }\n\n private totalSelected(filters: FilterMenuFilter[], values: FilterMenuValues): number {\n return filters.reduce((total, filter) => total + this.selectedCount(filter, values), 0);\n }\n\n private activeFilterCount(filters: FilterMenuFilter[], values: FilterMenuValues): number {\n return filters.filter(filter => this.selectedCount(filter, values) > 0).length;\n }\n\n private selectCategory(filterId: string, focus = false) {\n this.activeOptionIndex = 0;\n this.dsActiveFilterChange.emit(filterId);\n if (!focus) return;\n requestAnimationFrame(() => {\n this.el.querySelector<HTMLElement>(`[data-filter-category=\"${filterId}\"]`)?.focus();\n });\n }\n\n private handleCategoryKeyDown(\n event: KeyboardEvent,\n filters: FilterMenuFilter[],\n filterId: string\n ) {\n const currentIndex = filters.findIndex(filter => filter.id === filterId);\n let nextIndex: number;\n if (event.key === 'ArrowDown') nextIndex = (currentIndex + 1) % filters.length;\n else if (event.key === 'ArrowUp')\n nextIndex = (currentIndex - 1 + filters.length) % filters.length;\n else if (event.key === 'Home') nextIndex = 0;\n else if (event.key === 'End') nextIndex = filters.length - 1;\n else if (event.key === 'ArrowRight') {\n event.preventDefault();\n requestAnimationFrame(() => {\n this.el\n .querySelector<HTMLElement>(\n '.filter-menu__options [role=\"option\"], .filter-menu__options [data-date-option], .filter-menu__options input'\n )\n ?.focus();\n });\n return;\n } else return;\n\n event.preventDefault();\n this.focusRingVisible = true;\n this.selectCategory(filters[nextIndex].id, true);\n }\n\n private handlePanelKeyDown(event: KeyboardEvent, filterId: string) {\n if (event.key !== 'ArrowLeft') return;\n event.preventDefault();\n this.el.querySelector<HTMLElement>(`[data-filter-category=\"${filterId}\"]`)?.focus();\n }\n\n private handleOptionKeyDown(\n event: KeyboardEvent,\n filter: FilterMenuFilter,\n option: FilterMenuOption,\n index: number,\n values: FilterMenuValues,\n visibleOptions: FilterMenuOption[] = filter.options ?? []\n ) {\n if (event.key === 'ArrowLeft') {\n this.handlePanelKeyDown(event, filter.id);\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.selectOption(filter, option, values);\n return;\n }\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return;\n event.preventDefault();\n const enabled = visibleOptions\n .map((candidate, optionIndex) => ({ candidate, optionIndex }))\n .filter(({ candidate }) => !candidate.isInactive)\n .map(({ optionIndex }) => optionIndex);\n if (!enabled.length) return;\n const current = enabled.indexOf(index);\n let next: number;\n if (event.key === 'Home') next = enabled[0];\n else if (event.key === 'End') next = enabled[enabled.length - 1];\n else {\n const direction = event.key === 'ArrowDown' ? 1 : -1;\n const start = current >= 0 ? current : direction === 1 ? -1 : 0;\n next = enabled[(start + direction + enabled.length) % enabled.length];\n }\n this.activeOptionIndex = next;\n this.focusRingVisible = true;\n requestAnimationFrame(() => {\n this.el\n .querySelector<HTMLElement>(`#${this.generatedId}-${filter.id}-option-${next}`)\n ?.focus();\n });\n }\n\n private optionMatchesQuery(option: FilterMenuOption, query: string): boolean {\n const normalized = query.trim().toLocaleLowerCase();\n if (!normalized) return true;\n return `${option.label} ${option.description ?? ''}`.toLocaleLowerCase().includes(normalized);\n }\n\n private visibleOptions(\n filter: FilterMenuFilter,\n query = this.optionQueryByFilter[filter.id] ?? ''\n ) {\n if (filter.kind === 'boolean') {\n const option = this.booleanOption(filter);\n return this.optionMatchesQuery(option, query) ? [option] : [];\n }\n return (filter.options ?? []).filter(option => this.optionMatchesQuery(option, query));\n }\n\n private booleanOption(filter: FilterMenuFilter): FilterMenuOption {\n return {\n label: filter.fieldLabel ?? filter.label,\n value: 'true',\n description: filter.description,\n };\n }\n\n private setOptionQuery(filter: FilterMenuFilter, value: string) {\n const visibleOptions = this.visibleOptions(filter, value);\n const firstEnabled = visibleOptions.findIndex(option => !option.isInactive);\n this.activeOptionIndex = firstEnabled;\n this.focusRingVisible = false;\n this.optionQueryByFilter = { ...this.optionQueryByFilter, [filter.id]: value };\n requestAnimationFrame(() => {\n const content = this.el.querySelector<HTMLElement>('.filter-menu__options-content');\n if (content) content.scrollTop = 0;\n this.position.schedule();\n });\n }\n\n private handleOptionSearchKeyDown(event: KeyboardEvent, filter: FilterMenuFilter) {\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return;\n const visibleOptions = this.visibleOptions(filter);\n const enabled = visibleOptions\n .map((option, index) => ({ option, index }))\n .filter(({ option }) => !option.isInactive)\n .map(({ index }) => index);\n if (!enabled.length) return;\n event.preventDefault();\n const next = event.key === 'ArrowDown' ? enabled[0] : enabled[enabled.length - 1];\n this.activeOptionIndex = next;\n this.focusRingVisible = true;\n requestAnimationFrame(() => {\n this.el\n .querySelector<HTMLElement>(`#${this.generatedId}-${filter.id}-option-${next}`)\n ?.focus();\n });\n }\n\n private toggleMultiple(\n filter: FilterMenuFilter,\n option: FilterMenuOption,\n checked: boolean,\n values: FilterMenuValues\n ) {\n if (option.isInactive) return;\n const current = Array.isArray(values[filter.id]) ? (values[filter.id] as string[]) : [];\n const selected = new Set(current);\n if (checked) selected.add(option.value);\n else selected.delete(option.value);\n const ordered = (filter.options ?? [])\n .map(candidate => candidate.value)\n .filter(value => selected.has(value));\n this.changeValue({ filterId: filter.id, value: ordered });\n }\n\n private selectOption(\n filter: FilterMenuFilter,\n option: FilterMenuOption,\n values: FilterMenuValues\n ) {\n if (option.isInactive) return;\n if (filter.kind === 'single') {\n this.changeValue({ filterId: filter.id, value: option.value });\n return;\n }\n const selected = Array.isArray(values[filter.id])\n ? (values[filter.id] as string[]).includes(option.value)\n : false;\n this.toggleMultiple(filter, option, !selected, values);\n }\n\n private dateMode(filterId: string, value: FilterMenuValue | undefined): FilterMenuDateMode {\n return this.dateModeByFilter[filterId] ?? parseDateFilterValue(value)?.kind ?? 'relative';\n }\n\n private setDateMode(filter: FilterMenuFilter, value: FilterMenuValue | undefined, mode: string) {\n if (mode !== 'range' && mode !== 'relative') return;\n this.dateModeByFilter = { ...this.dateModeByFilter, [filter.id]: mode };\n this.activeOptionIndex = 0;\n if (mode === 'range' && !this.calendarMonthByFilter[filter.id]) {\n const parsed = parseDateFilterValue(value);\n const initialDate = parsed?.kind === 'range' ? parsed.start : filterMenuToday();\n this.calendarMonthByFilter = {\n ...this.calendarMonthByFilter,\n [filter.id]: filterMenuCalendarMonth(initialDate),\n };\n }\n if (mode === 'relative' && this.pendingRangeStartByFilter[filter.id]) {\n const next = { ...this.pendingRangeStartByFilter };\n delete next[filter.id];\n this.pendingRangeStartByFilter = next;\n }\n if (mode === 'relative') this.clearCalendarRangePreview(filter.id);\n }\n\n private calendarMonth(filterId: string, value: FilterMenuValue | undefined): string {\n const parsed = parseDateFilterValue(value);\n const initialDate = parsed?.kind === 'range' ? parsed.start : filterMenuToday();\n return this.calendarMonthByFilter[filterId] ?? filterMenuCalendarMonth(initialDate);\n }\n\n private moveCalendarMonth(filterId: string, month: string, offset: number) {\n this.clearCalendarRangePreview(filterId);\n this.calendarMonthByFilter = {\n ...this.calendarMonthByFilter,\n [filterId]: shiftFilterMenuCalendarMonth(month, offset),\n };\n }\n\n private selectCalendarDate(filterId: string, value: string) {\n this.clearCalendarRangePreview(filterId);\n const pendingStart = this.pendingRangeStartByFilter[filterId];\n const next = { ...this.pendingRangeStartByFilter };\n if (pendingStart) delete next[filterId];\n else next[filterId] = value;\n this.pendingRangeStartByFilter = next;\n this.changeValue({\n filterId,\n value: dateFilterRangeValue(pendingStart ?? value, value),\n });\n }\n\n private previewCalendarRange(filterId: string, value: string) {\n if (!this.pendingRangeStartByFilter[filterId]) return;\n if (this.previewRangeEndByFilter[filterId] === value) return;\n this.previewRangeEndByFilter = { ...this.previewRangeEndByFilter, [filterId]: value };\n }\n\n private clearCalendarRangePreview(filterId: string) {\n if (!this.previewRangeEndByFilter[filterId]) return;\n const next = { ...this.previewRangeEndByFilter };\n delete next[filterId];\n this.previewRangeEndByFilter = next;\n }\n\n private focusCalendarDate(filterId: string, value: string) {\n this.previewCalendarRange(filterId, value);\n const targetMonth = filterMenuCalendarMonth(value);\n if (this.calendarMonthByFilter[filterId] !== targetMonth) {\n this.calendarMonthByFilter = { ...this.calendarMonthByFilter, [filterId]: targetMonth };\n }\n requestAnimationFrame(() => {\n this.el.querySelector<HTMLElement>(`[data-date-option=\"${value}\"]`)?.focus();\n });\n }\n\n private handleCalendarDayKeyDown(event: KeyboardEvent, filterId: string, value: string) {\n let offset: number | null = null;\n if (event.key === 'ArrowLeft') offset = -1;\n else if (event.key === 'ArrowRight') offset = 1;\n else if (event.key === 'ArrowUp') offset = -7;\n else if (event.key === 'ArrowDown') offset = 7;\n else if (event.key === 'Home') {\n offset = -new Date(`${value}T00:00:00Z`).getUTCDay();\n } else if (event.key === 'End') {\n offset = 6 - new Date(`${value}T00:00:00Z`).getUTCDay();\n } else if (event.key === 'PageUp') {\n const month = shiftFilterMenuCalendarMonth(filterMenuCalendarMonth(value), -1);\n const day = value.slice(8, 10);\n const candidate = `${month}-${day}`;\n const target = parseDateFilterValue(candidate) ? candidate : `${month}-01`;\n event.preventDefault();\n this.focusCalendarDate(filterId, target);\n return;\n } else if (event.key === 'PageDown') {\n const month = shiftFilterMenuCalendarMonth(filterMenuCalendarMonth(value), 1);\n const day = value.slice(8, 10);\n const candidate = `${month}-${day}`;\n const target = parseDateFilterValue(candidate) ? candidate : `${month}-01`;\n event.preventDefault();\n this.focusCalendarDate(filterId, target);\n return;\n }\n if (offset === null) return;\n event.preventDefault();\n this.focusCalendarDate(filterId, shiftIsoCalendarDate(value, offset));\n }\n\n private renderRelativeDateOptions(filter: FilterMenuFilter, value: FilterMenuValue | undefined) {\n const relativeFilter: FilterMenuFilter = {\n ...filter,\n kind: 'single',\n options: RELATIVE_DATE_OPTIONS,\n };\n return (\n <div\n class=\"filter-menu__date-relative ds-choice-list ds-chrome-column ds-chrome-space--sm\"\n role=\"listbox\"\n aria-label=\"Relative date\"\n >\n {RELATIVE_DATE_OPTIONS.map((option, index) => (\n <ChoiceOptionRow\n size=\"md\"\n id={`${this.generatedId}-${filter.id}-relative-${index}`}\n option={option}\n selected={value === option.value}\n active={index === this.activeOptionIndex}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={false}\n tabIndex={index === this.activeOptionIndex ? 0 : -1}\n onFocus={() => {\n this.activeOptionIndex = index;\n }}\n onKeyDown={(event: KeyboardEvent) =>\n this.handleOptionKeyDown(event, relativeFilter, option, index, {\n [filter.id]: value,\n })\n }\n onHover={() => {\n this.focusRingVisible = false;\n this.activeOptionIndex = index;\n }}\n onSelect={() => this.changeValue({ filterId: filter.id, value: option.value })}\n />\n ))}\n </div>\n );\n }\n\n private renderDateCalendar(filter: FilterMenuFilter, value: FilterMenuValue | undefined) {\n const parsed = parseDateFilterValue(value);\n const range = parsed?.kind === 'range' ? parsed : null;\n const month = this.calendarMonth(filter.id, value);\n const days = filterMenuCalendarDays(month);\n const today = filterMenuToday();\n const pendingStart = this.pendingRangeStartByFilter[filter.id];\n const previewEnd = this.previewRangeEndByFilter[filter.id];\n const previewStart = pendingStart && previewEnd ? [pendingStart, previewEnd].sort()[0] : null;\n const previewFinish = pendingStart && previewEnd ? [pendingStart, previewEnd].sort()[1] : null;\n const preferredFocus =\n this.pendingRangeStartByFilter[filter.id] ??\n range?.end ??\n (month === today.slice(0, 7) ? today : '');\n const focusDate = days.some(day => day.value === preferredFocus)\n ? preferredFocus\n : (days.find(day => day.inMonth)?.value ?? days[0]?.value);\n\n return (\n <div class=\"filter-menu__calendar\">\n <div class=\"filter-menu__calendar-heading ds-control--md\">\n <ds-button-unfilled\n class=\"filter-menu__calendar-nav filter-menu__calendar-nav--previous\"\n variant=\"icon\"\n icon=\"ChevronLeft\"\n size=\"md\"\n hasBorder={false}\n ariaLabel=\"Previous month\"\n onDsClick={() => this.moveCalendarMonth(filter.id, month, -1)}\n />\n <ds-text as=\"span\" variant=\"text-body-medium\" emphasis color=\"primary\">\n {filterMenuCalendarMonthLabel(month)}\n </ds-text>\n <ds-button-unfilled\n class=\"filter-menu__calendar-nav filter-menu__calendar-nav--next\"\n variant=\"icon\"\n icon=\"ChevronRight\"\n size=\"md\"\n hasBorder={false}\n ariaLabel=\"Next month\"\n onDsClick={() => this.moveCalendarMonth(filter.id, month, 1)}\n />\n </div>\n <div class=\"filter-menu__calendar-weekdays\" aria-hidden=\"true\">\n {FILTER_MENU_WEEKDAYS.map(day => (\n <ds-text as=\"span\" variant=\"text-body-small\" color=\"secondary\">\n {day}\n </ds-text>\n ))}\n </div>\n <div\n class=\"filter-menu__calendar-grid\"\n role=\"grid\"\n aria-label={filterMenuCalendarMonthLabel(month)}\n onMouseLeave={() => this.clearCalendarRangePreview(filter.id)}\n >\n {days.map(day => {\n const selectedInRange = Boolean(\n range && day.value >= range.start && day.value <= range.end\n );\n const previewInRange = Boolean(\n previewStart &&\n previewFinish &&\n day.value >= previewStart &&\n day.value <= previewFinish\n );\n const inRange = previewInRange || selectedInRange;\n const rangeEdge = Boolean(\n previewStart\n ? day.value === pendingStart\n : range && (day.value === range.start || day.value === range.end)\n );\n const textColor = rangeEdge\n ? 'on-bold'\n : inRange || day.value === today\n ? 'primary'\n : day.inMonth\n ? 'secondary'\n : 'tertiary';\n return (\n <button\n type=\"button\"\n role=\"gridcell\"\n data-date-option={day.value}\n class={{\n 'filter-menu__calendar-day': true,\n 'filter-menu__calendar-day--outside': !day.inMonth,\n 'filter-menu__calendar-day--today': day.value === today,\n 'filter-menu__calendar-day--in-range': inRange,\n 'filter-menu__calendar-day--range-preview': previewInRange,\n 'filter-menu__calendar-day--range-edge': rangeEdge,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n }}\n aria-label={day.label}\n aria-selected={selectedInRange ? 'true' : 'false'}\n tabIndex={day.value === focusDate ? 0 : -1}\n onMouseEnter={() => this.previewCalendarRange(filter.id, day.value)}\n onFocus={() => this.previewCalendarRange(filter.id, day.value)}\n onClick={() => this.selectCalendarDate(filter.id, day.value)}\n onKeyDown={(event: KeyboardEvent) =>\n this.handleCalendarDayKeyDown(event, filter.id, day.value)\n }\n >\n <ds-text\n class=\"ds-interaction-fill__content\"\n as=\"span\"\n variant=\"text-body-medium\"\n color={textColor}\n emphasis={day.value === today}\n >\n {day.day}\n </ds-text>\n </button>\n );\n })}\n </div>\n </div>\n );\n }\n\n private renderDateFilter(filter: FilterMenuFilter, value: FilterMenuValue | undefined) {\n const mode = this.dateMode(filter.id, value);\n return (\n <div class=\"filter-menu__date\">\n <header class=\"filter-menu__date-header ds-chrome-header ds-chrome-header--bounded\">\n <ds-tab-group\n ariaLabel=\"Date filter mode\"\n size=\"md\"\n width=\"fill\"\n hasContainer={false}\n value={mode}\n tabs={DATE_MODE_TABS}\n onDsChange={(event: CustomEvent<string>) => {\n event.stopPropagation();\n this.setDateMode(filter, value, event.detail);\n }}\n />\n </header>\n <div class=\"filter-menu__date-body\">\n {mode === 'relative'\n ? this.renderRelativeDateOptions(filter, value)\n : this.renderDateCalendar(filter, value)}\n </div>\n </div>\n );\n }\n\n private renderOptionSearch(filter: FilterMenuFilter) {\n return (\n <div class=\"filter-menu__option-search\">\n <ChoiceSearch\n size=\"md\"\n hasFocusBoundary={false}\n hasInteractionFill={false}\n value={this.optionQueryByFilter[filter.id] ?? ''}\n placeholder={this.searchPlaceholder}\n ariaLabel={`Search ${filter.label} options`}\n controls={`${this.generatedId}-${filter.id}-options`}\n inputRef={() => undefined}\n clearLabel={`Clear ${filter.label} search`}\n onValueChange={value => this.setOptionQuery(filter, value)}\n onKeyDown={(event: KeyboardEvent) => this.handleOptionSearchKeyDown(event, filter)}\n />\n </div>\n );\n }\n\n private renderNoOptionResults() {\n return (\n <div\n class=\"ds-choice-empty ds-empty-region\"\n role=\"option\"\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.noResultsText}\n aria-live=\"polite\"\n >\n <ds-empty-state body={this.noResultsText} />\n </div>\n );\n }\n\n private renderOptions(filter: FilterMenuFilter, values: FilterMenuValues) {\n const value = values[filter.id];\n if (filter.kind === 'multiple' || filter.kind === 'single') {\n const selected = Array.isArray(value) ? value : [];\n const allOptions = filter.options ?? [];\n const options = this.visibleOptions(filter);\n const usesSubtext = choiceListUsesSubtext(\n allOptions.map(option => ({\n label: option.label,\n value: option.value,\n subtext: option.description,\n }))\n );\n if (!options.length) return this.renderNoOptionResults();\n return options.map((option, index) => {\n const isSelected =\n filter.kind === 'multiple' ? selected.includes(option.value) : value === option.value;\n return (\n <ChoiceOptionRow\n size=\"md\"\n id={`${this.generatedId}-${filter.id}-option-${index}`}\n option={{\n label: option.label,\n value: option.value,\n subtext: option.description,\n isInactive: option.isInactive,\n }}\n selected={isSelected}\n active={index === this.activeOptionIndex}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={usesSubtext}\n tabIndex={index === this.activeOptionIndex ? 0 : -1}\n leading={\n filter.kind === '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 label=\"\" size=\"md\" checked={isSelected} presentation />\n </span>\n ) : undefined\n }\n onFocus={() => {\n this.activeOptionIndex = index;\n }}\n onKeyDown={(event: KeyboardEvent) =>\n this.handleOptionKeyDown(event, filter, option, index, values, options)\n }\n onHover={() => {\n this.focusRingVisible = false;\n this.activeOptionIndex = index;\n }}\n onSelect={() => this.selectOption(filter, option, values)}\n />\n );\n });\n }\n\n if (filter.kind === 'boolean') {\n const [option] = this.visibleOptions(filter);\n if (!option) return this.renderNoOptionResults();\n return (\n <ChoiceOptionRow\n size=\"md\"\n id={`${this.generatedId}-${filter.id}-option-0`}\n option={{\n label: option.label,\n value: option.value,\n subtext: option.description,\n }}\n selected={value === true}\n active\n focusRingVisible={this.focusRingVisible}\n usesSubtext={Boolean(option.description)}\n tabIndex={0}\n leading={\n <span\n class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-checkbox label=\"\" size=\"md\" checked={value === true} presentation />\n </span>\n }\n onKeyDown={(event: KeyboardEvent) => {\n if (event.key === 'ArrowLeft') this.handlePanelKeyDown(event, filter.id);\n else if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.changeValue({ filterId: filter.id, value: value !== true });\n }\n }}\n onHover={() => {\n this.focusRingVisible = false;\n }}\n onSelect={() => this.changeValue({ filterId: filter.id, value: value !== true })}\n />\n );\n }\n\n return this.renderDateFilter(filter, value);\n }\n\n private get captionIconOnly(): boolean {\n return (\n this.collapseLabel && this.captionCompact && this.usesInternalTrigger && Boolean(this.icon)\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 private renderFooter(totalSelected: number, categoriesClear: boolean) {\n const appliedCount = this.totalSelected(this.filters, this.values);\n if (this.applyRequired && totalSelected === 0 && appliedCount === 0) return null;\n return (\n <div\n class={{\n 'filter-menu__footer': true,\n 'filter-menu__footer--categories-clear': categoriesClear,\n 'ds-choice-footer': true,\n }}\n aria-hidden={\n !this.applyRequired &&\n categoriesClear &&\n totalSelected === 0 &&\n !this.draftValues &&\n !this.draftModes\n ? 'true'\n : undefined\n }\n >\n <div class=\"ds-choice-footer__content ds-control--md\">\n {!categoriesClear ? (\n <ds-text\n class=\"ds-choice-footer__summary\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n aria-live=\"polite\"\n >\n {totalSelected} selected\n </ds-text>\n ) : null}\n {this.applyRequired ? (\n <button\n class=\"filter-menu__apply ds-choice-footer__clear ds-text-action\"\n type=\"button\"\n disabled={!this.hasPendingChanges}\n onClick={() => this.applyDraft()}\n >\n <ds-text as=\"span\" variant=\"text-body-medium\" color=\"inherit\">\n Apply\n </ds-text>\n </button>\n ) : null}\n {this.applyRequired && (totalSelected > 0 || appliedCount > 0) ? (\n <ds-text\n class=\"filter-menu__action-separator\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"tertiary\"\n aria-hidden=\"true\"\n >\n ·\n </ds-text>\n ) : null}\n {totalSelected > 0 || (this.applyRequired && appliedCount > 0) ? (\n <button\n class=\"filter-menu__clear ds-choice-footer__clear ds-text-action\"\n type=\"button\"\n onClick={() => {\n this.pendingRangeStartByFilter = {};\n if (this.applyRequired) {\n this.draftValues = {};\n this.draftModes = {};\n }\n this.dsClear.emit();\n }}\n >\n <ds-text as=\"span\" variant=\"text-body-medium\" color=\"inherit\">\n {this.clearLabel}\n </ds-text>\n </button>\n ) : null}\n </div>\n </div>\n );\n }\n\n private renderMatchModeFooter(filter: FilterMenuFilter, matchModes: FilterMenuMatchModes) {\n const mode: FilterMenuMatchMode = matchModes[filter.id] === 'all' ? 'all' : 'any';\n const nextMode: FilterMenuMatchMode = mode === 'any' ? 'all' : 'any';\n return (\n <div class=\"filter-menu__match-mode-footer ds-choice-footer\">\n <div class=\"filter-menu__match-mode-content ds-choice-footer__content ds-control--md\">\n <ds-text as=\"span\" variant=\"text-body-medium\" color=\"secondary\">\n Limit results to\n </ds-text>\n <button\n class=\"filter-menu__match-mode-toggle ds-text-action ds-focus-ring\"\n type=\"button\"\n aria-label={`Limit ${filter.label} results to ${nextMode} selected`}\n onClick={() => this.changeMode({ filterId: filter.id, mode: nextMode })}\n onKeyDown={(event: KeyboardEvent) => this.handlePanelKeyDown(event, filter.id)}\n >\n <ds-text as=\"span\" variant=\"text-body-medium\" color=\"inherit\">\n {mode}\n </ds-text>\n </button>\n <ds-text as=\"span\" variant=\"text-body-medium\" color=\"secondary\">\n selected\n </ds-text>\n </div>\n </div>\n );\n }\n\n render() {\n if (this.vertical)\n return (\n <Host class=\"filter-menu-vertical\">\n {this.filters.map(filter => (\n <details open key={filter.id} class=\"filter-menu-vertical__section\">\n <summary>\n <ds-icon class=\"filter-menu-vertical__chevron\" name=\"ChevronDown\" size=\"md\" />\n <ds-text variant=\"text-body-medium\" emphasis>\n {filter.label}\n </ds-text>\n </summary>\n {filter.kind !== 'date' && this.renderOptionSearch(filter)}\n <div\n id={`${this.generatedId}-${filter.id}-options`}\n role={filter.kind === 'date' ? undefined : 'listbox'}\n aria-label={filter.label}\n aria-multiselectable={filter.kind === 'multiple' ? 'true' : undefined}\n class=\"ds-choice-list ds-chrome-column ds-chrome-space--sm\"\n >\n {this.renderOptions(filter, this.values)}\n </div>\n {filter.kind === 'multiple' && this.renderMatchModeFooter(filter, this.matchModes)}\n </details>\n ))}\n </Host>\n );\n const state =\n this.closing && this.closingSnapshot\n ? this.closingSnapshot\n : {\n filters: this.filters,\n values: this.draftValues ?? this.values,\n matchModes: this.draftModes ?? this.matchModes,\n activeFilterId: this.activeFilterId,\n };\n const activeFilter = this.selectedFilter(state.filters, state.activeFilterId);\n const totalSelected = this.totalSelected(state.filters, state.values);\n const activeFilterCount = this.activeFilterCount(state.filters, state.values);\n const hasActiveFilters = activeFilterCount > 0;\n const categoriesClearFooter = this.footerLayout === 'categories-clear';\n const label = `${this.triggerLabel}${\n this.showSelectedCount && hasActiveFilters ? ` · ${activeFilterCount}` : ''\n }`;\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n const popupId = `${this.generatedId}-popup`;\n const popupStyle: Record<string, string> = {\n position: 'fixed',\n left: '0',\n top: '0',\n width: this.menuWidth,\n transform: `translate(${Math.round(this.pos.x)}px, ${Math.round(this.pos.y)}px)`,\n zIndex: '9998',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n\n return (\n <Host\n class={{\n 'filter-menu-host': true,\n 'filter-menu-host--external-trigger': !this.usesInternalTrigger,\n 'ds-select-trigger-host': this.usesInternalTrigger,\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 }}\n >\n {this.usesInternalTrigger\n ? this.renderCaptionTooltip(\n <button\n ref={element => {\n this.triggerElement = (element as HTMLButtonElement) ?? null;\n }}\n id={this.inputId ?? `${this.generatedId}-trigger`}\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': this.activeFill && hasActiveFilters,\n 'trigger--expanded': this.open || this.closing,\n 'ds-interaction-fill--surface-open': this.open || this.closing,\n 'trigger--bordered': this.hasBorder,\n 'trigger--has-value': hasActiveFilters && !this.neutralTrigger,\n [`ds-control--${this.size}`]: true,\n }}\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-expanded={String(this.open)}\n aria-controls={this.open ? popupId : undefined}\n aria-label={this.ariaLabel ?? this.menuLabel}\n onClick={(event: MouseEvent) => this.toggleFromTrigger(event)}\n onKeyDown={(event: KeyboardEvent) => this.handleTriggerKeyDown(event)}\n >\n {this.icon ? (\n <span\n class=\"trigger__prefix ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon name={this.icon} size={iconSize} color=\"inherit\" />\n </span>\n ) : null}\n {this.captionIconOnly ? null : (\n <ds-text\n class=\"trigger__label-box trigger__label trigger__label-content ds-control-label-box ds-interaction-fill__content\"\n as=\"span\"\n variant={textVariant}\n color=\"inherit\"\n lineTruncation={1}\n >\n {label}\n </ds-text>\n )}\n {this.captionIconOnly || !this.showIndicator ? null : (\n <span\n class=\"trigger__chevron ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon name=\"ChevronDown\" size={iconSize} color=\"inherit\" />\n </span>\n )}\n </button>,\n this.captionIconOnly ? label : ''\n )\n : null}\n\n {this.shouldRender || this.embedded ? (\n <div\n id={popupId}\n popover={this.embedded ? undefined : 'manual'}\n class={{\n 'filter-menu-popup': true,\n 'ds-choice-popup': !this.embedded,\n 'table-preferences-embedded': this.embedded,\n 'ds-choice-popup--closing': this.closing,\n }}\n style={this.embedded ? undefined : popupStyle}\n role=\"dialog\"\n aria-label={this.menuLabel}\n >\n {activeFilter ? (\n <div class=\"filter-menu\">\n <div class=\"filter-menu__body\">\n <div class=\"filter-menu__category-pane\">\n <div\n class=\"filter-menu__categories ds-choice-list ds-chrome-column ds-chrome-space--sm\"\n role=\"tablist\"\n aria-label={this.categoriesLabel}\n aria-orientation=\"vertical\"\n >\n {state.filters.map(filter => {\n const active = filter.id === activeFilter.id;\n const count = this.selectedCount(filter, state.values);\n return (\n <div\n key={filter.id}\n class={{\n 'filter-menu__category-section': true,\n 'ds-choice-section--divided': Boolean(filter.divider),\n }}\n >\n <button\n id={`${this.generatedId}-${filter.id}-tab`}\n type=\"button\"\n role=\"tab\"\n data-filter-category={filter.id}\n class={{\n 'filter-menu__category': true,\n 'filter-menu__category--active': active,\n 'ds-choice-item': true,\n 'ds-control-frame': true,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-focus-ring--visible': active && this.focusRingVisible,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected': active,\n }}\n aria-selected={String(active)}\n aria-controls={`${this.generatedId}-panel`}\n tabIndex={active ? 0 : -1}\n onMouseDown={() => {\n this.focusRingVisible = false;\n }}\n onClick={() => this.selectCategory(filter.id)}\n onKeyDown={(event: KeyboardEvent) =>\n this.handleCategoryKeyDown(event, state.filters, filter.id)\n }\n >\n <ds-text\n class=\"ds-choice-item__content ds-choice-item__label ds-control-label-box ds-interaction-fill__content\"\n as=\"span\"\n variant=\"text-body-medium\"\n color={active ? 'primary' : 'secondary'}\n >\n {filter.label}\n </ds-text>\n {count > 0 && filter.kind === 'date' ? (\n <span\n class=\"filter-menu__category-dot-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-badge variant=\"dot\" hasRing={false} label=\"\" />\n </span>\n ) : count > 0 ? (\n <ds-tag\n class=\"ds-choice-item__tag ds-interaction-fill__content\"\n label={String(count)}\n size=\"sm\"\n intent=\"brand\"\n contrast=\"bold\"\n isInset\n rounded\n />\n ) : null}\n </button>\n </div>\n );\n })}\n </div>\n {categoriesClearFooter ? this.renderFooter(totalSelected, true) : null}\n </div>\n\n <div\n id={`${this.generatedId}-panel`}\n class={{\n 'filter-menu__options': true,\n 'filter-menu__options--date': activeFilter.kind === 'date',\n }}\n role=\"tabpanel\"\n aria-labelledby={`${this.generatedId}-${activeFilter.id}-tab`}\n >\n {activeFilter.kind === 'date' ? null : this.renderOptionSearch(activeFilter)}\n <div class=\"filter-menu__options-content\">\n {activeFilter.kind === 'date' ? (\n <div key={activeFilter.id} class=\"filter-menu__option-list--date\">\n {this.renderOptions(activeFilter, state.values)}\n </div>\n ) : (\n <div\n id={`${this.generatedId}-${activeFilter.id}-options`}\n key={activeFilter.id}\n class=\"filter-menu__option-list ds-choice-list ds-chrome-column ds-chrome-space--sm\"\n role=\"listbox\"\n aria-label={activeFilter.label}\n aria-multiselectable={\n activeFilter.kind === 'multiple' ? 'true' : undefined\n }\n >\n {this.renderOptions(activeFilter, state.values)}\n </div>\n )}\n </div>\n {activeFilter.kind === 'multiple'\n ? this.renderMatchModeFooter(activeFilter, state.matchModes)\n : null}\n </div>\n </div>\n\n {!categoriesClearFooter && totalSelected > 0\n ? this.renderFooter(totalSelected, false)\n : null}\n </div>\n ) : null}\n </div>\n ) : null}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as e,H as o,c as i,h as s,a as t,t as r}from"./index.js";import{A as n,r as a}from"./p-B8ZonS3S.js";import{r as d,A as c}from"./p-etg-Uk1u.js";import{C as l,a as u}from"./p-CAxDdYjh.js";import{d as p}from"./p-DtLQIMsa.js";import{d as g}from"./p-xHGqrz_p.js";import{d as h}from"./p-D_u8WhlU.js";import{d as b}from"./p-Cea7rROU.js";import{d as f}from"./p-FPZbS19l.js";import{d as v}from"./p-0XTyQNRG.js";import{d as m}from"./p-CLGtPE0K.js";import{d as x}from"./p-BINSI_KF.js";import{r as w}from"./p-CochmPyg.js";import{a as y,T as _,b as k}from"./p-BcdHgPi5.js";const z=()=>`.sc-ds-table-group-h,.sc-ds-table-group:where(.ds-table),.sc-ds-table-group:where(.tooltip-popup),.sc-ds-table-group: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-table-group:root,.sc-ds-table-group-h,.ds-forced-colors-scope.sc-ds-table-group{--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-table-group-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-table-group-h,.ds-focus-ring.sc-ds-table-group,.ds-focus-ring-inset.sc-ds-table-group-h,.ds-focus-ring-inset.sc-ds-table-group{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-table-group-h:focus-visible,.ds-focus-ring.sc-ds-table-group: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-table-group-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-table-group{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-table-group-h:focus-visible,.ds-focus-ring-inset.sc-ds-table-group:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-table-group-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-table-group: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-table-group-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-table-group{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-table-group-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-table-group::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-table-group-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-table-group:root,.sc-ds-table-group-h,.ds-forced-colors-scope.sc-ds-table-group{--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-table-group:root,.sc-ds-table-group-h,.ds-forced-colors-scope.sc-ds-table-group{--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-table-group-h,.ds-interaction-fill.sc-ds-table-group{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-table-group-h::before,.ds-interaction-fill.sc-ds-table-group::before,.ds-interaction-fill.sc-ds-table-group-h::after,.ds-interaction-fill.sc-ds-table-group::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-table-group-h::before,.ds-interaction-fill.sc-ds-table-group::before{z-index:1}.ds-interaction-fill.sc-ds-table-group-h::after,.ds-interaction-fill.sc-ds-table-group::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-table-group-h,.ds-interaction-fill--bordered.sc-ds-table-group{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-table-group-h::before,.ds-interaction-fill--selected.sc-ds-table-group::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-table-group-h,.ds-interaction-fill--selected.sc-ds-table-group{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-table-group-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-table-group:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-table-group-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-table-group:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-table-group-h::after,.ds-interaction-fill--grouped.sc-ds-table-group::after,.ds-interaction-fill--grouped.sc-ds-table-group-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-table-group:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-table-group-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-table-group:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-table-group-h,.ds-interaction-fill--grouped.sc-ds-table-group{--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-table-group-h>.ds-interaction-fill__content.sc-ds-table-group,.ds-interaction-fill.sc-ds-table-group>.ds-interaction-fill__content.sc-ds-table-group,.ds-interaction-fill__content.sc-ds-table-group{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-table-group-h,.ds-interaction-fill--on-faint.sc-ds-table-group{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-table-group-h,.ds-interaction-fill--on-medium.sc-ds-table-group{--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-table-group-h,.ds-interaction-fill--on-bold.sc-ds-table-group{--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-table-group-h,.ds-interaction-fill--on-strong.sc-ds-table-group{--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-table-group-h,.ds-interaction-fill--on-translucent.sc-ds-table-group{--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-table-group-h,.ds-interaction-fill--on-inverted.sc-ds-table-group{--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-table-group-h,.ds-interaction-fill--on-media.sc-ds-table-group{--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-table-group-h,.ds-interaction-fill--on-always-dark.sc-ds-table-group{--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-table-group-h,.ds-interaction-fill--on-navigation.sc-ds-table-group{--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-table-group-h:not(:disabled)::after,.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-table-group:not(:disabled)::after{background:var(--ds-interaction-pressed)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-table-group-h::after,.ds-interaction-fill.sc-ds-table-group::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-table-group-h:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill--surface-open.sc-ds-table-group: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-table-group-h::before,.ds-interaction-fill--selected.sc-ds-table-group::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-table-group-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-table-group: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-table-group:root,.sc-ds-table-group-h,.ds-forced-colors-scope.sc-ds-table-group{--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-table-group-h,.ds-control-inactive.sc-ds-table-group{opacity:var(--effect-opacity-medium);pointer-events:none;cursor:not-allowed}@media (forced-colors: active){.ds-control-inactive.sc-ds-table-group-h,.ds-control-inactive.sc-ds-table-group{color:var(--ds-forced-color-disabled);opacity:1}}.ds-control--lg.sc-ds-table-group,.ds-control--lg.sc-ds-table-group-h,.ds-control--md.sc-ds-table-group-h,.ds-control--md.sc-ds-table-group,.ds-control--sm.sc-ds-table-group-h,.ds-control--sm.sc-ds-table-group,.ds-control--xs.sc-ds-table-group-h,.ds-control--xs.sc-ds-table-group{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-table-group-h,.ds-control--lg.sc-ds-table-group{--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-table-group-h,.ds-control--md.sc-ds-table-group{--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-table-group-h,.ds-control--sm.sc-ds-table-group{--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-table-group-h,.ds-control--xs.sc-ds-table-group{--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-table-group-h,.ds-chrome-space--sm.sc-ds-table-group{--ds-chrome-padding:var(--dimension-space-050);--ds-chrome-gap:var(--dimension-space-050)}.ds-chrome-space--md.sc-ds-table-group-h,.ds-chrome-space--md.sc-ds-table-group{--ds-chrome-padding:var(--dimension-space-100);--ds-chrome-gap:var(--dimension-space-100)}.ds-chrome-space--lg.sc-ds-table-group-h,.ds-chrome-space--lg.sc-ds-table-group{--ds-chrome-padding:var(--dimension-space-200);--ds-chrome-gap:var(--dimension-space-200)}.ds-chrome-row.sc-ds-table-group-h,.ds-chrome-row.sc-ds-table-group,.ds-chrome-column.sc-ds-table-group-h,.ds-chrome-column.sc-ds-table-group,.ds-chrome-grid.sc-ds-table-group-h,.ds-chrome-grid.sc-ds-table-group{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-table-group-h,.ds-chrome-row.sc-ds-table-group{flex-direction:row;align-items:center}.ds-chrome-column.sc-ds-table-group-h,.ds-chrome-column.sc-ds-table-group{flex-direction:column}.ds-chrome-grid.sc-ds-table-group-h,.ds-chrome-grid.sc-ds-table-group{display:grid;align-items:center}.ds-control-frame.sc-ds-table-group{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-table-group{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-table-group{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-table-group{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-control-label-dot.sc-ds-table-group{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-table-group{position:absolute;inset-block-start:0;inset-inline-end:0;pointer-events:none}.ds-empty-region.sc-ds-table-group{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-table-group{padding:var(--dimension-space-200)}.sc-ds-table-group:where(.ds-text-decoration,.ds-text-action).sc-ds-table-group{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-table-group{--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-table-group{--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-table-group{--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-table-group{--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-table-group:hover{text-decoration-line:underline}}@media (forced-colors: active){.ds-text-action.sc-ds-table-group{text-decoration-line:underline;text-decoration-color:currentcolor}}.ds-choice-popup.sc-ds-table-group{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-table-group::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-table-group{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-table-group{animation:none;opacity:1}.ds-choice-popup--closing.sc-ds-table-group{opacity:0}}.ds-choice-list.sc-ds-table-group{display:flex;flex-direction:column;min-height:0;overflow-y:auto;overscroll-behavior:contain}.ds-choice-section--divided.sc-ds-table-group{border-bottom:var(--dimension-stroke-width-015) solid var(--color-border-tertiary)}ds-text.ds-choice-section__header.sc-ds-table-group{text-align:start;-webkit-user-select:none;user-select:none}.ds-choice-section--headed-after-first.sc-ds-table-group{margin-block-start:var(--dimension-space-050)}.ds-choice-item.sc-ds-table-group{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-table-group: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-table-group{display:flex;flex:1;flex-direction:column;gap:var(--dimension-space-025);min-width:0}ds-text.ds-choice-item__label.sc-ds-table-group{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ds-text.ds-choice-item__subtext.sc-ds-table-group{display:-webkit-box;overflow:hidden;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}.ds-choice-item__icon.sc-ds-table-group,.ds-choice-item__suffix.sc-ds-table-group{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-table-group .ds-choice-item__icon.sc-ds-table-group{color:var(--color-foreground-primary)}.ds-choice-item__tag.sc-ds-table-group{flex-shrink:0;pointer-events:none}.ds-choice-empty.sc-ds-table-group,.ds-choice-loading.sc-ds-table-group{min-height:var(--dimension-size-600);padding:var(--dimension-space-100)}.ds-choice-footer.sc-ds-table-group{position:relative;box-sizing:border-box;padding-block:var(--dimension-space-050)}.ds-choice-footer.sc-ds-table-group::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-table-group{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-table-group,.ds-choice-footer__summary-measure.sc-ds-table-group,.ds-choice-footer__clear.sc-ds-table-group ds-text.sc-ds-table-group,.ds-choice-footer__action.sc-ds-table-group ds-text.sc-ds-table-group{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-table-group,.ds-choice-footer__summary-measure.sc-ds-table-group,.ds-choice-footer__clear.sc-ds-table-group,.ds-choice-footer__action.sc-ds-table-group{white-space:nowrap}.ds-choice-footer__summary-measure.sc-ds-table-group{position:absolute;visibility:hidden;pointer-events:none}.ds-choice-footer__clear.sc-ds-table-group,.ds-choice-footer__action.sc-ds-table-group{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-table-group{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-table-group::after{box-shadow:none}.ds-choice-section--divided.sc-ds-table-group{border-bottom-color:var(--ds-forced-color-content)}.ds-choice-footer.sc-ds-table-group::before{background-color:var(--ds-forced-color-content)}}.ds-control-frame.sc-ds-table-group{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-table-group{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-table-group{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-table-group{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-control-label-dot.sc-ds-table-group{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-table-group{position:absolute;inset-block-start:0;inset-inline-end:0;pointer-events:none}.ds-table-caption-control.sc-ds-table-group-h{--ds-choice-popup-min-inline-size:var(--dimension-menu-width-xs)}.ds-table-caption-control.ds-table-caption-control--compact.sc-ds-table-group-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-table-group-h .trigger.sc-ds-table-group{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-table-group-h .trigger--has-value.sc-ds-table-group:not(.trigger--label-placeholder){--ds-select-prefix-fg:var(--ds-select-fg-active)}@container ds-table (max-width: 899px){.sc-ds-table-group-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-table-group-h.ds-table-caption-control .trigger{justify-content:center;inline-size:100%;min-inline-size:100%;padding-inline:0}.sc-ds-table-group-h.ds-table-caption-control .trigger--has-value:not(.trigger--label-placeholder){--ds-select-prefix-fg:var(--ds-select-fg-active)}}.sc-ds-table-group-h{display:inline-flex;min-inline-size:0;max-inline-size:var(--dimension-menu-width-xs)}[hidden].sc-ds-table-group-h{display:none}.table-group__body.sc-ds-table-group{display:grid;grid-template-columns:var(--dimension-menu-width-xs) var(--dimension-menu-width-sm);min-height:calc(var(--dimension-size-800) * 4 + var(--dimension-space-150));max-height:calc(100vh - var(--dimension-size-800) - var(--dimension-size-600))}.table-group__data-pane.sc-ds-table-group,.table-group__order-pane.sc-ds-table-group{display:flex;min-width:0;min-height:0;flex-direction:column}.table-group__data-pane.sc-ds-table-group{border-inline-end:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.table-group__list.sc-ds-table-group{flex:1 1 auto}.table-group__empty.sc-ds-table-group{flex:1 1 auto}.table-group__footer.sc-ds-table-group{flex:0 0 auto}.table-group__footer.sc-ds-table-group .ds-choice-footer__content.sc-ds-table-group{justify-content:flex-start}.table-group__footer[aria-hidden='true'].sc-ds-table-group::before{visibility:hidden}.table-group__footer[aria-hidden='true'].sc-ds-table-group .ds-choice-footer__content.sc-ds-table-group{visibility:hidden}@media (forced-colors: active){.table-group__data-pane.sc-ds-table-group{border-inline-end-color:var(--ds-forced-color-content)}}.table-preferences-embedded.sc-ds-table-group{display:flex;flex-direction:column;min-width:0;min-height:0;color:var(--color-foreground-secondary)}.sc-ds-table-group-h:has(.table-preferences-embedded){display:block;max-inline-size:none}.table-preferences-embedded.sc-ds-table-group .table-group__body.sc-ds-table-group{grid-template-columns:min(var(--dimension-menu-width-xs), 40%) minmax(0, 1fr)}.table-group-vertical.sc-ds-table-group-h .table-group__body.sc-ds-table-group{grid-template-columns:minmax(0, 1fr)}.table-group-vertical.sc-ds-table-group-h .table-group__data-pane.sc-ds-table-group{border-inline-end:0}.table-group-vertical.sc-ds-table-group-h .table-group__footer.sc-ds-table-group{display:none}`;const C=[{label:"Ascending",direction:"asc"},{label:"Descending",direction:"desc"}];let T=0;const j=e(class e extends o{constructor(e){super();if(e!==false){this.__registerHost()}this.dsGroupChange=i(this,"dsGroupChange",7);this.dsClear=i(this,"dsClear",7);this.dsOpenChange=i(this,"dsOpenChange",7);this.hasBorder=true;this.vertical=false;this.embedded=false;this.options=[];this.grouping=null;this.ariaLabel=null;this.open=false;this.emptyMessage="Select a group to choose its order.";this.clearLabel="Clear";this.shouldRender=false;this.closing=false;this.positionReady=false;this.pos={x:0,y:0};this.focusRingVisible=false;this.componentId=`ds-table-group-${++T}`;this.triggerId=`${this.componentId}-trigger`;this.popupId=`${this.componentId}-popup`;this.triggerElement=null;this.pendingInitialFocusVisible=false;this.closeTimer=null;this.position=new n({getAnchor:()=>this.triggerElement,getPopup:()=>this.el.querySelector(".table-group-popup"),getOwnerDocument:()=>this.el.ownerDocument,measure:(e,o)=>{if(!this.open)return null;const i=w(_.space050,_.space050);return{anchorRect:e.getBoundingClientRect(),popupWidth:o.offsetWidth||this.popupFallbackWidth,popupHeight:o.offsetHeight||this.popupFallbackHeight,side:"bottom",align:"end",sideOffsetPx:w(k.space050,_.space050),alignOffsetPx:d({align:"end",alignOffsetPx:0,sectionInsetPx:i}),viewportPadPx:w(_.space050,_.space050),viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,collisionRect:a(e)}},apply:({x:e,y:o})=>{this.pos={x:e,y:o}},onReady:()=>{this.positionReady=true},liveUpdate:"double-frame",observeResize:true,topLayer:true});this.interaction=new c({getAnchor:()=>this.triggerElement,getPopup:()=>this.el.querySelector(".table-group-popup"),getOwnerDocument:()=>this.el.ownerDocument,onOutsideActivation:()=>this.close()})}componentDidLoad(){if(this.open)this.onOpenChange(true)}disconnectedCallback(){this.position.unobserve();this.interaction.disconnect();if(this.closeTimer)clearTimeout(this.closeTimer)}onOpenChange(e){if(this.embedded)return;if(e){this.teardown();this.shouldRender=true;this.closing=false;this.positionReady=false;this.focusRingVisible=this.pendingInitialFocusVisible;this.interaction.connect();this.position.observe();this.position.schedule((()=>this.focusInitialDataPoint()));return}if(!this.shouldRender)return;this.position.cancel();this.closing=true;this.interaction.disconnect();this.position.unobserve();const o=y(_.motionShort2,_.animationDurationShort3);if(o<=0)this.finishClose();else this.closeTimer=setTimeout((()=>this.finishClose()),o)}handleKeyDown(e){if(this.embedded&&(e.key==="Escape"||e.key==="Tab"))return;if(!this.shouldRender&&!this.embedded||this.closing)return;if(e.key==="Escape"){e.preventDefault();this.close();return}if(e.key!=="Tab"||!this.interaction.tabLeavesPopup(e))return;e.preventDefault();this.close(false);this.interaction.moveFocusAfterTab(e.shiftKey)}get popupFallbackWidth(){return w(_.menuWidthLg,_.menuWidthLg)}get popupFallbackHeight(){return w(_.menuFallbackHeight,_.menuFallbackHeight)}teardown(){this.position.unobserve();this.interaction.disconnect();if(this.closeTimer){clearTimeout(this.closeTimer);this.closeTimer=null}}toggle(e=false){if(this.open){this.close();return}this.pendingInitialFocusVisible=e;this.open=true;this.dsOpenChange.emit(true);this.onOpenChange(true)}close(e=true){if(e)this.interaction.focusAnchor();this.open=false;this.dsOpenChange.emit(false);this.onOpenChange(false)}finishClose(){const e=this.el.querySelector(".table-group-popup");if(e?.matches(":popover-open"))e.hidePopover();this.shouldRender=false;this.closing=false;this.closeTimer=null}focusInitialDataPoint(){requestAnimationFrame((()=>{const e=this.grouping?this.el.querySelector(`[data-group-value="${CSS.escape(this.grouping.columnId)}"] [role="option"]`):null;const o=e??this.el.querySelector('[data-group-value] [role="option"]:not([aria-disabled="true"])');o?.focus();this.pendingInitialFocusVisible=false}))}selectData(e){if(e.value==="__none__"){this.dsClear.emit();return}if(e.isInactive)return;if(this.grouping?.columnId===e.value){this.dsGroupChange.emit({...this.grouping});return}const o=e.orderOptions?.[0];this.dsGroupChange.emit({columnId:e.value,direction:o?.direction??"asc",...o?.orderBy?{orderBy:o.orderBy}:{}})}get activeOrderOptions(){const e=this.options.find((e=>e.value===this.grouping?.columnId))?.orderOptions;return e?.length?e:C}get selectedOrderIndex(){if(!this.grouping)return-1;const e=this.activeOrderOptions.findIndex((e=>e.direction===this.grouping?.direction&&e.orderBy===this.grouping?.orderBy));if(e>=0)return e;if(this.grouping.orderBy===undefined){return this.activeOrderOptions.findIndex((e=>e.direction===this.grouping?.direction))}return-1}selectOrder(e,o){if(!this.grouping||this.selectedOrderIndex===o)return;const i={columnId:this.grouping.columnId,direction:e.direction};if(e.orderBy)i.orderBy=e.orderBy;this.dsGroupChange.emit(i)}moveFocus(e,o,i,s){if(s&&(e.key==="ArrowLeft"||e.key==="ArrowRight")){e.preventDefault();this.focusRingVisible=true;this.el.querySelector(s)?.focus();return}if(!["ArrowDown","ArrowUp","Home","End"].includes(e.key))return;e.preventDefault();const t=Array.from(this.el.querySelectorAll(o)).filter((e=>e.getAttribute("aria-disabled")!=="true"));if(!t.length)return;let r;if(e.key==="Home")r=0;else if(e.key==="End")r=t.length-1;else r=(i+(e.key==="ArrowDown"?1:-1)+t.length)%t.length;this.focusRingVisible=true;t[r]?.focus()}renderDataOption(e,o){const i=e.value==="__none__"?!this.grouping:e.value===this.grouping?.columnId;return s(u,{id:`${this.componentId}-data-${o}`,option:{...e},selected:i,active:i,focusRingVisible:this.focusRingVisible,usesSubtext:Boolean(e.description),tabIndex:i||!this.grouping&&o===0?0:-1,onHover:()=>{this.focusRingVisible=false},onSelect:()=>this.selectData(e),onKeyDown:o=>{if(o.key==="Enter"||o.key===" "){o.preventDefault();this.selectData(e);return}this.moveFocus(o,'[data-group-value] [role="option"]',this.options.filter((e=>!e.isInactive)).findIndex((o=>o.value===e.value)),this.grouping?`[data-group-order-index="${this.selectedOrderIndex}"] [role="option"]`:undefined)}})}renderOrder(e,o){const i=o===this.selectedOrderIndex;return s(u,{id:`${this.componentId}-order-${o}`,option:{label:e.label,value:String(o)},selected:i,active:i,focusRingVisible:this.focusRingVisible,usesSubtext:false,tabIndex:i?0:-1,onHover:()=>{this.focusRingVisible=false},onSelect:()=>this.selectOrder(e,o),onKeyDown:i=>{if(i.key==="Enter"||i.key===" "){i.preventDefault();this.selectOrder(e,o);return}this.moveFocus(i,'[data-group-order-index] [role="option"]',o,`[data-group-value="${CSS.escape(this.grouping?.columnId??"")}"] [role="option"]`)}})}render(){const e=this.ariaLabel?.trim()||"Group table";const o={position:"fixed",left:"0",top:"0",transform:`translate(${Math.round(this.pos.x)}px, ${Math.round(this.pos.y)}px)`,zIndex:"9998",visibility:this.positionReady?"visible":"hidden"};return s(t,{key:"e90129ba2b518bd7254d0411aae032e710499f0b",class:{"table-group-vertical":this.vertical},hidden:this.options.length===0?true:undefined},this.options.length&&!this.embedded?s("ds-button-unfilled",{hasBorder:this.hasBorder,ref:e=>{this.triggerElement=e??null},id:this.triggerId,variant:"icon-label",size:"md",icon:"SectionList",label:"Group",labelEmphasis:false,pressScale:false,"aria-label":e,haspopup:"dialog",collapseLabel:true,expanded:this.open,surfaceOpen:this.open||this.closing,controls:this.popupId,onDsClick:e=>this.toggle(e.detail.detail===0)}):null,this.shouldRender||this.embedded?s("div",{id:this.popupId,popover:this.embedded?undefined:"manual",class:{"table-group-popup":true,"ds-choice-popup":!this.embedded,"table-preferences-embedded":this.embedded,"ds-choice-popup--closing":this.closing},style:this.embedded?undefined:o,role:"dialog","aria-label":e},s("div",{class:"table-group__body"},s("div",{class:"table-group__data-pane"},s(l,{heading:"Data",ariaLabel:"Group data",className:"table-group__list"},this.vertical&&this.renderDataOption({label:"No grouping",value:"__none__"},-1),this.options.map(((e,o)=>s("div",{"data-group-value":e.value},this.renderDataOption(e,o))))),s("div",{hidden:this.vertical,class:"table-group__footer ds-choice-footer","aria-hidden":!this.grouping?"true":undefined},s("div",{class:"ds-choice-footer__content ds-control--md"},this.grouping?s("button",{class:"ds-choice-footer__clear ds-text-action ds-focus-ring",type:"button",onClick:()=>this.dsClear.emit()},s("ds-text",{as:"span",variant:"text-body-medium",color:"inherit"},this.clearLabel)):null))),s("div",{class:"table-group__order-pane"},this.grouping?s(l,{heading:"Order",ariaLabel:"Group order",className:"table-group__list"},this.activeOrderOptions.map(((e,o)=>s("div",{"data-group-order-index":o},this.renderOrder(e,o))))):s("div",{class:"table-group__empty ds-choice-empty ds-empty-region"},s("ds-empty-state",{body:this.emptyMessage}))))):null)}get el(){return this}static get watchers(){return{open:[{onOpenChange:0}]}}static get style(){return z()}},[2,"ds-table-group",{hasBorder:[4,"has-border"],vertical:[4],embedded:[4],options:[16],grouping:[16],ariaLabel:[1,"aria-label"],open:[1028],emptyMessage:[1,"empty-message"],clearLabel:[1,"clear-label"],shouldRender:[32],closing:[32],positionReady:[32],pos:[32],focusRingVisible:[32]},[[0,"keydown","handleKeyDown"]],{open:[{onOpenChange:0}]}]);function O(){if(typeof customElements==="undefined"){return}const e=["ds-table-group","ds-badge","ds-button-unfilled","ds-empty-state","ds-icon","ds-input","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-table-group":if(!customElements.get(r(e))){customElements.define(r(e),j)}break;case"ds-badge":if(!customElements.get(r(e))){p()}break;case"ds-button-unfilled":if(!customElements.get(r(e))){g()}break;case"ds-empty-state":if(!customElements.get(r(e))){h()}break;case"ds-icon":if(!customElements.get(r(e))){b()}break;case"ds-input":if(!customElements.get(r(e))){f()}break;case"ds-loader":if(!customElements.get(r(e))){v()}break;case"ds-text":if(!customElements.get(r(e))){m()}break;case"ds-tooltip":if(!customElements.get(r(e))){x()}break}}))}O();export{j as T,O as d};
|
|
2
|
+
//# sourceMappingURL=p-UAIxh67Q.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["tableGroupCss","DEFAULT_ORDER_OPTIONS","label","direction","tableGroupSeq","TableGroup","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","hasBorder","vertical","embedded","options","grouping","ariaLabel","open","emptyMessage","clearLabel","shouldRender","closing","positionReady","pos","x","y","focusRingVisible","componentId","triggerId","popupId","triggerElement","pendingInitialFocusVisible","closeTimer","position","AnchoredPositionController","getAnchor","getPopup","el","querySelector","getOwnerDocument","ownerDocument","measure","anchor","popup","sectionInsetPx","resolveCssLengthPx","TOKEN_DEFAULTS","space050","anchorRect","getBoundingClientRect","popupWidth","offsetWidth","popupFallbackWidth","popupHeight","offsetHeight","popupFallbackHeight","side","align","sideOffsetPx","TOKEN_CSS_LENGTHS","alignOffsetPx","resolveChoicePopupAlignOffset","viewportPadPx","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","apply","onReady","liveUpdate","observeResize","topLayer","interaction","AnchoredOverlayInteractionController","onOutsideActivation","close","componentDidLoad","onOpenChange","disconnectedCallback","unobserve","disconnect","clearTimeout","isOpen","teardown","connect","observe","schedule","focusInitialDataPoint","cancel","duration","resolveMotionTimeMs","motionShort2","animationDurationShort3","finishClose","setTimeout","handleKeyDown","event","key","preventDefault","tabLeavesPopup","moveFocusAfterTab","shiftKey","menuWidthLg","menuFallbackHeight","toggle","fromKeyboard","dsOpenChange","emit","restoreFocus","focusAnchor","matches","hidePopover","requestAnimationFrame","selected","CSS","escape","columnId","initial","focus","selectData","option","value","dsClear","isInactive","dsGroupChange","initialOrder","orderOptions","orderBy","activeOrderOptions","configured","find","length","selectedOrderIndex","exact","findIndex","undefined","selectOrder","index","moveFocus","selector","currentIndex","oppositeSelector","includes","items","Array","from","querySelectorAll","filter","item","getAttribute","next","renderDataOption","h","ChoiceOptionRow","id","active","usesSubtext","Boolean","description","tabIndex","onHover","onSelect","onKeyDown","candidate","renderOrder","String","render","name","trim","popupStyle","left","top","transform","Math","round","zIndex","visibility","Host","class","hidden","ref","element","variant","size","icon","labelEmphasis","pressScale","haspopup","collapseLabel","expanded","surfaceOpen","controls","onDsClick","detail","popover","style","role","ChoiceListSection","heading","className","map","type","onClick","as","color","body"],"sources":["src/wc/components/TableGroup/TableGroup.css?tag=ds-table-group&encapsulation=scoped","src/wc/components/TableGroup/TableGroup.tsx"],"sourcesContent":["@import '../../utils/radius.css';\n@import '../../utils/choice-list.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/table-caption-control.css';\n\n:host {\n display: inline-flex;\n min-inline-size: 0;\n max-inline-size: var(--dimension-menu-width-xs);\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.table-group__body {\n display: grid;\n grid-template-columns: var(--dimension-menu-width-xs) var(--dimension-menu-width-sm);\n min-height: calc(var(--dimension-size-800) * 4 + var(--dimension-space-150));\n max-height: calc(100vh - var(--dimension-size-800) - var(--dimension-size-600));\n}\n\n.table-group__data-pane,\n.table-group__order-pane {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex-direction: column;\n}\n\n.table-group__data-pane {\n border-inline-end: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n}\n\n.table-group__list {\n flex: 1 1 auto;\n}\n\n.table-group__empty {\n flex: 1 1 auto;\n}\n\n.table-group__footer {\n flex: 0 0 auto;\n}\n\n.table-group__footer .ds-choice-footer__content {\n justify-content: flex-start;\n}\n\n.table-group__footer[aria-hidden='true']::before {\n visibility: hidden;\n}\n\n.table-group__footer[aria-hidden='true'] .ds-choice-footer__content {\n visibility: hidden;\n}\n\n@media (forced-colors: active) {\n .table-group__data-pane {\n border-inline-end-color: var(--ds-forced-color-content);\n }\n}\n\n.table-preferences-embedded {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n color: var(--color-foreground-secondary);\n}\n\n:host:has(.table-preferences-embedded) {\n display: block;\n max-inline-size: none;\n}\n.table-preferences-embedded .table-group__body {\n grid-template-columns: min(var(--dimension-menu-width-xs), 40%) minmax(0, 1fr);\n}\n\n:host(.table-group-vertical) .table-group__body {\n grid-template-columns: minmax(0, 1fr);\n}\n:host(.table-group-vertical) .table-group__data-pane {\n border-inline-end: 0;\n}\n\n:host(.table-group-vertical) .table-group__footer {\n display: none;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n resolveChoicePopupAlignOffset,\n resolveCssLengthPx,\n resolveMotionTimeMs,\n TOKEN_CSS_LENGTHS,\n TOKEN_DEFAULTS,\n} from '../../utils';\nimport { AnchoredPositionController } from '../../utils/anchored-position-controller';\nimport { AnchoredOverlayInteractionController } from '../../utils/anchored-overlay-interaction-controller';\nimport { resolveAnchoredOverlayBoundaryRect } from '../../utils/anchored-overlay-boundary';\nimport { ChoiceListSection, ChoiceOptionRow } from '../../utils/choice-list-parts';\nimport type { TableGroupingState, TableSortDirection } from '../Table/table-types';\n\nexport interface TableGroupOrderOption {\n label: string;\n direction: TableSortDirection;\n /** Optional application-owned data point used to order the group sections. */\n orderBy?: string;\n}\n\nexport interface TableGroupOption {\n label: string;\n value: string;\n description?: string;\n isInactive?: boolean;\n /** Product-owned order choices for this grouping data point. */\n orderOptions?: TableGroupOrderOption[];\n}\n\nconst DEFAULT_ORDER_OPTIONS: TableGroupOrderOption[] = [\n { label: 'Ascending', direction: 'asc' },\n { label: 'Descending', direction: 'desc' },\n];\n\nlet tableGroupSeq = 0;\n\n@Component({\n tag: 'ds-table-group',\n styleUrl: 'TableGroup.css',\n scoped: true,\n})\nexport class TableGroup {\n @Element() private el!: HTMLElement;\n\n /** Product-owned data points that may group the table. */\n /** Render content inside a parent-owned surface; the parent owns dismissal and positioning. */\n /** Show the trigger border. */\n @Prop() hasBorder: boolean = true;\n @Prop() vertical: boolean = false;\n @Prop() embedded: boolean = false;\n @Prop() options: TableGroupOption[] = [];\n /** Controlled grouping field and the order of its group sections. */\n @Prop() grouping: TableGroupingState | null = null;\n /** Accessible name for the trigger and non-modal dialog. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** Controlled popup visibility. */\n @Prop({ mutable: true }) open = false;\n /** Empty message kept in the order pane until a grouping data point is selected. */\n @Prop() emptyMessage = 'Select a group to choose its order.';\n /** Clear action label. */\n @Prop() clearLabel = 'Clear';\n\n /** Requests replacement of the complete controlled grouping state. */\n @Event() dsGroupChange!: EventEmitter<TableGroupingState>;\n /** Requests removal of the controlled grouping state. */\n @Event() dsClear!: EventEmitter<void>;\n /** Reports controlled popup visibility changes. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n\n @State() private shouldRender = false;\n @State() private closing = false;\n @State() private positionReady = false;\n @State() private pos = { x: 0, y: 0 };\n @State() private focusRingVisible = false;\n\n private readonly componentId = `ds-table-group-${++tableGroupSeq}`;\n private readonly triggerId = `${this.componentId}-trigger`;\n private readonly popupId = `${this.componentId}-popup`;\n private triggerElement: HTMLElement | null = null;\n private pendingInitialFocusVisible = false;\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n\n private readonly position = new AnchoredPositionController({\n getAnchor: () => this.triggerElement,\n getPopup: () => this.el.querySelector<HTMLElement>('.table-group-popup'),\n getOwnerDocument: () => this.el.ownerDocument,\n measure: (anchor, popup) => {\n if (!this.open) return null;\n const sectionInsetPx = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n return {\n anchorRect: anchor.getBoundingClientRect(),\n popupWidth: popup.offsetWidth || this.popupFallbackWidth,\n popupHeight: popup.offsetHeight || this.popupFallbackHeight,\n side: 'bottom',\n align: 'end',\n sideOffsetPx: resolveCssLengthPx(TOKEN_CSS_LENGTHS.space050, TOKEN_DEFAULTS.space050),\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align: 'end',\n alignOffsetPx: 0,\n sectionInsetPx,\n }),\n viewportPadPx: resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050),\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(anchor),\n };\n },\n apply: ({ x, y }) => {\n this.pos = { x, y };\n },\n onReady: () => {\n this.positionReady = true;\n },\n liveUpdate: 'double-frame',\n observeResize: true,\n topLayer: true,\n });\n\n private readonly interaction = new AnchoredOverlayInteractionController({\n getAnchor: () => this.triggerElement,\n getPopup: () => this.el.querySelector<HTMLElement>('.table-group-popup'),\n getOwnerDocument: () => this.el.ownerDocument,\n onOutsideActivation: () => this.close(),\n });\n\n componentDidLoad() {\n if (this.open) this.onOpenChange(true);\n }\n\n disconnectedCallback() {\n this.position.unobserve();\n this.interaction.disconnect();\n if (this.closeTimer) clearTimeout(this.closeTimer);\n }\n\n @Watch('open')\n onOpenChange(isOpen: boolean) {\n if (this.embedded) return;\n if (isOpen) {\n this.teardown();\n this.shouldRender = true;\n this.closing = false;\n this.positionReady = false;\n this.focusRingVisible = this.pendingInitialFocusVisible;\n this.interaction.connect();\n this.position.observe();\n this.position.schedule(() => this.focusInitialDataPoint());\n return;\n }\n if (!this.shouldRender) return;\n this.position.cancel();\n this.closing = true;\n this.interaction.disconnect();\n this.position.unobserve();\n const duration = resolveMotionTimeMs(\n TOKEN_DEFAULTS.motionShort2,\n TOKEN_DEFAULTS.animationDurationShort3\n );\n if (duration <= 0) this.finishClose();\n else this.closeTimer = setTimeout(() => this.finishClose(), duration);\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (this.embedded && (event.key === 'Escape' || event.key === 'Tab')) return;\n if ((!this.shouldRender && !this.embedded) || this.closing) return;\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n return;\n }\n if (event.key !== 'Tab' || !this.interaction.tabLeavesPopup(event)) return;\n event.preventDefault();\n this.close(false);\n this.interaction.moveFocusAfterTab(event.shiftKey);\n }\n\n private get popupFallbackWidth(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.menuWidthLg, TOKEN_DEFAULTS.menuWidthLg);\n }\n\n private get popupFallbackHeight(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.menuFallbackHeight, TOKEN_DEFAULTS.menuFallbackHeight);\n }\n\n private teardown() {\n this.position.unobserve();\n this.interaction.disconnect();\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n }\n\n private toggle(fromKeyboard = false) {\n if (this.open) {\n this.close();\n return;\n }\n this.pendingInitialFocusVisible = fromKeyboard;\n this.open = true;\n this.dsOpenChange.emit(true);\n this.onOpenChange(true);\n }\n\n private close(restoreFocus = true) {\n if (restoreFocus) this.interaction.focusAnchor();\n this.open = false;\n this.dsOpenChange.emit(false);\n this.onOpenChange(false);\n }\n\n private finishClose() {\n const popup = this.el.querySelector<HTMLElement>('.table-group-popup');\n if (popup?.matches(':popover-open')) popup.hidePopover();\n this.shouldRender = false;\n this.closing = false;\n this.closeTimer = null;\n }\n\n private focusInitialDataPoint() {\n requestAnimationFrame(() => {\n const selected = this.grouping\n ? this.el.querySelector<HTMLElement>(\n `[data-group-value=\"${CSS.escape(this.grouping.columnId)}\"] [role=\"option\"]`\n )\n : null;\n const initial =\n selected ??\n this.el.querySelector<HTMLElement>(\n '[data-group-value] [role=\"option\"]:not([aria-disabled=\"true\"])'\n );\n initial?.focus();\n this.pendingInitialFocusVisible = false;\n });\n }\n\n private selectData(option: TableGroupOption) {\n if (option.value === '__none__') {\n this.dsClear.emit();\n return;\n }\n if (option.isInactive) return;\n if (this.grouping?.columnId === option.value) {\n this.dsGroupChange.emit({ ...this.grouping });\n return;\n }\n const initialOrder = option.orderOptions?.[0];\n this.dsGroupChange.emit({\n columnId: option.value,\n direction: initialOrder?.direction ?? 'asc',\n ...(initialOrder?.orderBy ? { orderBy: initialOrder.orderBy } : {}),\n });\n }\n\n private get activeOrderOptions(): TableGroupOrderOption[] {\n const configured = this.options.find(\n option => option.value === this.grouping?.columnId\n )?.orderOptions;\n return configured?.length ? configured : DEFAULT_ORDER_OPTIONS;\n }\n\n private get selectedOrderIndex(): number {\n if (!this.grouping) return -1;\n const exact = this.activeOrderOptions.findIndex(\n option =>\n option.direction === this.grouping?.direction && option.orderBy === this.grouping?.orderBy\n );\n if (exact >= 0) return exact;\n if (this.grouping.orderBy === undefined) {\n return this.activeOrderOptions.findIndex(\n option => option.direction === this.grouping?.direction\n );\n }\n return -1;\n }\n\n private selectOrder(option: TableGroupOrderOption, index: number) {\n if (!this.grouping || this.selectedOrderIndex === index) return;\n const grouping: TableGroupingState = {\n columnId: this.grouping.columnId,\n direction: option.direction,\n };\n if (option.orderBy) grouping.orderBy = option.orderBy;\n this.dsGroupChange.emit(grouping);\n }\n\n private moveFocus(\n event: KeyboardEvent,\n selector: string,\n currentIndex: number,\n oppositeSelector?: string\n ) {\n if (oppositeSelector && (event.key === 'ArrowLeft' || event.key === 'ArrowRight')) {\n event.preventDefault();\n this.focusRingVisible = true;\n this.el.querySelector<HTMLElement>(oppositeSelector)?.focus();\n return;\n }\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return;\n event.preventDefault();\n const items = Array.from(this.el.querySelectorAll<HTMLElement>(selector)).filter(\n item => item.getAttribute('aria-disabled') !== 'true'\n );\n if (!items.length) return;\n let next: number;\n if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = items.length - 1;\n else next = (currentIndex + (event.key === 'ArrowDown' ? 1 : -1) + items.length) % items.length;\n this.focusRingVisible = true;\n items[next]?.focus();\n }\n\n private renderDataOption(option: TableGroupOption, index: number) {\n const selected =\n option.value === '__none__' ? !this.grouping : option.value === this.grouping?.columnId;\n return (\n <ChoiceOptionRow\n id={`${this.componentId}-data-${index}`}\n option={{ ...option }}\n selected={selected}\n active={selected}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={Boolean(option.description)}\n tabIndex={selected || (!this.grouping && index === 0) ? 0 : -1}\n onHover={() => {\n this.focusRingVisible = false;\n }}\n onSelect={() => this.selectData(option)}\n onKeyDown={(event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.selectData(option);\n return;\n }\n this.moveFocus(\n event,\n '[data-group-value] [role=\"option\"]',\n this.options\n .filter(candidate => !candidate.isInactive)\n .findIndex(candidate => candidate.value === option.value),\n this.grouping\n ? `[data-group-order-index=\"${this.selectedOrderIndex}\"] [role=\"option\"]`\n : undefined\n );\n }}\n />\n );\n }\n\n private renderOrder(option: TableGroupOrderOption, index: number) {\n const selected = index === this.selectedOrderIndex;\n return (\n <ChoiceOptionRow\n id={`${this.componentId}-order-${index}`}\n option={{ label: option.label, value: String(index) }}\n selected={selected}\n active={selected}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={false}\n tabIndex={selected ? 0 : -1}\n onHover={() => {\n this.focusRingVisible = false;\n }}\n onSelect={() => this.selectOrder(option, index)}\n onKeyDown={(event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.selectOrder(option, index);\n return;\n }\n this.moveFocus(\n event,\n '[data-group-order-index] [role=\"option\"]',\n index,\n `[data-group-value=\"${CSS.escape(this.grouping?.columnId ?? '')}\"] [role=\"option\"]`\n );\n }}\n />\n );\n }\n\n render() {\n const name = this.ariaLabel?.trim() || 'Group table';\n const popupStyle: Record<string, string> = {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: `translate(${Math.round(this.pos.x)}px, ${Math.round(this.pos.y)}px)`,\n zIndex: '9998',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n\n return (\n <Host\n class={{ 'table-group-vertical': this.vertical }}\n hidden={this.options.length === 0 ? true : undefined}\n >\n {this.options.length && !this.embedded ? (\n <ds-button-unfilled\n hasBorder={this.hasBorder}\n ref={element => {\n this.triggerElement = (element as HTMLElement) ?? null;\n }}\n id={this.triggerId}\n variant=\"icon-label\"\n size=\"md\"\n icon=\"SectionList\"\n label=\"Group\"\n labelEmphasis={false}\n pressScale={false}\n aria-label={name}\n haspopup=\"dialog\"\n collapseLabel={true}\n expanded={this.open}\n surfaceOpen={this.open || this.closing}\n controls={this.popupId}\n onDsClick={(event: CustomEvent<MouseEvent>) => this.toggle(event.detail.detail === 0)}\n />\n ) : null}\n\n {this.shouldRender || this.embedded ? (\n <div\n id={this.popupId}\n popover={this.embedded ? undefined : 'manual'}\n class={{\n 'table-group-popup': true,\n 'ds-choice-popup': !this.embedded,\n 'table-preferences-embedded': this.embedded,\n 'ds-choice-popup--closing': this.closing,\n }}\n style={this.embedded ? undefined : popupStyle}\n role=\"dialog\"\n aria-label={name}\n >\n <div class=\"table-group__body\">\n <div class=\"table-group__data-pane\">\n <ChoiceListSection\n heading=\"Data\"\n ariaLabel=\"Group data\"\n className=\"table-group__list\"\n >\n {this.vertical &&\n this.renderDataOption({ label: 'No grouping', value: '__none__' }, -1)}\n {this.options.map((option, index) => (\n <div data-group-value={option.value}>\n {this.renderDataOption(option, index)}\n </div>\n ))}\n </ChoiceListSection>\n <div\n hidden={this.vertical}\n class=\"table-group__footer ds-choice-footer\"\n aria-hidden={!this.grouping ? 'true' : undefined}\n >\n <div class=\"ds-choice-footer__content ds-control--md\">\n {this.grouping ? (\n <button\n class=\"ds-choice-footer__clear ds-text-action ds-focus-ring\"\n type=\"button\"\n onClick={() => this.dsClear.emit()}\n >\n <ds-text as=\"span\" variant=\"text-body-medium\" color=\"inherit\">\n {this.clearLabel}\n </ds-text>\n </button>\n ) : null}\n </div>\n </div>\n </div>\n\n <div class=\"table-group__order-pane\">\n {this.grouping ? (\n <ChoiceListSection\n heading=\"Order\"\n ariaLabel=\"Group order\"\n className=\"table-group__list\"\n >\n {this.activeOrderOptions.map((option, index) => (\n <div data-group-order-index={index}>{this.renderOrder(option, index)}</div>\n ))}\n </ChoiceListSection>\n ) : (\n <div class=\"table-group__empty ds-choice-empty ds-empty-region\">\n <ds-empty-state body={this.emptyMessage} />\n </div>\n )}\n </div>\n </div>\n </div>\n ) : null}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|